Audit fixed D18 credit and conditional MBON transfer (Phase 4AL)

This commit is contained in:
Digital Drosophila Archive
2026-09-30 13:58:39 +08:00
parent c6444255fe
commit 6d5f66bcc3
1058 changed files with 120679 additions and 18 deletions
+11 -18
View File
@@ -4,29 +4,22 @@
## 最新结果
Phase 4AK 已正式封存:**PASS-FROZEN-D18-INDEPENDENT-VALIDATION**。直接调用 Phase 4AJ 已冻结的 D18 实现;本轮没有再改延迟、增益、LIF、输入编码或判据。
Phase 4AL 已封存:**PASS-CONDITIONAL-CREDIT-TRANSFER-AUDIT-NOT-LEARNING**。仍未达到“学习可用”,没有新增 learned candidate,也没有替换正式 reference/runtime。
| 验证输入 | 模式 | 平均 KC 活跃比例 | 通过气味对 | 原完整表征门 |
|---|---|---:|---:|---|
| 原六气味、新种子 | physiological | 3.4670% | 12/15 | PASS |
| 原六气味、新种子 | matched_energy | 3.4564% | 11/15 | PASS |
| 后六气味、新种子 | physiological | 3.2767% | 14/15 | PASS |
| 后六气味、新种子 | matched_energy | 3.2579% | 14/15 | PASS |
- 固定 D18 的 120 条主轨迹、24 次重复,全部 MBON 基线 events/counts/final V/g/ref 逐位复现。
- 全部 60 组气味对都有各自特有的 KC 与候选边,但完整 active-set overlap 仍明显。
- 一次固定 25% mask 减弱,在 120/120 主试验中改变了 MBON count 或首次 latency。它只是钳制上游的条件性诊断,不是学习、不是真实闭环反馈,也不是响应上界。
- 原有 14,232 条 mask 边保持不变,只覆盖 12 个 MBON;这次审计仍保留全部 97 个 MBON 及其 86,039 条入边。
- 29/29 模型合成测试通过;五组旧参考重新运行逐位一致;原 230,239 文件及完整性链 26 个根全部通过,无 mismatch。
120 条主轨迹、24 次逐位重复完整通过;两个旧 D18 对照精确复现,四个预定 Brian probes 和六项 APL 组件审计通过。五组旧冻结参考的事件、计数和最终 V/g 逐位一致,所有旧登记文件校验通过,无 mismatch。
后六气味未参与 AG/AJ 校准,但旧 4L 曾模拟全十二气味;不声称它们历史从未被模拟。matched_energy 匹配预期输入,不是实际接受事件数完全相等。种子审计仅覆盖列出的静态来源,不证明所有历史或随机流的绝对独立性。
1.8 ms 仍是工程时序假设,不是 MaleCNS APL 实测延迟。Brian 独立 LIF/FIFO 仍共享冻结 APL 算术,不能称全组件独立证明。既有 5845 条 fast-APL 出边置零约定及其中 1212 条非 KC 边未替代的限制保持不变。
**表征验证通过不等于学习可用。** 没有更新权重、没有 learned candidate,也未替换正式 reference/runtime;所有旧 PASS/FAIL 原样保留。完整新轨迹仍只在服务器。
Phase 4AK 的 D18 表征验证 PASS 原样保留。1.8 ms 是工程时序假设,不是实测 APL 延迟;matched_energy 匹配预期而非每次实际输入数;旧 1212 条非 KC fast-APL 出边未被 graded 路径替代的限制仍存在。
## 下一步
冻结当前成功分支,先验证气味特异的 eligibility/credit 分配与真实 KC→MBON 功能传递,再考虑带控制的 conditioning。不能仅凭 KC 稀疏、距离指标或 delta-weight 变化宣布记忆成功;不直接进入游戏、decoder、RL、视觉或 Web。
本轮排除了“这些候选边在固定回放中完全无法影响 MBON”的解释,但未证明气味特异记忆。下一关需单独预注册 whole-brain plastic-overlay:零更新必须精确复现 D18,反馈真实闭环,信用按实际 KC/DAN 与 compartment 记录;然后才检验独立 evaluation seeds 和严格对照下的关联记忆、保持。
下一关尚未执行,须先明确协议与停止条件。raw/base CSR/W_syn/sign、既有 APL 参数、eligibility-v2、14232-edge mask 与所有历史封存产物继续只读。
继续冻结 raw/base CSR/W_syn/sign、既有 APL 参数、eligibility-v2、14,232-edge mask 和所有已封存产物。不调参挽救结果,不接游戏、视觉、decoder、RL 或 Web。
新实验 payload 为 6,154,144,988 bytes(约 6.15 GB),已生成 SHA-256 与 manifest。Git 同步代码、小报告和校验,不是全量异机备份。
本轮实验 payload 1,336,493,035 bytes(约 1.34 GB)。所有正式文件有 SHA-256/manifest;大型轨迹仍在服务器,Git/本地小证据同步不等于全量异机备份。
[结果解释](docs/progress/phase4ak-interpretation.md) · [正式状态](registry/phase4ak-apl-timing-validation/evidence/audit/final-status.json) · [新种子验证](registry/phase4ak-apl-timing-validation/evidence/validation/seed_validation/summary.json) · [后六气味验证](registry/phase4ak-apl-timing-validation/evidence/validation/novel_to_aj/summary.json) · [封存校验](registry/phase4ak-apl-timing-validation/seal-verification.json)
[结果解释](docs/progress/phase4al-interpretation.md) · [正式状态](registry/phase4al-mb-credit-transfer/evidence/audit/final-status.json) · [60 组气味对](registry/phase4al-mb-credit-transfer/evidence/audit/pair-identities.json) · [封存校验](registry/phase4al-mb-credit-transfer/seal-verification.json) · [上一轮 D18 验证](docs/progress/phase4ak-interpretation.md)
+74
View File
@@ -0,0 +1,74 @@
# Phase 4AL — KC credit / MBON 条件性传递审计
日期:2026-09-30。上一提交:`c6444255fe90fe1bdd5b862e63265587c15df442`。
正式状态:`PASS-CONDITIONAL-CREDIT-TRANSFER-AUDIT-NOT-LEARNING`。
这里的 PASS 指算术、身份和覆盖审计通过,不是学习通过。
## 实际完成
- 保留固定 D18,读取全部 120 条 AK 主轨迹和 24 条技术重复,不挑气味、种子或 compartment。
- 全部 144 次 MBON 条件基线重构的事件、逐神经元计数、最终 V/g/ref 与封存 AK 逐位一致。
- 对实际 KC 发放只读重放冻结 float32 eligibility-v2,在 tick 900 更新后采样,包含该 tick 发放;这是虚拟 gate,没有输入 DAN,没有写入 plastic_delta。
- 全部基线通过后,才执行一次预定的全既有 mask 25% 减弱。只改临时权重副本;所有上游/反馈发放钳制,目标 MBON 的阈值、复位和 refractory 独立重算。
- 24 次技术重复的基线、credit、分解和条件性结果全部精确一致;不把它们当成额外独立种子。
## 真实边范围
全图 166,700 neurons / 25,582,938 edges。4,064 KC、97 MBON;MBON 共 86,039 条入边,其中全部 KC→MBON 61,210 条。冻结候选 mask 为 14,232 条,目标只有 12 个 MBON。
| compartment 原始字符串 | 候选边 | MBON 目标 |
|---|---:|---:|
| `B2B'2a` | 4,346 | 2 |
| `a1` | 3,651 | 4 |
| `y2a'1` | 4,126 | 4 |
| `y5B'2a` | 2,109 | 2 |
95 条 DAN→MBON 边具有已封存的显式 compartment 原文匹配。这是 annotation token 与实际边的依据,不是突触 ROI 的独立定位。其他身份没有凭名称补齐;120 条 fast-APL→MBON 入边仍依冻结分支约定置零,未在本轮修正。
## 结果与边界
| 分组 | 各自特有 KC/候选边的气味对 | 候选边 active-set Jaccard 均值 | 25% 条件性试验改变 count 或首次 latency |
|---|---:|---:|---:|
| seed_validation / physiological | 15/15 | 0.57575 | 30/30 |
| seed_validation / matched_energy | 15/15 | 0.61094 | 30/30 |
| novel_to_aj / physiological | 15/15 | 0.54014 | 30/30 |
| novel_to_aj / matched_energy | 15/15 | 0.57905 | 30/30 |
分类使用各条件五种子中至少三次 trace>0。Jaccard 比较完整 A-active/B-active 集合,包含 shared,不再把互斥 specific 集合的零交集误当特异性证据。60 对均非空;共享成分仍明显。这里只验证每侧存在 specific KC/边,没有设新的整体学习成功阈值。
候选边占全部 97 个 MBON 的已接受正向名义输入增量,四组逐试验比例均值为 **1.075%–1.115%**。这个全 MBON 分母不能当作 12 个塑性目标的输入比例。
补充的封存后描述性复算:固定这 12 个既有候选目标,以每个 trial 的 `sum(accepted_plastic_positive_V)/sum(accepted_total_positive_V)` 求比例,再按组取平均,得到 **11.14%–11.46%**。12×120=1,440 个目标/试验单元中,964 个 count 或首次 latency 改变;其余 85 个 MBON 的这些指标没有改变。此复算只解释分母,不是新增或替代门槛,未改动封存报告。
该复算输入为 `experiments/phase4al-mb-credit-transfer/audit/per-MBON-primary.parquet`,SHA-256 `fd194e5af084527798b2a651bbc0b16eb772f208ccbf1aae5b1ef3e7520c7b30`。使用 `candidate_target == true` 的全部行,按 `cohort, mode, name` 分组;没有择优子集。
这些量是模型中已接受边增量或 source-state 的记账,不是能量、真实电导或 dopamine 浓度。分组 g 记账的最大舍入残差为 5.274e-16 SI V,未回写状态或归给某个神经元来源。
**可作出的判断:** 在这个固定条件回放中,14,232 边的改变能够影响 MBON 功能性发放;不能说 MBON 对它们完全无响应。
**尚不能作出的判断:** 25% 一致减弱不是气味特异训练得到的 delta,不是响应上界,且 MBON→DAN/MBON/其他反馈没有在反事实中闭环重算。因此不能声称关联记忆、行为学习或完整全脑 credit 已通过,也不能自动解锁 conditioning。
## 完整性与工程交付
- 29/29 服务器合成测试通过,包括冻结 NumPy AST / Torch CPU trace 的逐位比较;本地此前缺 Torch 的跳过项在服务器已执行。
- 五组旧 deterministic-v2 参考重新运行,事件/count/final V/g 全部逐位一致。这不是宣称新 D18 与旧动力学等价。
- 原有 230,239 个登记文件和完整性链共 26 个根全部通过;旧 frozen/reference 产物零差异。
- 封存前重新核验所有输出清单/哈希,144 次基线与原始 AK、24 次重复、60 对身份和全部汇总绑定。
- 模型 payload 14 文件 / 109,946 bytes;实验 payload 2,166 文件 / 1,336,493,035 bytes。
- 发布/下载/Git blob 验证工具 51/51 合成测试通过(本地和服务器)。Git 和本地证据同步不含大型轨迹,**不是全量异机备份**。
- 准备阶段仅遇到新实验目录创建权限,已在任何注册/科学计算前处理,并记录于模型 `PREPARATION.md`;旧目录权限未改变。
- 原样保存的编译日志有两行行尾空格,导致 `git diff --check` 返回 2;不为排版修改封存字节。它不是数值回归失败;实际 Git blob 已逐个对照 SHA 校验。
- 旧 `phase4c.py:308` 仍提示只读 NumPy 数组转 Torch 的警告;本轮没有改旧实现。五组输出仍逐位一致,旧文件校验无变化,警告原样保留。
模型 manifest SHA-256:`72e4b4e2c53c258939ca355f31eeba2cd6381e126a61efeea651d8bac8df5328`。
实验 manifest SHA-256:`a22de7d85cbfe760070ff55f5666e74475a3335c63bbd37b41241a94be7e3eea`。
## 下一关
先建立单独、预注册的 whole-brain plastic-overlay 验证:零更新必须逐位等同 D18;使用真实 compartment mapping 和固定 eligibility-v2;明确人工 reinforcement 接口,记录实际 KC/DAN 状态与每条边的信用。随后才在新分支评价独立种子的 CS+/CS− 前后 MBON/downstream 差异、完整反馈、零更新/未配对等控制与保持。不能由本轮条件性敏感性直接宣布学习可用。
保持 raw/base CSR/W_syn/sign、APL 设置、eligibility-v2、mask 和所有既有封存字节只读。没有游戏、视觉、decoder、RL 或 Web。
文献支持、工程假设和不适用边界见 [EVIDENCE.md](../../models/male-cns-lif/mb-credit-transfer-audit-v1/EVIDENCE.md)。正式结果见 [final-status](../../registry/phase4al-mb-credit-transfer/evidence/audit/final-status.json)。上一轮 D18 表征结果仍见 [Phase 4AK](phase4ak-interpretation.md)。
@@ -0,0 +1,201 @@
# Phase 4AL — credit specificity and conditional KC→MBON transfer
## Purpose and frozen boundary
This is a diagnostic audit of the already sealed Phase 4AK D18 branch, not
conditioning, training, or a new learning candidate. Phase 4AK established its
predeclared 100 ms KC representation gate; it did not establish appropriate
credit assignment, functional associative memory, or biological fidelity of
every omitted mechanism.
Use all 120 Phase 4AK primary trials and all 24 exact-repeat trials. Keep the
two cohorts and their two input modes separate. Repeats check reproducibility;
they are not extra independent observations in the five-seed statistics. Do
not replace seeds, select favorable odors, choose a best pair or compartment,
or inspect old held-out dynamic outcomes to change this design.
The inherited matched-energy mode matches expected input, not necessarily the
realized event count of every stochastic trial; do not relabel it exact
realized-count matching.
All earlier raw, processed, frozen/reference, model and experiment artifacts
remain read-only. Preserve the base CSR, anatomical counts, transmitter signs,
LIF parameters, D18 operator, APL settings, eligibility-v2, and existing 14,232
plastic-edge mask. All new records belong only to this new audit. No DAN
stimulus is injected; no reinforcement is delivered to a brain; no learned
`plastic_delta` is written. No decoder, action selection, game, RL, or visual
interface is introduced.
## Three distinct evidence levels
1. **Exact baseline reconstruction.** Reconstruct target MBONs from the actual
frozen full-network events using real edges, original arithmetic/order,
initial states, arrivals, refractory acceptance, resets, and applicable APL
handling. Require bitwise identity of events, per-neuron counts, and final
V/g/ref against Phase 4AK D18. A failed or incomplete reconstruction blocks
scientific interpretation of that replay; it is never rescued by plausible
plots or by agreement of aggregate firing rates. Complete-audit integrity
requires all 144 baseline replays; do not silently drop failed cases and
report the remaining subset as the complete predeclared audit.
2. **Virtual credit audit.** Replay the unchanged, existing float32 eligibility
operator and inspect its state at the fixed tick-900 virtual gate, after
that tick's original `mul → add → clamp` sequence. Tick-900 spikes are
included. This is shadow accounting only, not dopamine delivery or weight
updating; a before/after-update change is a different experiment. Do not
treat virtual gate amplitude as measured dopamine concentration.
3. **One fixed conditional sensitivity test.** Compare the exact baseline with
one temporary replay applying uniform 25% depression to the whole existing
plastic-edge mask. This uses the pre-existing maximum allowed fractional
depression as a single declared diagnostic intervention. It is not a
fraction scan, an eligibility-trained delta, a selected successful memory,
or permission to enlarge the mask. The base weights remain unchanged; only
the diagnostic effective amplitudes change, preserving edge identity and
transmitter sign. On an independent incoming-weight copy, apply
`weights[plastic] *= 0.75` throughout the full 100 ms replay, not only after
tick 900. All presynaptic spike trains, including those of other MBONs and
DANs, remain the original recorded trains. Do not save the overlay as a
learned or official model.
The 25% intervention is **not an upper bound on functional response**. LIF
threshold, reset, refractory gating, and recurrent influences make responses
nonlinear; the largest permitted fractional depression does not establish the
largest attainable change in spikes, latency, or downstream activity.
## Incoming-drive and overlap accounting
Decompose actual MBON incoming drive into six mutually exclusive groups:
- plastic KC→MBON;
- non-plastic KC→MBON;
- DAN;
- MBON;
- APL;
- other.
Use the frozen canonical IDs, mask membership and audited metadata, not guessed
names or transmitter-to-cell-role substitutions. Preserve unknown role
provenance inside the residual `other` group. Establish each edge's group once;
do not reclassify it to improve the result. Report accepted/rejected arrivals,
signed contributions, and roundoff/reset effects as the implementation makes
available. The model's variable `g` is a model state; do not rename it a measured
biophysical conductance or dopamine signal. A source's share of accepted drive
is not its necessity, sufficiency, or unique causal contribution to a spike.
Any ratio with a zero/undefined denominator must remain explicitly undefined.
The sole set-similarity convention is empty/empty Jaccard = 1 with an explicit
`empty_union` flag. Such pairs are counted separately and excluded from block
overlap aggregates; this convention is never evidence of useful credit.
For each cohort × mode, retain all 15 unordered pairs of its six odors: 60
pair records in total. Report two separate three-of-five-seeds memberships for
each odor: (1) a strictly positive frozen eligibility trace sampled after the
tick-900 update, including tick-900 spikes, and (2) a strictly positive spike
count anywhere in the full 100 ms trial. The primary virtual-credit grouping
uses the first definition. The whole-window activity grouping is auxiliary;
it cannot replace the primary grouping to rescue a result. These are
descriptive reliability rules, not biological thresholds, top-K filters, or
ways to delete cells/edges from replay. Preserve per-trial activity and
eligibility alongside both aggregate memberships.
Compute overlap on the actual A-active and B-active sets. In particular,
`Jaccard(A_active, B_active)` must use their real intersection and union; never
substitute the already disjoint sets `A_only` and `B_only`, whose zero
intersection is true by construction. Shared, A-only, B-only, and inactive
strata are useful descriptive partitions, not proof of stimulus-specific
causation. Shared representations can support biological generalization;
nonzero B effects are not automatically a defect, nor are they automatically
evidence of valid generalization.
Keep arithmetic/integrity checks separate from scientific results. Report all
pairwise and trial-level outcomes without inventing an overall 120-trial
biological PASS fraction, post hoc effect threshold, or pooled rescue gate.
An absence of MBON spike change may coexist with a subthreshold change and
does not mean the entire biological pathway is incapable of plasticity.
## What a conditional replay can and cannot establish
The baseline can establish that the saved events and the frozen operator
reconstruct the saved MBON trajectory exactly. Virtual eligibility can reveal
which real candidate edges would receive credit under that declared rule.
The single depression replay can measure how the selected MBONs respond to
that fixed intervention **with the external network event history held fixed**.
It cannot establish closed-loop whole-brain necessity/sufficiency or learned
behavior. If an MBON's replayed spikes change while its outgoing effects and
the other neurons' events remain clamped to the old trial, MBON→DAN, MBON→MBON,
and other feedback are not recomputed self-consistently. Their fixed incoming
traces must not be described as counterfactual feedback responses. If the
replay instead also clamps the target MBON's original reset/refractory gates,
its result is narrower still: conditional drive/state accounting, not an
independently recomputed functional spike response. State these scopes
explicitly for each reported quantity.
The anatomical D18 arrival delay is 18 × 0.1 ms = 1.8 ms. It is not the
eligibility lifetime, a measured dopamine latency, or the CS–reinforcer
association window. A 100 ms observation does not test memory retention,
consolidation, extinction, reversal, or behavioral recall. Do not promote any
successful replay to a dopamine-plasticity or learning candidate.
## Primary evidence and non-measured assumptions
- **Hige et al., Neuron (2015), DOI 10.1016/j.neuron.2015.11.003.** Pairing an
odor with selected DAN activation produced odor-specific, compartment-local
KC→MBON depression with order dependence. The reported induction did not
require postsynaptic MBON spiking; overlapping KC representations predicted
reduced specificity/generalization. This supports auditing the correct
presynaptic and compartment credit, not requiring MBON spikes to define all
plasticity. It does not specify MaleCNS per-edge learning parameters.
[Author publication and paper](https://www.janelia.org/publication/heterosynaptic-plasticity-underlies-aversive-olfactory-learning-drosophila).
- **Handler et al., Cell (2019), DOI 10.1016/j.cell.2019.05.040.** DopR1/DopR2
pathways support opposing plasticity associated with different cue–DAN
timing. This establishes why time ordering matters, not that the frozen
float32 trace is a measured biochemical state or that one rule applies to
every compartment. [Primary paper](https://www.sciencedirect.com/science/article/pii/S0092867419306117).
- **Aso and Rubin, eLife (2016), DOI 10.7554/eLife.16135.** DAN cell types differ
in memory formation, updating and persistence. PAM/PPL1 labels alone are
not a license to assign a universal valence or a common temporal rule.
[Primary paper](https://elifesciences.org/articles/16135).
- **Aso et al., eLife (2014), DOI 10.7554/eLife.04580.** Different MBON types
bias approach/avoidance, with combined activation supporting population
integration. Assessing a population response is more appropriate than
equating greater weight or total firing with positive memory. The current
audit nevertheless has no behavioral decoder or demonstrated behavior.
[Primary paper](https://elifesciences.org/articles/04580.pdf).
- **Huang et al., Nature (2024), DOI 10.1038/s41586-024-07819-w.** Physiological
measurements and a constrained model show heterogeneous, bidirectional
PPL1 signaling and feedback interactions among memory units. This motivates
explicit closed-loop limitations. Its fitted model weights and plasticity
parameters are not MaleCNS anatomical counts or measurements to import into
this frozen branch. [Primary paper](https://www.nature.com/articles/s41586-024-07819-w).
- **Manoim et al., Current Biology (2022), DOI 10.1016/j.cub.2022.09.007, and
Manoim Wolkovitz et al. (2026), DOI 10.1016/j.cub.2026.01.014.** KC lateral
axonal mAChR-B modulation contributes to stimulus specificity; subsequent
work identifies voltage-dependent modulation relevant to active versus
inactive KCs. Sparse coding plus a timed reinforcer is therefore not, by
itself, proof of appropriate credit. These studies do not prove that an
omitted receptor mechanism caused any result in this fixed model, and do
not authorize a sign, gain, threshold, or receptor-parameter change.
[2022 paper](https://www.sciencedirect.com/science/article/pii/S0960982222014518);
[2026 paper](https://www.sciencedirect.com/science/article/pii/S096098222600014X).
The frozen eligibility operator, tick-900 virtual gate, three-of-five activity
summary, 25% uniform diagnostic depression, clamped event history, and chosen
observation window are engineering/model assumptions. None is relabelled as a
MaleCNS single-cell or synaptic measurement by citing the papers above.
## Deferred functional-memory controls — not executed here
A later explicitly authorized learning experiment would need pre/post CS+
and CS− responses, reciprocal cue assignment, independent evaluation seeds,
and reinforcement-free probes with updates disabled. CS-only, DAN-only,
unpaired/yoked, D(t)=0, and frozen/delta=0 conditions distinguish associative
effects from exposure, transient state, adaptation and unrelated modulation.
Real DAN-only stimulation is not universally expected to have zero effect;
that prediction depends on the declared model and compartment. Retention
requires its own observation interval, and any model-specific output effect
must remain distinct from a behavioral-memory claim. No such controls are
silently replaced by virtual credit or the 25% sensitivity test.
Google/DeepMind's [FlyBody work](https://www.nature.com/articles/s41586-025-09029-4)
provides body physics and artificial RL controllers, not evidence for this
KC→MBON credit rule. Google's [MaleCNS author resource](https://research.google/blog/a-connectomics-milestone-mapping-the-complete-male-fruit-fly-brain/)
supports the anatomical resource, not measured dopamine kinetics or successful
learning in this model. Neither permits bypassing the present mechanism audit.
@@ -0,0 +1,13 @@
# Preparation record
The first preparation invocation stopped before experiment creation or
registration: the ordinary account could not create a child of the protected
experiments directory. No trajectory, credit calculation or conditional replay
was executed. The fix provisions only the new, empty Phase 4AL directory with
the ordinary account as owner; preparation permits an absent or empty directory
but still refuses any populated experiment. No old directory permission is
changed. This is an execution-environment correction, not a scientific change.
Local synthetic tests initially had no Torch installation and explicitly
skipped the Torch arithmetic comparison. Server testing includes this comparison
and preparation rejects skipped tests.
@@ -0,0 +1,15 @@
cda2d810eada83ea33c96c1ce9d16102d1af22d1862bce84c47f0e7415863eca EVIDENCE.md
8259428a56721ba8174039846623998ef11a1d8e9e14f123dfe0a0e4849c71ee PREPARATION.md
b996e175731a920ad19e2c8989bd267cdbb71c14aa4558a8f1ef7486454c4b44 config.json
1626873baa224fab5d427a1fab1d6f840f14814152914ac4c2d6aa7a4f0bb1f6 context.py
e03d3e1f64328058273e8364990e7a2c7f1527a31822ea7594a9e8914aa43497 credit.py
9356587aa8811a3db50daee9bca22cf4114e06c6669cc80c69cd0dd2224b0130 finalize.py
825e9e60cb579479ddb2860a36f8dee0715b9b44d624cbad59ce0d279550d17f mbon_accounting.py
9e7532bc4a564b0a0c0384ba2f3a7bfc0559c16bb256510dde7c97cce9036c0c prepare.py
3ece589f0f6ce1bff2cde94494e896a58fa4154106e613ee7e60549094304071 run_audit.py
62432fe7b068eafae99396c4a9231adf8ef8e9d340ab64517f618fc794e7fd78 summarize.py
4c473ce709ed9496b7ce1b5bedd6964c780715ff41dd54977489fbd2b99f998e test_credit.py
23c4e9138b326e1a84fed88d771a6c2044a6abf72ecc7a1b829f604bcdde215d test_integration.py
d192dd357db96e628c21b9bcde617eaf6c6bc1efe5920ec55cc9cc1e4b549454 test_mbon_accounting.py
85442fcefa93c64a2fac7f0a4b60ce505ddb9edab7a63cb0e25cb20f013d3850 verify_frozen.py
72e4b4e2c53c258939ca355f31eeba2cd6381e126a61efeea651d8bac8df5328 manifest.json
@@ -0,0 +1,24 @@
{
"phase": "4AL",
"purpose": "read-only D18 credit and conditional MBON transfer audit; not learning",
"neurons": 166700,
"edges": 25582938,
"candidate_edges": 14232,
"primary_trials": 120,
"technical_repeats": 24,
"steps": 1000,
"dt_ms": 0.1,
"virtual_gate_tick": 900,
"kc_trace_tau_ms": 100.0,
"trace_cap": 1.0,
"stable_seed_count": 3,
"conditional_depression_fraction": 0.25,
"groups": ["plastic_KC", "nonplastic_KC", "DAN", "MBON", "APL", "other"],
"workers": 4,
"output_budget_bytes": 4294967296,
"training": false,
"candidate_generation": false,
"gate_meaning": "Post-update tick 900 virtual assay, not a DAN or dopamine measurement",
"conditional_meaning": "Recorded all-source events clamped, target MBON spikes independently predicted; not whole-brain counterfactual",
"no_new_overall_credit_threshold": true
}
@@ -0,0 +1,116 @@
"""New read-only audit envelope. All old payloads are hash-anchored inputs."""
import hashlib
import importlib.util
import json
import sys
from pathlib import Path
sys.dont_write_bytecode = True
ROOT = Path('/data/digital-drosophila')
MODEL = Path(__file__).resolve().parent
EXP = ROOT / 'experiments/phase4al-mb-credit-transfer'
AK = ROOT / 'experiments/phase4ak-apl-timing-validation'
AK_MODEL = ROOT / 'models/male-cns-lif/apl-timing-validation-v1'
H = ROOT / 'experiments/phase4h-dopamine-plasticity'
AG = ROOT / 'experiments/phase4ag-author-apl-r2'
CORE = ROOT / 'models/male-cns-lif/kc-drive-audit-v1/replay_core.py'
META = ROOT / 'datasets/male-cns-v1.0/processed/neuron-only/neuron-index/unified-metadata.parquet'
COEFF = ROOT / 'experiments/phase4af-author-fullgraph/oracle/no_input/coefficients.json'
CFG = json.loads((MODEL / 'config.json').read_text(encoding='utf-8'))
PINS = {
'models/male-cns-lif/runtime-credit-v1/phase4o_event_replay.py': 'b169937bab495c77d8ee6c1013877e7500e7354140d9fcc90595d984238ba44e',
'models/male-cns-lif/phase4l.py': 'e97d58d8c1f44920d0e953f8f5831ddc86fa0198784e86460e315de4116ac553',
'models/male-cns-lif/apl-timing-validation-v1/manifest.json': '3206a8666718b4a99e09b8384c87dd25895b5d7038d23fad7b93e40379183ccb',
'experiments/phase4ak-apl-timing-validation/manifest.json': '25eb7e467eb17c3fa83ffee2e4e82b754f161fd8891e515bed23eeb500c5656d',
'models/male-cns-lif/apl-timing-validation-v1/context.py': '5e4e500d5ec777bb8ae7ff77ac9a7279bfe995b1a17be2baededdbe065c98b73',
'experiments/phase4ak-apl-timing-validation/protocol/validation-cases.json': '50d7b3aa7b0235e8f7bc1e21ef693cd5c554272ef3bd205c72f61e8e07ad1fd9',
'experiments/phase4ak-apl-timing-validation/audit/final-status.json': 'c49181086ecbd19511b9f1e783afea8f66d0f74348a7b70d7f6c5fa99b4337fc',
'models/male-cns-lif/kc-drive-audit-v1/replay_core.py': 'aa3187cb23712c09ab603e27e60424294db92de8086d60a95cf7a629d0521fdc',
'models/male-cns-lif/mb-physiology-v1/phase4j.py': 'abb4574da85f00bd9ef61024c65993ef81d42651ff8d8d63c15dd69c6222471e',
'models/male-cns-lif/mb-physiology-v1/phase4j.yaml': 'b35e4332a91b8489f69348cedf5ac675e9c3902c7e8c7beec5d053773c6529a3',
'experiments/phase4h-dopamine-plasticity/manifests/checksums.sha256': '1ea0394fd0477bb40d656ed0854108964f3809d633b5561bed9de43cda630ba1',
'datasets/male-cns-v1.0/processed/neuron-only/neuron-index/unified-metadata.parquet': '922af16846a065c3dbfca7c11146b83ca217fcbd7392edc745f444a04eae8c63'
}
def digest(path):
h = hashlib.sha256()
with Path(path).open('rb') as f:
for block in iter(lambda: f.read(8 << 20), b''):
h.update(block)
return h.hexdigest()
def read(path):
return json.loads(Path(path).read_text(encoding='utf-8'))
def save(path, value):
path = Path(path)
path.parent.mkdir(parents=True, exist_ok=True)
with path.open('x', encoding='utf-8') as f:
json.dump(value, f, indent=2, ensure_ascii=False, allow_nan=False)
f.write('\n')
def write_npz(path, **values):
import numpy as np
with Path(path).open('xb') as f:
np.savez_compressed(f, **values)
def load_module(name, path, expected_hash):
data = Path(path).read_bytes()
assert hashlib.sha256(data).hexdigest() == expected_hash, str(path)
spec = importlib.util.spec_from_file_location(name, path)
module = importlib.util.module_from_spec(spec)
sys.modules[name] = module
exec(compile(data, str(path), 'exec'), module.__dict__)
return module
def sources():
return {p.relative_to(MODEL).as_posix(): digest(p) for p in sorted(MODEL.rglob('*'))
if p.is_file() and '__pycache__' not in p.parts and p.name not in ('manifest.json', 'checksums.sha256')}
def integrity():
previous = load_module('sealed_ak_context_al', AK_MODEL / 'context.py',
PINS['models/male-cns-lif/apl-timing-validation-v1/context.py'])
result = previous.integrity()
sys.path.insert(0, str(ROOT / 'models/male-cns-lif/terminal-scope-diagnostic-v1'))
from diagnostic import manifest_check
for path in (AK_MODEL, AK):
result[path.relative_to(ROOT).as_posix()] = manifest_check(path, digest)
assert all(row['pass'] for row in result.values())
return result
def check():
reg = read(EXP / 'protocol/preregistered.json')
assert reg['sources'] == sources() and reg['config'] == CFG
for row in reg['inputs']:
assert digest(ROOT / row['path']) == row['sha256'], row['path']
for row in read(EXP / 'protocol/prepared-hashes.json'):
assert digest(EXP / row['path']) == row['sha256'], row['path']
return reg
def bit_equal(a, b):
return a.dtype == b.dtype and a.shape == b.shape and a.tobytes() == b.tobytes()
def budget():
size = sum(p.stat().st_size for p in EXP.rglob('*') if p.is_file())
assert size < CFG['output_budget_bytes'], 'Audit output budget exceeded; stop, preserve partials'
return size
def seal(root):
rows = [dict(path=p.relative_to(root).as_posix(), bytes=p.stat().st_size, sha256=digest(p))
for p in sorted(root.rglob('*')) if p.is_file() and '__pycache__' not in p.parts]
save(root / 'manifest.json', dict(root=str(root), files=rows))
with (root / 'checksums.sha256').open('x', encoding='utf-8') as f:
for row in rows:
f.write(row['sha256'] + ' ' + row['path'] + '\n')
f.write(digest(root / 'manifest.json') + ' manifest.json\n')
@@ -0,0 +1,171 @@
"""Read-only, float32 TemporalEligibility-v2 trace and fixed A/B identities.
This module consumes already observed full-graph spike events. It neither
simulates neurons nor generates a weight delta. A gate is a virtual readout
after the same-tick KC trace update, not evidence of an actual DAN event.
"""
from __future__ import annotations
import math
import numpy as np
N_GLOBAL = 166700
CATEGORY_CODES = {'inactive': 0, 'A_specific': 1, 'B_specific': 2, 'shared': 3}
MAJORITY = 3
REPLICATES = 5
def _require(condition, message):
if not condition:
raise ValueError(message)
def _vector(value, name, dtype):
_require(isinstance(value, np.ndarray) and value.ndim == 1 and value.dtype == np.dtype(dtype),
name + ' must be a one-dimensional ' + dtype + ' ndarray; no implicit dtype conversion')
return value
def _frozen_scalar(value, expected, name):
_require(not isinstance(value, (bool, np.bool_)) and isinstance(value, (int, float, np.number)) and
np.ndim(value) == 0 and math.isfinite(float(value)) and float(value) == expected,
name + ' must retain its frozen value ' + str(expected))
def replay_credit(step, neuron_idx, kc_globals, steps=1000, gate_tick=900,
dt_ms=.1, tau_ms=100, cap=1):
"""Replay the frozen trace without touching the caller's arrays.
``step`` and ``neuron_idx`` are equal-length int32 vectors for the complete
observed graph (or its KC-only subset), ordered uniquely by (tick, global
neuron). Non-KC events are validated then ignored. ``kc_globals`` is sorted
unique int32. The trace starts at +0 and, on every tick including tick zero,
performs separate float32 multiply, add current spikes, then clamp to 1.
No 18-tick shift is applied: the recorded KC emission tick is the trace
event tick. Gate counts include gate_tick; final counts cover [0, steps).
dt/tau/cap are exposed for explicit provenance but may not be changed.
Shorter steps/gates are allowed for synthetic contract tests.
Returns owned trace_gate/trace_final float32[K] and
spike_count_gate/spike_count_total int32[K], plus scalar audit metadata.
Memory is O(events + KC + global-neuron count), never a dense T-by-K trace.
"""
ticks = _vector(step, 'step', 'int32')
nodes = _vector(neuron_idx, 'neuron_idx', 'int32')
kc = _vector(kc_globals, 'kc_globals', 'int32')
_require(type(steps) is int and 0 < steps <= np.iinfo(np.int32).max, 'steps must be a positive int32-range integer')
_require(type(gate_tick) is int and 0 <= gate_tick < steps, 'gate_tick must lie in [0, steps)')
_frozen_scalar(dt_ms, .1, 'dt_ms')
_frozen_scalar(tau_ms, 100., 'tau_ms')
_frozen_scalar(cap, 1., 'cap')
_require(ticks.shape == nodes.shape, 'Event vectors have different lengths')
_require(np.all((ticks >= 0) & (ticks < steps)), 'Event tick outside the observed window')
_require(np.all((nodes >= 0) & (nodes < N_GLOBAL)), 'Event neuron outside the frozen global graph')
_require(len(ticks) < 2 or np.all((ticks[1:] > ticks[:-1]) |
((ticks[1:] == ticks[:-1]) & (nodes[1:] > nodes[:-1]))),
'Events must be sorted and unique by (tick, global neuron); duplicates are not extra spikes')
_require(len(kc) > 0 and kc[0] >= 0 and kc[-1] < N_GLOBAL and np.all(kc[1:] > kc[:-1]),
'kc_globals must be nonempty, sorted, unique, in-range global identities')
lookup = np.full(N_GLOBAL, -1, np.int32)
lookup[kc] = np.arange(len(kc), dtype=np.int32)
local = lookup[nodes]
selected = local >= 0
kc_ticks, kc_local = ticks[selected], local[selected]
counts_total = np.bincount(kc_local, minlength=len(kc)).astype(np.int32)
counts_gate = np.bincount(kc_local[kc_ticks <= gate_tick], minlength=len(kc)).astype(np.int32)
decay = np.float32(math.exp(-float(dt_ms) / float(tau_ms)))
trace = np.zeros(len(kc), np.float32)
trace_gate = None
begin = 0
for tick in range(steps):
# Preserve the source's separate rounding operations; do not substitute
# float64 exponentiation by elapsed time or shift spikes to arrivals.
np.multiply(trace, decay, out=trace)
end = int(np.searchsorted(kc_ticks, tick, side='right'))
if end > begin:
firing = kc_local[begin:end]
trace[firing] = np.add(trace[firing], np.float32(1.0))
np.minimum(trace, np.float32(1.0), out=trace)
if tick == gate_tick:
trace_gate = trace.copy()
begin = end
_require(begin == len(kc_ticks) and trace_gate is not None and np.isfinite(trace).all(), 'Incomplete or nonfinite trace replay')
return {
'trace_gate': trace_gate, 'trace_final': trace.copy(),
'spike_count_gate': counts_gate, 'spike_count_total': counts_total,
'steps': steps, 'gate_tick': gate_tick, 'dt_ms': float(dt_ms), 'tau_ms': float(tau_ms), 'cap': float(cap),
'decay_f32_bits': f'{int(decay.view(np.uint32)):08x}',
'total_input_events': int(len(ticks)), 'total_KC_events': int(len(kc_ticks)),
'KC_events_through_gate': int(counts_gate.sum(dtype=np.int64)),
'gate_includes_same_tick_spikes': True, 'event_shift_steps': 0,
'gate_is_virtual_readout_not_DAN_activity': True,
'weights_modified': False, 'weight_delta_generated': False,
}
def _traces(value, name):
_require(isinstance(value, np.ndarray) and value.ndim == 2 and value.dtype == np.dtype('float32') and
value.shape[0] == REPLICATES and value.shape[1] > 0,
name + ' must have exact shape (5, KC) and float32 dtype')
_require(np.isfinite(value).all() and np.all((value >= 0) & (value <= 1)),
name + ' must contain finite frozen-cap traces in [0, 1]')
return value
def _set_summary(active_a, active_b, category):
intersection = int(np.count_nonzero(active_a & active_b))
union = int(np.count_nonzero(active_a | active_b))
return {
'total': int(len(category)), 'A_active': int(np.count_nonzero(active_a)),
'B_active': int(np.count_nonzero(active_b)), 'intersection': intersection, 'union': union,
'active_set_jaccard': float(intersection / union) if union else 1.0,
'empty_union': union == 0,
'category_counts': {name: int(np.count_nonzero(category == code)) for name, code in CATEGORY_CODES.items()},
}
def pair_identity(traces_a, traces_b, edge_source_local):
"""Classify fixed paired five-seed A/B traces, without installing plasticity.
A KC is A-active/B-active if its gate trace is strictly positive in at
least 3 of 5 corresponding trials. Categories are int8: inactive=0,
A_specific=1, B_specific=2, shared=3. Every candidate edge inherits its
source KC's category in the supplied edge order. Multiple edges sharing
a KC are retained as separate rows, not independent neural observations.
``edge_source_local`` is int32[E] indexing the common KC axis of both
trace matrices. The caller must bind that axis and the five paired seed
rows to the frozen identities; this pure function cannot infer labels.
Jaccard uses COMPLETE active A/B sets, not the disjoint specific sets.
Empty/empty Jaccard is 1 with empty_union=True, never evidence of useful
credit. Compartment stratification and any success gate belong to caller.
"""
a, b = _traces(traces_a, 'traces_a'), _traces(traces_b, 'traces_b')
_require(a.shape == b.shape, 'A and B trace matrices use different KC axes')
source = _vector(edge_source_local, 'edge_source_local', 'int32')
_require(np.all((source >= 0) & (source < a.shape[1])), 'Candidate edge source is not a valid KC-local index')
positive_a = np.count_nonzero(a > np.float32(0), axis=0).astype(np.int32)
positive_b = np.count_nonzero(b > np.float32(0), axis=0).astype(np.int32)
active_a, active_b = positive_a >= MAJORITY, positive_b >= MAJORITY
category = active_a.astype(np.int8) + np.int8(2) * active_b.astype(np.int8)
edge_a, edge_b, edge_category = active_a[source].copy(), active_b[source].copy(), category[source].copy()
return {
'kc_category': category, 'edge_category': edge_category,
'kc_active_a': active_a, 'kc_active_b': active_b,
'edge_active_a': edge_a, 'edge_active_b': edge_b,
'kc_positive_trials_a': positive_a, 'kc_positive_trials_b': positive_b,
'summary': {
'replicates_per_condition': REPLICATES, 'majority_required': MAJORITY,
'positivity_rule': 'float32 trace > 0; no fitted epsilon', 'category_codes': dict(CATEGORY_CODES),
'KC': _set_summary(active_a, active_b, category),
'edges': _set_summary(edge_a, edge_b, edge_category),
'jaccard_scope': 'complete majority-active A and B sets, including shared members',
'empty_union_jaccard_convention': 1.0,
'edge_counts_are_source_degree_weighted': True,
'actual_DAN_credit_claimed': False, 'weights_modified': False, 'weight_delta_generated': False,
},
}
@@ -0,0 +1,37 @@
"""Seal all evidence without mistaking diagnostic coverage for learning."""
from context import MODEL, EXP, read, save, digest, check, integrity, budget, seal
def main():
check()
from summarize import run
summary = run(verify_only=True)
assert summary['arithmetic_and_coverage_pass'] and summary['primary_trials'] == 120 and summary['exact_repeats'] == 24
refs = read(EXP / 'regression/frozen-five.json')
assert refs['pass_all'] and len(refs['trials']) == 5 and all(all(r['exact'].values()) for r in refs['trials'])
old = integrity()
save(EXP / 'regression/old-integrity-after.json', old)
status = 'PASS-CONDITIONAL-CREDIT-TRANSFER-AUDIT-NOT-LEARNING'
result = dict(status=status, **summary, old_integrity_pass=all(r['pass'] for r in old.values()),
frozen_five_reference_pass=refs['pass_all'], payload_bytes_before_manifest=budget(),
frozen_eligibility_and_mask_unchanged=True, base_weights_unchanged=True,
scientific_summary_sha256=digest(EXP / 'audit/scientific-summary.json'),
summary_all_144_baseline_raw_states_and_repeat_pair_metrics_reverified=True,
next_required_gate='Only if the diagnostic evidence supports it, separately preregister compartment-specific reinforcement and independent whole-brain evaluation; no automatic conditioning unlock')
save(EXP / 'audit/final-status.json', result)
with (EXP / 'REPORT.md').open('x', encoding='utf-8') as f:
f.write('# Phase 4AL — conditional credit/MBON transfer audit\n\nStatus: `' + status + '`.\n\n')
f.write('All 120 primary trials and 24 repeats are retained. Full events/counts/final V/g/ref baseline exactness is required.\n')
f.write('Virtual eligibility is sampled after tick 900; no DAN is injected, no delta is learned.\n')
f.write('Uniform 25% mask depression is a temporary conditional replay; every source train, including feedback, is clamped.\n')
f.write('All 60 odor pair-mode records and all 97 MBON targets are reported; no best pair/parameter selection.\n\n')
for name, block in summary['blocks'].items():
f.write(f"- {name}: specific KC/edge sets {block['pairs_with_both_specific_KC_and_edge_sets']}/15; conditional event change {block['conditional25_event_changed_trials']}/30; count/first-latency change {block['conditional25_count_or_first_latency_changed_trials']}/30.\n")
f.write('\nNo biological learning PASS or candidate. This does not complete the learning goal.\n')
f.write('Read EVIDENCE.md in the model for provenance, unmatched biology and conditional/closed-loop distinctions.\n')
check(); seal(MODEL); seal(EXP)
print(status, flush=True)
if __name__ == '__main__':
main()
@@ -0,0 +1,75 @@
{
"root": "/data/digital-drosophila/models/male-cns-lif/mb-credit-transfer-audit-v1",
"files": [
{
"path": "EVIDENCE.md",
"bytes": 12770,
"sha256": "cda2d810eada83ea33c96c1ce9d16102d1af22d1862bce84c47f0e7415863eca"
},
{
"path": "PREPARATION.md",
"bytes": 755,
"sha256": "8259428a56721ba8174039846623998ef11a1d8e9e14f123dfe0a0e4849c71ee"
},
{
"path": "config.json",
"bytes": 864,
"sha256": "b996e175731a920ad19e2c8989bd267cdbb71c14aa4558a8f1ef7486454c4b44"
},
{
"path": "context.py",
"bytes": 5478,
"sha256": "1626873baa224fab5d427a1fab1d6f840f14814152914ac4c2d6aa7a4f0bb1f6"
},
{
"path": "credit.py",
"bytes": 9109,
"sha256": "e03d3e1f64328058273e8364990e7a2c7f1527a31822ea7594a9e8914aa43497"
},
{
"path": "finalize.py",
"bytes": 2743,
"sha256": "9356587aa8811a3db50daee9bca22cf4114e06c6669cc80c69cd0dd2224b0130"
},
{
"path": "mbon_accounting.py",
"bytes": 18376,
"sha256": "825e9e60cb579479ddb2860a36f8dee0715b9b44d624cbad59ce0d279550d17f"
},
{
"path": "prepare.py",
"bytes": 9844,
"sha256": "9e7532bc4a564b0a0c0384ba2f3a7bfc0559c16bb256510dde7c97cce9036c0c"
},
{
"path": "run_audit.py",
"bytes": 9755,
"sha256": "3ece589f0f6ce1bff2cde94494e896a58fa4154106e613ee7e60549094304071"
},
{
"path": "summarize.py",
"bytes": 12067,
"sha256": "62432fe7b068eafae99396c4a9231adf8ef8e9d340ab64517f618fc794e7fd78"
},
{
"path": "test_credit.py",
"bytes": 12924,
"sha256": "4c473ce709ed9496b7ce1b5bedd6964c780715ff41dd54977489fbd2b99f998e"
},
{
"path": "test_integration.py",
"bytes": 3016,
"sha256": "23c4e9138b326e1a84fed88d771a6c2044a6abf72ecc7a1b829f604bcdde215d"
},
{
"path": "test_mbon_accounting.py",
"bytes": 9241,
"sha256": "d192dd357db96e628c21b9bcde617eaf6c6bc1efe5920ec55cc9cc1e4b549454"
},
{
"path": "verify_frozen.py",
"bytes": 3004,
"sha256": "85442fcefa93c64a2fac7f0a4b60ce505ddb9edab7a63cb0e25cb20f013d3850"
}
]
}
@@ -0,0 +1,267 @@
"""Read-only CPU accounting for the sealed AH replay callback.
Source/sign lanes are conditional, non-feedback bookkeeping, not additional
neurons, conductances, energies, or a whole-brain causal intervention. The
caller supplies anatomical groups and must independently verify the original
events/state and due/pending coverage. No files, Torch, or simulation entry
points are used here.
"""
from collections.abc import Mapping
import json
import numpy as np
DT_MS = .1
COEFF_KEYS = ("gd", "c0", "cg", "cv", "threshold", "reset", "seed_volt")
FLOAT_KEYS = ("old_v", "old_g", "v_integrated", "g_decayed", "v_threshold",
"v_after_reset", "g_after_reset", "v_pre_apl", "g_pre_apl", "delta_si", "v", "g")
INT_KEYS = ("ref_before", "ref_after_reset", "ref_pre_apl", "ref")
BOOL_KEYS = ("available", "request", "request_accepted", "request_rejected", "fired")
def require(value, message):
if not value:
raise ValueError(message)
def bit_equal(a, b):
return (a.dtype == b.dtype and a.shape == b.shape and
np.array_equal(np.ascontiguousarray(a).view(np.uint8), np.ascontiguousarray(b).view(np.uint8)))
class MBONAccounting:
"""callback(tick, stage); finish() -> (per_target, per_edge, JSON summary).
Group arrays have shape (N,G), sign lanes (N,G,2), with sign order positive,
negative. Negative increments/integrals retain their negative sign.
Histories use (T,N), or (T,N,G,2) for history_group_g. Target indices are
incoming.dst_local, not global IDs; the caller joins the verified target
list. Float64 lanes retain their own canonical additions; summing lanes
is not the runtime's interleaved accumulation, so residuals are reported
without correcting them or assigning them to an anatomical source.
"""
def __init__(self, incoming, groups, group_names, coeff, steps):
require(isinstance(steps, (int, np.integer)) and not isinstance(steps, (bool, np.bool_))
and 0 < steps <= np.iinfo(np.int32).max, "steps must be a positive int32-range integer")
require(isinstance(group_names, tuple) and group_names and
all(isinstance(x, str) and x for x in group_names) and len(set(group_names)) == len(group_names),
"group_names must be a nonempty tuple of unique names")
require(isinstance(coeff, Mapping), "coeff must be a mapping")
self.coeff = {}
for key in COEFF_KEYS:
value = coeff.get(key)
require(not isinstance(value, (bool, np.bool_)) and
isinstance(value, (int, float, np.integer, np.float64)) and np.isfinite(value),
"Missing/non-double/nonfinite coefficient: " + key)
self.coeff[key] = np.float64(value)
require(self.coeff["seed_volt"] > self.coeff["threshold"], "seed_volt must exceed threshold")
require("dt_ms" not in coeff or coeff["dt_ms"] == DT_MS, "AH time step is fixed at .1 ms")
require(isinstance(incoming.target_count, (int, np.integer)) and 0 < incoming.target_count <= 166700,
"Invalid incoming target count")
self.n, self.steps, self.names = int(incoming.target_count), int(steps), group_names
self.e = len(incoming.edge_id)
for name, dtype in (("src_global", "int32"), ("dst_local", "int32"),
("edge_id", "int64"), ("weights", "float64")):
value = np.asarray(getattr(incoming, name))
require(value.dtype == np.dtype(dtype) and value.shape == (self.e,), "Invalid incoming " + name)
setattr(self, name, value.copy())
require(np.all((self.src_global >= 0) & (self.src_global < 166700)) and
np.all(self.src_global[1:] >= self.src_global[:-1]), "Noncanonical incoming sources")
require(np.all(self.edge_id >= 0) and np.all(self.edge_id[1:] > self.edge_id[:-1]), "Noncanonical edge IDs")
require(np.all((self.dst_local >= 0) & (self.dst_local < self.n)) and
np.isfinite(self.weights).all(), "Invalid incoming destination/weight")
codes = np.asarray(groups)
require(codes.dtype == np.int32 and codes.shape == (self.e,) and
np.all((codes >= 0) & (codes < len(self.names))), "groups must be int32 per incoming row")
self.groups = codes.copy()
self.ticks, self.finished, self.previous = 0, False, None
shape = (self.n, len(self.names))
self.counts = {key: np.zeros(shape, np.int64) for key in
("due_count", "accepted_count", "rejected_count", "accepted_zero_count", "rejected_zero_count")}
self.increments = {key: np.zeros(shape, np.float64) for key in
("accepted_positive_V", "accepted_negative_V", "rejected_positive_V", "rejected_negative_V")}
self.edge_due = np.zeros(self.e, np.int64)
self.edge_accepted = np.zeros(self.e, np.int64)
self.spike_count = np.zeros(self.n, np.int32)
self.first = np.full(self.n, -1, np.int32)
self.requests = {key: np.zeros(self.n, np.int64) for key in
("request_count", "request_accepted_count", "request_rejected_count")}
self.sg = np.zeros(shape + (2,), np.float64)
self.sv = np.zeros_like(self.sg)
self.bg = np.zeros(self.n, np.float64)
self.bv = np.zeros(self.n, np.float64)
self.integral_g = np.zeros_like(self.sg)
self.integral_v = np.zeros_like(self.sg)
self.max_g_residual = np.zeros(self.n, np.float64)
self.max_v_residual = np.zeros(self.n, np.float64)
self.history_v = np.empty((self.steps, self.n), np.float64)
self.history_g = np.empty_like(self.history_v)
self.history_ref = np.empty((self.steps, self.n), np.int32)
self.history_group_g = np.empty((self.steps,) + self.sg.shape, np.float64)
self.history_baseline_g = np.empty_like(self.history_v)
self.history_g_residual = np.empty_like(self.history_v)
def _validate(self, tick, s):
require(not self.finished and isinstance(tick, (int, np.integer)) and
not isinstance(tick, (bool, np.bool_)) and tick == self.ticks and tick < self.steps,
"Missing, duplicate or out-of-order callback")
require(isinstance(s, Mapping), "stage must be a mapping")
for keys, dtype in ((FLOAT_KEYS, np.float64), (INT_KEYS, np.int32), (BOOL_KEYS, np.bool_)):
for key in keys:
value = s.get(key)
require(isinstance(value, np.ndarray) and value.shape == (self.n,) and value.dtype == dtype
and np.isfinite(value).all(), "Missing/invalid stage field: " + key)
h = s.get("h32")
require(isinstance(h, np.ndarray) and h.dtype == np.float32 and h.shape == (self.n,)
and np.all(h == 0) and np.all(s["delta_si"] == 0), "MBON requires zero graded APL h/delta")
require(np.all((s["ref_before"] >= 0) & (s["ref_before"] <= 22)), "Invalid refractory value")
if self.previous is not None:
require(all(bit_equal(s[a], self.previous[b]) for a, b in
(("old_v", "v"), ("old_g", "g"), ("ref_before", "ref"))), "Discontinuous observed state")
else:
require(np.all(s["ref_before"] == 0), "AH replay starts nonrefractory")
ref = np.maximum(s["ref_before"] - np.int32(1), np.int32(0))
available = ref == 0
require(np.array_equal(s["available"], available), "Availability mismatch")
require(np.array_equal(s["request_accepted"], s["request"] & available) and
np.array_equal(s["request_rejected"], s["request"] & ~available), "Request guard mismatch")
c = self.coeff
v, g = s["old_v"].copy(), s["old_g"].copy()
g[available] = np.multiply(c["gd"], s["old_g"][available])
v[available] = np.add(c["c0"], np.add(np.multiply(c["cg"], s["old_g"][available]),
np.multiply(c["cv"], s["old_v"][available])))
require(bit_equal(v, s["v_integrated"]) and bit_equal(g, s["g_decayed"]), "Integration mismatch")
v[s["request_accepted"]] = c["seed_volt"]
require(bit_equal(v, s["v_threshold"]), "Request override mismatch")
fired = available & (v > c["threshold"])
require(np.array_equal(s["fired"], fired), "Strict threshold mismatch")
v[fired], g[fired], ref[fired] = c["reset"], np.float64(0), np.int32(22)
for key, value in (("v_after_reset", v), ("g_after_reset", g), ("ref_after_reset", ref)):
require(bit_equal(s[key], value), "Reset mismatch: " + key)
due, accepted = s.get("due_edge_indices"), s.get("arrival_accepted")
require(isinstance(due, np.ndarray) and due.dtype == np.int64 and due.ndim == 1 and
np.all((due >= 0) & (due < self.e)) and np.all(due[1:] > due[:-1]), "Noncanonical due edge rows")
require(isinstance(s.get("due_edge_id"), np.ndarray) and
bit_equal(s["due_edge_id"], self.edge_id[due]), "Due edge-ID mismatch")
require(isinstance(accepted, np.ndarray) and accepted.dtype == np.bool_ and accepted.shape == due.shape
and np.array_equal(accepted, ref[self.dst_local[due]] == 0), "Arrival acceptance mismatch")
require(tick >= 18 or not len(due), "Arrival before delay 18")
rows = due[accepted]
np.add.at(g, self.dst_local[rows], self.weights[rows])
for key, value in (("g_pre_apl", g), ("v_pre_apl", v), ("ref_pre_apl", ref), ("v", v), ("ref", ref)):
require(bit_equal(s[key], value), "Arrival/final mismatch: " + key)
require(bit_equal(s["g"], np.subtract(g, s["delta_si"])), "Final g mismatch")
return due, accepted
def _residual(self, voltage, g):
# No repair: anatomical lanes are never contaminated with roundoff.
vr = voltage - np.add(self.bv, self.sv.sum(axis=(1, 2)))
gr = g - np.add(self.bg, self.sg.sum(axis=(1, 2)))
self.max_v_residual = np.maximum(self.max_v_residual, np.abs(vr))
self.max_g_residual = np.maximum(self.max_g_residual, np.abs(gr))
return gr
def __call__(self, tick, s):
due, accepted = self._validate(tick, s)
if self.previous is None:
self.bv, self.bg = s["old_v"].copy(), s["old_g"].copy()
c, available, fired = self.coeff, s["available"], s["fired"]
self.sv[available] = np.add(np.multiply(c["cg"], self.sg[available]),
np.multiply(c["cv"], self.sv[available]))
self.bv[available] = np.add(c["c0"], np.add(np.multiply(c["cg"], self.bg[available]),
np.multiply(c["cv"], self.bv[available])))
self.sg[available] = np.multiply(c["gd"], self.sg[available])
self.bg[available] = np.multiply(c["gd"], self.bg[available])
self._residual(s["v_integrated"], s["g_decayed"])
req = s["request_accepted"]
self.sv[req], self.bv[req] = 0., c["seed_volt"]
self._residual(s["v_threshold"], s["g_decayed"])
self.sv[fired], self.sg[fired] = 0., 0.
self.bv[fired], self.bg[fired] = c["reset"], 0.
self.first[(self.first < 0) & fired] = np.int32(tick)
self.spike_count += fired.astype(np.int32)
for key, stage_key in (("request_count", "request"), ("request_accepted_count", "request_accepted"),
("request_rejected_count", "request_rejected")):
self.requests[key] += s[stage_key].astype(np.int64)
dst, codes, weights = self.dst_local[due], self.groups[due], self.weights[due]
self.edge_due[due] += 1
self.edge_accepted[due[accepted]] += 1
for key, keep in (("due_count", np.ones(len(due), bool)), ("accepted_count", accepted),
("rejected_count", ~accepted), ("accepted_zero_count", accepted & (weights == 0)),
("rejected_zero_count", ~accepted & (weights == 0))):
np.add.at(self.counts[key], (dst[keep], codes[keep]), 1)
for key, keep in (("accepted_positive_V", accepted & (weights > 0)),
("accepted_negative_V", accepted & (weights < 0)),
("rejected_positive_V", ~accepted & (weights > 0)),
("rejected_negative_V", ~accepted & (weights < 0))):
np.add.at(self.increments[key], (dst[keep], codes[keep]), weights[keep])
nonzero = accepted & (weights != 0)
# add.at is sequential for repeated lane indices, preserving every
# lane's relative canonical edge order. Never pre-sum edge weights.
np.add.at(self.sg, (dst[nonzero], codes[nonzero], (weights[nonzero] < 0).astype(np.int32)), weights[nonzero])
gr = self._residual(s["v"], s["g"])
self.integral_g += np.multiply(self.sg, np.float64(DT_MS))
self.integral_v += np.multiply(self.sv, np.float64(DT_MS))
for value in (self.sg, self.sv, self.bg, self.bv, self.integral_g, self.integral_v,
self.max_v_residual, self.max_g_residual, *self.increments.values()):
require(np.isfinite(value).all(), "Nonfinite source accounting")
self.history_v[tick], self.history_g[tick], self.history_ref[tick] = s["v"], s["g"], s["ref"]
self.history_group_g[tick] = self.sg
self.history_baseline_g[tick], self.history_g_residual[tick] = self.bg, gr
self.previous = {key: s[key].copy() for key in ("v", "g", "ref")}
self.ticks += 1
def finish(self):
require(not self.finished and self.ticks == self.steps and self.previous is not None,
"Observer must cover exactly all ticks before finish")
require(np.array_equal(self.counts["due_count"], self.counts["accepted_count"] + self.counts["rejected_count"]),
"Group count conservation mismatch")
for key, edge in (("due_count", self.edge_due), ("accepted_count", self.edge_accepted)):
grouped = np.zeros_like(self.counts[key])
np.add.at(grouped, (self.dst_local, self.groups), edge)
require(np.array_equal(grouped, self.counts[key]), "Per-edge/group count mismatch")
data = {"target_local": np.arange(self.n, dtype=np.int32), "spike_count": self.spike_count.copy(),
"first_spike_tick": self.first.copy(), **{key: value.copy() for key, value in self.requests.items()},
**{key: value.copy() for key, value in self.counts.items()},
**{key: value.copy() for key, value in self.increments.items()},
**{"final_" + key: value.copy() for key, value in self.previous.items()},
"final_group_g": self.sg.copy(), "final_group_v": self.sv.copy(),
"g_integral_V_ms": self.integral_g.sum(axis=2), "g_sign_integral_V_ms": self.integral_g.copy(),
"v_sign_integral_V_ms": self.integral_v.copy(),
"max_g_lane_residual_V": self.max_g_residual.copy(), "max_v_lane_residual_V": self.max_v_residual.copy(),
"history_v": self.history_v.copy(), "history_g": self.history_g.copy(), "history_ref": self.history_ref.copy(),
"history_group_g": self.history_group_g.copy(), "history_baseline_g": self.history_baseline_g.copy(),
"history_g_residual": self.history_g_residual.copy()}
edges = {"edge_id": self.edge_id.copy(), "source_neuron_idx": self.src_global.copy(),
"target_local": self.dst_local.copy(), "group": self.groups.copy(), "weight_V": self.weights.copy(),
"due_count": self.edge_due.copy(), "accepted_count": self.edge_accepted.copy(),
"rejected_count": self.edge_due - self.edge_accepted}
groups = {name: {**{key: int(value[:, gi].sum()) for key, value in self.counts.items()},
**{key: float(value[:, gi].sum()) for key, value in self.increments.items()},
"g_integral_V_ms": float(self.integral_g[:, gi].sum()),
"g_positive_integral_V_ms": float(self.integral_g[:, gi, 0].sum()),
"g_negative_integral_V_ms": float(self.integral_g[:, gi, 1].sum())}
for gi, name in enumerate(self.names)}
summary = {"complete": True, "pass_all": True,
"pass_all_scope": "Observer callback coverage and internal count/state-accounting checks only",
"steps": self.steps, "callback_count": self.ticks, "targets": self.n, "incoming_edges": self.e,
"group_names": list(self.names), "sign_order": ["positive", "negative"], "dt_ms": DT_MS,
"due_count": int(self.edge_due.sum()), "accepted_count": int(self.edge_accepted.sum()),
"rejected_count": int((self.edge_due - self.edge_accepted).sum()), "groups": groups,
"max_g_lane_residual_V": float(self.max_g_residual.max(initial=0.)),
"max_v_lane_residual_V": float(self.max_v_residual.max(initial=0.)),
"residual_policy": "Observed state minus uncorrected float64 lane sum; no fitted tolerance or anatomical reassignment",
"integral_contract": "Sum of end-of-tick source g or v lanes times dt_ms; units V*ms, not conductance or energy",
"increment_contract": "Nominal accepted/rejected signed per-edge increments; negative fields retain negative sign",
"lane_contract": "Observed availability controls decay/integration; observed request/reset clears voltage/source history; fired clears g; canonical accepted adds only",
"pending_coverage_checked_by_observer": False, "original_events_verified_by_observer": False,
"caller_must_verify_original_events_final_and_queue_coverage": True,
"nonfeedback": True, "parameter_changes": False, "learning": False,
"functional_transfer_claim": False, "whole_brain_intervention_claim": False}
# Includes aggregate overflows: a finite per-target array alone must
# never permit an Infinity/NaN JSON report with pass_all=True.
json.dumps(summary, allow_nan=False)
self.finished = True
return data, edges, summary
@@ -0,0 +1,136 @@
"""Preregister all AK trials before credit/MBON outcomes; never train."""
from datetime import datetime, timezone
import platform
import shutil
import subprocess
import sys
import numpy as np
import pandas as pd
import yaml
from context import (ROOT, MODEL, EXP, AK, H, AG, META, CORE, COEFF, CFG, PINS,
read, save, digest, sources, integrity, write_npz)
def main():
assert not EXP.exists() or (EXP.is_dir() and not any(EXP.iterdir())), 'Populated experiment exists: preserve it, do not regenerate'
assert shutil.disk_usage(EXP.parent).free > CFG['output_budget_bytes'] + 10 * 1024**3
for relative, expected in PINS.items():
assert digest(ROOT / relative) == expected, relative
assert read(AK / 'audit/final-status.json')['status'] == 'PASS-FROZEN-D18-INDEPENDENT-VALIDATION'
assert not CFG['training'] and not CFG['candidate_generation']
jc = yaml.safe_load((ROOT / 'models/male-cns-lif/mb-physiology-v1/phase4j.yaml').read_text())
j = jc['eligibility_v2']
assert j['kc_trace_tau_ms'] == CFG['kc_trace_tau_ms'] and j['trace_cap'] == CFG['trace_cap']
assert j['max_fractional_depression'] == CFG['conditional_depression_fraction'] == .25
assert jc['direct_kc']['dan_time_ms'] / CFG['dt_ms'] == CFG['virtual_gate_tick']
inventory = read(AK / 'protocol/validation-cases.json')
assert len(inventory) == CFG['primary_trials']
seeds = sorted({r['seed'] for r in inventory})
assert len(seeds) == 5
planned = []
for row in inventory:
for repeat in (0, 1) if row['seed'] == seeds[0] else (0,):
planned.append(dict(row, repeat=repeat))
assert len(planned) == CFG['primary_trials'] + CFG['technical_repeats']
inputs = dict(PINS)
h_manifest = {line.split(' ', 1)[1]: line.split(' ', 1)[0]
for line in (H / 'manifests/checksums.sha256').read_text().splitlines()}
static_h = ('plastic-mask/plastic-edge-candidates.parquet', 'plastic-mask/plastic-edge-ids.int64.npy',
'plastic-mask/plastic-edge-mask.bool.npy', 'mappings/dan-to-mbon-confirmed.parquet',
'mappings/mbon-to-compartment.parquet', 'mappings/kc-to-mbon-actual-edges.parquet')
for rel in static_h:
assert digest(H / rel) == h_manifest[rel]
inputs[(H / rel).relative_to(ROOT).as_posix()] = h_manifest[rel]
for row in planned:
case = AK / 'cases' / row['cohort'] / row['name']
trial = AK / 'gpu' / row['cohort'] / (row['name'] + '-r' + str(row['repeat']))
for p in (case / 'spec.json', case / 'requests.npz', trial / 'state.npz', trial / 'summary.json'):
inputs[p.relative_to(ROOT).as_posix()] = digest(p)
paths = [COEFF] + list((AG / 'graphs/full').glob('*.npy')) + list((AG / 'apl-bundle').glob('*.npy'))
raw_path = ROOT / 'datasets/male-cns-v1.0/processed/neuron-only/gpu/csr-weights.int64.npy'
for p in paths + [raw_path]:
inputs[p.relative_to(ROOT).as_posix()] = digest(p)
for name in ('protocol', 'trials', 'audit', 'regression', 'logs', 'pairs'):
(EXP / name).mkdir(parents=True, exist_ok=False)
test = subprocess.run([sys.executable, '-B', '-m', 'unittest', 'discover', '-v', '-s', str(MODEL)],
cwd=MODEL, text=True, capture_output=True)
with (EXP / 'regression/unit-tests.log').open('x', encoding='utf-8') as f:
f.write(test.stdout + test.stderr)
assert test.returncode == 0, 'Unit tests failed; preserve incomplete experiment'
assert 'skipped=' not in test.stderr, 'Server arithmetic comparison must not be skipped'
save(EXP / 'protocol/preregistered.json', dict(timestamp_utc=datetime.now(timezone.utc).isoformat(),
sources=sources(), config=CFG, inputs=[dict(path=k, sha256=v) for k, v in sorted(inputs.items())],
parent_commit=subprocess.check_output(['git', '-C', str(ROOT), 'rev-parse', 'HEAD'], text=True).strip(),
planned=planned, prior_AK_representation_known=True, before_new_credit_and_MBON_outcomes=True,
training=False, learning_achieved=False, virtual_gate_is_dopamine_measurement=False,
MBON_recurrent_and_all_other_presynaptic_events_clamped=True,
expected_functional_effect_not_a_preregistered_learning_gate=True,
python=sys.version, platform=platform.platform(), numpy=np.__version__))
save(EXP / 'regression/old-integrity-before.json', integrity())
meta = pd.read_parquet(META).sort_values('neuron_idx').reset_index(drop=True)
assert np.array_equal(meta.neuron_idx, np.arange(CFG['neurons'], dtype=np.int32))
kc = np.flatnonzero(meta.annotation_class.eq('Kenyon_Cell')).astype(np.int32)
mbon = np.flatnonzero(meta.annotation_class.eq('MBON')).astype(np.int32)
apl = np.flatnonzero(meta.annotation_type.eq('APL')).astype(np.int32)
assert len(kc) == 4064 and len(mbon) == 97
assert np.array_equal(kc, np.load(AG / 'apl-bundle/kc_globals.npy'))
assert np.array_equal(apl, np.load(AG / 'apl-bundle/apl_globals.npy'))
folder = AG / 'graphs/full'
arrays = {k: np.load(folder / (k + '.npy'), mmap_mode='r') for k in ('nodes', 'src', 'dst', 'edge_id', 'weights')}
assert np.array_equal(arrays['nodes'], np.arange(CFG['neurons'], dtype=np.int32))
assert np.array_equal(arrays['edge_id'], np.arange(CFG['edges'], dtype=np.int64))
raw = np.load(raw_path, mmap_mode='r')
candidate = pd.read_parquet(H / static_h[0])
ids = np.load(H / static_h[1]); mask = np.load(H / static_h[2])
assert ids.dtype == np.int64 and ids.shape == (CFG['candidate_edges'],)
assert np.array_equal(candidate.edge_id, ids) and np.array_equal(np.flatnonzero(mask), ids)
for prefix, key in (('source', 'src'), ('target', 'dst')):
assert np.array_equal(candidate[prefix + '_neuron_idx'], arrays[key][ids])
assert np.array_equal(candidate[prefix + '_body_id'], meta.iloc[arrays[key][ids]].body_id)
assert np.array_equal(candidate.raw_synapse_count, raw[ids])
assert np.isin(candidate.source_neuron_idx, kc).all() and np.isin(candidate.target_neuron_idx, mbon).all()
assert (candidate.plasticity_polarity == -1).all() and candidate.target_compartment_verbatim.notna().all()
confirmed = pd.read_parquet(H / static_h[3])
assert confirmed.exact_compartment_match.all()
assert np.array_equal(confirmed.source_compartment_verbatim, confirmed.target_compartment_verbatim)
for row in confirmed.itertuples():
assert arrays['src'][row.edge_id] == row.source_neuron_idx and arrays['dst'][row.edge_id] == row.target_neuron_idx
assert raw[row.edge_id] == row.raw_synapse_count and meta.iloc[row.source_neuron_idx].annotation_class == 'DAN'
assert set(candidate.target_neuron_idx).issubset(set(confirmed.target_neuron_idx))
compartments = pd.read_parquet(H / static_h[4]).sort_values('neuron_idx').reset_index(drop=True)
assert np.array_equal(compartments.neuron_idx, mbon)
compartments.to_parquet(EXP / 'protocol/mbon-metadata.parquet', index=False)
candidate.to_parquet(EXP / 'protocol/candidate-static.parquet', index=False)
lookup = np.full(CFG['neurons'], -1, np.int32); lookup[mbon] = np.arange(len(mbon), dtype=np.int32)
selected = np.flatnonzero(lookup[arrays['dst']] >= 0)
src, dst = arrays['src'][selected], lookup[arrays['dst'][selected]]
weights = arrays['weights'][selected].copy()
assert weights.dtype == np.float64 and raw.dtype == np.int64
weights[np.isin(src, apl)] = 0.0
is_candidate = mask[selected]
assert int(is_candidate.sum()) == CFG['candidate_edges'] and (weights[is_candidate] > 0).all()
groups = np.full(len(selected), CFG['groups'].index('other'), np.int32)
for name, chosen in (('nonplastic_KC', np.isin(src, kc)), ('DAN', meta.iloc[src].annotation_class.eq('DAN').to_numpy()),
('MBON', np.isin(src, mbon)), ('APL', np.isin(src, apl)), ('plastic_KC', is_candidate)):
groups[chosen] = CFG['groups'].index(name)
kcall = pd.read_parquet(H / static_h[5])
assert np.array_equal(selected[np.isin(src, kc)], kcall.edge_id.to_numpy())
assert np.array_equal(raw[kcall.edge_id.to_numpy()], kcall.raw_synapse_count.to_numpy())
write_npz(EXP / 'protocol/incoming.npz', src_global=src, dst_local=dst, edge_id=selected.astype(np.int64),
weights=weights, raw_contacts=raw[selected], groups=groups, is_candidate=is_candidate,
targets=mbon, kc_globals=kc, edge_source_local=np.searchsorted(kc, candidate.source_neuron_idx).astype(np.int32))
save(EXP / 'protocol/graph-audit.json', dict(neurons=len(meta), all_edges=CFG['edges'], KC=len(kc), MBON=len(mbon),
all_MBON_incoming_edges=len(selected), all_KC_MBON_edges=len(kcall), candidate_edges=len(ids),
candidate_targets=int(candidate.target_neuron_idx.nunique()), confirmed_DAN_MBON_edges=len(confirmed),
compartments={str(c): dict(edges=len(g), targets=int(g.target_neuron_idx.nunique()), sources=int(g.source_neuron_idx.nunique()))
for c, g in candidate.groupby('target_compartment_verbatim')},
fast_APL_incoming_edges_zeroed=int(np.isin(src, apl).sum()), groups={name: int((groups == i).sum()) for i, name in enumerate(CFG['groups'])},
mask_all_edges_identity_verified=True, mapping_basis='Frozen explicit annotation token + real DAN-to-MBON edge; not synapse ROI',
feedback_neuron_class_not_inferred=True, weight_units='float64 SI volts; not measured conductance'))
save(EXP / 'protocol/prepared-hashes.json', [dict(path=p.relative_to(EXP).as_posix(), bytes=p.stat().st_size, sha256=digest(p))
for p in sorted((EXP / 'protocol').iterdir()) if p.is_file() and p.name != 'prepared-hashes.json'])
print('PREREGISTERED 120 primary +24 repeats; static edge identities validated; no new trajectory or training', flush=True)
if __name__ == '__main__':
main()
@@ -0,0 +1,160 @@
"""CPU-only read-only baseline and one predeclared conditional sensitivity."""
from concurrent.futures import ProcessPoolExecutor, as_completed
from functools import lru_cache
import time
import traceback
import numpy as np
from context import (ROOT, EXP, AK, CORE, COEFF, CFG, PINS, read, save, digest,
load_module, check, budget, bit_equal, write_npz)
from credit import replay_credit
from mbon_accounting import MBONAccounting
@lru_cache(maxsize=1)
def prepared():
core = load_module('sealed_ah_core_al', CORE, PINS[CORE.relative_to(ROOT).as_posix()])
with np.load(EXP / 'protocol/incoming.npz', allow_pickle=False) as f:
data = {k: f[k].copy() for k in f.files}
incoming = core.IncomingIndex(data['src_global'], data['dst_local'], data['edge_id'], data['weights'], len(data['targets']))
altered = data['weights'].copy()
altered[data['is_candidate']] *= np.float64(1.0 - CFG['conditional_depression_fraction'])
assert bit_equal(data['weights'][~data['is_candidate']], altered[~data['is_candidate']])
assert np.array_equal(np.sign(data['weights']), np.sign(altered))
depressed = core.IncomingIndex(data['src_global'], data['dst_local'], data['edge_id'], altered, len(data['targets']))
for array in data.values():
array.setflags(write=False)
return core, data, incoming, depressed, read(COEFF)
def compare_results(base, changed, base_history, changed_history):
event_equal = all(bit_equal(base[k], changed[k]) for k in ('step', 'neuron_idx'))
count_changes = base['counts'] != changed['counts']
latency_changes = base['first_spike'] != changed['first_spike']
return dict(event_sequence_changed=not event_equal,
spike_count_L1=int(np.abs(base['counts'].astype(np.int64) - changed['counts']).sum()),
neurons_with_count_change=int(count_changes.sum()), neurons_with_first_latency_change=int(latency_changes.sum()),
baseline_spikes=int(base['counts'].sum()), depressed_spikes=int(changed['counts'].sum()),
max_abs_V_difference_SI=float(np.max(np.abs(base_history['history_v'] - changed_history['history_v']))),
max_abs_g_difference_SI=float(np.max(np.abs(base_history['history_g'] - changed_history['history_g']))),
final_V_max_abs_difference_SI=float(np.max(np.abs(base['v'] - changed['v']))),
final_g_max_abs_difference_SI=float(np.max(np.abs(base['g'] - changed['g']))),
functional_count_or_first_latency_change=bool(count_changes.any() or latency_changes.any()),
result_scope='Conditional clamped-upstream replay only; all target threshold/reset/ref recalculated; not whole-brain or learning')
def audit_trial(row, stage):
start = time.perf_counter()
key = row['name'] + '-r' + str(row['repeat'])
out = EXP / 'trials' / key
assert stage in ('baseline', 'conditional25')
if stage == 'baseline':
out.mkdir(exist_ok=False)
else:
assert read(EXP / 'audit/baselines-complete.json')['pass_all'], 'All 144 baseline replays must pass first'
assert out.is_dir() and not (out / 'summary.json').exists()
case = AK / 'cases' / row['cohort'] / row['name']
trial = AK / 'gpu' / row['cohort'] / key
spec = read(case / 'spec.json')
assert spec['steps'] == CFG['steps'] and spec['dt_ms'] == CFG['dt_ms'] and spec['apl_delay_steps'] == 18
assert all(spec[k] == row[k] for k in ('name', 'seed', 'mode', 'odor_id'))
assert read(trial / 'summary.json')['complete'] and read(trial / 'summary.json')['pass_all']
with np.load(trial / 'state.npz', allow_pickle=False) as f:
state = {k: f[k].copy() for k in f.files}
assert set(state) == {'step', 'neuron_idx', 'counts', 'v', 'g', 'ref'}
with np.load(case / 'requests.npz', allow_pickle=False) as f:
requests = {k: f[k].copy() for k in f.files}
core, data, incoming, depressed, coeff = prepared()
targets, steps = data['targets'], spec['steps']
assert not np.isin(requests['neuron_idx'], targets).any(), 'Unexpected MBON injection: do not reinterpret it'
v0 = np.full(len(targets), spec['model']['resting_potential_mv'], np.float64) * np.float64(.001)
g0 = np.zeros(len(targets), np.float64)
events = dict(step=state['step'], neuron_idx=state['neuron_idx'])
if stage == 'baseline':
observer = MBONAccounting(incoming, data['groups'], tuple(CFG['groups']), coeff, steps)
result = core.replay(v0, g0, coeff, steps, targets, requests, events, incoming,
np.zeros((steps, len(targets)), np.float32), observer)
selected = np.isin(state['neuron_idx'], targets)
exact = {k: bit_equal(result[k], state[k][targets]) for k in ('counts', 'v', 'g', 'ref')}
exact.update({k: bit_equal(result[k], state[k][selected]) for k in ('step', 'neuron_idx')})
assert all(exact.values()), 'Baseline MBON divergence: ' + str(exact)
bt, be, bs = observer.finish()
write_npz(out / 'baseline-replay.npz', **result)
write_npz(out / 'baseline-target-accounting.npz', **bt)
pending = np.zeros(len(incoming.edge_id), np.int64)
for tick in range(steps - 18, steps):
due = incoming.due(state['neuron_idx'][state['step'] == tick])
pending[due] += 1
be['pending_after_window_count'] = pending
# Independent source-spike multiplicity covers due plus pending events.
source_counts = np.bincount(state['neuron_idx'], minlength=CFG['neurons'])
assert np.array_equal(be['due_count'] + pending, source_counts[incoming.src_global])
write_npz(out / 'baseline-edge-accounting.npz', **be)
save(out / 'baseline-accounting.json', bs)
trace = replay_credit(state['step'], state['neuron_idx'], data['kc_globals'],
steps=steps, gate_tick=CFG['virtual_gate_tick'], dt_ms=CFG['dt_ms'],
tau_ms=CFG['kc_trace_tau_ms'], cap=CFG['trace_cap'])
arrays = {k: value for k, value in trace.items() if isinstance(value, np.ndarray)}
write_npz(out / 'credit.npz', **arrays)
save(out / 'credit.json', {k: value for k, value in trace.items() if not isinstance(value, np.ndarray)})
report = dict(**row, pass_all=True, baseline_exact=exact, due_plus_pending_source_events_exact=True,
CPU_wall_seconds=time.perf_counter() - start)
save(out / 'baseline-summary.json', report)
return report
with np.load(out / 'baseline-replay.npz', allow_pickle=False) as f:
result = {k: f[k].copy() for k in f.files}
with np.load(out / 'baseline-target-accounting.npz', allow_pickle=False) as f:
bt = {k: f[k].copy() for k in f.files}
baseline_report = read(out / 'baseline-summary.json')
assert baseline_report['pass_all'] and all(baseline_report['baseline_exact'].values())
exact = baseline_report['baseline_exact']
d_observer = MBONAccounting(depressed, data['groups'], tuple(CFG['groups']), coeff, steps)
changed = core.replay(v0, g0, coeff, steps, targets, requests, events, depressed,
np.zeros((steps, len(targets)), np.float32), d_observer)
dt, de, ds = d_observer.finish()
write_npz(out / 'conditional25-replay.npz', **changed)
write_npz(out / 'conditional25-target-accounting.npz', **dt)
write_npz(out / 'conditional25-edge-accounting.npz', **de)
save(out / 'conditional25-accounting.json', ds)
sensitivity = compare_results(result, changed, bt, dt)
save(out / 'sensitivity.json', sensitivity)
report = dict(**row, pass_all=True, baseline_exact=exact, sensitivity=sensitivity,
credit_gate='Virtual tick900 post-update; no DAN injection or plastic update',
biological_duration_ms=spec['duration_ms'], CPU_wall_seconds=time.perf_counter() - start,
baseline_CPU_wall_seconds=baseline_report['CPU_wall_seconds'],
source_sha256={f: digest(trial / f) for f in ('state.npz', 'summary.json')},
conditional_weight_copy_only=True, training=False, candidate_generated=False)
save(out / 'summary.json', report)
save(out / 'output-hashes.json', [dict(path=p.name, bytes=p.stat().st_size, sha256=digest(p))
for p in sorted(out.iterdir()) if p.is_file()])
return report
def main():
reg = check()
assert not any((EXP / 'trials').iterdir()), 'No automatic resume/overwrite of diagnostic outputs'
complete = []
try:
for stage in ('baseline', 'conditional25'):
complete = []
with ProcessPoolExecutor(max_workers=CFG['workers']) as pool:
futures = {pool.submit(audit_trial, row, stage): row for row in reg['planned']}
for task in as_completed(futures):
result = task.result()
complete.append(dict(name=result['name'], repeat=result['repeat'], pass_all=True))
budget()
print(stage, len(complete), result['name'], result['repeat'],
round(result['CPU_wall_seconds'], 3), 'CPU s', flush=True)
assert len(complete) == 144
if stage == 'baseline':
save(EXP / 'audit/baselines-complete.json', dict(pass_all=True, trials=complete, primary=120, repeats=24))
except Exception as error:
save(EXP / 'audit/failure.json', dict(error=type(error).__name__, message=str(error),
traceback=traceback.format_exc(), stage=stage, completed=complete))
raise
assert len(complete) == 144
save(EXP / 'audit/replays-complete.json', dict(pass_all=True, trials=complete, primary=120, repeats=24,
meaning='All exact conditional baseline reconstructions; not an overall biological or learning PASS'))
if __name__ == '__main__':
main()
@@ -0,0 +1,177 @@
"""All predeclared pairs and all trial outputs; never choose a winning odor."""
from itertools import combinations
import numpy as np
import pandas as pd
from context import EXP, AK, CFG, read, save as _save, digest, bit_equal, write_npz as _write_npz
from credit import pair_identity
def load_arrays(path):
with np.load(path, allow_pickle=False) as data:
return {key: data[key].copy() for key in data.files}
def metrics(values):
values = np.asarray(values, np.float64)
if not len(values):
return dict(min=None, mean=None, max=None, undefined_reason='No defined denominator observations')
return dict(min=float(values.min()), mean=float(values.mean()), max=float(values.max()))
def primary_rows(reg):
rows = [r for r in reg['planned'] if r['repeat'] == 0]
assert len(rows) == CFG['primary_trials'] and len({r['name'] for r in rows}) == len(rows)
return rows
def run(verify_only=False):
def save(path, value):
if verify_only:
assert read(path) == value, 'Summary JSON differs from recomputed evidence: ' + str(path)
else:
_save(path, value)
def write_npz(path, **value):
if verify_only:
old = load_arrays(path)
assert set(old) == set(value) and all(bit_equal(old[k], value[k]) for k in old)
else:
_write_npz(path, **value)
reg = read(EXP / 'protocol/preregistered.json')
assert read(EXP / 'audit/replays-complete.json')['pass_all']
data = load_arrays(EXP / 'protocol/incoming.npz')
for row in reg['planned']:
folder = EXP / 'trials' / (row['name'] + '-r' + str(row['repeat']))
hashes = read(folder / 'output-hashes.json')
assert {r['path'] for r in hashes} == {p.name for p in folder.iterdir() if p.name != 'output-hashes.json'}
for entry in hashes:
assert digest(folder / entry['path']) == entry['sha256']
original = load_arrays(AK / 'gpu' / row['cohort'] / (row['name'] + '-r' + str(row['repeat'])) / 'state.npz')
base = load_arrays(folder / 'baseline-replay.npz')
selected = np.isin(original['neuron_idx'], data['targets'])
assert all(bit_equal(base[k], original[k][data['targets']]) for k in ('v', 'g', 'ref', 'counts'))
assert all(bit_equal(base[k], original[k][selected]) for k in ('step', 'neuron_idx'))
candidate = pd.read_parquet(EXP / 'protocol/candidate-static.parquet')
target_meta = pd.read_parquet(EXP / 'protocol/mbon-metadata.parquet')
primary = primary_rows(reg)
repeats = []
for row in reg['planned']:
if row['repeat'] != 1:
continue
paths = [EXP / 'trials' / (row['name'] + '-r' + str(i)) for i in (0, 1)]
checks = {}
for filename in ('baseline-replay.npz', 'baseline-target-accounting.npz', 'baseline-edge-accounting.npz',
'conditional25-replay.npz', 'conditional25-target-accounting.npz', 'conditional25-edge-accounting.npz', 'credit.npz'):
a, b = (load_arrays(p / filename) for p in paths)
checks[filename] = set(a) == set(b) and all(bit_equal(a[k], b[k]) for k in a)
for filename in ('baseline-accounting.json', 'conditional25-accounting.json', 'credit.json', 'sensitivity.json'):
checks[filename] = read(paths[0] / filename) == read(paths[1] / filename)
assert all(checks.values()), 'Repeat accounting differs: ' + row['name']
repeats.append(dict(name=row['name'], checks=checks, pass_all=True))
assert len(repeats) == CFG['technical_repeats']
save(EXP / 'audit/repeat-checks.json', dict(pass_all=True, repeats=repeats))
summaries, target_rows, trial_metrics = [], [], []
for row in primary:
folder = EXP / 'trials' / (row['name'] + '-r0')
report = read(folder / 'summary.json')
assert report['pass_all'] and all(report['baseline_exact'].values())
summaries.append(report)
targets = load_arrays(folder / 'baseline-target-accounting.npz')
change = load_arrays(folder / 'conditional25-target-accounting.npz')
edges = load_arrays(folder / 'baseline-edge-accounting.npz')
exc = targets['accepted_positive_V'].sum(axis=1)
plastic_exc = targets['accepted_positive_V'][:, 0]
area_exc = targets['g_sign_integral_V_ms'][:, :, 0].sum(axis=1)
area_plastic = targets['g_sign_integral_V_ms'][:, 0, 0]
for i, meta in enumerate(target_meta.itertuples()):
entry = dict(name=row['name'], cohort=row['cohort'], mode=row['mode'], odor_id=row['odor_id'], seed=row['seed'],
neuron_idx=int(meta.neuron_idx), body_id=int(meta.body_id), annotation_type=meta.annotation_type,
compartment_verbatim=meta.mb_compartment_verbatim,
candidate_target=bool(np.any(candidate.target_neuron_idx.to_numpy() == meta.neuron_idx)),
accepted_total_positive_V=float(exc[i]), accepted_plastic_positive_V=float(plastic_exc[i]),
plastic_accepted_positive_fraction=None if exc[i] == 0 else float(plastic_exc[i] / exc[i]),
positive_source_g_area_V_ms=float(area_exc[i]), plastic_positive_g_area_V_ms=float(area_plastic[i]),
plastic_positive_g_area_fraction=None if area_exc[i] == 0 else float(area_plastic[i] / area_exc[i]),
baseline_spikes=int(targets['spike_count'][i]), conditional25_spikes=int(change['spike_count'][i]),
baseline_first_tick=int(targets['first_spike_tick'][i]), conditional25_first_tick=int(change['first_spike_tick'][i]),
max_abs_V_delta_SI=float(np.max(np.abs(targets['history_v'][:, i] - change['history_v'][:, i]))),
max_abs_g_delta_SI=float(np.max(np.abs(targets['history_g'][:, i] - change['history_g'][:, i]))))
target_rows.append(entry)
pick = data['is_candidate']
summary = dict(name=row['name'], cohort=row['cohort'], mode=row['mode'], odor_id=row['odor_id'], seed=row['seed'],
plastic_due_events=int(edges['due_count'][pick].sum()), plastic_accepted_events=int(edges['accepted_count'][pick].sum()),
plastic_rejected_events=int(edges['rejected_count'][pick].sum()),
plastic_pending_events=int(edges['pending_after_window_count'][pick].sum()),
plastic_edges_with_accepted_events=int(np.count_nonzero(edges['accepted_count'][pick])),
accepted_positive_V=float(exc.sum()), plastic_accepted_positive_V=float(plastic_exc.sum()),
plastic_accepted_positive_fraction=None if exc.sum() == 0 else float(plastic_exc.sum() / exc.sum()),
plastic_positive_g_area_fraction=None if area_exc.sum() == 0 else float(area_plastic.sum() / area_exc.sum()),
**report['sensitivity'])
trial_metrics.append(summary)
target_table = pd.DataFrame(target_rows)
if verify_only:
assert target_table.equals(pd.read_parquet(EXP / 'audit/per-MBON-primary.parquet'))
else:
target_table.to_parquet(EXP / 'audit/per-MBON-primary.parquet', index=False)
save(EXP / 'audit/primary-trial-metrics.json', trial_metrics)
pair_reports = []
for cohort in sorted({r['cohort'] for r in primary}):
for mode in sorted({r['mode'] for r in primary}):
rows = [r for r in primary if r['cohort'] == cohort and r['mode'] == mode]
odors = sorted({r['odor_index'] for r in rows})
assert len(rows) == 30 and len(odors) == 6
traces = {}; whole = {}; ids = {}
for odor in odors:
series = sorted((r for r in rows if r['odor_index'] == odor), key=lambda r: r['seed'])
assert len(series) == 5
ids[odor] = series[0]['odor_id']
credit = [load_arrays(EXP / 'trials' / (r['name'] + '-r0') / 'credit.npz') for r in series]
traces[odor] = np.stack([c['trace_gate'] for c in credit])
whole[odor] = np.stack([(c['spike_count_total'] > 0).astype(np.float32) for c in credit])
for a, b in combinations(odors, 2):
name = f'{cohort}-{mode}-{a:02d}-vs-{b:02d}'
result = dict(cohort=cohort, mode=mode, odor_a=ids[a], odor_b=ids[b], odor_index_a=a, odor_index_b=b)
for definition, series in (('virtual_gate900', traces), ('whole_window_auxiliary', whole)):
identities = pair_identity(series[a], series[b], data['edge_source_local'])
save_arrays = {k: v for k, v in identities.items() if isinstance(v, np.ndarray)}
write_npz(EXP / 'pairs' / (name + '-' + definition + '.npz'), **save_arrays)
summary = identities['summary']
# Historic local existence criterion only, no new overall pass rate.
summary['local_specific_KC_and_edges_exist_both_sides'] = all(
summary[unit]['category_counts'][side] >= 1 for unit in ('KC', 'edges') for side in ('A_specific', 'B_specific'))
summary['compartments'] = {}
for comp, group in candidate.groupby('target_compartment_verbatim', sort=True):
sub = pair_identity(series[a], series[b], data['edge_source_local'][group.index.to_numpy()])
summary['compartments'][str(comp)] = sub['summary']['edges']
result[definition] = summary
pair_reports.append(result)
assert len(pair_reports) == 60
save(EXP / 'audit/pair-identities.json', pair_reports)
blocks = {}
for cohort in sorted({r['cohort'] for r in primary}):
for mode in sorted({r['mode'] for r in primary}):
trials = [r for r in trial_metrics if r['cohort'] == cohort and r['mode'] == mode]
pairs = [p for p in pair_reports if p['cohort'] == cohort and p['mode'] == mode]
blocks[cohort + '/' + mode] = dict(trials=len(trials), pairs=len(pairs),
pairs_with_both_specific_KC_and_edge_sets=sum(p['virtual_gate900']['local_specific_KC_and_edges_exist_both_sides'] for p in pairs),
KC_empty_union_pairs=sum(p['virtual_gate900']['KC']['empty_union'] for p in pairs),
edge_empty_union_pairs=sum(p['virtual_gate900']['edges']['empty_union'] for p in pairs),
KC_active_set_Jaccard=metrics([p['virtual_gate900']['KC']['active_set_jaccard'] for p in pairs if not p['virtual_gate900']['KC']['empty_union']]),
candidate_edge_active_set_Jaccard=metrics([p['virtual_gate900']['edges']['active_set_jaccard'] for p in pairs if not p['virtual_gate900']['edges']['empty_union']]),
plastic_accepted_events=metrics([r['plastic_accepted_events'] for r in trials]),
plastic_fraction_of_all_MBON_accepted_positive=metrics([r['plastic_accepted_positive_fraction'] for r in trials if r['plastic_accepted_positive_fraction'] is not None]),
conditional25_event_changed_trials=sum(r['event_sequence_changed'] for r in trials),
conditional25_count_or_first_latency_changed_trials=sum(r['functional_count_or_first_latency_change'] for r in trials),
max_abs_V_difference_SI=max(r['max_abs_V_difference_SI'] for r in trials),
max_abs_g_difference_SI=max(r['max_abs_g_difference_SI'] for r in trials))
outcome = dict(arithmetic_and_coverage_pass=True, primary_trials=120, exact_repeats=24, pairs=60, blocks=blocks,
candidate_generated=False, learning_achieved=False, conditioning_executed=False, scientific_overall_PASS_threshold_defined=False,
maximum_observed_g_lane_roundoff_residual_SI=max(read(EXP / 'trials' / (r['name'] + '-r0') / 'baseline-accounting.json')['max_g_lane_residual_V'] for r in primary),
interpretation='Read-only credit delivery and fixed conditional sensitivity; not closed-loop memory or dopamine measurement')
save(EXP / 'audit/scientific-summary.json', outcome)
return outcome
if __name__ == '__main__':
print(run(), flush=True)
@@ -0,0 +1,237 @@
"""Pure synthetic credit tests; no brain execution or historical dynamic read."""
import ast
import hashlib
import math
from pathlib import Path
import types
import unittest
import numpy as np
from credit import CATEGORY_CODES, N_GLOBAL, pair_identity, replay_credit
SOURCE_PINS = {
'phase4o_event_replay.py': 'b169937bab495c77d8ee6c1013877e7500e7354140d9fcc90595d984238ba44e',
'phase4l.py': 'e97d58d8c1f44920d0e953f8f5831ddc86fa0198784e86460e315de4116ac553',
}
def frozen_tree(filename):
"""Only static source bytes are read; never import the old script or its main."""
here = Path(__file__).absolute().parent
candidates = [here.parent / 'models/male-cns-lif' / filename,
here.parent / filename,
here.parent / ('runtime-credit-v1' if filename.startswith('phase4o') else 'olfactory-grounding-v1') / filename]
path = next((path for path in candidates if path.is_file()), None)
if path is None:
raise unittest.SkipTest('Frozen arithmetic source not installed at declared static paths: ' + filename)
source = path.read_bytes()
if hashlib.sha256(source).hexdigest() != SOURCE_PINS[filename]:
raise AssertionError('Frozen arithmetic source SHA mismatch: ' + str(path))
return ast.parse(source, filename=str(path)), path
def assert_bits(test, first, second):
test.assertEqual(first.dtype, second.dtype)
test.assertEqual(first.shape, second.shape)
np.testing.assert_array_equal(first.view(np.uint8), second.view(np.uint8))
def events(rows):
if not rows:
return np.empty(0, np.int32), np.empty(0, np.int32)
array = np.asarray(rows, np.int32)
return array[:, 0].copy(), array[:, 1].copy()
class ReplayTests(unittest.TestCase):
def setUp(self):
self.kc = np.array([3, 9, 12], np.int32)
def test_gate_900_includes_same_tick_901_is_final_only_no_18_shift(self):
ticks, nodes = events([(882, 12), (900, 3), (901, 9)])
result = replay_credit(ticks, nodes, self.kc)
self.assertEqual(result['trace_gate'][0], np.float32(1))
self.assertEqual(result['trace_gate'][1], np.float32(0))
decay = np.float32(math.exp(-.1 / 100))
expected = np.float32(1)
for _ in range(18):
expected = np.float32(expected * decay)
self.assertEqual(result['trace_gate'][2].view(np.uint32), expected.view(np.uint32))
self.assertTrue(np.all(result['trace_final'] > 0))
np.testing.assert_array_equal(result['spike_count_gate'], [1, 0, 1])
np.testing.assert_array_equal(result['spike_count_total'], [1, 1, 1])
self.assertEqual(result['event_shift_steps'], 0)
self.assertTrue(result['gate_is_virtual_readout_not_DAN_activity'])
def test_spike_cap_resets_recency_not_accumulated_count(self):
ticks, nodes = events([(0, 3), (7, 3), (7, 9)])
result = replay_credit(ticks, nodes, self.kc, steps=15, gate_tick=7)
np.testing.assert_array_equal(result['trace_gate'], np.array([1, 1, 0], np.float32))
self.assertEqual(result['trace_final'][0].view(np.uint32), result['trace_final'][1].view(np.uint32))
np.testing.assert_array_equal(result['spike_count_total'], [2, 1, 0])
def test_tick_zero_gate_and_last_tick_have_no_extra_decay(self):
ticks, nodes = events([(0, 3), (2, 9)])
result = replay_credit(ticks, nodes, self.kc, steps=3, gate_tick=0)
self.assertEqual(result['trace_gate'][0], np.float32(1))
self.assertEqual(result['trace_final'][1], np.float32(1))
self.assertEqual(result['spike_count_gate'].tolist(), [1, 0, 0])
def test_empty_events_are_positive_zero_with_exact_dtypes(self):
ticks, nodes = events([])
result = replay_credit(ticks, nodes, self.kc, steps=2, gate_tick=1)
for key in ('trace_gate', 'trace_final'):
self.assertEqual(result[key].dtype, np.dtype('float32'))
self.assertTrue(np.all(result[key].view(np.uint32) == 0))
for key in ('spike_count_gate', 'spike_count_total'):
self.assertEqual(result[key].dtype, np.dtype('int32'))
self.assertFalse(result[key].any())
def test_non_kc_events_ignored_only_after_full_validation(self):
ticks, nodes = events([(0, 2), (0, 3), (1, 4)])
for value in (ticks, nodes, self.kc):
value.flags.writeable = False
before = [value.tobytes() for value in (ticks, nodes, self.kc)]
result = replay_credit(ticks, nodes, self.kc, steps=2, gate_tick=1)
self.assertEqual(result['total_input_events'], 3)
self.assertEqual(result['total_KC_events'], 1)
self.assertEqual(before, [value.tobytes() for value in (ticks, nodes, self.kc)])
result['trace_gate'][0] = 0
self.assertGreater(result['trace_final'][0], 0)
def test_invalid_event_order_duplicate_ranges_and_dtype(self):
bad_rows = [[(-1, 3)], [(1000, 3)], [(0, -1)], [(0, N_GLOBAL)],
[(1, 3), (0, 3)], [(0, 9), (0, 3)], [(0, 3), (0, 3)], [(0, 2), (0, 2)]]
for rows in bad_rows:
with self.subTest(rows=rows), self.assertRaises(ValueError):
replay_credit(*events(rows), self.kc)
for dtype in (np.int64, np.float32, np.float64):
with self.subTest(dtype=dtype), self.assertRaises(ValueError):
replay_credit(np.array([], dtype), np.array([], dtype), self.kc)
with self.assertRaises(ValueError):
replay_credit(np.array([0], np.int32), np.array([], np.int32), self.kc)
with self.assertRaises(ValueError):
replay_credit(np.array([np.nan]), np.array([3], np.int32), self.kc)
def test_invalid_kc_identities_and_frozen_parameters(self):
empty = np.empty(0, np.int32)
for kc in (empty, np.array([9, 3], np.int32), np.array([3, 3], np.int32),
np.array([-1], np.int32), np.array([N_GLOBAL], np.int32), self.kc.astype(np.int64)):
with self.subTest(kc=kc.tolist()), self.assertRaises(ValueError):
replay_credit(empty, empty, kc)
for keyword, value in (('steps', 0), ('steps', True), ('gate_tick', -1), ('gate_tick', 1000),
('gate_tick', 900.), ('dt_ms', .2), ('tau_ms', 20), ('tau_ms', np.inf),
('cap', .5), ('cap', True)):
with self.subTest(keyword=keyword, value=value), self.assertRaises(ValueError):
replay_credit(empty, empty, self.kc, **{keyword: value})
def test_independent_frozen_numpy_loop_ast_matches_all_trace_bits(self):
tree, path = frozen_tree('phase4o_event_replay.py')
loops = [node for node in ast.walk(tree) if isinstance(node, ast.For) and isinstance(node.target, ast.Name)
and node.target.id == 'step' and any(isinstance(child, ast.AugAssign) and
isinstance(child.target, ast.Name) and child.target.id == 'trace' for child in node.body)]
self.assertEqual(len(loops), 1)
self.assertEqual(len(loops[0].body), 4)
code = compile(ast.fix_missing_locations(ast.Module(body=[loops[0]], type_ignores=[])), str(path), 'exec')
ticks, nodes = events([(0, 3), (0, 12), (1, 9), (22, 3), (899, 9), (900, 3), (901, 12), (999, 3)])
result = replay_credit(ticks, nodes, self.kc)
lookup = {int(node): index for index, node in enumerate(self.kc)}
for gate, field in ((900, 'trace_gate'), (999, 'trace_final')):
by_step = {}
for tick, node in zip(ticks, nodes):
by_step.setdefault(int(tick), []).append(lookup[int(node)])
namespace = dict(np=np, trace=np.zeros(len(self.kc), np.float32),
decay=np.float32(math.exp(-.1 / 100)), by_step=by_step, step_gate=gate)
exec(code, namespace)
assert_bits(self, result[field], namespace['trace'])
def test_independent_frozen_torch_cpu_statement_matches_when_available(self):
try:
import torch
except (ImportError, OSError) as error:
self.skipTest('Torch CPU unavailable; comparison explicitly not performed: ' + str(error))
tree, path = frozen_tree('phase4l.py')
expressions = [node for node in ast.walk(tree) if isinstance(node, ast.Expr) and
'trace.mul_(trace_decay).add_' in ast.unparse(node)]
self.assertEqual(len(expressions), 1)
code = compile(ast.fix_missing_locations(ast.Module(body=expressions, type_ignores=[])), str(path), 'exec')
ticks, nodes = events([(0, 3), (22, 3), (899, 9), (900, 3), (901, 12), (999, 9)])
result = replay_credit(ticks, nodes, self.kc)
trace = torch.zeros(len(self.kc), dtype=torch.float32, device='cpu')
namespace = dict(trace=trace, trace_decay=math.exp(-.1 / 100), torch=torch,
self=types.SimpleNamespace(kc_gpu=torch.tensor(self.kc.astype(np.int64), device='cpu')))
gate = None
for tick in range(1000):
spikes = torch.zeros(13, dtype=torch.bool, device='cpu')
active = nodes[ticks == tick]
if len(active):
spikes[torch.tensor(active.astype(np.int64), device='cpu')] = True
namespace['spikes'] = spikes
exec(code, namespace)
if tick == 900:
gate = trace.numpy().copy()
assert_bits(self, result['trace_gate'], gate)
assert_bits(self, result['trace_final'], trace.numpy())
class IdentityTests(unittest.TestCase):
def setUp(self):
self.a, self.b = np.zeros((5, 4), np.float32), np.zeros((5, 4), np.float32)
self.a[:3, 0] = 1 # A specific
self.a[:3, 1] = .1; self.b[:4, 1] = .2 # shared
self.b[:3, 2] = .3 # B specific
self.a[:2, 3] = 1; self.b[:2, 3] = 1 # no majority
self.source = np.array([0, 1, 1, 2, 3], np.int32)
def test_three_of_five_categories_and_full_set_jaccard(self):
result = pair_identity(self.a, self.b, self.source)
np.testing.assert_array_equal(result['kc_category'], np.array([1, 3, 2, 0], np.int8))
np.testing.assert_array_equal(result['edge_category'], np.array([1, 3, 3, 2, 0], np.int8))
self.assertEqual(result['summary']['KC']['active_set_jaccard'], 1 / 3)
self.assertEqual(result['summary']['edges']['active_set_jaccard'], .5)
self.assertEqual(result['summary']['KC']['category_counts'], {name: 1 for name in CATEGORY_CODES})
self.assertTrue(result['summary']['edge_counts_are_source_degree_weighted'])
def test_tiny_positive_no_epsilon_and_no_weight_update_outputs(self):
self.a[:3, 0] = np.nextafter(np.float32(0), np.float32(1))
result = pair_identity(self.a, self.b, self.source)
self.assertTrue(result['kc_active_a'][0])
self.assertFalse(result['summary']['weights_modified'])
self.assertFalse(result['summary']['weight_delta_generated'])
self.assertFalse(any('delta' in key or 'weight' in key for key in result if key != 'summary'))
def test_empty_union_and_empty_edge_mapping_explicit(self):
result = pair_identity(np.zeros_like(self.a), np.zeros_like(self.b), np.empty(0, np.int32))
self.assertTrue(result['summary']['KC']['empty_union'])
self.assertEqual(result['summary']['KC']['active_set_jaccard'], 1.)
self.assertTrue(result['summary']['edges']['empty_union'])
self.assertEqual(result['edge_category'].dtype, np.dtype('int8'))
def test_readonly_inputs_and_returned_mapping_owns_memory(self):
for value in (self.a, self.b, self.source):
value.flags.writeable = False
before = [value.tobytes() for value in (self.a, self.b, self.source)]
result = pair_identity(self.a, self.b, self.source)
result['edge_category'][0] = 0
self.assertEqual(result['kc_category'][0], 1)
self.assertEqual(before, [value.tobytes() for value in (self.a, self.b, self.source)])
def test_reject_wrong_dtype_shape_nonfinite_negative_cap_and_source(self):
for bad in (self.a.astype(np.float64), self.a[:4], np.zeros((5, 0), np.float32)):
with self.subTest(shape=bad.shape), self.assertRaises(ValueError):
pair_identity(bad, self.b, self.source)
for value in (np.nan, np.inf, -.1, 1.01):
bad = self.a.copy(); bad[0, 0] = value
with self.subTest(value=value), self.assertRaises(ValueError):
pair_identity(bad, self.b, self.source)
with self.assertRaises(ValueError):
pair_identity(self.a, self.b[:, :3], self.source)
for source in (np.array([-1], np.int32), np.array([4], np.int32), self.source.astype(np.int64)):
with self.subTest(source=source.tolist()), self.assertRaises(ValueError):
pair_identity(self.a, self.b, source)
if __name__ == '__main__':
unittest.main()
@@ -0,0 +1,56 @@
"""Synthetic interface and fail-closed schedule checks, no scientific records."""
import ast
from pathlib import Path
import unittest
import numpy as np
from run_audit import compare_results
from summarize import metrics, primary_rows
class IntegrationTests(unittest.TestCase):
def test_per_neuron_count_difference_not_cancelled_by_equal_total(self):
a = dict(step=np.array([0, 1], np.int32), neuron_idx=np.array([1, 1], np.int32),
counts=np.array([2, 0], np.int32), first_spike=np.array([0, -1], np.int32),
v=np.array([-.052, -.052], np.float64), g=np.zeros(2, np.float64))
b = {k: v.copy() for k, v in a.items()}
b['neuron_idx'][:] = 2; b['counts'][:] = [0, 2]; b['first_spike'][:] = [-1, 0]
h = dict(history_v=np.zeros((2, 2)), history_g=np.zeros((2, 2)))
result = compare_results(a, b, h, h)
self.assertEqual(result['spike_count_L1'], 4)
self.assertEqual(result['neurons_with_count_change'], 2)
self.assertTrue(result['functional_count_or_first_latency_change'])
def test_event_difference_with_same_counts_and_first_is_retained(self):
a = dict(step=np.array([0, 3], np.int32), neuron_idx=np.array([1, 1], np.int32),
counts=np.array([2], np.int32), first_spike=np.array([0], np.int32),
v=np.zeros(1), g=np.zeros(1))
b = {k: v.copy() for k, v in a.items()}; b['step'][1] = 4
h = dict(history_v=np.zeros((5, 1)), history_g=np.zeros((5, 1)))
result = compare_results(a, b, h, h)
self.assertTrue(result['event_sequence_changed'])
self.assertFalse(result['functional_count_or_first_latency_change'])
def test_undefined_denominator_is_not_silently_zero(self):
self.assertIsNone(metrics([])['mean'])
def test_repeat_not_an_independent_primary_trial(self):
rows = [dict(name=str(i), repeat=0) for i in range(120)] + [dict(name=str(i), repeat=1) for i in range(24)]
self.assertEqual(len(primary_rows(dict(planned=rows))), 120)
rows[1]['name'] = '0'
with self.assertRaises(AssertionError):
primary_rows(dict(planned=rows))
def test_all_baseline_gate_precedes_conditional_schedule(self):
tree = ast.parse((Path(__file__).parent / 'run_audit.py').read_text())
main = next(n for n in tree.body if isinstance(n, ast.FunctionDef) and n.name == 'main')
loops = [n for n in ast.walk(main) if isinstance(n, ast.For) and isinstance(n.target, ast.Name) and n.target.id == 'stage']
self.assertEqual(len(loops), 1)
self.assertEqual(ast.literal_eval(loops[0].iter), ('baseline', 'conditional25'))
audit = next(n for n in tree.body if isinstance(n, ast.FunctionDef) and n.name == 'audit_trial')
source = ast.unparse(audit)
self.assertIn("baselines-complete.json", source)
self.assertLess(source.index("baselines-complete.json"), source.index('core.replay'))
if __name__ == '__main__':
unittest.main()
@@ -0,0 +1,179 @@
"""Synthetic-only tests; no recorded scientific data, GPU, or file writes."""
import importlib.util
import json
from pathlib import Path
import unittest
import numpy as np
from mbon_accounting import MBONAccounting, bit_equal
_source = Path(__file__).resolve().parents[1] / "kc-drive-audit-v1" / "replay_core.py"
_spec = importlib.util.spec_from_file_location("_mbon_test_frozen_ah_replay", _source)
ah = importlib.util.module_from_spec(_spec)
_spec.loader.exec_module(ah)
def coeff(**changes):
values = dict(gd=.5, c0=0., cg=1., cv=1., threshold=100., reset=0., seed_volt=101.)
values.update(changes)
return values
def events(rows=()):
array = np.asarray(rows, np.int32).reshape(-1, 2)
return dict(tick=array[:, 0], neuron_idx=array[:, 1])
def graph(weights=(), destinations=None, n=1):
e = len(weights)
return ah.IncomingIndex(np.arange(10, 10 + e, dtype=np.int32),
np.zeros(e, np.int32) if destinations is None else np.array(destinations, np.int32),
np.arange(1000, 1000 + e, dtype=np.int64), np.array(weights, np.float64), n)
def run(index, *, groups=None, names=("plastic_KC",), steps=25, constants=None,
spikes=(), requests=(), v=None, g=None, observer_hook=None):
constants = coeff() if constants is None else constants
groups = np.zeros(len(index.edge_id), np.int32) if groups is None else np.array(groups, np.int32)
obs = MBONAccounting(index, groups, names, constants, steps)
seen = []
def callback(tick, stage):
# Read-only views also catch accidental assignments to callback data.
original = {key: value.copy() for key, value in stage.items()}
for value in stage.values():
value.setflags(write=False)
obs(tick, stage)
for key in original:
if not bit_equal(stage[key], original[key]):
raise AssertionError("Observer modified callback field " + key)
if observer_hook:
observer_hook(tick, stage)
seen.append(original)
result = ah.replay(np.zeros(index.target_count, np.float64) if v is None else np.asarray(v, np.float64),
np.zeros(index.target_count, np.float64) if g is None else np.asarray(g, np.float64),
constants, steps, np.arange(100, 100 + index.target_count, dtype=np.int32),
events(requests), events(spikes), index,
np.zeros((steps, index.target_count), np.float32), callback)
data, edges, summary = obs.finish()
return data, edges, summary, result, seen, obs
class AccountingTests(unittest.TestCase):
def test_empty_graph_initial_baseline_and_json_summary(self):
data, edge, summary, result, _, _ = run(graph(), steps=3, g=[2.], v=[-.052])
self.assertEqual(summary["due_count"], 0)
self.assertEqual(len(edge["edge_id"]), 0)
np.testing.assert_array_equal(data["history_group_g"], 0.)
np.testing.assert_array_equal(data["history_g"], data["history_baseline_g"])
self.assertTrue(bit_equal(data["final_g"], result["g"]))
json.dumps(summary, allow_nan=False)
self.assertFalse(summary["functional_transfer_claim"])
self.assertFalse(summary["original_events_verified_by_observer"])
def test_real_delay_old_g_for_voltage_and_end_tick_integral(self):
data, edge, summary, _, _, _ = run(graph([2.]), steps=21, spikes=[(0, 10)])
np.testing.assert_array_equal(data["history_g"][:18], 0.)
np.testing.assert_array_equal(data["history_g"][18:, 0], [2., 1., .5])
np.testing.assert_array_equal(data["history_v"][18:, 0], [0., 2., 3.])
self.assertAlmostEqual(data["g_integral_V_ms"][0, 0], .35)
np.testing.assert_array_equal(edge["accepted_count"], [1])
self.assertEqual(summary["max_g_lane_residual_V"], 0.)
def test_arrival_rejected_on_fire_and_refractory_release(self):
data, edge, summary, result, _, _ = run(graph([2., -1.]), steps=41,
spikes=[(t, source) for t in (0, 1, 22) for source in (10, 11)], requests=[(18, 100)])
np.testing.assert_array_equal(edge["due_count"], [3, 3])
np.testing.assert_array_equal(edge["accepted_count"], [1, 1])
np.testing.assert_array_equal(edge["rejected_count"], [2, 2])
np.testing.assert_array_equal(data["history_g"][18:40], 0.)
self.assertEqual(data["history_g"][40, 0], 1.)
self.assertEqual(data["rejected_positive_V"][0, 0], 4.)
self.assertEqual(data["rejected_negative_V"][0, 0], -2.)
self.assertEqual(data["accepted_negative_V"][0, 0], -1.)
np.testing.assert_array_equal(data["spike_count"], result["counts"])
self.assertEqual(summary["accepted_count"], 2)
def test_firing_clears_source_g_and_voltage_lanes(self):
data, _, _, result, _, _ = run(graph([2.]), steps=21, constants=coeff(threshold=1., seed_volt=2.),
spikes=[(0, 10)])
self.assertEqual(data["first_spike_tick"][0], 19)
np.testing.assert_array_equal(data["history_group_g"][19:], 0.)
np.testing.assert_array_equal(data["final_group_v"], 0.)
self.assertEqual(data["history_ref"][19, 0], 22)
self.assertEqual(data["history_ref"][20, 0], 21)
self.assertTrue(bit_equal(data["final_ref"], result["ref"]))
def test_group_sign_totals_and_zero_weight_event_counts(self):
index = graph([2., -3., 0., 4.], destinations=[0, 0, 1, 1], n=2)
data, edge, summary, _, _, _ = run(index, groups=[0, 1, 0, 1], names=("plastic_KC", "other"),
steps=19, spikes=[(0, x) for x in range(10, 14)])
np.testing.assert_array_equal(data["accepted_count"], [[1, 1], [1, 1]])
np.testing.assert_array_equal(data["accepted_zero_count"], [[0, 0], [1, 0]])
np.testing.assert_array_equal(data["accepted_positive_V"], [[2., 0.], [0., 4.]])
np.testing.assert_array_equal(data["accepted_negative_V"], [[0., -3.], [0., 0.]])
self.assertEqual(summary["groups"]["other"]["accepted_negative_V"], -3.)
self.assertEqual(int(edge["due_count"].sum()), 4)
def test_cross_lane_roundoff_is_visible_not_reassigned(self):
data, _, summary, _, _, _ = run(graph([1.e16, 1., -1.e16]), groups=[0, 1, 0],
names=("plastic_KC", "other"), steps=19, constants=coeff(threshold=1.e30, seed_volt=2.e30),
spikes=[(0, 10), (0, 11), (0, 12)])
self.assertEqual(data["history_g"][18, 0], 0.)
self.assertEqual(data["history_group_g"][18, 0, 1, 0], 1.)
self.assertEqual(data["history_g_residual"][18, 0], -1.)
self.assertEqual(summary["max_g_lane_residual_V"], 1.)
def test_callback_and_constructor_inputs_never_modified(self):
index = graph([1., -.25])
snapshots = {name: getattr(index, name).copy() for name in ("src_global", "dst_local", "edge_id", "weights")}
run(index, spikes=[(0, 10), (0, 11)], requests=[(1, 100)])
for name, original in snapshots.items():
self.assertTrue(bit_equal(getattr(index, name), original))
def test_incomplete_duplicate_tick_and_repeated_finish_fail(self):
index = graph()
with self.assertRaises(ValueError):
MBONAccounting(index, np.empty(0, np.int32), ("other",), coeff(), 2).finish()
_, _, _, _, stages, finished = run(index, steps=2)
with self.assertRaises(ValueError):
finished.finish()
obs = MBONAccounting(index, np.empty(0, np.int32), ("other",), coeff(), 2)
obs(0, stages[0])
with self.assertRaises(ValueError):
obs(0, stages[0])
def test_bad_dtype_groups_coefficients_and_nonfinite_fail(self):
index = graph([1.])
for codes in (np.array([0], np.int64), np.array([1], np.int32), np.array([], np.int32)):
with self.assertRaises(ValueError):
MBONAccounting(index, codes, ("other",), coeff(), 2)
for bad in (coeff(gd=np.float32(.5)), coeff(gd=float("nan")), coeff(dt_ms=.2)):
with self.assertRaises(ValueError):
MBONAccounting(index, np.array([0], np.int32), ("other",), bad, 2)
def test_stage_guard_apl_and_canonical_order_corruption_fail(self):
index = graph([1., 2.])
_, _, _, _, stages, _ = run(index, steps=19, spikes=[(0, 10), (0, 11)])
for corruption in ("guard", "order", "apl", "state"):
obs = MBONAccounting(index, np.array([0, 0], np.int32), ("other",), coeff(), 19)
for tick in range(18):
obs(tick, stages[tick])
stage = {k: v.copy() for k, v in stages[18].items()}
if corruption == "guard":
stage["arrival_accepted"][0] = False
elif corruption == "order":
stage["due_edge_indices"] = stage["due_edge_indices"][::-1].copy()
elif corruption == "apl":
stage["h32"][0] = 1.
else:
stage["g_pre_apl"][0] += 1.
with self.subTest(corruption=corruption), self.assertRaises(ValueError):
obs(18, stage)
if __name__ == "__main__":
unittest.main()
@@ -0,0 +1,61 @@
"""Rerun old deterministic-v2 references without changing their semantics."""
import json
import os
import sys
import time
import urllib.request
import numpy as np
import pandas as pd
import yaml
from context import ROOT, EXP, check, save, bit_equal
def preflight():
os.environ['CUDA_VISIBLE_DEVICES'] = 'GPU-79f3a85d-adce-7833-7003-6488140ca596'
os.environ['CUDA_HOME'] = '/usr/local/cuda'
os.environ['PATH'] = str(ROOT / 'models/male-cns-lif/.venv/bin') + ':/usr/local/cuda/bin:' + os.environ['PATH']
os.environ['MAX_JOBS'] = '2'
os.environ['TORCH_CUDA_ARCH_LIST'] = '8.9'
for port in (8188, 8189, 8190):
with urllib.request.urlopen(f'http://192.168.10.51:{port}/queue', timeout=5) as response:
queue = json.load(response)
assert not queue['queue_running'] and not queue['queue_pending'], 'Comfy busy: defer, do not evict'
def main():
check(); preflight()
assert not (EXP / 'regression/frozen-five.json').exists()
runtime_path = ROOT / 'models/male-cns-lif/deterministic-runtime-v2'
config = yaml.safe_load((runtime_path / 'phase4p.yaml').read_text())
sys.path.insert(0, str(ROOT / 'models/male-cns-lif'))
sys.path.insert(0, str(runtime_path))
import torch
import phase4p
assert torch.cuda.mem_get_info()[0] > 2 * 1024**3
torch.cuda.reset_peak_memory_stats()
started = time.perf_counter()
runtime = phase4p.CanonicalRuntime(config, runtime_path, EXP)
rows = []
for spec in config['reference_trials']:
preflight()
reference_dir = ROOT / 'experiments/phase4p-deterministic-runtime/phase4c-v2/reference' / spec['name']
events = pd.read_parquet(reference_dir / 'spike-events.parquet')
reference = dict(step=events.step.to_numpy(), neuron_idx=events.neuron_idx.to_numpy(),
counts=np.load(reference_dir / 'per-neuron-spike-counts.int32.npy'),
v=np.load(reference_dir / 'final-voltage.float32.npy'), g=np.load(reference_dir / 'final-g.float32.npy'))
result = runtime.run(np.flatnonzero(runtime.pops[spec['population']]), spec['rate_hz'], spec['seed'], spec['duration_ms'])
row = dict(trial=spec['name'], exact={k: bit_equal(v, result[k]) for k, v in reference.items()},
dtype_shape={k: dict(reference_dtype=str(v.dtype), actual_dtype=str(result[k].dtype),
reference_shape=list(v.shape), actual_shape=list(result[k].shape)) for k, v in reference.items()},
wall_seconds=result['metrics']['wall_seconds'])
rows.append(row)
print(row, flush=True)
passed = len(rows) == 5 and all(all(row['exact'].values()) for row in rows)
save(EXP / 'regression/frozen-five.json', dict(pass_all=passed, trials=rows,
wall_seconds=time.perf_counter() - started, peak_allocated_vram=int(torch.cuda.max_memory_allocated()),
scope='Old frozen deterministic-v2 reference only, not D18 equality to old dynamics'))
assert passed
if __name__ == '__main__':
main()
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,16 @@
# Phase 4AL — conditional credit/MBON transfer audit
Status: `PASS-CONDITIONAL-CREDIT-TRANSFER-AUDIT-NOT-LEARNING`.
All 120 primary trials and 24 repeats are retained. Full events/counts/final V/g/ref baseline exactness is required.
Virtual eligibility is sampled after tick 900; no DAN is injected, no delta is learned.
Uniform 25% mask depression is a temporary conditional replay; every source train, including feedback, is clamped.
All 60 odor pair-mode records and all 97 MBON targets are reported; no best pair/parameter selection.
- novel_to_aj/matched_energy: specific KC/edge sets 15/15; conditional event change 30/30; count/first-latency change 30/30.
- novel_to_aj/physiological: specific KC/edge sets 15/15; conditional event change 30/30; count/first-latency change 30/30.
- seed_validation/matched_energy: specific KC/edge sets 15/15; conditional event change 30/30; count/first-latency change 30/30.
- seed_validation/physiological: specific KC/edge sets 15/15; conditional event change 30/30; count/first-latency change 30/30.
No biological learning PASS or candidate. This does not complete the learning goal.
Read EVIDENCE.md in the model for provenance, unmatched biology and conditional/closed-loop distinctions.
@@ -0,0 +1,727 @@
{
"pass_all": true,
"trials": [
{
"name": "seed_validation-physiological-00-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-00-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-00-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-physiological-00-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-00-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-00-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-01-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-physiological-01-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-01-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-01-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-01-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-01-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-02-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-02-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-physiological-02-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-02-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-02-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-02-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-03-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-03-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-physiological-03-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-03-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-03-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-03-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-04-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-04-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-physiological-04-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-04-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-04-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-04-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-05-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-05-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-physiological-05-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-05-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-05-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-05-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-00-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-00-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-00-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-00-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-00-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-00-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-01-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-01-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-01-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-01-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-01-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-01-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-02-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-02-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-02-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-02-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-02-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-03-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-02-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-03-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-03-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-03-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-03-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-03-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-04-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-04-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-04-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-04-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-04-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-04-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-05-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-05-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-05-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-05-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-05-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-05-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-00-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-00-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-00-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-00-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-00-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-00-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-01-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-01-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-01-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-01-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-01-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-01-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-02-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-02-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-02-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-02-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-02-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-02-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-03-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-03-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-03-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-03-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-03-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-03-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-04-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-04-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-04-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-04-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-04-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-04-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-05-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-05-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-05-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-05-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-05-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-05-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-00-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-00-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-00-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-00-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-00-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-00-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-01-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-01-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-01-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-01-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-01-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-01-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-02-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-02-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-02-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-02-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-02-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-02-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-03-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-03-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-03-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-03-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-03-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-03-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-04-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-04-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-04-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-04-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-04-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-04-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-05-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-05-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-05-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-05-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-05-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-05-s1073741829",
"repeat": 0,
"pass_all": true
}
],
"primary": 120,
"repeats": 24
}
@@ -0,0 +1,147 @@
{
"status": "PASS-CONDITIONAL-CREDIT-TRANSFER-AUDIT-NOT-LEARNING",
"arithmetic_and_coverage_pass": true,
"primary_trials": 120,
"exact_repeats": 24,
"pairs": 60,
"blocks": {
"novel_to_aj/matched_energy": {
"trials": 30,
"pairs": 15,
"pairs_with_both_specific_KC_and_edge_sets": 15,
"KC_empty_union_pairs": 0,
"edge_empty_union_pairs": 0,
"KC_active_set_Jaccard": {
"min": 0.47530864197530864,
"mean": 0.5841409898567061,
"max": 0.7878787878787878
},
"candidate_edge_active_set_Jaccard": {
"min": 0.4783427495291902,
"mean": 0.5790535492712533,
"max": 0.7757009345794392
},
"plastic_accepted_events": {
"min": 270.0,
"mean": 378.1333333333333,
"max": 514.0
},
"plastic_fraction_of_all_MBON_accepted_positive": {
"min": 0.008154767782495633,
"mean": 0.010754369069852216,
"max": 0.014236769581964907
},
"conditional25_event_changed_trials": 30,
"conditional25_count_or_first_latency_changed_trials": 30,
"max_abs_V_difference_SI": 0.017760696704371408,
"max_abs_g_difference_SI": 0.17777414602804315
},
"novel_to_aj/physiological": {
"trials": 30,
"pairs": 15,
"pairs_with_both_specific_KC_and_edge_sets": 15,
"KC_empty_union_pairs": 0,
"edge_empty_union_pairs": 0,
"KC_active_set_Jaccard": {
"min": 0.4294117647058823,
"mean": 0.552939795567701,
"max": 0.7092198581560284
},
"candidate_edge_active_set_Jaccard": {
"min": 0.4020979020979021,
"mean": 0.540137299171442,
"max": 0.698237885462555
},
"plastic_accepted_events": {
"min": 250.0,
"mean": 373.6333333333333,
"max": 514.0
},
"plastic_fraction_of_all_MBON_accepted_positive": {
"min": 0.008154767782495633,
"mean": 0.01084643277128086,
"max": 0.014236769581964907
},
"conditional25_event_changed_trials": 30,
"conditional25_count_or_first_latency_changed_trials": 30,
"max_abs_V_difference_SI": 0.014991618207097573,
"max_abs_g_difference_SI": 0.18470935317353884
},
"seed_validation/matched_energy": {
"trials": 30,
"pairs": 15,
"pairs_with_both_specific_KC_and_edge_sets": 15,
"KC_empty_union_pairs": 0,
"edge_empty_union_pairs": 0,
"KC_active_set_Jaccard": {
"min": 0.5329341317365269,
"mean": 0.6308870189105532,
"max": 0.7697841726618705
},
"candidate_edge_active_set_Jaccard": {
"min": 0.5026455026455027,
"mean": 0.6109426134022716,
"max": 0.7555066079295154
},
"plastic_accepted_events": {
"min": 274.0,
"mean": 404.56666666666666,
"max": 524.0
},
"plastic_fraction_of_all_MBON_accepted_positive": {
"min": 0.008256663420649924,
"mean": 0.011085250653013025,
"max": 0.013383027567785298
},
"conditional25_event_changed_trials": 30,
"conditional25_count_or_first_latency_changed_trials": 30,
"max_abs_V_difference_SI": 0.020187739858270014,
"max_abs_g_difference_SI": 0.17139554952906824
},
"seed_validation/physiological": {
"trials": 30,
"pairs": 15,
"pairs_with_both_specific_KC_and_edge_sets": 15,
"KC_empty_union_pairs": 0,
"edge_empty_union_pairs": 0,
"KC_active_set_Jaccard": {
"min": 0.47058823529411764,
"mean": 0.5890796823543046,
"max": 0.7457627118644068
},
"candidate_edge_active_set_Jaccard": {
"min": 0.44939965694682676,
"mean": 0.5757479003861892,
"max": 0.7520391517128875
},
"plastic_accepted_events": {
"min": 268.0,
"mean": 407.0,
"max": 538.0
},
"plastic_fraction_of_all_MBON_accepted_positive": {
"min": 0.008218868682136815,
"mean": 0.011150911914580085,
"max": 0.013300666346500171
},
"conditional25_event_changed_trials": 30,
"conditional25_count_or_first_latency_changed_trials": 30,
"max_abs_V_difference_SI": 0.02604567773504369,
"max_abs_g_difference_SI": 0.1666881141779693
}
},
"candidate_generated": false,
"learning_achieved": false,
"conditioning_executed": false,
"scientific_overall_PASS_threshold_defined": false,
"maximum_observed_g_lane_roundoff_residual_SI": 5.273559366969494e-16,
"interpretation": "Read-only credit delivery and fixed conditional sensitivity; not closed-loop memory or dopamine measurement",
"old_integrity_pass": true,
"frozen_five_reference_pass": true,
"payload_bytes_before_manifest": 1336486548,
"frozen_eligibility_and_mask_unchanged": true,
"base_weights_unchanged": true,
"scientific_summary_sha256": "dd48e41d11611b988af7b166e1ccddd893b841234294c8d71eca467a19bb0896",
"summary_all_144_baseline_raw_states_and_repeat_pair_metrics_reverified": true,
"next_required_gate": "Only if the diagnostic evidence supports it, separately preregister compartment-specific reinforcement and independent whole-brain evaluation; no automatic conditioning unlock"
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,413 @@
{
"pass_all": true,
"repeats": [
{
"name": "seed_validation-physiological-00-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "seed_validation-physiological-01-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "seed_validation-physiological-02-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "seed_validation-physiological-03-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "seed_validation-physiological-04-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "seed_validation-physiological-05-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "seed_validation-matched_energy-00-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "seed_validation-matched_energy-01-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "seed_validation-matched_energy-02-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "seed_validation-matched_energy-03-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "seed_validation-matched_energy-04-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "seed_validation-matched_energy-05-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "novel_to_aj-physiological-00-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "novel_to_aj-physiological-01-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "novel_to_aj-physiological-02-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "novel_to_aj-physiological-03-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "novel_to_aj-physiological-04-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "novel_to_aj-physiological-05-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-00-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-01-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-02-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-03-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-04-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-05-s1073741825",
"checks": {
"baseline-replay.npz": true,
"baseline-target-accounting.npz": true,
"baseline-edge-accounting.npz": true,
"conditional25-replay.npz": true,
"conditional25-target-accounting.npz": true,
"conditional25-edge-accounting.npz": true,
"credit.npz": true,
"baseline-accounting.json": true,
"conditional25-accounting.json": true,
"credit.json": true,
"sensitivity.json": true
},
"pass_all": true
}
]
}
@@ -0,0 +1,728 @@
{
"pass_all": true,
"trials": [
{
"name": "seed_validation-physiological-00-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-00-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-00-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-00-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-physiological-00-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-00-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-01-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-01-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-physiological-01-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-01-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-01-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-01-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-02-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-02-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-physiological-02-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-02-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-02-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-03-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-02-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-03-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-physiological-03-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-03-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-03-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-03-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-04-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-04-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-physiological-04-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-04-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-04-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-04-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-05-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-05-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-physiological-05-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-05-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-05-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-physiological-05-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-00-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-00-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-00-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-00-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-00-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-00-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-01-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-01-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-01-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-01-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-01-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-01-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-02-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-02-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-02-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-02-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-02-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-02-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-03-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-03-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-03-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-03-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-03-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-03-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-04-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-04-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-04-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-04-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-04-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-04-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-05-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-05-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-05-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-05-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-05-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "seed_validation-matched_energy-05-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-00-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-00-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-00-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-00-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-00-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-00-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-01-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-01-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-01-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-01-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-01-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-01-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-02-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-02-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-02-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-02-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-02-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-02-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-03-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-03-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-03-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-03-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-03-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-03-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-04-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-04-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-04-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-04-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-04-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-04-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-05-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-05-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-05-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-05-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-05-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-physiological-05-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-00-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-00-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-00-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-00-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-00-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-00-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-01-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-01-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-01-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-01-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-01-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-01-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-02-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-02-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-02-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-02-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-02-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-02-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-03-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-03-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-03-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-03-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-03-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-03-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-04-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-04-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-04-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-04-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-04-s1073741828",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-05-s1073741825",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-04-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-05-s1073741825",
"repeat": 1,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-05-s1073741826",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-05-s1073741829",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-05-s1073741827",
"repeat": 0,
"pass_all": true
},
{
"name": "novel_to_aj-matched_energy-05-s1073741828",
"repeat": 0,
"pass_all": true
}
],
"primary": 120,
"repeats": 24,
"meaning": "All exact conditional baseline reconstructions; not an overall biological or learning PASS"
}
@@ -0,0 +1,138 @@
{
"arithmetic_and_coverage_pass": true,
"primary_trials": 120,
"exact_repeats": 24,
"pairs": 60,
"blocks": {
"novel_to_aj/matched_energy": {
"trials": 30,
"pairs": 15,
"pairs_with_both_specific_KC_and_edge_sets": 15,
"KC_empty_union_pairs": 0,
"edge_empty_union_pairs": 0,
"KC_active_set_Jaccard": {
"min": 0.47530864197530864,
"mean": 0.5841409898567061,
"max": 0.7878787878787878
},
"candidate_edge_active_set_Jaccard": {
"min": 0.4783427495291902,
"mean": 0.5790535492712533,
"max": 0.7757009345794392
},
"plastic_accepted_events": {
"min": 270.0,
"mean": 378.1333333333333,
"max": 514.0
},
"plastic_fraction_of_all_MBON_accepted_positive": {
"min": 0.008154767782495633,
"mean": 0.010754369069852216,
"max": 0.014236769581964907
},
"conditional25_event_changed_trials": 30,
"conditional25_count_or_first_latency_changed_trials": 30,
"max_abs_V_difference_SI": 0.017760696704371408,
"max_abs_g_difference_SI": 0.17777414602804315
},
"novel_to_aj/physiological": {
"trials": 30,
"pairs": 15,
"pairs_with_both_specific_KC_and_edge_sets": 15,
"KC_empty_union_pairs": 0,
"edge_empty_union_pairs": 0,
"KC_active_set_Jaccard": {
"min": 0.4294117647058823,
"mean": 0.552939795567701,
"max": 0.7092198581560284
},
"candidate_edge_active_set_Jaccard": {
"min": 0.4020979020979021,
"mean": 0.540137299171442,
"max": 0.698237885462555
},
"plastic_accepted_events": {
"min": 250.0,
"mean": 373.6333333333333,
"max": 514.0
},
"plastic_fraction_of_all_MBON_accepted_positive": {
"min": 0.008154767782495633,
"mean": 0.01084643277128086,
"max": 0.014236769581964907
},
"conditional25_event_changed_trials": 30,
"conditional25_count_or_first_latency_changed_trials": 30,
"max_abs_V_difference_SI": 0.014991618207097573,
"max_abs_g_difference_SI": 0.18470935317353884
},
"seed_validation/matched_energy": {
"trials": 30,
"pairs": 15,
"pairs_with_both_specific_KC_and_edge_sets": 15,
"KC_empty_union_pairs": 0,
"edge_empty_union_pairs": 0,
"KC_active_set_Jaccard": {
"min": 0.5329341317365269,
"mean": 0.6308870189105532,
"max": 0.7697841726618705
},
"candidate_edge_active_set_Jaccard": {
"min": 0.5026455026455027,
"mean": 0.6109426134022716,
"max": 0.7555066079295154
},
"plastic_accepted_events": {
"min": 274.0,
"mean": 404.56666666666666,
"max": 524.0
},
"plastic_fraction_of_all_MBON_accepted_positive": {
"min": 0.008256663420649924,
"mean": 0.011085250653013025,
"max": 0.013383027567785298
},
"conditional25_event_changed_trials": 30,
"conditional25_count_or_first_latency_changed_trials": 30,
"max_abs_V_difference_SI": 0.020187739858270014,
"max_abs_g_difference_SI": 0.17139554952906824
},
"seed_validation/physiological": {
"trials": 30,
"pairs": 15,
"pairs_with_both_specific_KC_and_edge_sets": 15,
"KC_empty_union_pairs": 0,
"edge_empty_union_pairs": 0,
"KC_active_set_Jaccard": {
"min": 0.47058823529411764,
"mean": 0.5890796823543046,
"max": 0.7457627118644068
},
"candidate_edge_active_set_Jaccard": {
"min": 0.44939965694682676,
"mean": 0.5757479003861892,
"max": 0.7520391517128875
},
"plastic_accepted_events": {
"min": 268.0,
"mean": 407.0,
"max": 538.0
},
"plastic_fraction_of_all_MBON_accepted_positive": {
"min": 0.008218868682136815,
"mean": 0.011150911914580085,
"max": 0.013300666346500171
},
"conditional25_event_changed_trials": 30,
"conditional25_count_or_first_latency_changed_trials": 30,
"max_abs_V_difference_SI": 0.02604567773504369,
"max_abs_g_difference_SI": 0.1666881141779693
}
},
"candidate_generated": false,
"learning_achieved": false,
"conditioning_executed": false,
"scientific_overall_PASS_threshold_defined": false,
"maximum_observed_g_lane_roundoff_residual_SI": 5.273559366969494e-16,
"interpretation": "Read-only credit delivery and fixed conditional sensitivity; not closed-loop memory or dopamine measurement"
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,17 @@
{
"binary": "/data/digital-drosophila/experiments/phase4al-mb-credit-transfer/gpu-reference/extension-build/male_cns_lif_deterministic_v2_ext.so",
"binary_sha256": "3e6655c02a85c21fd4370771dc7e07c5157f223e2ae4aa3d91c926b0e3022a62",
"build_seconds": 54.55150726200009,
"flags": {
"cuda": [
"-O3",
"--fmad=false",
"-std=c++20"
],
"cxx": [
"-O3",
"-ffp-contract=off"
]
},
"status": "PASS"
}
@@ -0,0 +1,10 @@
/data/digital-drosophila/models/male-cns-lif/phase4c.py:308: UserWarning: The given NumPy array is not writable, and PyTorch does not support non-writable tensors. This means writing to this tensor will result in undefined behavior. You may want to copy the array to protect its data or make it writable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /__w/pytorch/pytorch/torch/csrc/utils/tensor_numpy.cpp:213.)
self.indptr = torch.as_tensor(np.asarray(indptr_np), dtype=torch.int64, device=device)
[1/3] c++ -MMD -MF phase4p_ext.o.d -DTORCH_EXTENSION_NAME=male_cns_lif_deterministic_v2_ext -DTORCH_API_INCLUDE_EXTENSION_H -isystem /data/digital-drosophila/models/male-cns-lif/.venv/lib/python3.10/site-packages/torch/include -isystem /data/digital-drosophila/models/male-cns-lif/.venv/lib/python3.10/site-packages/torch/include/torch/csrc/api/include -isystem /usr/local/cuda/include -isystem /usr/include/python3.10 -fPIC -std=c++20 -O3 -ffp-contract=off -c /data/digital-drosophila/models/male-cns-lif/deterministic-runtime-v2/phase4p_ext.cpp -o phase4p_ext.o
[2/3] /usr/local/cuda/bin/nvcc -MD -MF phase4p_ext.cuda.o.d -DTORCH_EXTENSION_NAME=male_cns_lif_deterministic_v2_ext -DTORCH_API_INCLUDE_EXTENSION_H -isystem /data/digital-drosophila/models/male-cns-lif/.venv/lib/python3.10/site-packages/torch/include -isystem /data/digital-drosophila/models/male-cns-lif/.venv/lib/python3.10/site-packages/torch/include/torch/csrc/api/include -isystem /usr/local/cuda/include -isystem /usr/include/python3.10 -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr -gencode=arch=compute_89,code=sm_89 --compiler-options '-fPIC' -O3 --fmad=false -std=c++20 -c /data/digital-drosophila/models/male-cns-lif/deterministic-runtime-v2/phase4p_ext.cu -o phase4p_ext.cuda.o
[3/3] c++ phase4p_ext.o phase4p_ext.cuda.o -shared -L/data/digital-drosophila/models/male-cns-lif/.venv/lib/python3.10/site-packages/torch/lib -lc10 -lc10_cuda -ltorch_cpu -ltorch_cuda -ltorch -ltorch_python -L/usr/local/cuda/lib64 -lcudart -o male_cns_lif_deterministic_v2_ext.so
{'trial': 'auditory-10hz', 'exact': {'step': True, 'neuron_idx': True, 'counts': True, 'v': True, 'g': True}, 'dtype_shape': {'step': {'reference_dtype': 'int32', 'actual_dtype': 'int32', 'reference_shape': [609920], 'actual_shape': [609920]}, 'neuron_idx': {'reference_dtype': 'int32', 'actual_dtype': 'int32', 'reference_shape': [609920], 'actual_shape': [609920]}, 'counts': {'reference_dtype': 'int32', 'actual_dtype': 'int32', 'reference_shape': [166700], 'actual_shape': [166700]}, 'v': {'reference_dtype': 'float32', 'actual_dtype': 'float32', 'reference_shape': [166700], 'actual_shape': [166700]}, 'g': {'reference_dtype': 'float32', 'actual_dtype': 'float32', 'reference_shape': [166700], 'actual_shape': [166700]}}, 'wall_seconds': 2.686470789998566}
{'trial': 'auditory-100hz', 'exact': {'step': True, 'neuron_idx': True, 'counts': True, 'v': True, 'g': True}, 'dtype_shape': {'step': {'reference_dtype': 'int32', 'actual_dtype': 'int32', 'reference_shape': [2321608], 'actual_shape': [2321608]}, 'neuron_idx': {'reference_dtype': 'int32', 'actual_dtype': 'int32', 'reference_shape': [2321608], 'actual_shape': [2321608]}, 'counts': {'reference_dtype': 'int32', 'actual_dtype': 'int32', 'reference_shape': [166700], 'actual_shape': [166700]}, 'v': {'reference_dtype': 'float32', 'actual_dtype': 'float32', 'reference_shape': [166700], 'actual_shape': [166700]}, 'g': {'reference_dtype': 'float32', 'actual_dtype': 'float32', 'reference_shape': [166700], 'actual_shape': [166700]}}, 'wall_seconds': 4.9066673909983365}
{'trial': 'olfactory-50hz', 'exact': {'step': True, 'neuron_idx': True, 'counts': True, 'v': True, 'g': True}, 'dtype_shape': {'step': {'reference_dtype': 'int32', 'actual_dtype': 'int32', 'reference_shape': [2806702], 'actual_shape': [2806702]}, 'neuron_idx': {'reference_dtype': 'int32', 'actual_dtype': 'int32', 'reference_shape': [2806702], 'actual_shape': [2806702]}, 'counts': {'reference_dtype': 'int32', 'actual_dtype': 'int32', 'reference_shape': [166700], 'actual_shape': [166700]}, 'v': {'reference_dtype': 'float32', 'actual_dtype': 'float32', 'reference_shape': [166700], 'actual_shape': [166700]}, 'g': {'reference_dtype': 'float32', 'actual_dtype': 'float32', 'reference_shape': [166700], 'actual_shape': [166700]}}, 'wall_seconds': 4.933064379998541}
{'trial': 'mechanosensory-50hz', 'exact': {'step': True, 'neuron_idx': True, 'counts': True, 'v': True, 'g': True}, 'dtype_shape': {'step': {'reference_dtype': 'int32', 'actual_dtype': 'int32', 'reference_shape': [2414779], 'actual_shape': [2414779]}, 'neuron_idx': {'reference_dtype': 'int32', 'actual_dtype': 'int32', 'reference_shape': [2414779], 'actual_shape': [2414779]}, 'counts': {'reference_dtype': 'int32', 'actual_dtype': 'int32', 'reference_shape': [166700], 'actual_shape': [166700]}, 'v': {'reference_dtype': 'float32', 'actual_dtype': 'float32', 'reference_shape': [166700], 'actual_shape': [166700]}, 'g': {'reference_dtype': 'float32', 'actual_dtype': 'float32', 'reference_shape': [166700], 'actual_shape': [166700]}}, 'wall_seconds': 4.964243114001874}
{'trial': 'gustatory-50hz', 'exact': {'step': True, 'neuron_idx': True, 'counts': True, 'v': True, 'g': True}, 'dtype_shape': {'step': {'reference_dtype': 'int32', 'actual_dtype': 'int32', 'reference_shape': [2452226], 'actual_shape': [2452226]}, 'neuron_idx': {'reference_dtype': 'int32', 'actual_dtype': 'int32', 'reference_shape': [2452226], 'actual_shape': [2452226]}, 'counts': {'reference_dtype': 'int32', 'actual_dtype': 'int32', 'reference_shape': [166700], 'actual_shape': [166700]}, 'v': {'reference_dtype': 'float32', 'actual_dtype': 'float32', 'reference_shape': [166700], 'actual_shape': [166700]}, 'g': {'reference_dtype': 'float32', 'actual_dtype': 'float32', 'reference_shape': [166700], 'actual_shape': [166700]}}, 'wall_seconds': 4.939488880001591}
@@ -0,0 +1,288 @@
baseline 1 seed_validation-physiological-00-s1073741826 0 1.055 CPU s
baseline 2 seed_validation-physiological-00-s1073741827 0 1.06 CPU s
baseline 3 seed_validation-physiological-00-s1073741825 1 1.066 CPU s
baseline 4 seed_validation-physiological-00-s1073741825 0 1.071 CPU s
baseline 5 seed_validation-physiological-00-s1073741829 0 0.995 CPU s
baseline 6 seed_validation-physiological-00-s1073741828 0 1.022 CPU s
baseline 7 seed_validation-physiological-01-s1073741825 1 1.044 CPU s
baseline 8 seed_validation-physiological-01-s1073741825 0 1.049 CPU s
baseline 9 seed_validation-physiological-01-s1073741826 0 1.025 CPU s
baseline 10 seed_validation-physiological-01-s1073741827 0 1.035 CPU s
baseline 11 seed_validation-physiological-01-s1073741828 0 1.021 CPU s
baseline 12 seed_validation-physiological-01-s1073741829 0 1.046 CPU s
baseline 13 seed_validation-physiological-02-s1073741825 0 1.031 CPU s
baseline 14 seed_validation-physiological-02-s1073741825 1 1.035 CPU s
baseline 15 seed_validation-physiological-02-s1073741826 0 1.034 CPU s
baseline 16 seed_validation-physiological-02-s1073741827 0 1.023 CPU s
baseline 17 seed_validation-physiological-02-s1073741828 0 1.027 CPU s
baseline 18 seed_validation-physiological-02-s1073741829 0 1.039 CPU s
baseline 19 seed_validation-physiological-03-s1073741825 0 1.02 CPU s
baseline 20 seed_validation-physiological-03-s1073741825 1 1.019 CPU s
baseline 21 seed_validation-physiological-03-s1073741826 0 1.019 CPU s
baseline 22 seed_validation-physiological-03-s1073741827 0 1.001 CPU s
baseline 23 seed_validation-physiological-03-s1073741829 0 0.996 CPU s
baseline 24 seed_validation-physiological-03-s1073741828 0 1.013 CPU s
baseline 25 seed_validation-physiological-04-s1073741825 0 0.997 CPU s
baseline 26 seed_validation-physiological-04-s1073741825 1 0.999 CPU s
baseline 27 seed_validation-physiological-04-s1073741827 0 1.013 CPU s
baseline 28 seed_validation-physiological-04-s1073741826 0 1.015 CPU s
baseline 29 seed_validation-physiological-04-s1073741828 0 1.018 CPU s
baseline 30 seed_validation-physiological-04-s1073741829 0 0.997 CPU s
baseline 31 seed_validation-physiological-05-s1073741825 0 1.034 CPU s
baseline 32 seed_validation-physiological-05-s1073741825 1 1.033 CPU s
baseline 33 seed_validation-physiological-05-s1073741826 0 1.046 CPU s
baseline 34 seed_validation-physiological-05-s1073741827 0 1.035 CPU s
baseline 35 seed_validation-physiological-05-s1073741829 0 1.032 CPU s
baseline 36 seed_validation-physiological-05-s1073741828 0 1.038 CPU s
baseline 37 seed_validation-matched_energy-00-s1073741825 1 1.03 CPU s
baseline 38 seed_validation-matched_energy-00-s1073741825 0 1.034 CPU s
baseline 39 seed_validation-matched_energy-00-s1073741826 0 1.019 CPU s
baseline 40 seed_validation-matched_energy-00-s1073741827 0 1.021 CPU s
baseline 41 seed_validation-matched_energy-00-s1073741828 0 1.018 CPU s
baseline 42 seed_validation-matched_energy-00-s1073741829 0 1.024 CPU s
baseline 43 seed_validation-matched_energy-01-s1073741825 0 1.034 CPU s
baseline 44 seed_validation-matched_energy-01-s1073741825 1 1.037 CPU s
baseline 45 seed_validation-matched_energy-01-s1073741826 0 1.02 CPU s
baseline 46 seed_validation-matched_energy-01-s1073741827 0 1.041 CPU s
baseline 47 seed_validation-matched_energy-01-s1073741828 0 1.016 CPU s
baseline 48 seed_validation-matched_energy-01-s1073741829 0 1.038 CPU s
baseline 49 seed_validation-matched_energy-02-s1073741825 0 1.031 CPU s
baseline 50 seed_validation-matched_energy-02-s1073741825 1 1.035 CPU s
baseline 51 seed_validation-matched_energy-02-s1073741826 0 1.036 CPU s
baseline 52 seed_validation-matched_energy-02-s1073741827 0 1.028 CPU s
baseline 53 seed_validation-matched_energy-02-s1073741828 0 1.028 CPU s
baseline 54 seed_validation-matched_energy-03-s1073741825 0 1.019 CPU s
baseline 55 seed_validation-matched_energy-02-s1073741829 0 1.069 CPU s
baseline 56 seed_validation-matched_energy-03-s1073741825 1 1.054 CPU s
baseline 57 seed_validation-matched_energy-03-s1073741826 0 1.022 CPU s
baseline 58 seed_validation-matched_energy-03-s1073741827 0 1.002 CPU s
baseline 59 seed_validation-matched_energy-03-s1073741828 0 1.017 CPU s
baseline 60 seed_validation-matched_energy-03-s1073741829 0 1.038 CPU s
baseline 61 seed_validation-matched_energy-04-s1073741825 0 1.06 CPU s
baseline 62 seed_validation-matched_energy-04-s1073741825 1 1.025 CPU s
baseline 63 seed_validation-matched_energy-04-s1073741826 0 1.029 CPU s
baseline 64 seed_validation-matched_energy-04-s1073741827 0 1.032 CPU s
baseline 65 seed_validation-matched_energy-04-s1073741829 0 1.003 CPU s
baseline 66 seed_validation-matched_energy-04-s1073741828 0 1.062 CPU s
baseline 67 seed_validation-matched_energy-05-s1073741825 0 1.027 CPU s
baseline 68 seed_validation-matched_energy-05-s1073741825 1 1.028 CPU s
baseline 69 seed_validation-matched_energy-05-s1073741826 0 1.024 CPU s
baseline 70 seed_validation-matched_energy-05-s1073741828 0 1.025 CPU s
baseline 71 seed_validation-matched_energy-05-s1073741827 0 1.067 CPU s
baseline 72 seed_validation-matched_energy-05-s1073741829 0 1.032 CPU s
baseline 73 novel_to_aj-physiological-00-s1073741825 0 1.033 CPU s
baseline 74 novel_to_aj-physiological-00-s1073741825 1 1.041 CPU s
baseline 75 novel_to_aj-physiological-00-s1073741826 0 1.056 CPU s
baseline 76 novel_to_aj-physiological-00-s1073741827 0 1.027 CPU s
baseline 77 novel_to_aj-physiological-00-s1073741828 0 1.03 CPU s
baseline 78 novel_to_aj-physiological-00-s1073741829 0 1.038 CPU s
baseline 79 novel_to_aj-physiological-01-s1073741825 1 1.026 CPU s
baseline 80 novel_to_aj-physiological-01-s1073741825 0 1.052 CPU s
baseline 81 novel_to_aj-physiological-01-s1073741826 0 1.017 CPU s
baseline 82 novel_to_aj-physiological-01-s1073741827 0 1.009 CPU s
baseline 83 novel_to_aj-physiological-01-s1073741828 0 1.019 CPU s
baseline 84 novel_to_aj-physiological-01-s1073741829 0 1.037 CPU s
baseline 85 novel_to_aj-physiological-02-s1073741825 0 1.034 CPU s
baseline 86 novel_to_aj-physiological-02-s1073741825 1 1.035 CPU s
baseline 87 novel_to_aj-physiological-02-s1073741826 0 1.034 CPU s
baseline 88 novel_to_aj-physiological-02-s1073741827 0 1.055 CPU s
baseline 89 novel_to_aj-physiological-02-s1073741828 0 1.023 CPU s
baseline 90 novel_to_aj-physiological-02-s1073741829 0 1.037 CPU s
baseline 91 novel_to_aj-physiological-03-s1073741825 0 1.012 CPU s
baseline 92 novel_to_aj-physiological-03-s1073741825 1 1.032 CPU s
baseline 93 novel_to_aj-physiological-03-s1073741826 0 1.0 CPU s
baseline 94 novel_to_aj-physiological-03-s1073741827 0 1.017 CPU s
baseline 95 novel_to_aj-physiological-03-s1073741828 0 1.02 CPU s
baseline 96 novel_to_aj-physiological-03-s1073741829 0 1.018 CPU s
baseline 97 novel_to_aj-physiological-04-s1073741825 0 1.031 CPU s
baseline 98 novel_to_aj-physiological-04-s1073741825 1 1.032 CPU s
baseline 99 novel_to_aj-physiological-04-s1073741826 0 1.024 CPU s
baseline 100 novel_to_aj-physiological-04-s1073741827 0 1.047 CPU s
baseline 101 novel_to_aj-physiological-04-s1073741828 0 1.02 CPU s
baseline 102 novel_to_aj-physiological-04-s1073741829 0 1.026 CPU s
baseline 103 novel_to_aj-physiological-05-s1073741825 0 1.022 CPU s
baseline 104 novel_to_aj-physiological-05-s1073741825 1 1.045 CPU s
baseline 105 novel_to_aj-physiological-05-s1073741826 0 1.012 CPU s
baseline 106 novel_to_aj-physiological-05-s1073741827 0 1.005 CPU s
baseline 107 novel_to_aj-physiological-05-s1073741828 0 1.013 CPU s
baseline 108 novel_to_aj-physiological-05-s1073741829 0 0.997 CPU s
baseline 109 novel_to_aj-matched_energy-00-s1073741825 0 1.03 CPU s
baseline 110 novel_to_aj-matched_energy-00-s1073741825 1 1.031 CPU s
baseline 111 novel_to_aj-matched_energy-00-s1073741826 0 1.033 CPU s
baseline 112 novel_to_aj-matched_energy-00-s1073741827 0 1.049 CPU s
baseline 113 novel_to_aj-matched_energy-00-s1073741828 0 1.03 CPU s
baseline 114 novel_to_aj-matched_energy-00-s1073741829 0 1.034 CPU s
baseline 115 novel_to_aj-matched_energy-01-s1073741825 0 1.027 CPU s
baseline 116 novel_to_aj-matched_energy-01-s1073741825 1 1.046 CPU s
baseline 117 novel_to_aj-matched_energy-01-s1073741826 0 1.023 CPU s
baseline 118 novel_to_aj-matched_energy-01-s1073741827 0 1.006 CPU s
baseline 119 novel_to_aj-matched_energy-01-s1073741828 0 1.018 CPU s
baseline 120 novel_to_aj-matched_energy-01-s1073741829 0 1.016 CPU s
baseline 121 novel_to_aj-matched_energy-02-s1073741825 0 1.035 CPU s
baseline 122 novel_to_aj-matched_energy-02-s1073741825 1 1.037 CPU s
baseline 123 novel_to_aj-matched_energy-02-s1073741826 0 1.032 CPU s
baseline 124 novel_to_aj-matched_energy-02-s1073741827 0 1.045 CPU s
baseline 125 novel_to_aj-matched_energy-02-s1073741828 0 1.022 CPU s
baseline 126 novel_to_aj-matched_energy-02-s1073741829 0 1.038 CPU s
baseline 127 novel_to_aj-matched_energy-03-s1073741825 0 1.014 CPU s
baseline 128 novel_to_aj-matched_energy-03-s1073741825 1 1.032 CPU s
baseline 129 novel_to_aj-matched_energy-03-s1073741826 0 1.01 CPU s
baseline 130 novel_to_aj-matched_energy-03-s1073741827 0 1.021 CPU s
baseline 131 novel_to_aj-matched_energy-03-s1073741828 0 1.022 CPU s
baseline 132 novel_to_aj-matched_energy-03-s1073741829 0 1.029 CPU s
baseline 133 novel_to_aj-matched_energy-04-s1073741825 0 1.03 CPU s
baseline 134 novel_to_aj-matched_energy-04-s1073741825 1 1.031 CPU s
baseline 135 novel_to_aj-matched_energy-04-s1073741826 0 1.023 CPU s
baseline 136 novel_to_aj-matched_energy-04-s1073741827 0 1.051 CPU s
baseline 137 novel_to_aj-matched_energy-04-s1073741828 0 1.019 CPU s
baseline 138 novel_to_aj-matched_energy-04-s1073741829 0 1.027 CPU s
baseline 139 novel_to_aj-matched_energy-05-s1073741825 0 1.028 CPU s
baseline 140 novel_to_aj-matched_energy-05-s1073741825 1 1.045 CPU s
baseline 141 novel_to_aj-matched_energy-05-s1073741826 0 1.015 CPU s
baseline 142 novel_to_aj-matched_energy-05-s1073741827 0 1.004 CPU s
baseline 143 novel_to_aj-matched_energy-05-s1073741828 0 1.021 CPU s
baseline 144 novel_to_aj-matched_energy-05-s1073741829 0 1.018 CPU s
conditional25 1 seed_validation-physiological-00-s1073741827 0 1.097 CPU s
conditional25 2 seed_validation-physiological-00-s1073741826 0 1.103 CPU s
conditional25 3 seed_validation-physiological-00-s1073741825 0 1.11 CPU s
conditional25 4 seed_validation-physiological-00-s1073741825 1 1.111 CPU s
conditional25 5 seed_validation-physiological-00-s1073741829 0 1.02 CPU s
conditional25 6 seed_validation-physiological-00-s1073741828 0 1.056 CPU s
conditional25 7 seed_validation-physiological-01-s1073741825 0 1.071 CPU s
conditional25 8 seed_validation-physiological-01-s1073741825 1 1.072 CPU s
conditional25 9 seed_validation-physiological-01-s1073741826 0 1.05 CPU s
conditional25 10 seed_validation-physiological-01-s1073741827 0 1.065 CPU s
conditional25 11 seed_validation-physiological-01-s1073741828 0 1.047 CPU s
conditional25 12 seed_validation-physiological-01-s1073741829 0 1.072 CPU s
conditional25 13 seed_validation-physiological-02-s1073741825 0 1.06 CPU s
conditional25 14 seed_validation-physiological-02-s1073741825 1 1.06 CPU s
conditional25 15 seed_validation-physiological-02-s1073741826 0 1.062 CPU s
conditional25 16 seed_validation-physiological-02-s1073741827 0 1.051 CPU s
conditional25 17 seed_validation-physiological-02-s1073741828 0 1.05 CPU s
conditional25 18 seed_validation-physiological-03-s1073741825 0 1.045 CPU s
conditional25 19 seed_validation-physiological-02-s1073741829 0 1.068 CPU s
conditional25 20 seed_validation-physiological-03-s1073741825 1 1.045 CPU s
conditional25 21 seed_validation-physiological-03-s1073741826 0 1.05 CPU s
conditional25 22 seed_validation-physiological-03-s1073741827 0 1.025 CPU s
conditional25 23 seed_validation-physiological-03-s1073741829 0 1.019 CPU s
conditional25 24 seed_validation-physiological-03-s1073741828 0 1.04 CPU s
conditional25 25 seed_validation-physiological-04-s1073741825 0 1.026 CPU s
conditional25 26 seed_validation-physiological-04-s1073741825 1 1.024 CPU s
conditional25 27 seed_validation-physiological-04-s1073741826 0 1.039 CPU s
conditional25 28 seed_validation-physiological-04-s1073741827 0 1.043 CPU s
conditional25 29 seed_validation-physiological-04-s1073741828 0 1.046 CPU s
conditional25 30 seed_validation-physiological-04-s1073741829 0 1.024 CPU s
conditional25 31 seed_validation-physiological-05-s1073741825 0 1.062 CPU s
conditional25 32 seed_validation-physiological-05-s1073741825 1 1.063 CPU s
conditional25 33 seed_validation-physiological-05-s1073741827 0 1.059 CPU s
conditional25 34 seed_validation-physiological-05-s1073741826 0 1.071 CPU s
conditional25 35 seed_validation-physiological-05-s1073741828 0 1.066 CPU s
conditional25 36 seed_validation-physiological-05-s1073741829 0 1.059 CPU s
conditional25 37 seed_validation-matched_energy-00-s1073741825 0 1.056 CPU s
conditional25 38 seed_validation-matched_energy-00-s1073741825 1 1.06 CPU s
conditional25 39 seed_validation-matched_energy-00-s1073741826 0 1.047 CPU s
conditional25 40 seed_validation-matched_energy-00-s1073741827 0 1.048 CPU s
conditional25 41 seed_validation-matched_energy-00-s1073741829 0 1.016 CPU s
conditional25 42 seed_validation-matched_energy-00-s1073741828 0 1.044 CPU s
conditional25 43 seed_validation-matched_energy-01-s1073741825 0 1.059 CPU s
conditional25 44 seed_validation-matched_energy-01-s1073741825 1 1.062 CPU s
conditional25 45 seed_validation-matched_energy-01-s1073741826 0 1.046 CPU s
conditional25 46 seed_validation-matched_energy-01-s1073741827 0 1.064 CPU s
conditional25 47 seed_validation-matched_energy-01-s1073741828 0 1.044 CPU s
conditional25 48 seed_validation-matched_energy-01-s1073741829 0 1.062 CPU s
conditional25 49 seed_validation-matched_energy-02-s1073741825 0 1.058 CPU s
conditional25 50 seed_validation-matched_energy-02-s1073741825 1 1.059 CPU s
conditional25 51 seed_validation-matched_energy-02-s1073741826 0 1.063 CPU s
conditional25 52 seed_validation-matched_energy-02-s1073741827 0 1.051 CPU s
conditional25 53 seed_validation-matched_energy-02-s1073741828 0 1.049 CPU s
conditional25 54 seed_validation-matched_energy-02-s1073741829 0 1.069 CPU s
conditional25 55 seed_validation-matched_energy-03-s1073741825 0 1.047 CPU s
conditional25 56 seed_validation-matched_energy-03-s1073741825 1 1.05 CPU s
conditional25 57 seed_validation-matched_energy-03-s1073741826 0 1.043 CPU s
conditional25 58 seed_validation-matched_energy-03-s1073741827 0 1.025 CPU s
conditional25 59 seed_validation-matched_energy-03-s1073741828 0 1.038 CPU s
conditional25 60 seed_validation-matched_energy-03-s1073741829 0 1.037 CPU s
conditional25 61 seed_validation-matched_energy-04-s1073741825 0 1.051 CPU s
conditional25 62 seed_validation-matched_energy-04-s1073741825 1 1.052 CPU s
conditional25 63 seed_validation-matched_energy-04-s1073741826 0 1.056 CPU s
conditional25 64 seed_validation-matched_energy-04-s1073741827 0 1.04 CPU s
conditional25 65 seed_validation-matched_energy-04-s1073741828 0 1.042 CPU s
conditional25 66 seed_validation-matched_energy-04-s1073741829 0 1.021 CPU s
conditional25 67 seed_validation-matched_energy-05-s1073741825 0 1.053 CPU s
conditional25 68 seed_validation-matched_energy-05-s1073741825 1 1.054 CPU s
conditional25 69 seed_validation-matched_energy-05-s1073741826 0 1.049 CPU s
conditional25 70 seed_validation-matched_energy-05-s1073741827 0 1.06 CPU s
conditional25 71 seed_validation-matched_energy-05-s1073741828 0 1.051 CPU s
conditional25 72 seed_validation-matched_energy-05-s1073741829 0 1.059 CPU s
conditional25 73 novel_to_aj-physiological-00-s1073741825 0 1.061 CPU s
conditional25 74 novel_to_aj-physiological-00-s1073741825 1 1.063 CPU s
conditional25 75 novel_to_aj-physiological-00-s1073741826 0 1.064 CPU s
conditional25 76 novel_to_aj-physiological-00-s1073741827 0 1.055 CPU s
conditional25 77 novel_to_aj-physiological-00-s1073741828 0 1.065 CPU s
conditional25 78 novel_to_aj-physiological-00-s1073741829 0 1.062 CPU s
conditional25 79 novel_to_aj-physiological-01-s1073741825 0 1.055 CPU s
conditional25 80 novel_to_aj-physiological-01-s1073741825 1 1.053 CPU s
conditional25 81 novel_to_aj-physiological-01-s1073741826 0 1.047 CPU s
conditional25 82 novel_to_aj-physiological-01-s1073741827 0 1.039 CPU s
conditional25 83 novel_to_aj-physiological-01-s1073741829 0 1.036 CPU s
conditional25 84 novel_to_aj-physiological-01-s1073741828 0 1.049 CPU s
conditional25 85 novel_to_aj-physiological-02-s1073741825 0 1.061 CPU s
conditional25 86 novel_to_aj-physiological-02-s1073741825 1 1.064 CPU s
conditional25 87 novel_to_aj-physiological-02-s1073741826 0 1.055 CPU s
conditional25 88 novel_to_aj-physiological-02-s1073741827 0 1.052 CPU s
conditional25 89 novel_to_aj-physiological-02-s1073741828 0 1.056 CPU s
conditional25 90 novel_to_aj-physiological-02-s1073741829 0 1.067 CPU s
conditional25 91 novel_to_aj-physiological-03-s1073741825 0 1.045 CPU s
conditional25 92 novel_to_aj-physiological-03-s1073741825 1 1.044 CPU s
conditional25 93 novel_to_aj-physiological-03-s1073741826 0 1.03 CPU s
conditional25 94 novel_to_aj-physiological-03-s1073741827 0 1.048 CPU s
conditional25 95 novel_to_aj-physiological-03-s1073741829 0 1.029 CPU s
conditional25 96 novel_to_aj-physiological-03-s1073741828 0 1.049 CPU s
conditional25 97 novel_to_aj-physiological-04-s1073741825 0 1.062 CPU s
conditional25 98 novel_to_aj-physiological-04-s1073741825 1 1.06 CPU s
conditional25 99 novel_to_aj-physiological-04-s1073741826 0 1.054 CPU s
conditional25 100 novel_to_aj-physiological-04-s1073741827 0 1.058 CPU s
conditional25 101 novel_to_aj-physiological-04-s1073741828 0 1.046 CPU s
conditional25 102 novel_to_aj-physiological-04-s1073741829 0 1.051 CPU s
conditional25 103 novel_to_aj-physiological-05-s1073741825 0 1.048 CPU s
conditional25 104 novel_to_aj-physiological-05-s1073741825 1 1.046 CPU s
conditional25 105 novel_to_aj-physiological-05-s1073741826 0 1.044 CPU s
conditional25 106 novel_to_aj-physiological-05-s1073741827 0 1.035 CPU s
conditional25 107 novel_to_aj-physiological-05-s1073741829 0 1.019 CPU s
conditional25 108 novel_to_aj-physiological-05-s1073741828 0 1.047 CPU s
conditional25 109 novel_to_aj-matched_energy-00-s1073741825 0 1.063 CPU s
conditional25 110 novel_to_aj-matched_energy-00-s1073741825 1 1.062 CPU s
conditional25 111 novel_to_aj-matched_energy-00-s1073741826 0 1.064 CPU s
conditional25 112 novel_to_aj-matched_energy-00-s1073741827 0 1.058 CPU s
conditional25 113 novel_to_aj-matched_energy-00-s1073741828 0 1.061 CPU s
conditional25 114 novel_to_aj-matched_energy-00-s1073741829 0 1.063 CPU s
conditional25 115 novel_to_aj-matched_energy-01-s1073741825 0 1.057 CPU s
conditional25 116 novel_to_aj-matched_energy-01-s1073741825 1 1.059 CPU s
conditional25 117 novel_to_aj-matched_energy-01-s1073741826 0 1.052 CPU s
conditional25 118 novel_to_aj-matched_energy-01-s1073741827 0 1.035 CPU s
conditional25 119 novel_to_aj-matched_energy-01-s1073741829 0 1.036 CPU s
conditional25 120 novel_to_aj-matched_energy-01-s1073741828 0 1.051 CPU s
conditional25 121 novel_to_aj-matched_energy-02-s1073741825 0 1.062 CPU s
conditional25 122 novel_to_aj-matched_energy-02-s1073741825 1 1.062 CPU s
conditional25 123 novel_to_aj-matched_energy-02-s1073741826 0 1.06 CPU s
conditional25 124 novel_to_aj-matched_energy-02-s1073741827 0 1.053 CPU s
conditional25 125 novel_to_aj-matched_energy-02-s1073741828 0 1.053 CPU s
conditional25 126 novel_to_aj-matched_energy-02-s1073741829 0 1.063 CPU s
conditional25 127 novel_to_aj-matched_energy-03-s1073741825 0 1.046 CPU s
conditional25 128 novel_to_aj-matched_energy-03-s1073741825 1 1.046 CPU s
conditional25 129 novel_to_aj-matched_energy-03-s1073741826 0 1.035 CPU s
conditional25 130 novel_to_aj-matched_energy-03-s1073741827 0 1.045 CPU s
conditional25 131 novel_to_aj-matched_energy-03-s1073741829 0 1.041 CPU s
conditional25 132 novel_to_aj-matched_energy-03-s1073741828 0 1.054 CPU s
conditional25 133 novel_to_aj-matched_energy-04-s1073741825 0 1.059 CPU s
conditional25 134 novel_to_aj-matched_energy-04-s1073741825 1 1.056 CPU s
conditional25 135 novel_to_aj-matched_energy-04-s1073741826 0 1.049 CPU s
conditional25 136 novel_to_aj-matched_energy-04-s1073741827 0 1.053 CPU s
conditional25 137 novel_to_aj-matched_energy-04-s1073741828 0 1.05 CPU s
conditional25 138 novel_to_aj-matched_energy-05-s1073741825 0 1.053 CPU s
conditional25 139 novel_to_aj-matched_energy-04-s1073741829 0 1.06 CPU s
conditional25 140 novel_to_aj-matched_energy-05-s1073741825 1 1.055 CPU s
conditional25 141 novel_to_aj-matched_energy-05-s1073741826 0 1.048 CPU s
conditional25 142 novel_to_aj-matched_energy-05-s1073741829 0 1.017 CPU s
conditional25 143 novel_to_aj-matched_energy-05-s1073741827 0 1.034 CPU s
conditional25 144 novel_to_aj-matched_energy-05-s1073741828 0 1.048 CPU s
@@ -0,0 +1 @@
{'arithmetic_and_coverage_pass': True, 'primary_trials': 120, 'exact_repeats': 24, 'pairs': 60, 'blocks': {'novel_to_aj/matched_energy': {'trials': 30, 'pairs': 15, 'pairs_with_both_specific_KC_and_edge_sets': 15, 'KC_empty_union_pairs': 0, 'edge_empty_union_pairs': 0, 'KC_active_set_Jaccard': {'min': 0.47530864197530864, 'mean': 0.5841409898567061, 'max': 0.7878787878787878}, 'candidate_edge_active_set_Jaccard': {'min': 0.4783427495291902, 'mean': 0.5790535492712533, 'max': 0.7757009345794392}, 'plastic_accepted_events': {'min': 270.0, 'mean': 378.1333333333333, 'max': 514.0}, 'plastic_fraction_of_all_MBON_accepted_positive': {'min': 0.008154767782495633, 'mean': 0.010754369069852216, 'max': 0.014236769581964907}, 'conditional25_event_changed_trials': 30, 'conditional25_count_or_first_latency_changed_trials': 30, 'max_abs_V_difference_SI': 0.017760696704371408, 'max_abs_g_difference_SI': 0.17777414602804315}, 'novel_to_aj/physiological': {'trials': 30, 'pairs': 15, 'pairs_with_both_specific_KC_and_edge_sets': 15, 'KC_empty_union_pairs': 0, 'edge_empty_union_pairs': 0, 'KC_active_set_Jaccard': {'min': 0.4294117647058823, 'mean': 0.552939795567701, 'max': 0.7092198581560284}, 'candidate_edge_active_set_Jaccard': {'min': 0.4020979020979021, 'mean': 0.540137299171442, 'max': 0.698237885462555}, 'plastic_accepted_events': {'min': 250.0, 'mean': 373.6333333333333, 'max': 514.0}, 'plastic_fraction_of_all_MBON_accepted_positive': {'min': 0.008154767782495633, 'mean': 0.01084643277128086, 'max': 0.014236769581964907}, 'conditional25_event_changed_trials': 30, 'conditional25_count_or_first_latency_changed_trials': 30, 'max_abs_V_difference_SI': 0.014991618207097573, 'max_abs_g_difference_SI': 0.18470935317353884}, 'seed_validation/matched_energy': {'trials': 30, 'pairs': 15, 'pairs_with_both_specific_KC_and_edge_sets': 15, 'KC_empty_union_pairs': 0, 'edge_empty_union_pairs': 0, 'KC_active_set_Jaccard': {'min': 0.5329341317365269, 'mean': 0.6308870189105532, 'max': 0.7697841726618705}, 'candidate_edge_active_set_Jaccard': {'min': 0.5026455026455027, 'mean': 0.6109426134022716, 'max': 0.7555066079295154}, 'plastic_accepted_events': {'min': 274.0, 'mean': 404.56666666666666, 'max': 524.0}, 'plastic_fraction_of_all_MBON_accepted_positive': {'min': 0.008256663420649924, 'mean': 0.011085250653013025, 'max': 0.013383027567785298}, 'conditional25_event_changed_trials': 30, 'conditional25_count_or_first_latency_changed_trials': 30, 'max_abs_V_difference_SI': 0.020187739858270014, 'max_abs_g_difference_SI': 0.17139554952906824}, 'seed_validation/physiological': {'trials': 30, 'pairs': 15, 'pairs_with_both_specific_KC_and_edge_sets': 15, 'KC_empty_union_pairs': 0, 'edge_empty_union_pairs': 0, 'KC_active_set_Jaccard': {'min': 0.47058823529411764, 'mean': 0.5890796823543046, 'max': 0.7457627118644068}, 'candidate_edge_active_set_Jaccard': {'min': 0.44939965694682676, 'mean': 0.5757479003861892, 'max': 0.7520391517128875}, 'plastic_accepted_events': {'min': 268.0, 'mean': 407.0, 'max': 538.0}, 'plastic_fraction_of_all_MBON_accepted_positive': {'min': 0.008218868682136815, 'mean': 0.011150911914580085, 'max': 0.013300666346500171}, 'conditional25_event_changed_trials': 30, 'conditional25_count_or_first_latency_changed_trials': 30, 'max_abs_V_difference_SI': 0.02604567773504369, 'max_abs_g_difference_SI': 0.1666881141779693}}, 'candidate_generated': False, 'learning_achieved': False, 'conditioning_executed': False, 'scientific_overall_PASS_threshold_defined': False, 'maximum_observed_g_lane_roundoff_residual_SI': 5.273559366969494e-16, 'interpretation': 'Read-only credit delivery and fixed conditional sensitivity; not closed-loop memory or dopamine measurement'}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,46 @@
{
"neurons": 166700,
"all_edges": 25582938,
"KC": 4064,
"MBON": 97,
"all_MBON_incoming_edges": 86039,
"all_KC_MBON_edges": 61210,
"candidate_edges": 14232,
"candidate_targets": 12,
"confirmed_DAN_MBON_edges": 95,
"compartments": {
"B2B'2a": {
"edges": 4346,
"targets": 2,
"sources": 2386
},
"a1": {
"edges": 3651,
"targets": 4,
"sources": 1875
},
"y2a'1": {
"edges": 4126,
"targets": 4,
"sources": 2177
},
"y5B'2a": {
"edges": 2109,
"targets": 2,
"sources": 2083
}
},
"fast_APL_incoming_edges_zeroed": 120,
"groups": {
"plastic_KC": 14232,
"nonplastic_KC": 46978,
"DAN": 3160,
"MBON": 1606,
"APL": 120,
"other": 19943
},
"mask_all_edges_identity_verified": true,
"mapping_basis": "Frozen explicit annotation token + real DAN-to-MBON edge; not synapse ROI",
"feedback_neuron_class_not_inferred": true,
"weight_units": "float64 SI volts; not measured conductance"
}
@@ -0,0 +1,27 @@
[
{
"path": "protocol/candidate-static.parquet",
"bytes": 213596,
"sha256": "e5075ee3e5a0edf3a4d197453847163cc295b254f21c67203159bba204b12a76"
},
{
"path": "protocol/graph-audit.json",
"bytes": 1028,
"sha256": "54f1f433fc8526c4336b30e85e258a890f9e4013646aadaca063b6b0985f84f6"
},
{
"path": "protocol/incoming.npz",
"bytes": 441874,
"sha256": "0124484dbc718c690a68f3fc3971695c7a7a9922db1e7a5cd8b1134ed686325f"
},
{
"path": "protocol/mbon-metadata.parquet",
"bytes": 7999,
"sha256": "54f371f7e35b9def44becd1ba9bd2872861f4876b255b2c8ec46feee6473b70c"
},
{
"path": "protocol/preregistered.json",
"bytes": 197347,
"sha256": "20d638c2b1e2f883de55a49bc80db4bc5aa0eb5548d316b912edc3b26e06a315"
}
]
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,323 @@
{
"pass_all": true,
"trials": [
{
"trial": "auditory-10hz",
"exact": {
"step": true,
"neuron_idx": true,
"counts": true,
"v": true,
"g": true
},
"dtype_shape": {
"step": {
"reference_dtype": "int32",
"actual_dtype": "int32",
"reference_shape": [
609920
],
"actual_shape": [
609920
]
},
"neuron_idx": {
"reference_dtype": "int32",
"actual_dtype": "int32",
"reference_shape": [
609920
],
"actual_shape": [
609920
]
},
"counts": {
"reference_dtype": "int32",
"actual_dtype": "int32",
"reference_shape": [
166700
],
"actual_shape": [
166700
]
},
"v": {
"reference_dtype": "float32",
"actual_dtype": "float32",
"reference_shape": [
166700
],
"actual_shape": [
166700
]
},
"g": {
"reference_dtype": "float32",
"actual_dtype": "float32",
"reference_shape": [
166700
],
"actual_shape": [
166700
]
}
},
"wall_seconds": 2.686470789998566
},
{
"trial": "auditory-100hz",
"exact": {
"step": true,
"neuron_idx": true,
"counts": true,
"v": true,
"g": true
},
"dtype_shape": {
"step": {
"reference_dtype": "int32",
"actual_dtype": "int32",
"reference_shape": [
2321608
],
"actual_shape": [
2321608
]
},
"neuron_idx": {
"reference_dtype": "int32",
"actual_dtype": "int32",
"reference_shape": [
2321608
],
"actual_shape": [
2321608
]
},
"counts": {
"reference_dtype": "int32",
"actual_dtype": "int32",
"reference_shape": [
166700
],
"actual_shape": [
166700
]
},
"v": {
"reference_dtype": "float32",
"actual_dtype": "float32",
"reference_shape": [
166700
],
"actual_shape": [
166700
]
},
"g": {
"reference_dtype": "float32",
"actual_dtype": "float32",
"reference_shape": [
166700
],
"actual_shape": [
166700
]
}
},
"wall_seconds": 4.9066673909983365
},
{
"trial": "olfactory-50hz",
"exact": {
"step": true,
"neuron_idx": true,
"counts": true,
"v": true,
"g": true
},
"dtype_shape": {
"step": {
"reference_dtype": "int32",
"actual_dtype": "int32",
"reference_shape": [
2806702
],
"actual_shape": [
2806702
]
},
"neuron_idx": {
"reference_dtype": "int32",
"actual_dtype": "int32",
"reference_shape": [
2806702
],
"actual_shape": [
2806702
]
},
"counts": {
"reference_dtype": "int32",
"actual_dtype": "int32",
"reference_shape": [
166700
],
"actual_shape": [
166700
]
},
"v": {
"reference_dtype": "float32",
"actual_dtype": "float32",
"reference_shape": [
166700
],
"actual_shape": [
166700
]
},
"g": {
"reference_dtype": "float32",
"actual_dtype": "float32",
"reference_shape": [
166700
],
"actual_shape": [
166700
]
}
},
"wall_seconds": 4.933064379998541
},
{
"trial": "mechanosensory-50hz",
"exact": {
"step": true,
"neuron_idx": true,
"counts": true,
"v": true,
"g": true
},
"dtype_shape": {
"step": {
"reference_dtype": "int32",
"actual_dtype": "int32",
"reference_shape": [
2414779
],
"actual_shape": [
2414779
]
},
"neuron_idx": {
"reference_dtype": "int32",
"actual_dtype": "int32",
"reference_shape": [
2414779
],
"actual_shape": [
2414779
]
},
"counts": {
"reference_dtype": "int32",
"actual_dtype": "int32",
"reference_shape": [
166700
],
"actual_shape": [
166700
]
},
"v": {
"reference_dtype": "float32",
"actual_dtype": "float32",
"reference_shape": [
166700
],
"actual_shape": [
166700
]
},
"g": {
"reference_dtype": "float32",
"actual_dtype": "float32",
"reference_shape": [
166700
],
"actual_shape": [
166700
]
}
},
"wall_seconds": 4.964243114001874
},
{
"trial": "gustatory-50hz",
"exact": {
"step": true,
"neuron_idx": true,
"counts": true,
"v": true,
"g": true
},
"dtype_shape": {
"step": {
"reference_dtype": "int32",
"actual_dtype": "int32",
"reference_shape": [
2452226
],
"actual_shape": [
2452226
]
},
"neuron_idx": {
"reference_dtype": "int32",
"actual_dtype": "int32",
"reference_shape": [
2452226
],
"actual_shape": [
2452226
]
},
"counts": {
"reference_dtype": "int32",
"actual_dtype": "int32",
"reference_shape": [
166700
],
"actual_shape": [
166700
]
},
"v": {
"reference_dtype": "float32",
"actual_dtype": "float32",
"reference_shape": [
166700
],
"actual_shape": [
166700
]
},
"g": {
"reference_dtype": "float32",
"actual_dtype": "float32",
"reference_shape": [
166700
],
"actual_shape": [
166700
]
}
},
"wall_seconds": 4.939488880001591
}
],
"wall_seconds": 81.9939301509985,
"peak_allocated_vram": 285994496,
"scope": "Old frozen deterministic-v2 reference only, not D18 equality to old dynamics"
}
@@ -0,0 +1,195 @@
{
"original": {
"pass": true,
"checked": 230239,
"mismatches": [],
"reference_sha256": "6f186112e6102f2f7969de7442fa7ee4432200a3678586cfc4e10c490b31bca4",
"exclusions": [
".cache",
".git",
".mypy_cache",
".pytest_cache",
".venv",
"__pycache__",
"node_modules",
"venv"
],
"new_stage_additions_allowed": true,
"meaning": "All original listed bytes checked; only newly named stage outputs are additions."
},
"models/male-cns-lif/apl-pn-scope-audit-v1": {
"pass": true,
"checked": 12,
"mismatches": [],
"manifest_sha256": "9120685eb02dc2bd3b38d42b2ade1f38f6bbc2a1ec269fd4d555cead2d628277",
"checksums_sha256": "55dc418f2d62be04601af33cbd8789578447e6a2289d3a581dc713cbb7466a25"
},
"experiments/phase4aa-apl-pn-scope": {
"pass": true,
"checked": 68,
"mismatches": [],
"manifest_sha256": "6d75567af2a6c0993d4fc08e272814910c19fa9602811cfacd1ebc4ba76bc737",
"checksums_sha256": "a69b2511689207b0d9ddbe2fabce3be71908f457bb898e3b685a213a796a272a"
},
"models/male-cns-lif/terminal-scope-diagnostic-v1": {
"pass": true,
"checked": 11,
"mismatches": [],
"manifest_sha256": "5cea0035a95345825b73385c6e3056244c2a614d10a6fa6742487a331d8f0f3e",
"checksums_sha256": "92a03195cb41863027fd0397ad3811248354a5d3f2e91ffa2c297eba62dc2821"
},
"experiments/phase4ab-terminal-scope": {
"pass": true,
"checked": 199,
"mismatches": [],
"manifest_sha256": "cb3723f9dae29d4889489ae39f40293c927f4f9e532551e2c4d5214bf0a70140",
"checksums_sha256": "d83926a3055d9f9ca471ceba328076d7ceba883f267468750914080733e95e31"
},
"models/male-cns-lif/lif-semantics-audit-v1": {
"pass": true,
"checked": 7,
"mismatches": [],
"manifest_sha256": "53e53d51bba86ec11a02e920f2c2653db4c138dd9562e8416dd001780635070c",
"checksums_sha256": "15b7b7828492387beed2c885ad9d22af682cff1dc38198c0770ab7175759c69d"
},
"experiments/phase4ac-lif-semantics": {
"pass": true,
"checked": 57,
"mismatches": [],
"manifest_sha256": "4e7d1606e107fe72f5dad935952705260577edaba6f811d65b4105ce07abd72c",
"checksums_sha256": "81bb3a86454147f1562bc3592438b6a6d0091dbe1d2a777e802882ecf1d0db35"
},
"registry/feedback-context-review-20260930": {
"pass": true,
"checked": 8,
"mismatches": [],
"manifest_sha256": "8fda8506cae9b5b258fe371c8938a15e613114f4234c969fdf742d1f5133c64b",
"checksums_sha256": "9390c04cf4d0bcd2ed89bb4efd1db01cb2faf7dc4f23e8cb411b2ed782ba083d"
},
"models/male-cns-lif/author-semantics-lab-v1": {
"pass": true,
"checked": 11,
"mismatches": [],
"manifest_sha256": "07a22bade4892adca3a4585656aa3ecce5219790b0dc8a851a12bfd7248d3769",
"checksums_sha256": "a632c04e62d8072caacfa680e0da7ad785a1d0db604cf5900853fd0b01c70ee7"
},
"experiments/phase4ad-author-semantics": {
"pass": true,
"checked": 565,
"mismatches": [],
"manifest_sha256": "c939d3977a1883e86108c1e3edd25619118cec61e5c7712ae4dfa2893a73c0ca",
"checksums_sha256": "89ca0f11877dadb901bd2bd5d469d7bd145de980fc6b203b79daeec640a1b72c"
},
"models/male-cns-lif/author-runtime-lab-v1": {
"pass": true,
"checked": 11,
"mismatches": [],
"manifest_sha256": "7e8b0ac4adcd48eceabca7c9cc4f2c42a8746ebc673aee4490bae5a4746bbe12",
"checksums_sha256": "bf8eaad5963e6a6cf6bada6024ba37a36a0acb064bfc0beacd9c69dfd074b5c8"
},
"experiments/phase4ae-author-runtime": {
"pass": true,
"checked": 916,
"mismatches": [],
"manifest_sha256": "a86caca4ecbd96c2b7cf24371b28f80f37170fa8769cdd9a31c822434be1eef5",
"checksums_sha256": "7bd84b8365953964b24684830e1fd97fca04bef8f8c051dcad3ff95633a1ae82"
},
"models/male-cns-lif/author-fullgraph-lab-v1": {
"pass": true,
"checked": 11,
"mismatches": [],
"manifest_sha256": "ead78ed89d0daebee5281ef285bbfe9d79c69b5034830609414f7b130d3c5827",
"checksums_sha256": "6fd184043777b190006ce344861477b91df908eac5351f74efeb3fd1151011a0"
},
"experiments/phase4af-author-fullgraph": {
"pass": true,
"checked": 129,
"mismatches": [],
"manifest_sha256": "0646b5fc232ee44912f1c3a60d600355f5a6d97dff7cf59fccea612d822fb899",
"checksums_sha256": "f4d502c32ce80c70ff5271a686f09d9f72e1dc277863df1d0135ddeb09475736"
},
"models/male-cns-lif/author-apl-lab-v1": {
"pass": true,
"checked": 16,
"mismatches": [],
"manifest_sha256": "6aa01a937f1f3c6504ee92e847cf7b3a884e88aa4ef37a68b0b7d4e7deed4bf2",
"checksums_sha256": "8768d1cf1a4ae4de595aa5623b27c77b84b620767d202c74db5a69e7617f42b3"
},
"experiments/phase4ag-author-apl": {
"pass": true,
"checked": 333,
"mismatches": [],
"manifest_sha256": "4920e331efb7d0db6366ef1ef727c180a179c298834e45a9c06eb8e5bfc489d6",
"checksums_sha256": "06e0cc917ee3bf194384262d34c0762641e0403468ec556cd09866572fb87cde"
},
"models/male-cns-lif/author-apl-lab-v2": {
"pass": true,
"checked": 17,
"mismatches": [],
"manifest_sha256": "208c00961b9d895d14ac050bc23fbc18db49d0df1fcf5c20d4c3eaa8e15ff7ff",
"checksums_sha256": "effb9ef2cbd08ec973a01c2b9b2a9047fc0a42732601a734e733d56b93029ff1"
},
"experiments/phase4ag-author-apl-r2": {
"pass": true,
"checked": 1718,
"mismatches": [],
"manifest_sha256": "21593297c40bee58516d4d7fd16e9d8d20ffdea5f8e0652fa5dd4e903b4d96ee",
"checksums_sha256": "dcc61d2251cb1b425196f180e3ec3816d1fa5eb91aefda7940f9d821aae82d19"
},
"models/male-cns-lif/kc-drive-audit-v1": {
"pass": true,
"checked": 11,
"mismatches": [],
"manifest_sha256": "fa89cb0a6e2dc77462057b672ffbcfabbe74b893d8f70e4b41d8b5202de15530",
"checksums_sha256": "ed082e56978ac841c1fd92810eb611b63d6c2238d0406c92c281bb5023bc9f70"
},
"experiments/phase4ah-kc-drive-audit": {
"pass": true,
"checked": 415,
"mismatches": [],
"manifest_sha256": "fb30ca09068d5d8dc1dc9972e00f674c5dc3aa49c7117d630607b5d9067927db",
"checksums_sha256": "567a3eb5758763c86146235835984a352dd860bf69489d1cf2b048d93fba05c9"
},
"models/male-cns-lif/pn-recruitment-audit-v1": {
"pass": true,
"checked": 16,
"mismatches": [],
"manifest_sha256": "a53443ac124e9bebc813867a5015d77276c2bd3edf89cd606a57d54756fe0dd7",
"checksums_sha256": "07964100d4836741da404ef8a785b5a24c9c6caa5c5be4c6153bfbf3aef12459"
},
"experiments/phase4ai-pn-recruitment-audit": {
"pass": true,
"checked": 734,
"mismatches": [],
"manifest_sha256": "12c6f2e9929b3f7084e8b39b90c8851185febbc0afbb7031f9eebb4c41d2731d",
"checksums_sha256": "2a6247fb9a9fd187cc29dee03e41f98aa6c859a1edc58bc02a2062f8ee09f848"
},
"models/male-cns-lif/apl-timing-lab-v1": {
"pass": true,
"checked": 21,
"mismatches": [],
"manifest_sha256": "52b05dd1ff30b6b51ff960fe95904532f5c147731a83f0b5c31f98ca7e53c216",
"checksums_sha256": "80bbbf97b242f94022c36bc00767ee82c61862bafba4981a8586c7e2cbfe3ef5"
},
"experiments/phase4aj-apl-timing": {
"pass": true,
"checked": 4954,
"mismatches": [],
"manifest_sha256": "7f490ada0db30785c61954d8b92147378ddc8bc16b229fe3808bbe501caff44a",
"checksums_sha256": "f483a5caec69ec37e33d101980d9a0e4d7b64e80320b864f1a4351979c0478fe"
},
"models/male-cns-lif/apl-timing-validation-v1": {
"pass": true,
"checked": 17,
"mismatches": [],
"manifest_sha256": "3206a8666718b4a99e09b8384c87dd25895b5d7038d23fad7b93e40379183ccb",
"checksums_sha256": "0a0cc604736c6ac6040f9ad05b36399ca7f99bb6d2dfe2ae9ba5877da7fa5502"
},
"experiments/phase4ak-apl-timing-validation": {
"pass": true,
"checked": 2899,
"mismatches": [],
"manifest_sha256": "25eb7e467eb17c3fa83ffee2e4e82b754f161fd8891e515bed23eeb500c5656d",
"checksums_sha256": "65c9ee6e90a49fd22282a977d3770a07567c47f4303e12359239dd9c77246af2"
}
}
@@ -0,0 +1,195 @@
{
"original": {
"pass": true,
"checked": 230239,
"mismatches": [],
"reference_sha256": "6f186112e6102f2f7969de7442fa7ee4432200a3678586cfc4e10c490b31bca4",
"exclusions": [
".cache",
".git",
".mypy_cache",
".pytest_cache",
".venv",
"__pycache__",
"node_modules",
"venv"
],
"new_stage_additions_allowed": true,
"meaning": "All original listed bytes checked; only newly named stage outputs are additions."
},
"models/male-cns-lif/apl-pn-scope-audit-v1": {
"pass": true,
"checked": 12,
"mismatches": [],
"manifest_sha256": "9120685eb02dc2bd3b38d42b2ade1f38f6bbc2a1ec269fd4d555cead2d628277",
"checksums_sha256": "55dc418f2d62be04601af33cbd8789578447e6a2289d3a581dc713cbb7466a25"
},
"experiments/phase4aa-apl-pn-scope": {
"pass": true,
"checked": 68,
"mismatches": [],
"manifest_sha256": "6d75567af2a6c0993d4fc08e272814910c19fa9602811cfacd1ebc4ba76bc737",
"checksums_sha256": "a69b2511689207b0d9ddbe2fabce3be71908f457bb898e3b685a213a796a272a"
},
"models/male-cns-lif/terminal-scope-diagnostic-v1": {
"pass": true,
"checked": 11,
"mismatches": [],
"manifest_sha256": "5cea0035a95345825b73385c6e3056244c2a614d10a6fa6742487a331d8f0f3e",
"checksums_sha256": "92a03195cb41863027fd0397ad3811248354a5d3f2e91ffa2c297eba62dc2821"
},
"experiments/phase4ab-terminal-scope": {
"pass": true,
"checked": 199,
"mismatches": [],
"manifest_sha256": "cb3723f9dae29d4889489ae39f40293c927f4f9e532551e2c4d5214bf0a70140",
"checksums_sha256": "d83926a3055d9f9ca471ceba328076d7ceba883f267468750914080733e95e31"
},
"models/male-cns-lif/lif-semantics-audit-v1": {
"pass": true,
"checked": 7,
"mismatches": [],
"manifest_sha256": "53e53d51bba86ec11a02e920f2c2653db4c138dd9562e8416dd001780635070c",
"checksums_sha256": "15b7b7828492387beed2c885ad9d22af682cff1dc38198c0770ab7175759c69d"
},
"experiments/phase4ac-lif-semantics": {
"pass": true,
"checked": 57,
"mismatches": [],
"manifest_sha256": "4e7d1606e107fe72f5dad935952705260577edaba6f811d65b4105ce07abd72c",
"checksums_sha256": "81bb3a86454147f1562bc3592438b6a6d0091dbe1d2a777e802882ecf1d0db35"
},
"registry/feedback-context-review-20260930": {
"pass": true,
"checked": 8,
"mismatches": [],
"manifest_sha256": "8fda8506cae9b5b258fe371c8938a15e613114f4234c969fdf742d1f5133c64b",
"checksums_sha256": "9390c04cf4d0bcd2ed89bb4efd1db01cb2faf7dc4f23e8cb411b2ed782ba083d"
},
"models/male-cns-lif/author-semantics-lab-v1": {
"pass": true,
"checked": 11,
"mismatches": [],
"manifest_sha256": "07a22bade4892adca3a4585656aa3ecce5219790b0dc8a851a12bfd7248d3769",
"checksums_sha256": "a632c04e62d8072caacfa680e0da7ad785a1d0db604cf5900853fd0b01c70ee7"
},
"experiments/phase4ad-author-semantics": {
"pass": true,
"checked": 565,
"mismatches": [],
"manifest_sha256": "c939d3977a1883e86108c1e3edd25619118cec61e5c7712ae4dfa2893a73c0ca",
"checksums_sha256": "89ca0f11877dadb901bd2bd5d469d7bd145de980fc6b203b79daeec640a1b72c"
},
"models/male-cns-lif/author-runtime-lab-v1": {
"pass": true,
"checked": 11,
"mismatches": [],
"manifest_sha256": "7e8b0ac4adcd48eceabca7c9cc4f2c42a8746ebc673aee4490bae5a4746bbe12",
"checksums_sha256": "bf8eaad5963e6a6cf6bada6024ba37a36a0acb064bfc0beacd9c69dfd074b5c8"
},
"experiments/phase4ae-author-runtime": {
"pass": true,
"checked": 916,
"mismatches": [],
"manifest_sha256": "a86caca4ecbd96c2b7cf24371b28f80f37170fa8769cdd9a31c822434be1eef5",
"checksums_sha256": "7bd84b8365953964b24684830e1fd97fca04bef8f8c051dcad3ff95633a1ae82"
},
"models/male-cns-lif/author-fullgraph-lab-v1": {
"pass": true,
"checked": 11,
"mismatches": [],
"manifest_sha256": "ead78ed89d0daebee5281ef285bbfe9d79c69b5034830609414f7b130d3c5827",
"checksums_sha256": "6fd184043777b190006ce344861477b91df908eac5351f74efeb3fd1151011a0"
},
"experiments/phase4af-author-fullgraph": {
"pass": true,
"checked": 129,
"mismatches": [],
"manifest_sha256": "0646b5fc232ee44912f1c3a60d600355f5a6d97dff7cf59fccea612d822fb899",
"checksums_sha256": "f4d502c32ce80c70ff5271a686f09d9f72e1dc277863df1d0135ddeb09475736"
},
"models/male-cns-lif/author-apl-lab-v1": {
"pass": true,
"checked": 16,
"mismatches": [],
"manifest_sha256": "6aa01a937f1f3c6504ee92e847cf7b3a884e88aa4ef37a68b0b7d4e7deed4bf2",
"checksums_sha256": "8768d1cf1a4ae4de595aa5623b27c77b84b620767d202c74db5a69e7617f42b3"
},
"experiments/phase4ag-author-apl": {
"pass": true,
"checked": 333,
"mismatches": [],
"manifest_sha256": "4920e331efb7d0db6366ef1ef727c180a179c298834e45a9c06eb8e5bfc489d6",
"checksums_sha256": "06e0cc917ee3bf194384262d34c0762641e0403468ec556cd09866572fb87cde"
},
"models/male-cns-lif/author-apl-lab-v2": {
"pass": true,
"checked": 17,
"mismatches": [],
"manifest_sha256": "208c00961b9d895d14ac050bc23fbc18db49d0df1fcf5c20d4c3eaa8e15ff7ff",
"checksums_sha256": "effb9ef2cbd08ec973a01c2b9b2a9047fc0a42732601a734e733d56b93029ff1"
},
"experiments/phase4ag-author-apl-r2": {
"pass": true,
"checked": 1718,
"mismatches": [],
"manifest_sha256": "21593297c40bee58516d4d7fd16e9d8d20ffdea5f8e0652fa5dd4e903b4d96ee",
"checksums_sha256": "dcc61d2251cb1b425196f180e3ec3816d1fa5eb91aefda7940f9d821aae82d19"
},
"models/male-cns-lif/kc-drive-audit-v1": {
"pass": true,
"checked": 11,
"mismatches": [],
"manifest_sha256": "fa89cb0a6e2dc77462057b672ffbcfabbe74b893d8f70e4b41d8b5202de15530",
"checksums_sha256": "ed082e56978ac841c1fd92810eb611b63d6c2238d0406c92c281bb5023bc9f70"
},
"experiments/phase4ah-kc-drive-audit": {
"pass": true,
"checked": 415,
"mismatches": [],
"manifest_sha256": "fb30ca09068d5d8dc1dc9972e00f674c5dc3aa49c7117d630607b5d9067927db",
"checksums_sha256": "567a3eb5758763c86146235835984a352dd860bf69489d1cf2b048d93fba05c9"
},
"models/male-cns-lif/pn-recruitment-audit-v1": {
"pass": true,
"checked": 16,
"mismatches": [],
"manifest_sha256": "a53443ac124e9bebc813867a5015d77276c2bd3edf89cd606a57d54756fe0dd7",
"checksums_sha256": "07964100d4836741da404ef8a785b5a24c9c6caa5c5be4c6153bfbf3aef12459"
},
"experiments/phase4ai-pn-recruitment-audit": {
"pass": true,
"checked": 734,
"mismatches": [],
"manifest_sha256": "12c6f2e9929b3f7084e8b39b90c8851185febbc0afbb7031f9eebb4c41d2731d",
"checksums_sha256": "2a6247fb9a9fd187cc29dee03e41f98aa6c859a1edc58bc02a2062f8ee09f848"
},
"models/male-cns-lif/apl-timing-lab-v1": {
"pass": true,
"checked": 21,
"mismatches": [],
"manifest_sha256": "52b05dd1ff30b6b51ff960fe95904532f5c147731a83f0b5c31f98ca7e53c216",
"checksums_sha256": "80bbbf97b242f94022c36bc00767ee82c61862bafba4981a8586c7e2cbfe3ef5"
},
"experiments/phase4aj-apl-timing": {
"pass": true,
"checked": 4954,
"mismatches": [],
"manifest_sha256": "7f490ada0db30785c61954d8b92147378ddc8bc16b229fe3808bbe501caff44a",
"checksums_sha256": "f483a5caec69ec37e33d101980d9a0e4d7b64e80320b864f1a4351979c0478fe"
},
"models/male-cns-lif/apl-timing-validation-v1": {
"pass": true,
"checked": 17,
"mismatches": [],
"manifest_sha256": "3206a8666718b4a99e09b8384c87dd25895b5d7038d23fad7b93e40379183ccb",
"checksums_sha256": "0a0cc604736c6ac6040f9ad05b36399ca7f99bb6d2dfe2ae9ba5877da7fa5502"
},
"experiments/phase4ak-apl-timing-validation": {
"pass": true,
"checked": 2899,
"mismatches": [],
"manifest_sha256": "25eb7e467eb17c3fa83ffee2e4e82b754f161fd8891e515bed23eeb500c5656d",
"checksums_sha256": "65c9ee6e90a49fd22282a977d3770a07567c47f4303e12359239dd9c77246af2"
}
}
@@ -0,0 +1,34 @@
test_empty_union_and_empty_edge_mapping_explicit (test_credit.IdentityTests) ... ok
test_readonly_inputs_and_returned_mapping_owns_memory (test_credit.IdentityTests) ... ok
test_reject_wrong_dtype_shape_nonfinite_negative_cap_and_source (test_credit.IdentityTests) ... ok
test_three_of_five_categories_and_full_set_jaccard (test_credit.IdentityTests) ... ok
test_tiny_positive_no_epsilon_and_no_weight_update_outputs (test_credit.IdentityTests) ... ok
test_empty_events_are_positive_zero_with_exact_dtypes (test_credit.ReplayTests) ... ok
test_gate_900_includes_same_tick_901_is_final_only_no_18_shift (test_credit.ReplayTests) ... ok
test_independent_frozen_numpy_loop_ast_matches_all_trace_bits (test_credit.ReplayTests) ... ok
test_independent_frozen_torch_cpu_statement_matches_when_available (test_credit.ReplayTests) ... ok
test_invalid_event_order_duplicate_ranges_and_dtype (test_credit.ReplayTests) ... ok
test_invalid_kc_identities_and_frozen_parameters (test_credit.ReplayTests) ... ok
test_non_kc_events_ignored_only_after_full_validation (test_credit.ReplayTests) ... ok
test_spike_cap_resets_recency_not_accumulated_count (test_credit.ReplayTests) ... ok
test_tick_zero_gate_and_last_tick_have_no_extra_decay (test_credit.ReplayTests) ... ok
test_all_baseline_gate_precedes_conditional_schedule (test_integration.IntegrationTests) ... ok
test_event_difference_with_same_counts_and_first_is_retained (test_integration.IntegrationTests) ... ok
test_per_neuron_count_difference_not_cancelled_by_equal_total (test_integration.IntegrationTests) ... ok
test_repeat_not_an_independent_primary_trial (test_integration.IntegrationTests) ... ok
test_undefined_denominator_is_not_silently_zero (test_integration.IntegrationTests) ... ok
test_arrival_rejected_on_fire_and_refractory_release (test_mbon_accounting.AccountingTests) ... ok
test_bad_dtype_groups_coefficients_and_nonfinite_fail (test_mbon_accounting.AccountingTests) ... ok
test_callback_and_constructor_inputs_never_modified (test_mbon_accounting.AccountingTests) ... ok
test_cross_lane_roundoff_is_visible_not_reassigned (test_mbon_accounting.AccountingTests) ... ok
test_empty_graph_initial_baseline_and_json_summary (test_mbon_accounting.AccountingTests) ... ok
test_firing_clears_source_g_and_voltage_lanes (test_mbon_accounting.AccountingTests) ... ok
test_group_sign_totals_and_zero_weight_event_counts (test_mbon_accounting.AccountingTests) ... ok
test_incomplete_duplicate_tick_and_repeated_finish_fail (test_mbon_accounting.AccountingTests) ... ok
test_real_delay_old_g_for_voltage_and_end_tick_integral (test_mbon_accounting.AccountingTests) ... ok
test_stage_guard_apl_and_canonical_order_corruption_fail (test_mbon_accounting.AccountingTests) ... ok
----------------------------------------------------------------------
Ran 29 tests in 1.596s
OK
@@ -0,0 +1,125 @@
{
"complete": true,
"pass_all": true,
"pass_all_scope": "Observer callback coverage and internal count/state-accounting checks only",
"steps": 1000,
"callback_count": 1000,
"targets": 97,
"incoming_edges": 86039,
"group_names": [
"plastic_KC",
"nonplastic_KC",
"DAN",
"MBON",
"APL",
"other"
],
"sign_order": [
"positive",
"negative"
],
"dt_ms": 0.1,
"due_count": 45313,
"accepted_count": 41768,
"rejected_count": 3545,
"groups": {
"plastic_KC": {
"due_count": 540,
"accepted_count": 497,
"rejected_count": 43,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 0.9410499999999999,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.23430000000000004,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 2.4881413537483574,
"g_positive_integral_V_ms": 2.4881413537483574,
"g_negative_integral_V_ms": 0.0
},
"nonplastic_KC": {
"due_count": 1830,
"accepted_count": 1553,
"rejected_count": 277,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 2.7890499999999996,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.9493,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 7.2694501354233765,
"g_positive_integral_V_ms": 7.269450135423377,
"g_negative_integral_V_ms": 0.0
},
"DAN": {
"due_count": 2520,
"accepted_count": 2323,
"rejected_count": 197,
"accepted_zero_count": 6,
"rejected_zero_count": 0,
"accepted_positive_V": 17.320600000000002,
"accepted_negative_V": 0.0,
"rejected_positive_V": 1.6120500000000002,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 52.7981489116152,
"g_positive_integral_V_ms": 52.7981489116152,
"g_negative_integral_V_ms": 0.0
},
"MBON": {
"due_count": 5167,
"accepted_count": 4654,
"rejected_count": 513,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 3.4685750000000004,
"accepted_negative_V": -25.126475000000006,
"rejected_positive_V": 0.423775,
"rejected_negative_V": -2.8908,
"g_integral_V_ms": -98.20756237482448,
"g_positive_integral_V_ms": 13.050205313300975,
"g_negative_integral_V_ms": -111.25776768812545
},
"APL": {
"due_count": 2703,
"accepted_count": 2533,
"rejected_count": 170,
"accepted_zero_count": 2533,
"rejected_zero_count": 170,
"accepted_positive_V": 0.0,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.0,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 0.0,
"g_positive_integral_V_ms": 0.0,
"g_negative_integral_V_ms": 0.0
},
"other": {
"due_count": 32553,
"accepted_count": 30208,
"rejected_count": 2345,
"accepted_zero_count": 2328,
"rejected_zero_count": 190,
"accepted_positive_V": 44.22302500000006,
"accepted_negative_V": -42.09067500000001,
"rejected_positive_V": 4.940925000000001,
"rejected_negative_V": -2.8894249999999997,
"g_integral_V_ms": -40.04272106227547,
"g_positive_integral_V_ms": 142.478933352698,
"g_negative_integral_V_ms": -182.52165441497348
}
},
"max_g_lane_residual_V": 4.371503159461554e-16,
"max_v_lane_residual_V": 1.2490009027033011e-15,
"residual_policy": "Observed state minus uncorrected float64 lane sum; no fitted tolerance or anatomical reassignment",
"integral_contract": "Sum of end-of-tick source g or v lanes times dt_ms; units V*ms, not conductance or energy",
"increment_contract": "Nominal accepted/rejected signed per-edge increments; negative fields retain negative sign",
"lane_contract": "Observed availability controls decay/integration; observed request/reset clears voltage/source history; fired clears g; canonical accepted adds only",
"pending_coverage_checked_by_observer": false,
"original_events_verified_by_observer": false,
"caller_must_verify_original_events_final_and_queue_coverage": true,
"nonfeedback": true,
"parameter_changes": false,
"learning": false,
"functional_transfer_claim": false,
"whole_brain_intervention_claim": false
}
@@ -0,0 +1,26 @@
{
"name": "novel_to_aj-matched_energy-00-s1073741825",
"cohort": "novel_to_aj",
"source_panel_split": "heldout",
"source_panel_row": 6,
"mode": "matched_energy",
"odor_id": "YSNWHRKJEKWJNY-UHFFFAOYSA-N",
"odor_index": 0,
"seed": 1073741825,
"targets": 35,
"requests": 109,
"expected_external_events": 102.2443115234375,
"rates_sum": 1022.443115234375,
"repeat": 0,
"pass_all": true,
"baseline_exact": {
"counts": true,
"v": true,
"g": true,
"ref": true,
"step": true,
"neuron_idx": true
},
"due_plus_pending_source_events_exact": true,
"CPU_wall_seconds": 1.030301637998491
}
@@ -0,0 +1,125 @@
{
"complete": true,
"pass_all": true,
"pass_all_scope": "Observer callback coverage and internal count/state-accounting checks only",
"steps": 1000,
"callback_count": 1000,
"targets": 97,
"incoming_edges": 86039,
"group_names": [
"plastic_KC",
"nonplastic_KC",
"DAN",
"MBON",
"APL",
"other"
],
"sign_order": [
"positive",
"negative"
],
"dt_ms": 0.1,
"due_count": 45313,
"accepted_count": 41775,
"rejected_count": 3538,
"groups": {
"plastic_KC": {
"due_count": 540,
"accepted_count": 507,
"rejected_count": 33,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 0.7284750000000002,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.1530375,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 2.2163810252283858,
"g_positive_integral_V_ms": 2.2163810252283858,
"g_negative_integral_V_ms": 0.0
},
"nonplastic_KC": {
"due_count": 1830,
"accepted_count": 1553,
"rejected_count": 277,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 2.7890499999999996,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.9493,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 7.2694501354233765,
"g_positive_integral_V_ms": 7.269450135423377,
"g_negative_integral_V_ms": 0.0
},
"DAN": {
"due_count": 2520,
"accepted_count": 2322,
"rejected_count": 198,
"accepted_zero_count": 6,
"rejected_zero_count": 0,
"accepted_positive_V": 17.295025000000003,
"accepted_negative_V": 0.0,
"rejected_positive_V": 1.6376250000000003,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 52.71751430117737,
"g_positive_integral_V_ms": 52.71751430117736,
"g_negative_integral_V_ms": 0.0
},
"MBON": {
"due_count": 5167,
"accepted_count": 4657,
"rejected_count": 510,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 3.4724250000000003,
"accepted_negative_V": -25.18945,
"rejected_positive_V": 0.419925,
"rejected_negative_V": -2.827825,
"g_integral_V_ms": -98.7447053220597,
"g_positive_integral_V_ms": 13.066546785665565,
"g_negative_integral_V_ms": -111.81125210772528
},
"APL": {
"due_count": 2703,
"accepted_count": 2535,
"rejected_count": 168,
"accepted_zero_count": 2535,
"rejected_zero_count": 168,
"accepted_positive_V": 0.0,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.0,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 0.0,
"g_positive_integral_V_ms": 0.0,
"g_negative_integral_V_ms": 0.0
},
"other": {
"due_count": 32553,
"accepted_count": 30201,
"rejected_count": 2352,
"accepted_zero_count": 2329,
"rejected_zero_count": 189,
"accepted_positive_V": 44.21065000000005,
"accepted_negative_V": -42.07445000000002,
"rejected_positive_V": 4.953300000000001,
"rejected_negative_V": -2.9056499999999996,
"g_integral_V_ms": -39.743958606891205,
"g_positive_integral_V_ms": 142.69621829756505,
"g_negative_integral_V_ms": -182.44017690445628
}
},
"max_g_lane_residual_V": 4.371503159461554e-16,
"max_v_lane_residual_V": 1.2490009027033011e-15,
"residual_policy": "Observed state minus uncorrected float64 lane sum; no fitted tolerance or anatomical reassignment",
"integral_contract": "Sum of end-of-tick source g or v lanes times dt_ms; units V*ms, not conductance or energy",
"increment_contract": "Nominal accepted/rejected signed per-edge increments; negative fields retain negative sign",
"lane_contract": "Observed availability controls decay/integration; observed request/reset clears voltage/source history; fired clears g; canonical accepted adds only",
"pending_coverage_checked_by_observer": false,
"original_events_verified_by_observer": false,
"caller_must_verify_original_events_final_and_queue_coverage": true,
"nonfeedback": true,
"parameter_changes": false,
"learning": false,
"functional_transfer_claim": false,
"whole_brain_intervention_claim": false
}
@@ -0,0 +1,16 @@
{
"steps": 1000,
"gate_tick": 900,
"dt_ms": 0.1,
"tau_ms": 100.0,
"cap": 1.0,
"decay_f32_bits": "3f7fbe7f",
"total_input_events": 29962,
"total_KC_events": 163,
"KC_events_through_gate": 162,
"gate_includes_same_tick_spikes": true,
"event_shift_steps": 0,
"gate_is_virtual_readout_not_DAN_activity": true,
"weights_modified": false,
"weight_delta_generated": false
}
@@ -0,0 +1,67 @@
[
{
"path": "baseline-accounting.json",
"bytes": 4301,
"sha256": "4b7209cce8f1c79f46b09699024f1b5eef06c93c3d08a23e2d73f92168e19bee"
},
{
"path": "baseline-edge-accounting.npz",
"bytes": 361169,
"sha256": "c19d2db43011fc85aaf6b464ad48fd5b4263a7989d06b035def51873aca46781"
},
{
"path": "baseline-replay.npz",
"bytes": 4517,
"sha256": "c37b5e9d33353c9e17bd9b10de693926f0af701cc2637c26a4ccc28ceb08c65d"
},
{
"path": "baseline-summary.json",
"bytes": 636,
"sha256": "77a40aeb97d478780f42409b1072d932374c13d97f2e1c659995f81c80163f28"
},
{
"path": "baseline-target-accounting.npz",
"bytes": 4427102,
"sha256": "53059f8f1cd86099d15735cef5adf30bf51fe09760ea30f4a756f6b1e281f175"
},
{
"path": "conditional25-accounting.json",
"bytes": 4287,
"sha256": "4152970a6c9631feff23736061000f78621539896996eeca9f27e64f6ccd7b33"
},
{
"path": "conditional25-edge-accounting.npz",
"bytes": 367630,
"sha256": "f42f050f0309f9c77aa48493f30243774d3fb03728721dc71f8d9d2d150c4af0"
},
{
"path": "conditional25-replay.npz",
"bytes": 4500,
"sha256": "d411f559f49dd1a7ce3b36b046b639c25693a1a1fa71f2e15e2fbabc3ac0f53a"
},
{
"path": "conditional25-target-accounting.npz",
"bytes": 4457302,
"sha256": "6e99be345d03f2e0deb6524477abcc8373c9269d9b70cfe8c1a1d9975f7a8131"
},
{
"path": "credit.json",
"bytes": 395,
"sha256": "ece9f42f92d2c4a65f5d09fd1c894fe88aac9bbf5ae9e8bef5e01abc96691c4c"
},
{
"path": "credit.npz",
"bytes": 3187,
"sha256": "498e810beca40ac8c26bdad0eafee75931aeb25a9b49948e530dd22dd31bcc8e"
},
{
"path": "sensitivity.json",
"bytes": 595,
"sha256": "f36ffa9f397c79e38fe7df2a3f0708d6ce9b9fa1e643daf18b8b9387f9d34fd1"
},
{
"path": "summary.json",
"bytes": 1688,
"sha256": "3028996e86856c34cce32fba613d0370f2a6c8b99e14faaadd848c3e1e0e1969"
}
]
@@ -0,0 +1,14 @@
{
"event_sequence_changed": true,
"spike_count_L1": 3,
"neurons_with_count_change": 3,
"neurons_with_first_latency_change": 10,
"baseline_spikes": 249,
"depressed_spikes": 246,
"max_abs_V_difference_SI": 0.00783804091691579,
"max_abs_g_difference_SI": 0.15108779908783893,
"final_V_max_abs_difference_SI": 0.0002832159362843034,
"final_g_max_abs_difference_SI": 0.00024390312009721826,
"functional_count_or_first_latency_change": true,
"result_scope": "Conditional clamped-upstream replay only; all target threshold/reset/ref recalculated; not whole-brain or learning"
}
@@ -0,0 +1,49 @@
{
"name": "novel_to_aj-matched_energy-00-s1073741825",
"cohort": "novel_to_aj",
"source_panel_split": "heldout",
"source_panel_row": 6,
"mode": "matched_energy",
"odor_id": "YSNWHRKJEKWJNY-UHFFFAOYSA-N",
"odor_index": 0,
"seed": 1073741825,
"targets": 35,
"requests": 109,
"expected_external_events": 102.2443115234375,
"rates_sum": 1022.443115234375,
"repeat": 0,
"pass_all": true,
"baseline_exact": {
"counts": true,
"v": true,
"g": true,
"ref": true,
"step": true,
"neuron_idx": true
},
"sensitivity": {
"event_sequence_changed": true,
"spike_count_L1": 3,
"neurons_with_count_change": 3,
"neurons_with_first_latency_change": 10,
"baseline_spikes": 249,
"depressed_spikes": 246,
"max_abs_V_difference_SI": 0.00783804091691579,
"max_abs_g_difference_SI": 0.15108779908783893,
"final_V_max_abs_difference_SI": 0.0002832159362843034,
"final_g_max_abs_difference_SI": 0.00024390312009721826,
"functional_count_or_first_latency_change": true,
"result_scope": "Conditional clamped-upstream replay only; all target threshold/reset/ref recalculated; not whole-brain or learning"
},
"credit_gate": "Virtual tick900 post-update; no DAN injection or plastic update",
"biological_duration_ms": 100.0,
"CPU_wall_seconds": 1.0628202250009053,
"baseline_CPU_wall_seconds": 1.030301637998491,
"source_sha256": {
"state.npz": "de63be6895c06e99631076550b984f1bff9a1360caedb6b9661e70bb91f6c0ad",
"summary.json": "ca0a197b450f0b182f21e5cf79b9df1fc9b4a93763a4f884e19236a1cfc47f30"
},
"conditional_weight_copy_only": true,
"training": false,
"candidate_generated": false
}
@@ -0,0 +1,125 @@
{
"complete": true,
"pass_all": true,
"pass_all_scope": "Observer callback coverage and internal count/state-accounting checks only",
"steps": 1000,
"callback_count": 1000,
"targets": 97,
"incoming_edges": 86039,
"group_names": [
"plastic_KC",
"nonplastic_KC",
"DAN",
"MBON",
"APL",
"other"
],
"sign_order": [
"positive",
"negative"
],
"dt_ms": 0.1,
"due_count": 45313,
"accepted_count": 41768,
"rejected_count": 3545,
"groups": {
"plastic_KC": {
"due_count": 540,
"accepted_count": 497,
"rejected_count": 43,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 0.9410499999999999,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.23430000000000004,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 2.4881413537483574,
"g_positive_integral_V_ms": 2.4881413537483574,
"g_negative_integral_V_ms": 0.0
},
"nonplastic_KC": {
"due_count": 1830,
"accepted_count": 1553,
"rejected_count": 277,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 2.7890499999999996,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.9493,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 7.2694501354233765,
"g_positive_integral_V_ms": 7.269450135423377,
"g_negative_integral_V_ms": 0.0
},
"DAN": {
"due_count": 2520,
"accepted_count": 2323,
"rejected_count": 197,
"accepted_zero_count": 6,
"rejected_zero_count": 0,
"accepted_positive_V": 17.320600000000002,
"accepted_negative_V": 0.0,
"rejected_positive_V": 1.6120500000000002,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 52.7981489116152,
"g_positive_integral_V_ms": 52.7981489116152,
"g_negative_integral_V_ms": 0.0
},
"MBON": {
"due_count": 5167,
"accepted_count": 4654,
"rejected_count": 513,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 3.4685750000000004,
"accepted_negative_V": -25.126475000000006,
"rejected_positive_V": 0.423775,
"rejected_negative_V": -2.8908,
"g_integral_V_ms": -98.20756237482448,
"g_positive_integral_V_ms": 13.050205313300975,
"g_negative_integral_V_ms": -111.25776768812545
},
"APL": {
"due_count": 2703,
"accepted_count": 2533,
"rejected_count": 170,
"accepted_zero_count": 2533,
"rejected_zero_count": 170,
"accepted_positive_V": 0.0,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.0,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 0.0,
"g_positive_integral_V_ms": 0.0,
"g_negative_integral_V_ms": 0.0
},
"other": {
"due_count": 32553,
"accepted_count": 30208,
"rejected_count": 2345,
"accepted_zero_count": 2328,
"rejected_zero_count": 190,
"accepted_positive_V": 44.22302500000006,
"accepted_negative_V": -42.09067500000001,
"rejected_positive_V": 4.940925000000001,
"rejected_negative_V": -2.8894249999999997,
"g_integral_V_ms": -40.04272106227547,
"g_positive_integral_V_ms": 142.478933352698,
"g_negative_integral_V_ms": -182.52165441497348
}
},
"max_g_lane_residual_V": 4.371503159461554e-16,
"max_v_lane_residual_V": 1.2490009027033011e-15,
"residual_policy": "Observed state minus uncorrected float64 lane sum; no fitted tolerance or anatomical reassignment",
"integral_contract": "Sum of end-of-tick source g or v lanes times dt_ms; units V*ms, not conductance or energy",
"increment_contract": "Nominal accepted/rejected signed per-edge increments; negative fields retain negative sign",
"lane_contract": "Observed availability controls decay/integration; observed request/reset clears voltage/source history; fired clears g; canonical accepted adds only",
"pending_coverage_checked_by_observer": false,
"original_events_verified_by_observer": false,
"caller_must_verify_original_events_final_and_queue_coverage": true,
"nonfeedback": true,
"parameter_changes": false,
"learning": false,
"functional_transfer_claim": false,
"whole_brain_intervention_claim": false
}
@@ -0,0 +1,26 @@
{
"name": "novel_to_aj-matched_energy-00-s1073741825",
"cohort": "novel_to_aj",
"source_panel_split": "heldout",
"source_panel_row": 6,
"mode": "matched_energy",
"odor_id": "YSNWHRKJEKWJNY-UHFFFAOYSA-N",
"odor_index": 0,
"seed": 1073741825,
"targets": 35,
"requests": 109,
"expected_external_events": 102.2443115234375,
"rates_sum": 1022.443115234375,
"repeat": 1,
"pass_all": true,
"baseline_exact": {
"counts": true,
"v": true,
"g": true,
"ref": true,
"step": true,
"neuron_idx": true
},
"due_plus_pending_source_events_exact": true,
"CPU_wall_seconds": 1.031266106001567
}
@@ -0,0 +1,125 @@
{
"complete": true,
"pass_all": true,
"pass_all_scope": "Observer callback coverage and internal count/state-accounting checks only",
"steps": 1000,
"callback_count": 1000,
"targets": 97,
"incoming_edges": 86039,
"group_names": [
"plastic_KC",
"nonplastic_KC",
"DAN",
"MBON",
"APL",
"other"
],
"sign_order": [
"positive",
"negative"
],
"dt_ms": 0.1,
"due_count": 45313,
"accepted_count": 41775,
"rejected_count": 3538,
"groups": {
"plastic_KC": {
"due_count": 540,
"accepted_count": 507,
"rejected_count": 33,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 0.7284750000000002,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.1530375,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 2.2163810252283858,
"g_positive_integral_V_ms": 2.2163810252283858,
"g_negative_integral_V_ms": 0.0
},
"nonplastic_KC": {
"due_count": 1830,
"accepted_count": 1553,
"rejected_count": 277,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 2.7890499999999996,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.9493,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 7.2694501354233765,
"g_positive_integral_V_ms": 7.269450135423377,
"g_negative_integral_V_ms": 0.0
},
"DAN": {
"due_count": 2520,
"accepted_count": 2322,
"rejected_count": 198,
"accepted_zero_count": 6,
"rejected_zero_count": 0,
"accepted_positive_V": 17.295025000000003,
"accepted_negative_V": 0.0,
"rejected_positive_V": 1.6376250000000003,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 52.71751430117737,
"g_positive_integral_V_ms": 52.71751430117736,
"g_negative_integral_V_ms": 0.0
},
"MBON": {
"due_count": 5167,
"accepted_count": 4657,
"rejected_count": 510,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 3.4724250000000003,
"accepted_negative_V": -25.18945,
"rejected_positive_V": 0.419925,
"rejected_negative_V": -2.827825,
"g_integral_V_ms": -98.7447053220597,
"g_positive_integral_V_ms": 13.066546785665565,
"g_negative_integral_V_ms": -111.81125210772528
},
"APL": {
"due_count": 2703,
"accepted_count": 2535,
"rejected_count": 168,
"accepted_zero_count": 2535,
"rejected_zero_count": 168,
"accepted_positive_V": 0.0,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.0,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 0.0,
"g_positive_integral_V_ms": 0.0,
"g_negative_integral_V_ms": 0.0
},
"other": {
"due_count": 32553,
"accepted_count": 30201,
"rejected_count": 2352,
"accepted_zero_count": 2329,
"rejected_zero_count": 189,
"accepted_positive_V": 44.21065000000005,
"accepted_negative_V": -42.07445000000002,
"rejected_positive_V": 4.953300000000001,
"rejected_negative_V": -2.9056499999999996,
"g_integral_V_ms": -39.743958606891205,
"g_positive_integral_V_ms": 142.69621829756505,
"g_negative_integral_V_ms": -182.44017690445628
}
},
"max_g_lane_residual_V": 4.371503159461554e-16,
"max_v_lane_residual_V": 1.2490009027033011e-15,
"residual_policy": "Observed state minus uncorrected float64 lane sum; no fitted tolerance or anatomical reassignment",
"integral_contract": "Sum of end-of-tick source g or v lanes times dt_ms; units V*ms, not conductance or energy",
"increment_contract": "Nominal accepted/rejected signed per-edge increments; negative fields retain negative sign",
"lane_contract": "Observed availability controls decay/integration; observed request/reset clears voltage/source history; fired clears g; canonical accepted adds only",
"pending_coverage_checked_by_observer": false,
"original_events_verified_by_observer": false,
"caller_must_verify_original_events_final_and_queue_coverage": true,
"nonfeedback": true,
"parameter_changes": false,
"learning": false,
"functional_transfer_claim": false,
"whole_brain_intervention_claim": false
}
@@ -0,0 +1,16 @@
{
"steps": 1000,
"gate_tick": 900,
"dt_ms": 0.1,
"tau_ms": 100.0,
"cap": 1.0,
"decay_f32_bits": "3f7fbe7f",
"total_input_events": 29962,
"total_KC_events": 163,
"KC_events_through_gate": 162,
"gate_includes_same_tick_spikes": true,
"event_shift_steps": 0,
"gate_is_virtual_readout_not_DAN_activity": true,
"weights_modified": false,
"weight_delta_generated": false
}
@@ -0,0 +1,67 @@
[
{
"path": "baseline-accounting.json",
"bytes": 4301,
"sha256": "4b7209cce8f1c79f46b09699024f1b5eef06c93c3d08a23e2d73f92168e19bee"
},
{
"path": "baseline-edge-accounting.npz",
"bytes": 361169,
"sha256": "c19d2db43011fc85aaf6b464ad48fd5b4263a7989d06b035def51873aca46781"
},
{
"path": "baseline-replay.npz",
"bytes": 4517,
"sha256": "c37b5e9d33353c9e17bd9b10de693926f0af701cc2637c26a4ccc28ceb08c65d"
},
{
"path": "baseline-summary.json",
"bytes": 636,
"sha256": "94b01d811c43a83ecd6577900b0bff83bf7bbe35459d46b964af6639eea31e5f"
},
{
"path": "baseline-target-accounting.npz",
"bytes": 4427102,
"sha256": "53059f8f1cd86099d15735cef5adf30bf51fe09760ea30f4a756f6b1e281f175"
},
{
"path": "conditional25-accounting.json",
"bytes": 4287,
"sha256": "4152970a6c9631feff23736061000f78621539896996eeca9f27e64f6ccd7b33"
},
{
"path": "conditional25-edge-accounting.npz",
"bytes": 367630,
"sha256": "f42f050f0309f9c77aa48493f30243774d3fb03728721dc71f8d9d2d150c4af0"
},
{
"path": "conditional25-replay.npz",
"bytes": 4500,
"sha256": "d411f559f49dd1a7ce3b36b046b639c25693a1a1fa71f2e15e2fbabc3ac0f53a"
},
{
"path": "conditional25-target-accounting.npz",
"bytes": 4457302,
"sha256": "6e99be345d03f2e0deb6524477abcc8373c9269d9b70cfe8c1a1d9975f7a8131"
},
{
"path": "credit.json",
"bytes": 395,
"sha256": "ece9f42f92d2c4a65f5d09fd1c894fe88aac9bbf5ae9e8bef5e01abc96691c4c"
},
{
"path": "credit.npz",
"bytes": 3187,
"sha256": "498e810beca40ac8c26bdad0eafee75931aeb25a9b49948e530dd22dd31bcc8e"
},
{
"path": "sensitivity.json",
"bytes": 595,
"sha256": "f36ffa9f397c79e38fe7df2a3f0708d6ce9b9fa1e643daf18b8b9387f9d34fd1"
},
{
"path": "summary.json",
"bytes": 1688,
"sha256": "d919d3dace7716ad8f38c40b8db9d010b4150a102924a72be3481dffdc0f00bc"
}
]
@@ -0,0 +1,14 @@
{
"event_sequence_changed": true,
"spike_count_L1": 3,
"neurons_with_count_change": 3,
"neurons_with_first_latency_change": 10,
"baseline_spikes": 249,
"depressed_spikes": 246,
"max_abs_V_difference_SI": 0.00783804091691579,
"max_abs_g_difference_SI": 0.15108779908783893,
"final_V_max_abs_difference_SI": 0.0002832159362843034,
"final_g_max_abs_difference_SI": 0.00024390312009721826,
"functional_count_or_first_latency_change": true,
"result_scope": "Conditional clamped-upstream replay only; all target threshold/reset/ref recalculated; not whole-brain or learning"
}
@@ -0,0 +1,49 @@
{
"name": "novel_to_aj-matched_energy-00-s1073741825",
"cohort": "novel_to_aj",
"source_panel_split": "heldout",
"source_panel_row": 6,
"mode": "matched_energy",
"odor_id": "YSNWHRKJEKWJNY-UHFFFAOYSA-N",
"odor_index": 0,
"seed": 1073741825,
"targets": 35,
"requests": 109,
"expected_external_events": 102.2443115234375,
"rates_sum": 1022.443115234375,
"repeat": 1,
"pass_all": true,
"baseline_exact": {
"counts": true,
"v": true,
"g": true,
"ref": true,
"step": true,
"neuron_idx": true
},
"sensitivity": {
"event_sequence_changed": true,
"spike_count_L1": 3,
"neurons_with_count_change": 3,
"neurons_with_first_latency_change": 10,
"baseline_spikes": 249,
"depressed_spikes": 246,
"max_abs_V_difference_SI": 0.00783804091691579,
"max_abs_g_difference_SI": 0.15108779908783893,
"final_V_max_abs_difference_SI": 0.0002832159362843034,
"final_g_max_abs_difference_SI": 0.00024390312009721826,
"functional_count_or_first_latency_change": true,
"result_scope": "Conditional clamped-upstream replay only; all target threshold/reset/ref recalculated; not whole-brain or learning"
},
"credit_gate": "Virtual tick900 post-update; no DAN injection or plastic update",
"biological_duration_ms": 100.0,
"CPU_wall_seconds": 1.0623275079997256,
"baseline_CPU_wall_seconds": 1.031266106001567,
"source_sha256": {
"state.npz": "de63be6895c06e99631076550b984f1bff9a1360caedb6b9661e70bb91f6c0ad",
"summary.json": "cfefc655d613fcfb42d5fc2fc5bf37b4663aaa8db588ba2b46d7e21f0eed5f33"
},
"conditional_weight_copy_only": true,
"training": false,
"candidate_generated": false
}
@@ -0,0 +1,125 @@
{
"complete": true,
"pass_all": true,
"pass_all_scope": "Observer callback coverage and internal count/state-accounting checks only",
"steps": 1000,
"callback_count": 1000,
"targets": 97,
"incoming_edges": 86039,
"group_names": [
"plastic_KC",
"nonplastic_KC",
"DAN",
"MBON",
"APL",
"other"
],
"sign_order": [
"positive",
"negative"
],
"dt_ms": 0.1,
"due_count": 49969,
"accepted_count": 45446,
"rejected_count": 4523,
"groups": {
"plastic_KC": {
"due_count": 425,
"accepted_count": 397,
"rejected_count": 28,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 0.7554250000000001,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.159225,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 2.3704793873339467,
"g_positive_integral_V_ms": 2.3704793873339467,
"g_negative_integral_V_ms": 0.0
},
"nonplastic_KC": {
"due_count": 1416,
"accepted_count": 1250,
"rejected_count": 166,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 2.2657249999999998,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.5489,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 5.97371834689161,
"g_positive_integral_V_ms": 5.97371834689161,
"g_negative_integral_V_ms": 0.0
},
"DAN": {
"due_count": 2981,
"accepted_count": 2706,
"rejected_count": 275,
"accepted_zero_count": 6,
"rejected_zero_count": 0,
"accepted_positive_V": 20.273825000000006,
"accepted_negative_V": 0.0,
"rejected_positive_V": 2.229975,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 63.47009415397872,
"g_positive_integral_V_ms": 63.47009415397872,
"g_negative_integral_V_ms": 0.0
},
"MBON": {
"due_count": 6391,
"accepted_count": 5686,
"rejected_count": 705,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 4.331250000000001,
"accepted_negative_V": -30.543425000000006,
"rejected_positive_V": 0.47464999999999996,
"rejected_negative_V": -4.228400000000001,
"g_integral_V_ms": -118.74733329290638,
"g_positive_integral_V_ms": 16.336249950947032,
"g_negative_integral_V_ms": -135.08358324385338
},
"APL": {
"due_count": 2886,
"accepted_count": 2625,
"rejected_count": 261,
"accepted_zero_count": 2625,
"rejected_zero_count": 261,
"accepted_positive_V": 0.0,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.0,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 0.0,
"g_positive_integral_V_ms": 0.0,
"g_negative_integral_V_ms": 0.0
},
"other": {
"due_count": 35870,
"accepted_count": 32782,
"rejected_count": 3088,
"accepted_zero_count": 2783,
"rejected_zero_count": 286,
"accepted_positive_V": 50.953925000000055,
"accepted_negative_V": -43.36475000000001,
"rejected_positive_V": 6.103075000000001,
"rejected_negative_V": -4.630175000000001,
"g_integral_V_ms": -25.19104315860505,
"g_positive_integral_V_ms": 157.2005677248718,
"g_negative_integral_V_ms": -182.3916108834769
}
},
"max_g_lane_residual_V": 3.3306690738754696e-16,
"max_v_lane_residual_V": 1.1934897514720433e-15,
"residual_policy": "Observed state minus uncorrected float64 lane sum; no fitted tolerance or anatomical reassignment",
"integral_contract": "Sum of end-of-tick source g or v lanes times dt_ms; units V*ms, not conductance or energy",
"increment_contract": "Nominal accepted/rejected signed per-edge increments; negative fields retain negative sign",
"lane_contract": "Observed availability controls decay/integration; observed request/reset clears voltage/source history; fired clears g; canonical accepted adds only",
"pending_coverage_checked_by_observer": false,
"original_events_verified_by_observer": false,
"caller_must_verify_original_events_final_and_queue_coverage": true,
"nonfeedback": true,
"parameter_changes": false,
"learning": false,
"functional_transfer_claim": false,
"whole_brain_intervention_claim": false
}
@@ -0,0 +1,26 @@
{
"name": "novel_to_aj-matched_energy-00-s1073741826",
"cohort": "novel_to_aj",
"source_panel_split": "heldout",
"source_panel_row": 6,
"mode": "matched_energy",
"odor_id": "YSNWHRKJEKWJNY-UHFFFAOYSA-N",
"odor_index": 0,
"seed": 1073741826,
"targets": 35,
"requests": 103,
"expected_external_events": 102.2443115234375,
"rates_sum": 1022.443115234375,
"repeat": 0,
"pass_all": true,
"baseline_exact": {
"counts": true,
"v": true,
"g": true,
"ref": true,
"step": true,
"neuron_idx": true
},
"due_plus_pending_source_events_exact": true,
"CPU_wall_seconds": 1.0332983890002652
}
@@ -0,0 +1,125 @@
{
"complete": true,
"pass_all": true,
"pass_all_scope": "Observer callback coverage and internal count/state-accounting checks only",
"steps": 1000,
"callback_count": 1000,
"targets": 97,
"incoming_edges": 86039,
"group_names": [
"plastic_KC",
"nonplastic_KC",
"DAN",
"MBON",
"APL",
"other"
],
"sign_order": [
"positive",
"negative"
],
"dt_ms": 0.1,
"due_count": 49969,
"accepted_count": 45423,
"rejected_count": 4546,
"groups": {
"plastic_KC": {
"due_count": 425,
"accepted_count": 400,
"rejected_count": 25,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 0.5715187500000001,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.11446875000000001,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 1.883683313162214,
"g_positive_integral_V_ms": 1.883683313162214,
"g_negative_integral_V_ms": 0.0
},
"nonplastic_KC": {
"due_count": 1416,
"accepted_count": 1250,
"rejected_count": 166,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 2.2657249999999998,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.5489,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 5.97371834689161,
"g_positive_integral_V_ms": 5.97371834689161,
"g_negative_integral_V_ms": 0.0
},
"DAN": {
"due_count": 2981,
"accepted_count": 2716,
"rejected_count": 265,
"accepted_zero_count": 6,
"rejected_zero_count": 0,
"accepted_positive_V": 20.419850000000004,
"accepted_negative_V": 0.0,
"rejected_positive_V": 2.0839499999999997,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 63.70245765829618,
"g_positive_integral_V_ms": 63.70245765829619,
"g_negative_integral_V_ms": 0.0
},
"MBON": {
"due_count": 6391,
"accepted_count": 5679,
"rejected_count": 712,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 4.33015,
"accepted_negative_V": -30.527750000000005,
"rejected_positive_V": 0.47574999999999995,
"rejected_negative_V": -4.2440750000000005,
"g_integral_V_ms": -118.68991785258574,
"g_positive_integral_V_ms": 16.29749495395516,
"g_negative_integral_V_ms": -134.9874128065409
},
"APL": {
"due_count": 2886,
"accepted_count": 2619,
"rejected_count": 267,
"accepted_zero_count": 2619,
"rejected_zero_count": 267,
"accepted_positive_V": 0.0,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.0,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 0.0,
"g_positive_integral_V_ms": 0.0,
"g_negative_integral_V_ms": 0.0
},
"other": {
"due_count": 35870,
"accepted_count": 32759,
"rejected_count": 3111,
"accepted_zero_count": 2787,
"rejected_zero_count": 282,
"accepted_positive_V": 50.90827500000005,
"accepted_negative_V": -43.351275000000015,
"rejected_positive_V": 6.1487250000000016,
"rejected_negative_V": -4.643650000000001,
"g_integral_V_ms": -25.092258085617644,
"g_positive_integral_V_ms": 157.11095578307726,
"g_negative_integral_V_ms": -182.20321386869492
}
},
"max_g_lane_residual_V": 3.3306690738754696e-16,
"max_v_lane_residual_V": 1.1934897514720433e-15,
"residual_policy": "Observed state minus uncorrected float64 lane sum; no fitted tolerance or anatomical reassignment",
"integral_contract": "Sum of end-of-tick source g or v lanes times dt_ms; units V*ms, not conductance or energy",
"increment_contract": "Nominal accepted/rejected signed per-edge increments; negative fields retain negative sign",
"lane_contract": "Observed availability controls decay/integration; observed request/reset clears voltage/source history; fired clears g; canonical accepted adds only",
"pending_coverage_checked_by_observer": false,
"original_events_verified_by_observer": false,
"caller_must_verify_original_events_final_and_queue_coverage": true,
"nonfeedback": true,
"parameter_changes": false,
"learning": false,
"functional_transfer_claim": false,
"whole_brain_intervention_claim": false
}
@@ -0,0 +1,16 @@
{
"steps": 1000,
"gate_tick": 900,
"dt_ms": 0.1,
"tau_ms": 100.0,
"cap": 1.0,
"decay_f32_bits": "3f7fbe7f",
"total_input_events": 31389,
"total_KC_events": 129,
"KC_events_through_gate": 128,
"gate_includes_same_tick_spikes": true,
"event_shift_steps": 0,
"gate_is_virtual_readout_not_DAN_activity": true,
"weights_modified": false,
"weight_delta_generated": false
}
@@ -0,0 +1,67 @@
[
{
"path": "baseline-accounting.json",
"bytes": 4302,
"sha256": "915fe51b4dc9641492443cd7b31c4e55f0f8670e0a474ed811553c581ab2065d"
},
{
"path": "baseline-edge-accounting.npz",
"bytes": 362073,
"sha256": "9c3ec15f44626c64f1f5de9d8388e6ea60d3b8074f5df3686adf096f877653cd"
},
{
"path": "baseline-replay.npz",
"bytes": 4537,
"sha256": "076f8e2b274c39babb89aedb591b32e6699420366e539f833d4214d511d174d6"
},
{
"path": "baseline-summary.json",
"bytes": 637,
"sha256": "9f3b386bcde333f8e1b93fda132de2478d44eaf4afa4e5ade2102c4115327fe0"
},
{
"path": "baseline-target-accounting.npz",
"bytes": 4434579,
"sha256": "ffb7e8f3c836e9580bf9b758555956a834f310e9a894828b46f5ae3235e9a121"
},
{
"path": "conditional25-accounting.json",
"bytes": 4314,
"sha256": "50b88bb7c26a19515093d967b86392ce02b11fbbfebf7c48794ec3a83565b5f4"
},
{
"path": "conditional25-edge-accounting.npz",
"bytes": 368639,
"sha256": "946f764b9f3cafc902d68de9c0efdd5dadc3629449fce5ab64c96307694e73f4"
},
{
"path": "conditional25-replay.npz",
"bytes": 4535,
"sha256": "eebb607afef4f6e1fcb230feab09c216d84b39cfa1096e400448500feaac0b23"
},
{
"path": "conditional25-target-accounting.npz",
"bytes": 4412895,
"sha256": "ef5c986a0c606d6edfa9317b6c8bf617f8f06f9d3cb28b9be271fe0dae636f86"
},
{
"path": "credit.json",
"bytes": 395,
"sha256": "0a0c48ccfedf2bcfaefbf5996be289a712936936537bb6cc8174d6e2061c07b8"
},
{
"path": "credit.npz",
"bytes": 2775,
"sha256": "a587ab71ff50a4632cf8cbf1eff4456ca20a65ee6768b9e7b2f668aefdc982f3"
},
{
"path": "sensitivity.json",
"bytes": 594,
"sha256": "7ea1b1e0c1ad5b0368ae4a9af32a70fe1a0758be53dcd5de920224658c40d6d5"
},
{
"path": "summary.json",
"bytes": 1687,
"sha256": "631eff088d43dcce38dd9fc5ab43c05c23fcebc68dbc5ca288a71ba3507fe7b7"
}
]
@@ -0,0 +1,14 @@
{
"event_sequence_changed": true,
"spike_count_L1": 1,
"neurons_with_count_change": 1,
"neurons_with_first_latency_change": 7,
"baseline_spikes": 292,
"depressed_spikes": 293,
"max_abs_V_difference_SI": 0.006997239011444861,
"max_abs_g_difference_SI": 0.1269632946703413,
"final_V_max_abs_difference_SI": 0.00023136102239976197,
"final_g_max_abs_difference_SI": 0.0011888645723688723,
"functional_count_or_first_latency_change": true,
"result_scope": "Conditional clamped-upstream replay only; all target threshold/reset/ref recalculated; not whole-brain or learning"
}
@@ -0,0 +1,49 @@
{
"name": "novel_to_aj-matched_energy-00-s1073741826",
"cohort": "novel_to_aj",
"source_panel_split": "heldout",
"source_panel_row": 6,
"mode": "matched_energy",
"odor_id": "YSNWHRKJEKWJNY-UHFFFAOYSA-N",
"odor_index": 0,
"seed": 1073741826,
"targets": 35,
"requests": 103,
"expected_external_events": 102.2443115234375,
"rates_sum": 1022.443115234375,
"repeat": 0,
"pass_all": true,
"baseline_exact": {
"counts": true,
"v": true,
"g": true,
"ref": true,
"step": true,
"neuron_idx": true
},
"sensitivity": {
"event_sequence_changed": true,
"spike_count_L1": 1,
"neurons_with_count_change": 1,
"neurons_with_first_latency_change": 7,
"baseline_spikes": 292,
"depressed_spikes": 293,
"max_abs_V_difference_SI": 0.006997239011444861,
"max_abs_g_difference_SI": 0.1269632946703413,
"final_V_max_abs_difference_SI": 0.00023136102239976197,
"final_g_max_abs_difference_SI": 0.0011888645723688723,
"functional_count_or_first_latency_change": true,
"result_scope": "Conditional clamped-upstream replay only; all target threshold/reset/ref recalculated; not whole-brain or learning"
},
"credit_gate": "Virtual tick900 post-update; no DAN injection or plastic update",
"biological_duration_ms": 100.0,
"CPU_wall_seconds": 1.064099578998139,
"baseline_CPU_wall_seconds": 1.0332983890002652,
"source_sha256": {
"state.npz": "a2e402d11b1b7f915b3bcabf69d803039bde5c27dfdf237546b1fafab4729cae",
"summary.json": "6b59d14b913ebd41eb698c98709b0c1ec2f90700c435c2c5af6317286db4074c"
},
"conditional_weight_copy_only": true,
"training": false,
"candidate_generated": false
}
@@ -0,0 +1,125 @@
{
"complete": true,
"pass_all": true,
"pass_all_scope": "Observer callback coverage and internal count/state-accounting checks only",
"steps": 1000,
"callback_count": 1000,
"targets": 97,
"incoming_edges": 86039,
"group_names": [
"plastic_KC",
"nonplastic_KC",
"DAN",
"MBON",
"APL",
"other"
],
"sign_order": [
"positive",
"negative"
],
"dt_ms": 0.1,
"due_count": 47564,
"accepted_count": 43339,
"rejected_count": 4225,
"groups": {
"plastic_KC": {
"due_count": 420,
"accepted_count": 381,
"rejected_count": 39,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 0.772475,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.11330000000000001,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 2.1906621890738833,
"g_positive_integral_V_ms": 2.1906621890738833,
"g_negative_integral_V_ms": 0.0
},
"nonplastic_KC": {
"due_count": 1369,
"accepted_count": 1229,
"rejected_count": 140,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 2.3234749999999997,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.43615,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 6.974353878917571,
"g_positive_integral_V_ms": 6.974353878917572,
"g_negative_integral_V_ms": 0.0
},
"DAN": {
"due_count": 2686,
"accepted_count": 2444,
"rejected_count": 242,
"accepted_zero_count": 5,
"rejected_zero_count": 0,
"accepted_positive_V": 18.968125,
"accepted_negative_V": 0.0,
"rejected_positive_V": 2.0050250000000003,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 62.7314462821042,
"g_positive_integral_V_ms": 62.7314462821042,
"g_negative_integral_V_ms": 0.0
},
"MBON": {
"due_count": 5986,
"accepted_count": 5334,
"rejected_count": 652,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 4.0436000000000005,
"accepted_negative_V": -28.425375000000006,
"rejected_positive_V": 0.40672499999999995,
"rejected_negative_V": -3.65255,
"g_integral_V_ms": -112.44124770356481,
"g_positive_integral_V_ms": 15.385231813524337,
"g_negative_integral_V_ms": -127.82647951708913
},
"APL": {
"due_count": 2709,
"accepted_count": 2494,
"rejected_count": 215,
"accepted_zero_count": 2494,
"rejected_zero_count": 215,
"accepted_positive_V": 0.0,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.0,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 0.0,
"g_positive_integral_V_ms": 0.0,
"g_negative_integral_V_ms": 0.0
},
"other": {
"due_count": 34394,
"accepted_count": 31457,
"rejected_count": 2937,
"accepted_zero_count": 2563,
"rejected_zero_count": 220,
"accepted_positive_V": 48.29825000000005,
"accepted_negative_V": -42.29802500000001,
"rejected_positive_V": 5.0778750000000015,
"rejected_negative_V": -4.145075000000001,
"g_integral_V_ms": -30.144814662728436,
"g_positive_integral_V_ms": 151.01533748764857,
"g_negative_integral_V_ms": -181.160152150377
}
},
"max_g_lane_residual_V": 4.440892098500626e-16,
"max_v_lane_residual_V": 1.2490009027033011e-15,
"residual_policy": "Observed state minus uncorrected float64 lane sum; no fitted tolerance or anatomical reassignment",
"integral_contract": "Sum of end-of-tick source g or v lanes times dt_ms; units V*ms, not conductance or energy",
"increment_contract": "Nominal accepted/rejected signed per-edge increments; negative fields retain negative sign",
"lane_contract": "Observed availability controls decay/integration; observed request/reset clears voltage/source history; fired clears g; canonical accepted adds only",
"pending_coverage_checked_by_observer": false,
"original_events_verified_by_observer": false,
"caller_must_verify_original_events_final_and_queue_coverage": true,
"nonfeedback": true,
"parameter_changes": false,
"learning": false,
"functional_transfer_claim": false,
"whole_brain_intervention_claim": false
}
@@ -0,0 +1,26 @@
{
"name": "novel_to_aj-matched_energy-00-s1073741827",
"cohort": "novel_to_aj",
"source_panel_split": "heldout",
"source_panel_row": 6,
"mode": "matched_energy",
"odor_id": "YSNWHRKJEKWJNY-UHFFFAOYSA-N",
"odor_index": 0,
"seed": 1073741827,
"targets": 35,
"requests": 121,
"expected_external_events": 102.2443115234375,
"rates_sum": 1022.443115234375,
"repeat": 0,
"pass_all": true,
"baseline_exact": {
"counts": true,
"v": true,
"g": true,
"ref": true,
"step": true,
"neuron_idx": true
},
"due_plus_pending_source_events_exact": true,
"CPU_wall_seconds": 1.0492556520002836
}
@@ -0,0 +1,125 @@
{
"complete": true,
"pass_all": true,
"pass_all_scope": "Observer callback coverage and internal count/state-accounting checks only",
"steps": 1000,
"callback_count": 1000,
"targets": 97,
"incoming_edges": 86039,
"group_names": [
"plastic_KC",
"nonplastic_KC",
"DAN",
"MBON",
"APL",
"other"
],
"sign_order": [
"positive",
"negative"
],
"dt_ms": 0.1,
"due_count": 47564,
"accepted_count": 43375,
"rejected_count": 4189,
"groups": {
"plastic_KC": {
"due_count": 420,
"accepted_count": 389,
"rejected_count": 31,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 0.5863687500000001,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.0779625,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 2.024270904086128,
"g_positive_integral_V_ms": 2.024270904086128,
"g_negative_integral_V_ms": 0.0
},
"nonplastic_KC": {
"due_count": 1369,
"accepted_count": 1229,
"rejected_count": 140,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 2.3234749999999997,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.43615,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 6.974353878917571,
"g_positive_integral_V_ms": 6.974353878917572,
"g_negative_integral_V_ms": 0.0
},
"DAN": {
"due_count": 2686,
"accepted_count": 2444,
"rejected_count": 242,
"accepted_zero_count": 5,
"rejected_zero_count": 0,
"accepted_positive_V": 18.968125,
"accepted_negative_V": 0.0,
"rejected_positive_V": 2.0050250000000003,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 62.78944244203943,
"g_positive_integral_V_ms": 62.78944244203943,
"g_negative_integral_V_ms": 0.0
},
"MBON": {
"due_count": 5986,
"accepted_count": 5339,
"rejected_count": 647,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 4.04415,
"accepted_negative_V": -28.538950000000007,
"rejected_positive_V": 0.406175,
"rejected_negative_V": -3.5389750000000006,
"g_integral_V_ms": -113.2509080196007,
"g_positive_integral_V_ms": 15.403210796968922,
"g_negative_integral_V_ms": -128.65411881656962
},
"APL": {
"due_count": 2709,
"accepted_count": 2500,
"rejected_count": 209,
"accepted_zero_count": 2500,
"rejected_zero_count": 209,
"accepted_positive_V": 0.0,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.0,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 0.0,
"g_positive_integral_V_ms": 0.0,
"g_negative_integral_V_ms": 0.0
},
"other": {
"due_count": 34394,
"accepted_count": 31474,
"rejected_count": 2920,
"accepted_zero_count": 2563,
"rejected_zero_count": 220,
"accepted_positive_V": 48.336200000000055,
"accepted_negative_V": -42.30352500000001,
"rejected_positive_V": 5.039925000000001,
"rejected_negative_V": -4.139575000000001,
"g_integral_V_ms": -29.649020999151766,
"g_positive_integral_V_ms": 151.5582999949224,
"g_negative_integral_V_ms": -181.20732099407414
}
},
"max_g_lane_residual_V": 4.440892098500626e-16,
"max_v_lane_residual_V": 1.2490009027033011e-15,
"residual_policy": "Observed state minus uncorrected float64 lane sum; no fitted tolerance or anatomical reassignment",
"integral_contract": "Sum of end-of-tick source g or v lanes times dt_ms; units V*ms, not conductance or energy",
"increment_contract": "Nominal accepted/rejected signed per-edge increments; negative fields retain negative sign",
"lane_contract": "Observed availability controls decay/integration; observed request/reset clears voltage/source history; fired clears g; canonical accepted adds only",
"pending_coverage_checked_by_observer": false,
"original_events_verified_by_observer": false,
"caller_must_verify_original_events_final_and_queue_coverage": true,
"nonfeedback": true,
"parameter_changes": false,
"learning": false,
"functional_transfer_claim": false,
"whole_brain_intervention_claim": false
}
@@ -0,0 +1,16 @@
{
"steps": 1000,
"gate_tick": 900,
"dt_ms": 0.1,
"tau_ms": 100.0,
"cap": 1.0,
"decay_f32_bits": "3f7fbe7f",
"total_input_events": 29975,
"total_KC_events": 127,
"KC_events_through_gate": 126,
"gate_includes_same_tick_spikes": true,
"event_shift_steps": 0,
"gate_is_virtual_readout_not_DAN_activity": true,
"weights_modified": false,
"weight_delta_generated": false
}
@@ -0,0 +1,67 @@
[
{
"path": "baseline-accounting.json",
"bytes": 4296,
"sha256": "a5a21b743296e7f7399bb8cbe3d5d7becabe2b8b28918e8b353ed7f8dd9e656c"
},
{
"path": "baseline-edge-accounting.npz",
"bytes": 361699,
"sha256": "b74a798bef14e199d92f895e0ac7f9421e9c855a330157564f80de038567dbc2"
},
{
"path": "baseline-replay.npz",
"bytes": 4533,
"sha256": "dae41996946e4570cf06edc2dd30973e2277999009966e1bf0e5dd2d06aac8e7"
},
{
"path": "baseline-summary.json",
"bytes": 637,
"sha256": "fed7cf5833f0c3e7c3acd51c3fc1ed3b6d746eae3f11146c09114951d80d27f0"
},
{
"path": "baseline-target-accounting.npz",
"bytes": 4255233,
"sha256": "5485dbeb3ec4c9da75b8486fad7e38e3499f088db52fcddbc1a032a6b44da4db"
},
{
"path": "conditional25-accounting.json",
"bytes": 4285,
"sha256": "95c3505e2a8e06376b298375d647bf82ab7262d53a434cad040cbca53161b58c"
},
{
"path": "conditional25-edge-accounting.npz",
"bytes": 368137,
"sha256": "23d610557f73d5d70423b522e07afb1fd11006227307414531e9ce49f371355a"
},
{
"path": "conditional25-replay.npz",
"bytes": 4501,
"sha256": "c71126bb34096501a9875e664099821d01ef8e3d828f6e592117bd32ea3f1a05"
},
{
"path": "conditional25-target-accounting.npz",
"bytes": 4278333,
"sha256": "fe5fd3006d05f126f83ebf245f38b6143fe5eb479bffdd56d459bea4b543370d"
},
{
"path": "credit.json",
"bytes": 395,
"sha256": "3517362ca18f94fc95b0297e5e4f8d1ad304df4852458110857d1ce3a3265c22"
},
{
"path": "credit.npz",
"bytes": 2789,
"sha256": "e25a9759756dbd19e72473974e6400ea10c0d912bebf735c34395b3e734e1de1"
},
{
"path": "sensitivity.json",
"bytes": 597,
"sha256": "88e84261d12c048fe5c9644b99335259c4d39136a7631d2943c7a55601d0e2ab"
},
{
"path": "summary.json",
"bytes": 1691,
"sha256": "1f2923050a40b1152b6f9262dfbbf0dde5d8ee6e8dc476dcf1b69181e211f485"
}
]
@@ -0,0 +1,14 @@
{
"event_sequence_changed": true,
"spike_count_L1": 4,
"neurons_with_count_change": 4,
"neurons_with_first_latency_change": 9,
"baseline_spikes": 280,
"depressed_spikes": 276,
"max_abs_V_difference_SI": 0.0069898663615041365,
"max_abs_g_difference_SI": 0.08936113286771784,
"final_V_max_abs_difference_SI": 0.00032956844537594676,
"final_g_max_abs_difference_SI": 2.9161736221985923e-08,
"functional_count_or_first_latency_change": true,
"result_scope": "Conditional clamped-upstream replay only; all target threshold/reset/ref recalculated; not whole-brain or learning"
}
@@ -0,0 +1,49 @@
{
"name": "novel_to_aj-matched_energy-00-s1073741827",
"cohort": "novel_to_aj",
"source_panel_split": "heldout",
"source_panel_row": 6,
"mode": "matched_energy",
"odor_id": "YSNWHRKJEKWJNY-UHFFFAOYSA-N",
"odor_index": 0,
"seed": 1073741827,
"targets": 35,
"requests": 121,
"expected_external_events": 102.2443115234375,
"rates_sum": 1022.443115234375,
"repeat": 0,
"pass_all": true,
"baseline_exact": {
"counts": true,
"v": true,
"g": true,
"ref": true,
"step": true,
"neuron_idx": true
},
"sensitivity": {
"event_sequence_changed": true,
"spike_count_L1": 4,
"neurons_with_count_change": 4,
"neurons_with_first_latency_change": 9,
"baseline_spikes": 280,
"depressed_spikes": 276,
"max_abs_V_difference_SI": 0.0069898663615041365,
"max_abs_g_difference_SI": 0.08936113286771784,
"final_V_max_abs_difference_SI": 0.00032956844537594676,
"final_g_max_abs_difference_SI": 2.9161736221985923e-08,
"functional_count_or_first_latency_change": true,
"result_scope": "Conditional clamped-upstream replay only; all target threshold/reset/ref recalculated; not whole-brain or learning"
},
"credit_gate": "Virtual tick900 post-update; no DAN injection or plastic update",
"biological_duration_ms": 100.0,
"CPU_wall_seconds": 1.0576903139990463,
"baseline_CPU_wall_seconds": 1.0492556520002836,
"source_sha256": {
"state.npz": "f6a2f4b04875a66d9df21063114dea8980230916291533f70b0d73901618f6c4",
"summary.json": "ae4827876eadeafa369e64e54e4a34affbc6849092c82ee326eabb6433100b16"
},
"conditional_weight_copy_only": true,
"training": false,
"candidate_generated": false
}
@@ -0,0 +1,125 @@
{
"complete": true,
"pass_all": true,
"pass_all_scope": "Observer callback coverage and internal count/state-accounting checks only",
"steps": 1000,
"callback_count": 1000,
"targets": 97,
"incoming_edges": 86039,
"group_names": [
"plastic_KC",
"nonplastic_KC",
"DAN",
"MBON",
"APL",
"other"
],
"sign_order": [
"positive",
"negative"
],
"dt_ms": 0.1,
"due_count": 48678,
"accepted_count": 44440,
"rejected_count": 4238,
"groups": {
"plastic_KC": {
"due_count": 418,
"accepted_count": 370,
"rejected_count": 48,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 0.7094999999999999,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.27609999999999996,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 2.045765296199579,
"g_positive_integral_V_ms": 2.045765296199579,
"g_negative_integral_V_ms": 0.0
},
"nonplastic_KC": {
"due_count": 1580,
"accepted_count": 1357,
"rejected_count": 223,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 2.3820499999999996,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.8120750000000001,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 6.237160323303529,
"g_positive_integral_V_ms": 6.237160323303529,
"g_negative_integral_V_ms": 0.0
},
"DAN": {
"due_count": 2797,
"accepted_count": 2559,
"rejected_count": 238,
"accepted_zero_count": 6,
"rejected_zero_count": 0,
"accepted_positive_V": 17.6022,
"accepted_negative_V": 0.0,
"rejected_positive_V": 1.859,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 57.42872424568661,
"g_positive_integral_V_ms": 57.42872424568661,
"g_negative_integral_V_ms": 0.0
},
"MBON": {
"due_count": 5523,
"accepted_count": 4927,
"rejected_count": 596,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 3.798025,
"accepted_negative_V": -26.19375000000001,
"rejected_positive_V": 0.444125,
"rejected_negative_V": -3.7510000000000003,
"g_integral_V_ms": -100.98323166584026,
"g_positive_integral_V_ms": 13.898283151878635,
"g_negative_integral_V_ms": -114.88151481771894
},
"APL": {
"due_count": 2943,
"accepted_count": 2725,
"rejected_count": 218,
"accepted_zero_count": 2725,
"rejected_zero_count": 218,
"accepted_positive_V": 0.0,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.0,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 0.0,
"g_positive_integral_V_ms": 0.0,
"g_negative_integral_V_ms": 0.0
},
"other": {
"due_count": 35417,
"accepted_count": 32502,
"rejected_count": 2915,
"accepted_zero_count": 2617,
"rejected_zero_count": 257,
"accepted_positive_V": 49.36085000000004,
"accepted_negative_V": -44.37262500000001,
"rejected_positive_V": 5.930925000000001,
"rejected_negative_V": -3.6124,
"g_integral_V_ms": -34.416227969482286,
"g_positive_integral_V_ms": 154.84133355872055,
"g_negative_integral_V_ms": -189.2575615282028
}
},
"max_g_lane_residual_V": 4.198030811863873e-16,
"max_v_lane_residual_V": 1.2212453270876722e-15,
"residual_policy": "Observed state minus uncorrected float64 lane sum; no fitted tolerance or anatomical reassignment",
"integral_contract": "Sum of end-of-tick source g or v lanes times dt_ms; units V*ms, not conductance or energy",
"increment_contract": "Nominal accepted/rejected signed per-edge increments; negative fields retain negative sign",
"lane_contract": "Observed availability controls decay/integration; observed request/reset clears voltage/source history; fired clears g; canonical accepted adds only",
"pending_coverage_checked_by_observer": false,
"original_events_verified_by_observer": false,
"caller_must_verify_original_events_final_and_queue_coverage": true,
"nonfeedback": true,
"parameter_changes": false,
"learning": false,
"functional_transfer_claim": false,
"whole_brain_intervention_claim": false
}
@@ -0,0 +1,26 @@
{
"name": "novel_to_aj-matched_energy-00-s1073741828",
"cohort": "novel_to_aj",
"source_panel_split": "heldout",
"source_panel_row": 6,
"mode": "matched_energy",
"odor_id": "YSNWHRKJEKWJNY-UHFFFAOYSA-N",
"odor_index": 0,
"seed": 1073741828,
"targets": 35,
"requests": 129,
"expected_external_events": 102.2443115234375,
"rates_sum": 1022.443115234375,
"repeat": 0,
"pass_all": true,
"baseline_exact": {
"counts": true,
"v": true,
"g": true,
"ref": true,
"step": true,
"neuron_idx": true
},
"due_plus_pending_source_events_exact": true,
"CPU_wall_seconds": 1.030055634000746
}
@@ -0,0 +1,125 @@
{
"complete": true,
"pass_all": true,
"pass_all_scope": "Observer callback coverage and internal count/state-accounting checks only",
"steps": 1000,
"callback_count": 1000,
"targets": 97,
"incoming_edges": 86039,
"group_names": [
"plastic_KC",
"nonplastic_KC",
"DAN",
"MBON",
"APL",
"other"
],
"sign_order": [
"positive",
"negative"
],
"dt_ms": 0.1,
"due_count": 48678,
"accepted_count": 44445,
"rejected_count": 4233,
"groups": {
"plastic_KC": {
"due_count": 418,
"accepted_count": 373,
"rejected_count": 45,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 0.5385187499999999,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.20068125000000006,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 1.5580054839849038,
"g_positive_integral_V_ms": 1.5580054839849038,
"g_negative_integral_V_ms": 0.0
},
"nonplastic_KC": {
"due_count": 1580,
"accepted_count": 1357,
"rejected_count": 223,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 2.3820499999999996,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.8120750000000001,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 6.237160323303529,
"g_positive_integral_V_ms": 6.237160323303529,
"g_negative_integral_V_ms": 0.0
},
"DAN": {
"due_count": 2797,
"accepted_count": 2558,
"rejected_count": 239,
"accepted_zero_count": 6,
"rejected_zero_count": 0,
"accepted_positive_V": 17.601924999999998,
"accepted_negative_V": 0.0,
"rejected_positive_V": 1.8592750000000002,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 57.457992724158046,
"g_positive_integral_V_ms": 57.457992724158046,
"g_negative_integral_V_ms": 0.0
},
"MBON": {
"due_count": 5523,
"accepted_count": 4926,
"rejected_count": 597,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 3.798025,
"accepted_negative_V": -26.17010000000001,
"rejected_positive_V": 0.444125,
"rejected_negative_V": -3.7746499999999994,
"g_integral_V_ms": -100.86966934465562,
"g_positive_integral_V_ms": 13.898283151878635,
"g_negative_integral_V_ms": -114.76795249653426
},
"APL": {
"due_count": 2943,
"accepted_count": 2726,
"rejected_count": 217,
"accepted_zero_count": 2726,
"rejected_zero_count": 217,
"accepted_positive_V": 0.0,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.0,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 0.0,
"g_positive_integral_V_ms": 0.0,
"g_negative_integral_V_ms": 0.0
},
"other": {
"due_count": 35417,
"accepted_count": 32505,
"rejected_count": 2912,
"accepted_zero_count": 2618,
"rejected_zero_count": 256,
"accepted_positive_V": 49.361125000000044,
"accepted_negative_V": -44.37290000000001,
"rejected_positive_V": 5.930650000000003,
"rejected_negative_V": -3.6121250000000003,
"g_integral_V_ms": -34.379388182171716,
"g_positive_integral_V_ms": 154.88209065575742,
"g_negative_integral_V_ms": -189.26147883792913
}
},
"max_g_lane_residual_V": 4.198030811863873e-16,
"max_v_lane_residual_V": 1.2212453270876722e-15,
"residual_policy": "Observed state minus uncorrected float64 lane sum; no fitted tolerance or anatomical reassignment",
"integral_contract": "Sum of end-of-tick source g or v lanes times dt_ms; units V*ms, not conductance or energy",
"increment_contract": "Nominal accepted/rejected signed per-edge increments; negative fields retain negative sign",
"lane_contract": "Observed availability controls decay/integration; observed request/reset clears voltage/source history; fired clears g; canonical accepted adds only",
"pending_coverage_checked_by_observer": false,
"original_events_verified_by_observer": false,
"caller_must_verify_original_events_final_and_queue_coverage": true,
"nonfeedback": true,
"parameter_changes": false,
"learning": false,
"functional_transfer_claim": false,
"whole_brain_intervention_claim": false
}
@@ -0,0 +1,16 @@
{
"steps": 1000,
"gate_tick": 900,
"dt_ms": 0.1,
"tau_ms": 100.0,
"cap": 1.0,
"decay_f32_bits": "3f7fbe7f",
"total_input_events": 30725,
"total_KC_events": 132,
"KC_events_through_gate": 131,
"gate_includes_same_tick_spikes": true,
"event_shift_steps": 0,
"gate_is_virtual_readout_not_DAN_activity": true,
"weights_modified": false,
"weight_delta_generated": false
}
@@ -0,0 +1,67 @@
[
{
"path": "baseline-accounting.json",
"bytes": 4280,
"sha256": "34f50ae06c47d3bae66069a0117a2da1493791f6c748510da9397a418b56c38c"
},
{
"path": "baseline-edge-accounting.npz",
"bytes": 362314,
"sha256": "1cfa308636cd45f2e6564c38acc3a49d99f14116fdfe7253f6eac494e4b62e50"
},
{
"path": "baseline-replay.npz",
"bytes": 4396,
"sha256": "ca1c92a059b78903b1a68c305018104e046421d546ee409cf908c58512cb9cb3"
},
{
"path": "baseline-summary.json",
"bytes": 636,
"sha256": "06bbe82929488aa0ca15cef3a5e821b21fadbed44244b2ef1b10d061768145fa"
},
{
"path": "baseline-target-accounting.npz",
"bytes": 4390501,
"sha256": "79dbca99f3e63186f5c790d69141747957c35d8a492e133dc79aed59c73eb7ad"
},
{
"path": "conditional25-accounting.json",
"bytes": 4322,
"sha256": "b8248d3165f956e10f2cb7e9ac575ea8611dfad691bb43d58ad7cf431d760a0a"
},
{
"path": "conditional25-edge-accounting.npz",
"bytes": 368680,
"sha256": "4555318b4ab0ced351edc4ce6ce834ce7be6673b8f6644cf528fe903ace95d02"
},
{
"path": "conditional25-replay.npz",
"bytes": 4395,
"sha256": "97f0911c57f231e11635ab88eecc118d77f126ddf682c2acf47997adae805d56"
},
{
"path": "conditional25-target-accounting.npz",
"bytes": 4390968,
"sha256": "15d3212107edbb82d1405048a1819c06bbb4b701dc7d616d1d81f3d48040111d"
},
{
"path": "credit.json",
"bytes": 395,
"sha256": "68cccf520740e39a3f445f37a40c3f4679fd6119811a74cf9951b5e6f41b483d"
},
{
"path": "credit.npz",
"bytes": 2721,
"sha256": "fa761b7345d703a20f80a92a18396b0966201380766e71989682784a2217427a"
},
{
"path": "sensitivity.json",
"bytes": 595,
"sha256": "5b2e398f9d5919ec6cb7020fe81112ff66689fd8f7a0193a0001a96c9f0db593"
},
{
"path": "summary.json",
"bytes": 1688,
"sha256": "ceb0c43d678508aad8ac36398ac8101f08f98ad7891944659b2887f66d5cad48"
}
]
@@ -0,0 +1,14 @@
{
"event_sequence_changed": true,
"spike_count_L1": 0,
"neurons_with_count_change": 0,
"neurons_with_first_latency_change": 6,
"baseline_spikes": 268,
"depressed_spikes": 268,
"max_abs_V_difference_SI": 0.006995830182944099,
"max_abs_g_difference_SI": 0.09632862199611668,
"final_V_max_abs_difference_SI": 8.182446131410614e-05,
"final_g_max_abs_difference_SI": 2.0289447726085097e-09,
"functional_count_or_first_latency_change": true,
"result_scope": "Conditional clamped-upstream replay only; all target threshold/reset/ref recalculated; not whole-brain or learning"
}
@@ -0,0 +1,49 @@
{
"name": "novel_to_aj-matched_energy-00-s1073741828",
"cohort": "novel_to_aj",
"source_panel_split": "heldout",
"source_panel_row": 6,
"mode": "matched_energy",
"odor_id": "YSNWHRKJEKWJNY-UHFFFAOYSA-N",
"odor_index": 0,
"seed": 1073741828,
"targets": 35,
"requests": 129,
"expected_external_events": 102.2443115234375,
"rates_sum": 1022.443115234375,
"repeat": 0,
"pass_all": true,
"baseline_exact": {
"counts": true,
"v": true,
"g": true,
"ref": true,
"step": true,
"neuron_idx": true
},
"sensitivity": {
"event_sequence_changed": true,
"spike_count_L1": 0,
"neurons_with_count_change": 0,
"neurons_with_first_latency_change": 6,
"baseline_spikes": 268,
"depressed_spikes": 268,
"max_abs_V_difference_SI": 0.006995830182944099,
"max_abs_g_difference_SI": 0.09632862199611668,
"final_V_max_abs_difference_SI": 8.182446131410614e-05,
"final_g_max_abs_difference_SI": 2.0289447726085097e-09,
"functional_count_or_first_latency_change": true,
"result_scope": "Conditional clamped-upstream replay only; all target threshold/reset/ref recalculated; not whole-brain or learning"
},
"credit_gate": "Virtual tick900 post-update; no DAN injection or plastic update",
"biological_duration_ms": 100.0,
"CPU_wall_seconds": 1.0609847300002002,
"baseline_CPU_wall_seconds": 1.030055634000746,
"source_sha256": {
"state.npz": "7683dd404a575bef06ee3eb8b6ccb4bea4ce97e044a6c3abcf963ee414f43dce",
"summary.json": "d6d678ba0966e62f87ada1076097fe3b65668f6adedde1ae145268d20581aec0"
},
"conditional_weight_copy_only": true,
"training": false,
"candidate_generated": false
}
@@ -0,0 +1,125 @@
{
"complete": true,
"pass_all": true,
"pass_all_scope": "Observer callback coverage and internal count/state-accounting checks only",
"steps": 1000,
"callback_count": 1000,
"targets": 97,
"incoming_edges": 86039,
"group_names": [
"plastic_KC",
"nonplastic_KC",
"DAN",
"MBON",
"APL",
"other"
],
"sign_order": [
"positive",
"negative"
],
"dt_ms": 0.1,
"due_count": 48983,
"accepted_count": 44761,
"rejected_count": 4222,
"groups": {
"plastic_KC": {
"due_count": 453,
"accepted_count": 422,
"rejected_count": 31,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 0.8150999999999999,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.16912500000000003,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 2.356862886976749,
"g_positive_integral_V_ms": 2.3568628869767485,
"g_negative_integral_V_ms": 0.0
},
"nonplastic_KC": {
"due_count": 1521,
"accepted_count": 1355,
"rejected_count": 166,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 2.547325,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.5128750000000001,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 6.575595147897036,
"g_positive_integral_V_ms": 6.575595147897036,
"g_negative_integral_V_ms": 0.0
},
"DAN": {
"due_count": 3024,
"accepted_count": 2747,
"rejected_count": 277,
"accepted_zero_count": 6,
"rejected_zero_count": 0,
"accepted_positive_V": 20.427275,
"accepted_negative_V": 0.0,
"rejected_positive_V": 2.4216500000000005,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 66.64023731827047,
"g_positive_integral_V_ms": 66.64023731827044,
"g_negative_integral_V_ms": 0.0
},
"MBON": {
"due_count": 6413,
"accepted_count": 5704,
"rejected_count": 709,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 4.3389500000000005,
"accepted_negative_V": -30.769200000000005,
"rejected_positive_V": 0.41772499999999996,
"rejected_negative_V": -4.022150000000001,
"g_integral_V_ms": -124.2756036922398,
"g_positive_integral_V_ms": 16.818625247293124,
"g_negative_integral_V_ms": -141.0942289395329
},
"APL": {
"due_count": 2823,
"accepted_count": 2570,
"rejected_count": 253,
"accepted_zero_count": 2570,
"rejected_zero_count": 253,
"accepted_positive_V": 0.0,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.0,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 0.0,
"g_positive_integral_V_ms": 0.0,
"g_negative_integral_V_ms": 0.0
},
"other": {
"due_count": 34749,
"accepted_count": 31963,
"rejected_count": 2786,
"accepted_zero_count": 2538,
"rejected_zero_count": 245,
"accepted_positive_V": 49.36030000000006,
"accepted_negative_V": -42.76827500000002,
"rejected_positive_V": 4.8938999999999995,
"rejected_negative_V": -4.274050000000001,
"g_integral_V_ms": -29.15521675065824,
"g_positive_integral_V_ms": 152.54692917107855,
"g_negative_integral_V_ms": -181.7021459217368
}
},
"max_g_lane_residual_V": 2.7755575615628914e-16,
"max_v_lane_residual_V": 1.1102230246251565e-15,
"residual_policy": "Observed state minus uncorrected float64 lane sum; no fitted tolerance or anatomical reassignment",
"integral_contract": "Sum of end-of-tick source g or v lanes times dt_ms; units V*ms, not conductance or energy",
"increment_contract": "Nominal accepted/rejected signed per-edge increments; negative fields retain negative sign",
"lane_contract": "Observed availability controls decay/integration; observed request/reset clears voltage/source history; fired clears g; canonical accepted adds only",
"pending_coverage_checked_by_observer": false,
"original_events_verified_by_observer": false,
"caller_must_verify_original_events_final_and_queue_coverage": true,
"nonfeedback": true,
"parameter_changes": false,
"learning": false,
"functional_transfer_claim": false,
"whole_brain_intervention_claim": false
}
@@ -0,0 +1,26 @@
{
"name": "novel_to_aj-matched_energy-00-s1073741829",
"cohort": "novel_to_aj",
"source_panel_split": "heldout",
"source_panel_row": 6,
"mode": "matched_energy",
"odor_id": "YSNWHRKJEKWJNY-UHFFFAOYSA-N",
"odor_index": 0,
"seed": 1073741829,
"targets": 35,
"requests": 101,
"expected_external_events": 102.2443115234375,
"rates_sum": 1022.443115234375,
"repeat": 0,
"pass_all": true,
"baseline_exact": {
"counts": true,
"v": true,
"g": true,
"ref": true,
"step": true,
"neuron_idx": true
},
"due_plus_pending_source_events_exact": true,
"CPU_wall_seconds": 1.033520774999488
}
@@ -0,0 +1,125 @@
{
"complete": true,
"pass_all": true,
"pass_all_scope": "Observer callback coverage and internal count/state-accounting checks only",
"steps": 1000,
"callback_count": 1000,
"targets": 97,
"incoming_edges": 86039,
"group_names": [
"plastic_KC",
"nonplastic_KC",
"DAN",
"MBON",
"APL",
"other"
],
"sign_order": [
"positive",
"negative"
],
"dt_ms": 0.1,
"due_count": 48983,
"accepted_count": 44758,
"rejected_count": 4225,
"groups": {
"plastic_KC": {
"due_count": 453,
"accepted_count": 429,
"rejected_count": 24,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 0.6338062500000001,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.1043625,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 2.0046335981854506,
"g_positive_integral_V_ms": 2.0046335981854506,
"g_negative_integral_V_ms": 0.0
},
"nonplastic_KC": {
"due_count": 1521,
"accepted_count": 1355,
"rejected_count": 166,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 2.547325,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.5128750000000001,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 6.575595147897036,
"g_positive_integral_V_ms": 6.575595147897036,
"g_negative_integral_V_ms": 0.0
},
"DAN": {
"due_count": 3024,
"accepted_count": 2755,
"rejected_count": 269,
"accepted_zero_count": 6,
"rejected_zero_count": 0,
"accepted_positive_V": 20.481725,
"accepted_negative_V": 0.0,
"rejected_positive_V": 2.3672000000000004,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 66.82835755160616,
"g_positive_integral_V_ms": 66.82835755160616,
"g_negative_integral_V_ms": 0.0
},
"MBON": {
"due_count": 6413,
"accepted_count": 5699,
"rejected_count": 714,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 4.326575,
"accepted_negative_V": -30.850325,
"rejected_positive_V": 0.4300999999999999,
"rejected_negative_V": -3.9410250000000002,
"g_integral_V_ms": -124.76586233251506,
"g_positive_integral_V_ms": 16.808639129581778,
"g_negative_integral_V_ms": -141.57450146209683
},
"APL": {
"due_count": 2823,
"accepted_count": 2570,
"rejected_count": 253,
"accepted_zero_count": 2570,
"rejected_zero_count": 253,
"accepted_positive_V": 0.0,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.0,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 0.0,
"g_positive_integral_V_ms": 0.0,
"g_negative_integral_V_ms": 0.0
},
"other": {
"due_count": 34749,
"accepted_count": 31950,
"rejected_count": 2799,
"accepted_zero_count": 2537,
"rejected_zero_count": 246,
"accepted_positive_V": 49.36965000000006,
"accepted_negative_V": -42.75370000000001,
"rejected_positive_V": 4.88455,
"rejected_negative_V": -4.288625000000001,
"g_integral_V_ms": -28.992718227620543,
"g_positive_integral_V_ms": 152.61263498638027,
"g_negative_integral_V_ms": -181.60535321400081
}
},
"max_g_lane_residual_V": 2.7755575615628914e-16,
"max_v_lane_residual_V": 1.1102230246251565e-15,
"residual_policy": "Observed state minus uncorrected float64 lane sum; no fitted tolerance or anatomical reassignment",
"integral_contract": "Sum of end-of-tick source g or v lanes times dt_ms; units V*ms, not conductance or energy",
"increment_contract": "Nominal accepted/rejected signed per-edge increments; negative fields retain negative sign",
"lane_contract": "Observed availability controls decay/integration; observed request/reset clears voltage/source history; fired clears g; canonical accepted adds only",
"pending_coverage_checked_by_observer": false,
"original_events_verified_by_observer": false,
"caller_must_verify_original_events_final_and_queue_coverage": true,
"nonfeedback": true,
"parameter_changes": false,
"learning": false,
"functional_transfer_claim": false,
"whole_brain_intervention_claim": false
}
@@ -0,0 +1,16 @@
{
"steps": 1000,
"gate_tick": 900,
"dt_ms": 0.1,
"tau_ms": 100.0,
"cap": 1.0,
"decay_f32_bits": "3f7fbe7f",
"total_input_events": 30776,
"total_KC_events": 138,
"KC_events_through_gate": 138,
"gate_includes_same_tick_spikes": true,
"event_shift_steps": 0,
"gate_is_virtual_readout_not_DAN_activity": true,
"weights_modified": false,
"weight_delta_generated": false
}
@@ -0,0 +1,67 @@
[
{
"path": "baseline-accounting.json",
"bytes": 4317,
"sha256": "d5f5857aa247668052b0222d3ea6e91c4c0d0198b5aeabfe5e9df4651bc5519e"
},
{
"path": "baseline-edge-accounting.npz",
"bytes": 361900,
"sha256": "4264bfab1e890058a765208e38a8c25d74eb7b35a788a7876dadd56f9ff936a7"
},
{
"path": "baseline-replay.npz",
"bytes": 4618,
"sha256": "091168c34d5fdf3dd431f974bb99047f1b11b22a35f25d6bc51ebe1d29ef298e"
},
{
"path": "baseline-summary.json",
"bytes": 636,
"sha256": "7542d652a1d21807221d48718bb62005a5bf074160ac70edc05406b061e0aa22"
},
{
"path": "baseline-target-accounting.npz",
"bytes": 4415619,
"sha256": "d101c97e422ec1ffbff407653ea5faa43b1c51d9587ee899b12ab45308374c18"
},
{
"path": "conditional25-accounting.json",
"bytes": 4282,
"sha256": "2b35665793ec36aca2b3dd393b962b1b9f71fef94e52bac7ae46f4a7690fcf68"
},
{
"path": "conditional25-edge-accounting.npz",
"bytes": 368342,
"sha256": "51eff4869c12459ba6d8f1e2516ba3bad4bf9835c4c5089826bb0c76b66f3f19"
},
{
"path": "conditional25-replay.npz",
"bytes": 4587,
"sha256": "c9a28aec7b7a97e3a1bea44076fc6139b86a5ee603cd14eceabe6b593a692749"
},
{
"path": "conditional25-target-accounting.npz",
"bytes": 4427854,
"sha256": "d476988618b1976d40419af99edc8cf18ba54867936dd41b283d3102aaf3e498"
},
{
"path": "credit.json",
"bytes": 395,
"sha256": "6cc6e56caa804843532c982002b929629d267e054d12eb933d6ad2195204019c"
},
{
"path": "credit.npz",
"bytes": 2839,
"sha256": "64f62dff88e3157a1cec8fcb3233e1188b16f352f9ec4047f41297d18e71a7ce"
},
{
"path": "sensitivity.json",
"bytes": 591,
"sha256": "ba99335f5c5ce49fbd2a78f5f20ec995da5bcc8aeaa88c9e57086a13ada4d0dd"
},
{
"path": "summary.json",
"bytes": 1684,
"sha256": "be218f41566608d6ae0e8928ffd140b12e25e67364596d004e183ccf362fd7c6"
}
]
@@ -0,0 +1,14 @@
{
"event_sequence_changed": true,
"spike_count_L1": 3,
"neurons_with_count_change": 3,
"neurons_with_first_latency_change": 9,
"baseline_spikes": 295,
"depressed_spikes": 294,
"max_abs_V_difference_SI": 0.006999754769397473,
"max_abs_g_difference_SI": 0.1418897974626529,
"final_V_max_abs_difference_SI": 0.005858712059812192,
"final_g_max_abs_difference_SI": 0.019792770662327753,
"functional_count_or_first_latency_change": true,
"result_scope": "Conditional clamped-upstream replay only; all target threshold/reset/ref recalculated; not whole-brain or learning"
}
@@ -0,0 +1,49 @@
{
"name": "novel_to_aj-matched_energy-00-s1073741829",
"cohort": "novel_to_aj",
"source_panel_split": "heldout",
"source_panel_row": 6,
"mode": "matched_energy",
"odor_id": "YSNWHRKJEKWJNY-UHFFFAOYSA-N",
"odor_index": 0,
"seed": 1073741829,
"targets": 35,
"requests": 101,
"expected_external_events": 102.2443115234375,
"rates_sum": 1022.443115234375,
"repeat": 0,
"pass_all": true,
"baseline_exact": {
"counts": true,
"v": true,
"g": true,
"ref": true,
"step": true,
"neuron_idx": true
},
"sensitivity": {
"event_sequence_changed": true,
"spike_count_L1": 3,
"neurons_with_count_change": 3,
"neurons_with_first_latency_change": 9,
"baseline_spikes": 295,
"depressed_spikes": 294,
"max_abs_V_difference_SI": 0.006999754769397473,
"max_abs_g_difference_SI": 0.1418897974626529,
"final_V_max_abs_difference_SI": 0.005858712059812192,
"final_g_max_abs_difference_SI": 0.019792770662327753,
"functional_count_or_first_latency_change": true,
"result_scope": "Conditional clamped-upstream replay only; all target threshold/reset/ref recalculated; not whole-brain or learning"
},
"credit_gate": "Virtual tick900 post-update; no DAN injection or plastic update",
"biological_duration_ms": 100.0,
"CPU_wall_seconds": 1.0633468689993606,
"baseline_CPU_wall_seconds": 1.033520774999488,
"source_sha256": {
"state.npz": "0528d0b77e601a3fec9bfd72644f7223f6e6ff936cef3a277392019615261547",
"summary.json": "0813e97b9bdc9d5535819e90e7b6d1548a7100205ebc7069483c3ce7ff22d2bc"
},
"conditional_weight_copy_only": true,
"training": false,
"candidate_generated": false
}
@@ -0,0 +1,125 @@
{
"complete": true,
"pass_all": true,
"pass_all_scope": "Observer callback coverage and internal count/state-accounting checks only",
"steps": 1000,
"callback_count": 1000,
"targets": 97,
"incoming_edges": 86039,
"group_names": [
"plastic_KC",
"nonplastic_KC",
"DAN",
"MBON",
"APL",
"other"
],
"sign_order": [
"positive",
"negative"
],
"dt_ms": 0.1,
"due_count": 46159,
"accepted_count": 42471,
"rejected_count": 3688,
"groups": {
"plastic_KC": {
"due_count": 404,
"accepted_count": 328,
"rejected_count": 76,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 0.7303999999999999,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.24034999999999998,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 1.9228973326120076,
"g_positive_integral_V_ms": 1.9228973326120076,
"g_negative_integral_V_ms": 0.0
},
"nonplastic_KC": {
"due_count": 1554,
"accepted_count": 1371,
"rejected_count": 183,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 2.6859249999999997,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.6264500000000001,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 7.841468051026025,
"g_positive_integral_V_ms": 7.841468051026026,
"g_negative_integral_V_ms": 0.0
},
"DAN": {
"due_count": 2758,
"accepted_count": 2541,
"rejected_count": 217,
"accepted_zero_count": 6,
"rejected_zero_count": 0,
"accepted_positive_V": 19.779650000000004,
"accepted_negative_V": 0.0,
"rejected_positive_V": 1.486375,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 64.48350236200464,
"g_positive_integral_V_ms": 64.48350236200463,
"g_negative_integral_V_ms": 0.0
},
"MBON": {
"due_count": 5655,
"accepted_count": 5070,
"rejected_count": 585,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 3.889875,
"accepted_negative_V": -26.8301,
"rejected_positive_V": 0.52305,
"rejected_negative_V": -3.303025,
"g_integral_V_ms": -101.08017788554065,
"g_positive_integral_V_ms": 15.131949999067425,
"g_negative_integral_V_ms": -116.2121278846081
},
"APL": {
"due_count": 2766,
"accepted_count": 2562,
"rejected_count": 204,
"accepted_zero_count": 2562,
"rejected_zero_count": 204,
"accepted_positive_V": 0.0,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.0,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 0.0,
"g_positive_integral_V_ms": 0.0,
"g_negative_integral_V_ms": 0.0
},
"other": {
"due_count": 33022,
"accepted_count": 30599,
"rejected_count": 2423,
"accepted_zero_count": 2442,
"rejected_zero_count": 232,
"accepted_positive_V": 44.861575000000045,
"accepted_negative_V": -43.04217500000001,
"rejected_positive_V": 5.0641250000000015,
"rejected_negative_V": -3.1063999999999994,
"g_integral_V_ms": -43.87303782603148,
"g_positive_integral_V_ms": 144.49353589647234,
"g_negative_integral_V_ms": -188.36657372250377
}
},
"max_g_lane_residual_V": 3.0531133177191805e-16,
"max_v_lane_residual_V": 1.2212453270876722e-15,
"residual_policy": "Observed state minus uncorrected float64 lane sum; no fitted tolerance or anatomical reassignment",
"integral_contract": "Sum of end-of-tick source g or v lanes times dt_ms; units V*ms, not conductance or energy",
"increment_contract": "Nominal accepted/rejected signed per-edge increments; negative fields retain negative sign",
"lane_contract": "Observed availability controls decay/integration; observed request/reset clears voltage/source history; fired clears g; canonical accepted adds only",
"pending_coverage_checked_by_observer": false,
"original_events_verified_by_observer": false,
"caller_must_verify_original_events_final_and_queue_coverage": true,
"nonfeedback": true,
"parameter_changes": false,
"learning": false,
"functional_transfer_claim": false,
"whole_brain_intervention_claim": false
}
@@ -0,0 +1,26 @@
{
"name": "novel_to_aj-matched_energy-01-s1073741825",
"cohort": "novel_to_aj",
"source_panel_split": "heldout",
"source_panel_row": 7,
"mode": "matched_energy",
"odor_id": "LYRIITRHDCNUHV-UHFFFAOYSA-N",
"odor_index": 1,
"seed": 1073741825,
"targets": 55,
"requests": 103,
"expected_external_events": 102.24432373046875,
"rates_sum": 1022.4432373046875,
"repeat": 0,
"pass_all": true,
"baseline_exact": {
"counts": true,
"v": true,
"g": true,
"ref": true,
"step": true,
"neuron_idx": true
},
"due_plus_pending_source_events_exact": true,
"CPU_wall_seconds": 1.0267666860017926
}
@@ -0,0 +1,125 @@
{
"complete": true,
"pass_all": true,
"pass_all_scope": "Observer callback coverage and internal count/state-accounting checks only",
"steps": 1000,
"callback_count": 1000,
"targets": 97,
"incoming_edges": 86039,
"group_names": [
"plastic_KC",
"nonplastic_KC",
"DAN",
"MBON",
"APL",
"other"
],
"sign_order": [
"positive",
"negative"
],
"dt_ms": 0.1,
"due_count": 46159,
"accepted_count": 42522,
"rejected_count": 3637,
"groups": {
"plastic_KC": {
"due_count": 404,
"accepted_count": 338,
"rejected_count": 66,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 0.5686312500000001,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.15943125,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 1.4829832806245151,
"g_positive_integral_V_ms": 1.4829832806245151,
"g_negative_integral_V_ms": 0.0
},
"nonplastic_KC": {
"due_count": 1554,
"accepted_count": 1371,
"rejected_count": 183,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 2.6859249999999997,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.6264500000000001,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 7.841468051026025,
"g_positive_integral_V_ms": 7.841468051026026,
"g_negative_integral_V_ms": 0.0
},
"DAN": {
"due_count": 2758,
"accepted_count": 2545,
"rejected_count": 213,
"accepted_zero_count": 6,
"rejected_zero_count": 0,
"accepted_positive_V": 19.781300000000005,
"accepted_negative_V": 0.0,
"rejected_positive_V": 1.4847250000000003,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 64.55142654912706,
"g_positive_integral_V_ms": 64.55142654912704,
"g_negative_integral_V_ms": 0.0
},
"MBON": {
"due_count": 5655,
"accepted_count": 5079,
"rejected_count": 576,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 3.8923500000000004,
"accepted_negative_V": -27.0116,
"rejected_positive_V": 0.5205750000000001,
"rejected_negative_V": -3.121525,
"g_integral_V_ms": -102.00891587579875,
"g_positive_integral_V_ms": 15.154222063685348,
"g_negative_integral_V_ms": -117.1631379394841
},
"APL": {
"due_count": 2766,
"accepted_count": 2566,
"rejected_count": 200,
"accepted_zero_count": 2566,
"rejected_zero_count": 200,
"accepted_positive_V": 0.0,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.0,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 0.0,
"g_positive_integral_V_ms": 0.0,
"g_negative_integral_V_ms": 0.0
},
"other": {
"due_count": 33022,
"accepted_count": 30623,
"rejected_count": 2399,
"accepted_zero_count": 2445,
"rejected_zero_count": 229,
"accepted_positive_V": 44.948475000000045,
"accepted_negative_V": -43.04657500000001,
"rejected_positive_V": 4.977225000000002,
"rejected_negative_V": -3.1019999999999994,
"g_integral_V_ms": -43.463504251873374,
"g_positive_integral_V_ms": 144.92873601493696,
"g_negative_integral_V_ms": -188.39224026681032
}
},
"max_g_lane_residual_V": 3.0531133177191805e-16,
"max_v_lane_residual_V": 1.2212453270876722e-15,
"residual_policy": "Observed state minus uncorrected float64 lane sum; no fitted tolerance or anatomical reassignment",
"integral_contract": "Sum of end-of-tick source g or v lanes times dt_ms; units V*ms, not conductance or energy",
"increment_contract": "Nominal accepted/rejected signed per-edge increments; negative fields retain negative sign",
"lane_contract": "Observed availability controls decay/integration; observed request/reset clears voltage/source history; fired clears g; canonical accepted adds only",
"pending_coverage_checked_by_observer": false,
"original_events_verified_by_observer": false,
"caller_must_verify_original_events_final_and_queue_coverage": true,
"nonfeedback": true,
"parameter_changes": false,
"learning": false,
"functional_transfer_claim": false,
"whole_brain_intervention_claim": false
}
@@ -0,0 +1,16 @@
{
"steps": 1000,
"gate_tick": 900,
"dt_ms": 0.1,
"tau_ms": 100.0,
"cap": 1.0,
"decay_f32_bits": "3f7fbe7f",
"total_input_events": 30482,
"total_KC_events": 129,
"KC_events_through_gate": 128,
"gate_includes_same_tick_spikes": true,
"event_shift_steps": 0,
"gate_is_virtual_readout_not_DAN_activity": true,
"weights_modified": false,
"weight_delta_generated": false
}
@@ -0,0 +1,67 @@
[
{
"path": "baseline-accounting.json",
"bytes": 4289,
"sha256": "a885a16682650cbdf25c175fb9ecd908cf22c7b1fdf3edbfc1ead089590c3230"
},
{
"path": "baseline-edge-accounting.npz",
"bytes": 361195,
"sha256": "8607ac337c875ec91af8e2f72ff6bdbb87fef5b2ed88b07ffb2de2172558c054"
},
{
"path": "baseline-replay.npz",
"bytes": 4504,
"sha256": "40e49aeba6d30b6cf3b08b4c2da365b23e8e8d3a31e976abfc79ad5f33aea24e"
},
{
"path": "baseline-summary.json",
"bytes": 639,
"sha256": "36f788021b284468a61c2b139ae3fe9581735a9d8c6ebc0bc01df2548f7b1a30"
},
{
"path": "baseline-target-accounting.npz",
"bytes": 4312262,
"sha256": "e29292bc12add960443c3492c9d52a98516734fc31ac2f76c1368160f5c373be"
},
{
"path": "conditional25-accounting.json",
"bytes": 4311,
"sha256": "0a2554530377fa38c240984d7fe53af1786d133716b3acf13bed32278b7f2d53"
},
{
"path": "conditional25-edge-accounting.npz",
"bytes": 367586,
"sha256": "58a51c143993fa279852b28c29c62897198c31fea70db3bf3ae7556dff8189c6"
},
{
"path": "conditional25-replay.npz",
"bytes": 4498,
"sha256": "c38861db2d54fc7a86dd92ee10a9fba5b24c330260bb13a664aca1b589ad6d33"
},
{
"path": "conditional25-target-accounting.npz",
"bytes": 4329014,
"sha256": "1b7e3ce9a226a52ca8b399f1282dffcfa5c650c1edacd98f347d677cf18a78a4"
},
{
"path": "credit.json",
"bytes": 395,
"sha256": "612fa8a4448c3c8b31b9b83bf6a6f2eaf74d9301d21e9125a425c2efec7eda09"
},
{
"path": "credit.npz",
"bytes": 2845,
"sha256": "ec115d7e613a7ffb4b52e09d7fbb434cc70444ca52da62cf6628fd1389f3254d"
},
{
"path": "sensitivity.json",
"bytes": 595,
"sha256": "c39a40b22305061b3680201a8625a64ede050998e4b085f8ea7a92fd97c53fba"
},
{
"path": "summary.json",
"bytes": 1691,
"sha256": "56cc9a10da945f5a179cd5a23a2961ded8b113db92e5a47dcf6028f43207857e"
}
]
@@ -0,0 +1,14 @@
{
"event_sequence_changed": true,
"spike_count_L1": 2,
"neurons_with_count_change": 2,
"neurons_with_first_latency_change": 7,
"baseline_spikes": 259,
"depressed_spikes": 257,
"max_abs_V_difference_SI": 0.013161539039390262,
"max_abs_g_difference_SI": 0.17777414602804315,
"final_V_max_abs_difference_SI": 0.0010569431316197753,
"final_g_max_abs_difference_SI": 2.5867493309156275e-07,
"functional_count_or_first_latency_change": true,
"result_scope": "Conditional clamped-upstream replay only; all target threshold/reset/ref recalculated; not whole-brain or learning"
}
@@ -0,0 +1,49 @@
{
"name": "novel_to_aj-matched_energy-01-s1073741825",
"cohort": "novel_to_aj",
"source_panel_split": "heldout",
"source_panel_row": 7,
"mode": "matched_energy",
"odor_id": "LYRIITRHDCNUHV-UHFFFAOYSA-N",
"odor_index": 1,
"seed": 1073741825,
"targets": 55,
"requests": 103,
"expected_external_events": 102.24432373046875,
"rates_sum": 1022.4432373046875,
"repeat": 0,
"pass_all": true,
"baseline_exact": {
"counts": true,
"v": true,
"g": true,
"ref": true,
"step": true,
"neuron_idx": true
},
"sensitivity": {
"event_sequence_changed": true,
"spike_count_L1": 2,
"neurons_with_count_change": 2,
"neurons_with_first_latency_change": 7,
"baseline_spikes": 259,
"depressed_spikes": 257,
"max_abs_V_difference_SI": 0.013161539039390262,
"max_abs_g_difference_SI": 0.17777414602804315,
"final_V_max_abs_difference_SI": 0.0010569431316197753,
"final_g_max_abs_difference_SI": 2.5867493309156275e-07,
"functional_count_or_first_latency_change": true,
"result_scope": "Conditional clamped-upstream replay only; all target threshold/reset/ref recalculated; not whole-brain or learning"
},
"credit_gate": "Virtual tick900 post-update; no DAN injection or plastic update",
"biological_duration_ms": 100.0,
"CPU_wall_seconds": 1.0565501839992066,
"baseline_CPU_wall_seconds": 1.0267666860017926,
"source_sha256": {
"state.npz": "ec4ad7569d7c27b83bf718851b4db3407e6c66fc95402e5403fc69504d70d06e",
"summary.json": "826caa1d6064f8eaa4ee77d7c5a51d7a5fa04bcdebf2c2f95af75955a4a00186"
},
"conditional_weight_copy_only": true,
"training": false,
"candidate_generated": false
}
@@ -0,0 +1,125 @@
{
"complete": true,
"pass_all": true,
"pass_all_scope": "Observer callback coverage and internal count/state-accounting checks only",
"steps": 1000,
"callback_count": 1000,
"targets": 97,
"incoming_edges": 86039,
"group_names": [
"plastic_KC",
"nonplastic_KC",
"DAN",
"MBON",
"APL",
"other"
],
"sign_order": [
"positive",
"negative"
],
"dt_ms": 0.1,
"due_count": 46159,
"accepted_count": 42471,
"rejected_count": 3688,
"groups": {
"plastic_KC": {
"due_count": 404,
"accepted_count": 328,
"rejected_count": 76,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 0.7303999999999999,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.24034999999999998,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 1.9228973326120076,
"g_positive_integral_V_ms": 1.9228973326120076,
"g_negative_integral_V_ms": 0.0
},
"nonplastic_KC": {
"due_count": 1554,
"accepted_count": 1371,
"rejected_count": 183,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 2.6859249999999997,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.6264500000000001,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 7.841468051026025,
"g_positive_integral_V_ms": 7.841468051026026,
"g_negative_integral_V_ms": 0.0
},
"DAN": {
"due_count": 2758,
"accepted_count": 2541,
"rejected_count": 217,
"accepted_zero_count": 6,
"rejected_zero_count": 0,
"accepted_positive_V": 19.779650000000004,
"accepted_negative_V": 0.0,
"rejected_positive_V": 1.486375,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 64.48350236200464,
"g_positive_integral_V_ms": 64.48350236200463,
"g_negative_integral_V_ms": 0.0
},
"MBON": {
"due_count": 5655,
"accepted_count": 5070,
"rejected_count": 585,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 3.889875,
"accepted_negative_V": -26.8301,
"rejected_positive_V": 0.52305,
"rejected_negative_V": -3.303025,
"g_integral_V_ms": -101.08017788554065,
"g_positive_integral_V_ms": 15.131949999067425,
"g_negative_integral_V_ms": -116.2121278846081
},
"APL": {
"due_count": 2766,
"accepted_count": 2562,
"rejected_count": 204,
"accepted_zero_count": 2562,
"rejected_zero_count": 204,
"accepted_positive_V": 0.0,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.0,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 0.0,
"g_positive_integral_V_ms": 0.0,
"g_negative_integral_V_ms": 0.0
},
"other": {
"due_count": 33022,
"accepted_count": 30599,
"rejected_count": 2423,
"accepted_zero_count": 2442,
"rejected_zero_count": 232,
"accepted_positive_V": 44.861575000000045,
"accepted_negative_V": -43.04217500000001,
"rejected_positive_V": 5.0641250000000015,
"rejected_negative_V": -3.1063999999999994,
"g_integral_V_ms": -43.87303782603148,
"g_positive_integral_V_ms": 144.49353589647234,
"g_negative_integral_V_ms": -188.36657372250377
}
},
"max_g_lane_residual_V": 3.0531133177191805e-16,
"max_v_lane_residual_V": 1.2212453270876722e-15,
"residual_policy": "Observed state minus uncorrected float64 lane sum; no fitted tolerance or anatomical reassignment",
"integral_contract": "Sum of end-of-tick source g or v lanes times dt_ms; units V*ms, not conductance or energy",
"increment_contract": "Nominal accepted/rejected signed per-edge increments; negative fields retain negative sign",
"lane_contract": "Observed availability controls decay/integration; observed request/reset clears voltage/source history; fired clears g; canonical accepted adds only",
"pending_coverage_checked_by_observer": false,
"original_events_verified_by_observer": false,
"caller_must_verify_original_events_final_and_queue_coverage": true,
"nonfeedback": true,
"parameter_changes": false,
"learning": false,
"functional_transfer_claim": false,
"whole_brain_intervention_claim": false
}
@@ -0,0 +1,26 @@
{
"name": "novel_to_aj-matched_energy-01-s1073741825",
"cohort": "novel_to_aj",
"source_panel_split": "heldout",
"source_panel_row": 7,
"mode": "matched_energy",
"odor_id": "LYRIITRHDCNUHV-UHFFFAOYSA-N",
"odor_index": 1,
"seed": 1073741825,
"targets": 55,
"requests": 103,
"expected_external_events": 102.24432373046875,
"rates_sum": 1022.4432373046875,
"repeat": 1,
"pass_all": true,
"baseline_exact": {
"counts": true,
"v": true,
"g": true,
"ref": true,
"step": true,
"neuron_idx": true
},
"due_plus_pending_source_events_exact": true,
"CPU_wall_seconds": 1.0455886720010312
}
@@ -0,0 +1,125 @@
{
"complete": true,
"pass_all": true,
"pass_all_scope": "Observer callback coverage and internal count/state-accounting checks only",
"steps": 1000,
"callback_count": 1000,
"targets": 97,
"incoming_edges": 86039,
"group_names": [
"plastic_KC",
"nonplastic_KC",
"DAN",
"MBON",
"APL",
"other"
],
"sign_order": [
"positive",
"negative"
],
"dt_ms": 0.1,
"due_count": 46159,
"accepted_count": 42522,
"rejected_count": 3637,
"groups": {
"plastic_KC": {
"due_count": 404,
"accepted_count": 338,
"rejected_count": 66,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 0.5686312500000001,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.15943125,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 1.4829832806245151,
"g_positive_integral_V_ms": 1.4829832806245151,
"g_negative_integral_V_ms": 0.0
},
"nonplastic_KC": {
"due_count": 1554,
"accepted_count": 1371,
"rejected_count": 183,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 2.6859249999999997,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.6264500000000001,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 7.841468051026025,
"g_positive_integral_V_ms": 7.841468051026026,
"g_negative_integral_V_ms": 0.0
},
"DAN": {
"due_count": 2758,
"accepted_count": 2545,
"rejected_count": 213,
"accepted_zero_count": 6,
"rejected_zero_count": 0,
"accepted_positive_V": 19.781300000000005,
"accepted_negative_V": 0.0,
"rejected_positive_V": 1.4847250000000003,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 64.55142654912706,
"g_positive_integral_V_ms": 64.55142654912704,
"g_negative_integral_V_ms": 0.0
},
"MBON": {
"due_count": 5655,
"accepted_count": 5079,
"rejected_count": 576,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 3.8923500000000004,
"accepted_negative_V": -27.0116,
"rejected_positive_V": 0.5205750000000001,
"rejected_negative_V": -3.121525,
"g_integral_V_ms": -102.00891587579875,
"g_positive_integral_V_ms": 15.154222063685348,
"g_negative_integral_V_ms": -117.1631379394841
},
"APL": {
"due_count": 2766,
"accepted_count": 2566,
"rejected_count": 200,
"accepted_zero_count": 2566,
"rejected_zero_count": 200,
"accepted_positive_V": 0.0,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.0,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 0.0,
"g_positive_integral_V_ms": 0.0,
"g_negative_integral_V_ms": 0.0
},
"other": {
"due_count": 33022,
"accepted_count": 30623,
"rejected_count": 2399,
"accepted_zero_count": 2445,
"rejected_zero_count": 229,
"accepted_positive_V": 44.948475000000045,
"accepted_negative_V": -43.04657500000001,
"rejected_positive_V": 4.977225000000002,
"rejected_negative_V": -3.1019999999999994,
"g_integral_V_ms": -43.463504251873374,
"g_positive_integral_V_ms": 144.92873601493696,
"g_negative_integral_V_ms": -188.39224026681032
}
},
"max_g_lane_residual_V": 3.0531133177191805e-16,
"max_v_lane_residual_V": 1.2212453270876722e-15,
"residual_policy": "Observed state minus uncorrected float64 lane sum; no fitted tolerance or anatomical reassignment",
"integral_contract": "Sum of end-of-tick source g or v lanes times dt_ms; units V*ms, not conductance or energy",
"increment_contract": "Nominal accepted/rejected signed per-edge increments; negative fields retain negative sign",
"lane_contract": "Observed availability controls decay/integration; observed request/reset clears voltage/source history; fired clears g; canonical accepted adds only",
"pending_coverage_checked_by_observer": false,
"original_events_verified_by_observer": false,
"caller_must_verify_original_events_final_and_queue_coverage": true,
"nonfeedback": true,
"parameter_changes": false,
"learning": false,
"functional_transfer_claim": false,
"whole_brain_intervention_claim": false
}
@@ -0,0 +1,16 @@
{
"steps": 1000,
"gate_tick": 900,
"dt_ms": 0.1,
"tau_ms": 100.0,
"cap": 1.0,
"decay_f32_bits": "3f7fbe7f",
"total_input_events": 30482,
"total_KC_events": 129,
"KC_events_through_gate": 128,
"gate_includes_same_tick_spikes": true,
"event_shift_steps": 0,
"gate_is_virtual_readout_not_DAN_activity": true,
"weights_modified": false,
"weight_delta_generated": false
}
@@ -0,0 +1,67 @@
[
{
"path": "baseline-accounting.json",
"bytes": 4289,
"sha256": "a885a16682650cbdf25c175fb9ecd908cf22c7b1fdf3edbfc1ead089590c3230"
},
{
"path": "baseline-edge-accounting.npz",
"bytes": 361195,
"sha256": "8607ac337c875ec91af8e2f72ff6bdbb87fef5b2ed88b07ffb2de2172558c054"
},
{
"path": "baseline-replay.npz",
"bytes": 4504,
"sha256": "40e49aeba6d30b6cf3b08b4c2da365b23e8e8d3a31e976abfc79ad5f33aea24e"
},
{
"path": "baseline-summary.json",
"bytes": 639,
"sha256": "9ed04b3994568e8efaebac2dbfb39110547c49cc9e9db9ef0403c157b87cba7c"
},
{
"path": "baseline-target-accounting.npz",
"bytes": 4312262,
"sha256": "e29292bc12add960443c3492c9d52a98516734fc31ac2f76c1368160f5c373be"
},
{
"path": "conditional25-accounting.json",
"bytes": 4311,
"sha256": "0a2554530377fa38c240984d7fe53af1786d133716b3acf13bed32278b7f2d53"
},
{
"path": "conditional25-edge-accounting.npz",
"bytes": 367586,
"sha256": "58a51c143993fa279852b28c29c62897198c31fea70db3bf3ae7556dff8189c6"
},
{
"path": "conditional25-replay.npz",
"bytes": 4498,
"sha256": "c38861db2d54fc7a86dd92ee10a9fba5b24c330260bb13a664aca1b589ad6d33"
},
{
"path": "conditional25-target-accounting.npz",
"bytes": 4329014,
"sha256": "1b7e3ce9a226a52ca8b399f1282dffcfa5c650c1edacd98f347d677cf18a78a4"
},
{
"path": "credit.json",
"bytes": 395,
"sha256": "612fa8a4448c3c8b31b9b83bf6a6f2eaf74d9301d21e9125a425c2efec7eda09"
},
{
"path": "credit.npz",
"bytes": 2845,
"sha256": "ec115d7e613a7ffb4b52e09d7fbb434cc70444ca52da62cf6628fd1389f3254d"
},
{
"path": "sensitivity.json",
"bytes": 595,
"sha256": "c39a40b22305061b3680201a8625a64ede050998e4b085f8ea7a92fd97c53fba"
},
{
"path": "summary.json",
"bytes": 1690,
"sha256": "b274b1daf95c99b8a4ffc50a9caf37294eca2315d418853a85a10219cb0d694d"
}
]
@@ -0,0 +1,14 @@
{
"event_sequence_changed": true,
"spike_count_L1": 2,
"neurons_with_count_change": 2,
"neurons_with_first_latency_change": 7,
"baseline_spikes": 259,
"depressed_spikes": 257,
"max_abs_V_difference_SI": 0.013161539039390262,
"max_abs_g_difference_SI": 0.17777414602804315,
"final_V_max_abs_difference_SI": 0.0010569431316197753,
"final_g_max_abs_difference_SI": 2.5867493309156275e-07,
"functional_count_or_first_latency_change": true,
"result_scope": "Conditional clamped-upstream replay only; all target threshold/reset/ref recalculated; not whole-brain or learning"
}
@@ -0,0 +1,49 @@
{
"name": "novel_to_aj-matched_energy-01-s1073741825",
"cohort": "novel_to_aj",
"source_panel_split": "heldout",
"source_panel_row": 7,
"mode": "matched_energy",
"odor_id": "LYRIITRHDCNUHV-UHFFFAOYSA-N",
"odor_index": 1,
"seed": 1073741825,
"targets": 55,
"requests": 103,
"expected_external_events": 102.24432373046875,
"rates_sum": 1022.4432373046875,
"repeat": 1,
"pass_all": true,
"baseline_exact": {
"counts": true,
"v": true,
"g": true,
"ref": true,
"step": true,
"neuron_idx": true
},
"sensitivity": {
"event_sequence_changed": true,
"spike_count_L1": 2,
"neurons_with_count_change": 2,
"neurons_with_first_latency_change": 7,
"baseline_spikes": 259,
"depressed_spikes": 257,
"max_abs_V_difference_SI": 0.013161539039390262,
"max_abs_g_difference_SI": 0.17777414602804315,
"final_V_max_abs_difference_SI": 0.0010569431316197753,
"final_g_max_abs_difference_SI": 2.5867493309156275e-07,
"functional_count_or_first_latency_change": true,
"result_scope": "Conditional clamped-upstream replay only; all target threshold/reset/ref recalculated; not whole-brain or learning"
},
"credit_gate": "Virtual tick900 post-update; no DAN injection or plastic update",
"biological_duration_ms": 100.0,
"CPU_wall_seconds": 1.058581586999935,
"baseline_CPU_wall_seconds": 1.0455886720010312,
"source_sha256": {
"state.npz": "ec4ad7569d7c27b83bf718851b4db3407e6c66fc95402e5403fc69504d70d06e",
"summary.json": "edf29417f64d492d17e72b514cbf5dc72a547bdf37785f44622f66ace2fb606c"
},
"conditional_weight_copy_only": true,
"training": false,
"candidate_generated": false
}
@@ -0,0 +1,125 @@
{
"complete": true,
"pass_all": true,
"pass_all_scope": "Observer callback coverage and internal count/state-accounting checks only",
"steps": 1000,
"callback_count": 1000,
"targets": 97,
"incoming_edges": 86039,
"group_names": [
"plastic_KC",
"nonplastic_KC",
"DAN",
"MBON",
"APL",
"other"
],
"sign_order": [
"positive",
"negative"
],
"dt_ms": 0.1,
"due_count": 43906,
"accepted_count": 40511,
"rejected_count": 3395,
"groups": {
"plastic_KC": {
"due_count": 425,
"accepted_count": 388,
"rejected_count": 37,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 0.7394749999999999,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.209825,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 2.20179912511845,
"g_positive_integral_V_ms": 2.20179912511845,
"g_negative_integral_V_ms": 0.0
},
"nonplastic_KC": {
"due_count": 1473,
"accepted_count": 1287,
"rejected_count": 186,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 2.4667499999999993,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.606925,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 7.1568617120827165,
"g_positive_integral_V_ms": 7.156861712082716,
"g_negative_integral_V_ms": 0.0
},
"DAN": {
"due_count": 2517,
"accepted_count": 2321,
"rejected_count": 196,
"accepted_zero_count": 5,
"rejected_zero_count": 0,
"accepted_positive_V": 16.382850000000005,
"accepted_negative_V": 0.0,
"rejected_positive_V": 1.6445000000000003,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 52.50336106924425,
"g_positive_integral_V_ms": 52.503361069244264,
"g_negative_integral_V_ms": 0.0
},
"MBON": {
"due_count": 5150,
"accepted_count": 4639,
"rejected_count": 511,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 3.49305,
"accepted_negative_V": -25.44685,
"rejected_positive_V": 0.2761,
"rejected_negative_V": -2.891075,
"g_integral_V_ms": -102.44877986529346,
"g_positive_integral_V_ms": 13.779288493496132,
"g_negative_integral_V_ms": -116.2280683587896
},
"APL": {
"due_count": 2640,
"accepted_count": 2483,
"rejected_count": 157,
"accepted_zero_count": 2483,
"rejected_zero_count": 157,
"accepted_positive_V": 0.0,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.0,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 0.0,
"g_positive_integral_V_ms": 0.0,
"g_negative_integral_V_ms": 0.0
},
"other": {
"due_count": 31701,
"accepted_count": 29393,
"rejected_count": 2308,
"accepted_zero_count": 2373,
"rejected_zero_count": 190,
"accepted_positive_V": 42.72317500000005,
"accepted_negative_V": -40.49182500000002,
"rejected_positive_V": 4.644475000000001,
"rejected_negative_V": -3.581875,
"g_integral_V_ms": -33.43729841319989,
"g_positive_integral_V_ms": 138.35436353811824,
"g_negative_integral_V_ms": -171.7916619513181
}
},
"max_g_lane_residual_V": 2.706168622523819e-16,
"max_v_lane_residual_V": 1.3322676295501878e-15,
"residual_policy": "Observed state minus uncorrected float64 lane sum; no fitted tolerance or anatomical reassignment",
"integral_contract": "Sum of end-of-tick source g or v lanes times dt_ms; units V*ms, not conductance or energy",
"increment_contract": "Nominal accepted/rejected signed per-edge increments; negative fields retain negative sign",
"lane_contract": "Observed availability controls decay/integration; observed request/reset clears voltage/source history; fired clears g; canonical accepted adds only",
"pending_coverage_checked_by_observer": false,
"original_events_verified_by_observer": false,
"caller_must_verify_original_events_final_and_queue_coverage": true,
"nonfeedback": true,
"parameter_changes": false,
"learning": false,
"functional_transfer_claim": false,
"whole_brain_intervention_claim": false
}
@@ -0,0 +1,26 @@
{
"name": "novel_to_aj-matched_energy-01-s1073741826",
"cohort": "novel_to_aj",
"source_panel_split": "heldout",
"source_panel_row": 7,
"mode": "matched_energy",
"odor_id": "LYRIITRHDCNUHV-UHFFFAOYSA-N",
"odor_index": 1,
"seed": 1073741826,
"targets": 55,
"requests": 136,
"expected_external_events": 102.24432373046875,
"rates_sum": 1022.4432373046875,
"repeat": 0,
"pass_all": true,
"baseline_exact": {
"counts": true,
"v": true,
"g": true,
"ref": true,
"step": true,
"neuron_idx": true
},
"due_plus_pending_source_events_exact": true,
"CPU_wall_seconds": 1.0233847819981747
}
@@ -0,0 +1,125 @@
{
"complete": true,
"pass_all": true,
"pass_all_scope": "Observer callback coverage and internal count/state-accounting checks only",
"steps": 1000,
"callback_count": 1000,
"targets": 97,
"incoming_edges": 86039,
"group_names": [
"plastic_KC",
"nonplastic_KC",
"DAN",
"MBON",
"APL",
"other"
],
"sign_order": [
"positive",
"negative"
],
"dt_ms": 0.1,
"due_count": 43906,
"accepted_count": 40484,
"rejected_count": 3422,
"groups": {
"plastic_KC": {
"due_count": 425,
"accepted_count": 396,
"rejected_count": 29,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 0.5795625000000002,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.1324125,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 1.8141495853006346,
"g_positive_integral_V_ms": 1.8141495853006346,
"g_negative_integral_V_ms": 0.0
},
"nonplastic_KC": {
"due_count": 1473,
"accepted_count": 1287,
"rejected_count": 186,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 2.4667499999999993,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.606925,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 7.1568617120827165,
"g_positive_integral_V_ms": 7.156861712082716,
"g_negative_integral_V_ms": 0.0
},
"DAN": {
"due_count": 2517,
"accepted_count": 2317,
"rejected_count": 200,
"accepted_zero_count": 5,
"rejected_zero_count": 0,
"accepted_positive_V": 16.486250000000002,
"accepted_negative_V": 0.0,
"rejected_positive_V": 1.5411000000000001,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 52.70805564794681,
"g_positive_integral_V_ms": 52.708055647946814,
"g_negative_integral_V_ms": 0.0
},
"MBON": {
"due_count": 5150,
"accepted_count": 4642,
"rejected_count": 508,
"accepted_zero_count": 0,
"rejected_zero_count": 0,
"accepted_positive_V": 3.5021250000000004,
"accepted_negative_V": -25.424850000000003,
"rejected_positive_V": 0.267025,
"rejected_negative_V": -2.913075,
"g_integral_V_ms": -102.40910255468103,
"g_positive_integral_V_ms": 13.765599511502614,
"g_negative_integral_V_ms": -116.17470206618364
},
"APL": {
"due_count": 2640,
"accepted_count": 2482,
"rejected_count": 158,
"accepted_zero_count": 2482,
"rejected_zero_count": 158,
"accepted_positive_V": 0.0,
"accepted_negative_V": 0.0,
"rejected_positive_V": 0.0,
"rejected_negative_V": 0.0,
"g_integral_V_ms": 0.0,
"g_positive_integral_V_ms": 0.0,
"g_negative_integral_V_ms": 0.0
},
"other": {
"due_count": 31701,
"accepted_count": 29360,
"rejected_count": 2341,
"accepted_zero_count": 2367,
"rejected_zero_count": 196,
"accepted_positive_V": 42.69567500000005,
"accepted_negative_V": -40.48220000000002,
"rejected_positive_V": 4.671975000000001,
"rejected_negative_V": -3.5915000000000004,
"g_integral_V_ms": -33.569674364952945,
"g_positive_integral_V_ms": 138.19552133303893,
"g_negative_integral_V_ms": -171.76519569799189
}
},
"max_g_lane_residual_V": 2.706168622523819e-16,
"max_v_lane_residual_V": 1.3322676295501878e-15,
"residual_policy": "Observed state minus uncorrected float64 lane sum; no fitted tolerance or anatomical reassignment",
"integral_contract": "Sum of end-of-tick source g or v lanes times dt_ms; units V*ms, not conductance or energy",
"increment_contract": "Nominal accepted/rejected signed per-edge increments; negative fields retain negative sign",
"lane_contract": "Observed availability controls decay/integration; observed request/reset clears voltage/source history; fired clears g; canonical accepted adds only",
"pending_coverage_checked_by_observer": false,
"original_events_verified_by_observer": false,
"caller_must_verify_original_events_final_and_queue_coverage": true,
"nonfeedback": true,
"parameter_changes": false,
"learning": false,
"functional_transfer_claim": false,
"whole_brain_intervention_claim": false
}
@@ -0,0 +1,16 @@
{
"steps": 1000,
"gate_tick": 900,
"dt_ms": 0.1,
"tau_ms": 100.0,
"cap": 1.0,
"decay_f32_bits": "3f7fbe7f",
"total_input_events": 29490,
"total_KC_events": 131,
"KC_events_through_gate": 131,
"gate_includes_same_tick_spikes": true,
"event_shift_steps": 0,
"gate_is_virtual_readout_not_DAN_activity": true,
"weights_modified": false,
"weight_delta_generated": false
}

Some files were not shown because too many files have changed in this diff Show More