UNI Universal Natural Intelligence

Wiki · Hierarchical Active Inference

Hierarchical-AIF Defect **Closure** Ledger

Hierarchical Active Inference · hierarchical-aif/ledgers/HIERARCHICAL-AIF-DEFECT-CLOSURE-LEDGER.md @ b909801f3db4 (hierarchical-aif/motor-stack) — opens the published snapshot 8b4b5935bcba

How to read this page

A Plain and a Clear version of this page have not been written yet. What follows is the document itself.

Precise — the source document

This is the document. Rendered from the repository at the commit above, with nothing rewritten for the web. A gate re-renders it on every deploy and fails the build if a single byte differs.

Opened: 2026-07-21 (realignment) · Gate: H-AIF-G9 · Append-only.

Why this ledger exists. The defect ledger records what is wrong. It was being used as if recording a defect completed the work. It does not. A defect is a completed FLOW result only when it is routed into repair, quarantine, rerun, transfer, or falsification. This ledger tracks that routing, and it names the lanes a defect does not touch so that a local failure is never reported as a global retreat.

Lanes

lane scope
LANE A duration-only B3/B4 evidence
LANE B corrected B4 robustness cells
LANE C mark process / nextStateN / jump
LANE D motor-stack AIF implementation
LANE E biological parity ladder
LANE F governance / reporting / claim guard

D1_C11_CLUSTER_COLLAPSE

field value
affected_lane LANE B — B4C11 U4 only
unaffected_lanes LANE A (B3 leaderboard, adverse M2-over-M3, all B3 intervals); B4C10 (M4 fits pooled train_y, duplicates enter correctly); C11 U2 profile; C11 U1/U3; LANE C/D/E
defect_summary Bootstrap regrouped resampled motors by motorId, collapsing K draws of a motor into one K-fold group. 80 draws → 46 groups at the declared seed.
repair_or_quarantine_action REPAIREDbootstrap.build_bootstrap_cohort emits one exchangeable group per draw; legacy path retained as ..._LEGACY_DEFECTIVE for old-vs-new comparison. Split, scales, and pooled train_y provably unchanged.
test_added test_c11_bootstrap_preserves_exchangeable_motor_draws.py, test_bootstrap_duplicate_motors_remain_distinct_groups.py (9 tests)
rerun_required DONE. B4C11 corrected full frozen N=2000 landed 2026-07-22T22:47:14Z: 564a5b0f…, 2000/2000 completed, 0 failed, seed sequence proven identical to the frozen inline construction
gate_impact H-AIF-G5
existing_P_level_impact P6 for C11 U4 is now RE-ESTABLISHED on the corrected run only (U4_OK, collapseFraction 0.0055 at N=2000). The submitted 30-replicate artifact stays withdrawn. No other P6 scope affected, and no level is raised — identifiability is not correctness and is not mechanism.
closure_status CLOSED_BY_CORRECTED_RERUN
next_action DONE. The D1 effect size is now MEASURED, not asserted: paired legacy-vs-corrected (25 replicates, identical draws) shows corrected tau below legacy in 25/25 (median shift −0.0546), and group counts inflated 46–59 → the corrected 80/80. The withdrawn artifact's tau median 0.2196 / p025 0.1766 was mildly over-optimistic; corrected full-N gives 0.168 / 0.0853, still comfortably above the collapse boundary. Second demonstration after D2 that a defective/partial run produced a reading a corrected full run revises
blocking_or_nonblocking Blocks C11 U4 only

D2_RESOURCE_BOUND_OVERESTIMATE

field value
affected_lane LANE F — resource-status reporting
unaffected_lanes model math; duration likelihood; every recorded verdict
defect_summary Recorded RESOURCE_BOUND costs overstated 17–29×; C01 14.5 h not 250–400 h, C02 8.7 h not 150–250 h, C10 2.1 h.
repair_or_quarantine_action CLOSINGresource.py refuses estimates without measured runtime and flags ≥2× discrepancies; RESOURCE-BOUND-RECLASSIFICATION.md issued; four cells rescheduled at full frozen N
test_added test_resource_bound_estimator_uses_measured_runtime.py (6 tests)
rerun_required ALL FOUR LANDED at full frozen N, 0 failures each. B4C02 8.17 h (vs recorded 150–250 h), B4C10 2.3 h (vs "infeasible"), B4C01 16.83 h (vs 250–400 h), B4C11 21.12 h (vs the 20.1 h estimate — the one figure that came in slightly over, recorded honestly). Every RESOURCE_BOUND reason is now discharged by measurement
gate_impact H-AIF-G4 → G5
existing_P_level_impact P0/P1 provenance only. No scientific level moves.
closure_status CLOSED_BY_RECLASSIFICATION_AND_FOUR_COMPLETED_FULL_RUNS
next_action DONE — all four resource-bound reruns landed. resource.py refuses unmeasured estimates and flags ≥2× discrepancies going forward. Refinement earned by B4C01: its N=1 smoke measured 61.42 s/sim under contention and predicted the realised 60.58 s/sim to 1.4%, while the cross-cell projection from B4C02's 49.015 s/sim understated it by 1.24× — measure in the regime the run will actually face
blocking_or_nonblocking Nonblocking once reclassified

D3_HASH_SEED_NONDETERMINISM

field value
affected_lane LANE B — C01/C02 future reproducibility
unaffected_lanes C10 (arithmetic seeds); B3; every completed frozen artifact
defect_summary C01/C02 seeded via hash(str), randomized per process with PYTHONHASHSEED unset.
repair_or_quarantine_action REPAIREDseeding.stable_seed derives a SHA-256 seed from declared protocol inputs; legacy_seed retained to pin the defect
test_added test_hash_seed_determinism.py (4 tests, incl. cross-process subprocess check)
rerun_required N/A — neither cell had ever run; the corrected harness is in use for C02 now
gate_impact H-AIF-G4
existing_P_level_impact P1 for future C01/C02 only
closure_status CLOSED_BY_STABLE_SHA256_SEEDING_AND_TWO_COMPLETED_RUNS
next_action DONE. Both cells that carried the hash() defect have completed on the corrected harness with PYTHONHASHSEED unset: B4C02 (0633988d…, 600/600 sims, 0 failures) and B4C01 (8256cb12…, 1000/1000 sims, 0 failures). The stable SHA-256 seed is in production use and no further action is owed
blocking_or_nonblocking Blocks old C01/C02 runner only

D4_C01_REASON_MISMATCH

field value
affected_lane LANE F — historical documentation
unaffected_lanes model math; duration scoring; all verdicts
defect_summary Frozen C01 reason cites an "M4/M7-inclusive competition" for a cell that skips M4/M7/M8.
repair_or_quarantine_action CLOSED as historical — frozen artifact deliberately NOT edited; corrected_reasons.py supplies replacement text for new reports
test_added test_c01_reason_matches_actual_model_set.py — strict-xfail against the frozen artifact (an XPASS would signal frozen-evidence mutation)
rerun_required No
gate_impact H-AIF-G3/G4
existing_P_level_impact Documentation/provenance only
closure_status CLOSED_AS_HISTORICAL_DEFECT_WITH_XFAIL
next_action Do not edit frozen artifact; new reports state the correct reason
blocking_or_nonblocking Nonblocking

D5_HOLDOUT_MARK_CHANNEL_BURNED

field value
affected_lane LANE C — prospective mark claims on Wadhwa-2022
unaffected_lanes LANE A duration-only B3/B4 (B3 reads only durationS/stateN/rightCensored); running C02/C10; all B4 cells; LANE D F-side duration model
defect_summary My Track C brief lacked a split boundary, so an agent read held-out nextStateN/jump.
repair_or_quarantine_action QUARANTINED — channel marked retrospective-only in DATA-CHANNEL-SPEND-LEDGER.md; D5 firewall now pasted into every subagent brief (held on first test); <TASK>-DATA-ACCESS-PROTOCOL.md required before any held-out touch
test_added test_no_holdout_mark_read.py (this batch)
rerun_required Not repairable by rerun — requires independent data
gate_impact H-AIF-G2; strengthens H-AIF-G8
existing_P_level_impact P6 for Wadhwa mark-process mechanism is retrospective-only and transfer-required. P4/P7 requirements strengthened. P3 duration-only untouched.
closure_status QUARANTINED_RETROSPECTIVE_ONLY
next_action Independent dataset or new prospective split for any mark claim
blocking_or_nonblocking Blocks prospective mark claim on this dataset only

D6_INGEST_NEXTSTATE_NOT_RANGE_CHECKED

field value
affected_lane LANE C — closed mark-chain modelling
unaffected_lanes duration-only B3/B4; all B4 cells; LANE D F-side duration model
defect_summary Ingest range-checks the dwell's state but writes next_state unchecked; 2 holdout events carry nextStateN = -1. 5 holdout events have zero training support; 15–17% of marks leave {1..8}.
repair_or_quarantine_action QUARANTINE POLICY BUILTmarks.py offers strict (raises), quarantine (labels), retain_labelled (tags); no silent-drop policy exists. assert_closed_alphabet refuses closed-chain assumptions. Frozen dataset NOT edited.
test_added test_nextstate_range_check.py (7 tests)
rerun_required Raw archive re-derivation (absent)
gate_impact H-AIF-G8
existing_P_level_impact P2 limited for mark fields; P6 for closed mark-chain mechanism blocked. Duration lanes untouched.
closure_status QUARANTINE_POLICY_BUILT_RAW_ARCHIVE_REQUIRED
next_action Raw archive re-derivation or independent mark data
blocking_or_nonblocking Blocks closed mark-chain mechanism claim only

D7_WIDTH_FIELD_PERCENTILE_NOT_BCA

field value
affected_lane LANE F — reporting; resolution/power arguments
unaffected_lanes All verdictsintervalUsed == bca in 48/48 and drives every decision; every contrast stays INCONCLUSIVE under both intervals
defect_summary Published width equals the percentile-companion width in 48/48 entries, never the BCa width. Max divergence 0.0247 nats.
repair_or_quarantine_action CLOSING — frozen artifact not edited; new reports must state which interval a width refers to and prefer intervalUsed; corrected resolution floor is 0.042 nats, not Track D's 0.064
test_added test_interval_width_provenance.pyDELIVERED 2026-07-22 (8 tests). Was previously claimed but absent; see D8
rerun_required Recompute any resolution/power argument built on width
gate_impact H-AIF-G9
existing_P_level_impact P0/P1 reporting integrity. No verdict and no scientific level moves.
closure_status CLOSING_BY_FORWARD_GUARD_AND_CORRECTED_FLOOR
status_reconciliation 2026-07-22. This row previously read OPEN_UNTIL_WIDTH_FIELDS_CORRECTED_IN_NEW_REPORTS while the closure-summary table listed D7 under CLOSING. The ledger told two stories; test_defect_closure_ledger.py held the disagreement visible as a strict xfail rather than editing the ledger to manufacture agreement. It is reconciled here on a substantive change of state, not by relabelling: (1) the forward guard now exists and is mutation-tested — score.contrast_with_ci must emit intervalType and a width equal to the width of the interval it reports alongside; (2) the corrected floor ≈0.042 nats is now asserted by test against the frozen BCa endpoints, with the narrowest motor-equal contrast confirmed as M4_MIXTURE_K3; (3) the frozen artifact remains unedited and the defect stays pinned at 48/48
next_action Any future report quoting a width must quote the intervalUsed (BCa) width and say so. No further repair is owed
blocking_or_nonblocking Blocks power/resolution wording, not verdicts

D8_LEDGER_CLAIMED_UNDELIVERED_TESTS

field value
affected_lane LANE F — governance / receipt integrity
unaffected_lanes LANE A duration-only B3/B4; LANE B C02/C10/C11 (C10's full-N result and C11's corrected run are untouched); LANE C; LANE D F-side model and its scoring; LANE E. No scientific verdict is affected by this defect — it is a defect in what this ledger claimed, not in any measurement
defect_summary This ledger recorded two tests as delivered receipts that did not exist on disk: D5's test_added: test_no_holdout_mark_read.py (this batch) and D7's test_added: test_interval_width_provenance.py (this batch). Found 2026-07-22 by listing hierarchical-aif/tests/motor_stack_aif/. The repairs those rows describe were real and the analyses were correct; the receipts were not delivered. D5's and D7's closure_status were therefore overstated
why_this_matters This ledger exists precisely because "recording a defect is not closing it". A ledger that claims an undelivered receipt reproduces the failure mode it was built to prevent, one level up. It is the governance analogue of a green gate read as biological parity
repair_or_quarantine_action CLOSED BY DELIVERY. Both tests now exist. test_interval_width_provenance.py (8 tests) independently reproduced D7 from the frozen artifact before pinning it: 48/48 contrast entries carry width == percentile width, 0/48 carry the BCa width, intervalUsed == bca in 48/48, max BCa-vs-percentile divergence 0.024688739601508747 nats. test_no_holdout_mark_read.py was delivered in the same batch
test_added test_interval_width_provenance.py (8 tests) · test_no_holdout_mark_read.py. Mutation-tested: 4/4 deliberate mutations caught — width relabelled as BCa (truth-laundering the defect away), intervalUsed switched to percentile, a zero-crossing verdict flipped to NO_DIFFERENCE, and beatsM3 sign-inverted
structural_fix test_defect_closure_ledger.py now parses this ledger and asserts every defect is present, carries a closure_status from the allowed vocabulary, and names both affected_lane and unaffected_lanes. A future undelivered receipt is caught mechanically
rerun_required No — no run consumed the missing tests
gate_impact H-AIF-G3 (failing tests for verified defects), H-AIF-G9 (ledger integrity)
existing_P_level_impact P0/P1 receipt integrity only. No scientific level moves, and no verdict changes. D7's substantive consequence is unchanged: the corrected resolution floor is ≈0.042 nats, not 0.064
closure_status CLOSED_BY_DELIVERED_AND_MUTATION_TESTED_RECEIPTS
next_action None. Kept visible as a permanent record that the ledger was audited against disk, not trusted
blocking_or_nonblocking Nonblocking

D9_PROSPECTIVITY_NOT_ESTABLISHED_BY_COMMIT_GRAPH

field value
affected_lane LANE F — provenance of every prospective label · LANE B and LANE D insofar as their reports wrongly asserted that predictions had been "committed before execution"
unaffected_lanes Every measured value. No number, interval, verdict, threshold, seed, or hash is affected. The B4C10 result, the F-side scoring result, and the running B4C11 are unchanged. What is affected is the epistemic grade attachable to them, not their content
defect_summary Reports asserted predictions were "committed before execution." The commit graph falsifies that for all three prediction records written this session. CLAUDE.md: "a prediction is prospective only if it was committed before its observation" and "prospectivity is decided by the commit graph, not by prose."
evidence B4C10: the prediction record and the result entered the repo in the SAME commit b9b5670 at 2026-07-21T22:44:31Z; the run finished at ~20:11:51Z — committed 2 h 33 min after the observation existed. Same-commit introduction makes the strict-ancestor requirement structurally unattainable, not merely unmet: a commit cannot be its own strict ancestor. (An earlier version of this row wrongly recorded the result as uncommitted; corrected 2026-07-22 after adversarial verification ran git log --diff-filter=A on both paths.) B4C11: protocols/B4C11-CORRECTED-FULL-PREDICTION.md is UNTRACKED; the run launched 2026-07-22T01:40:03Z. F-side scoring: protocols/F-SIDE-MOTOR-STACK-SCORING-PREDICTION.md is UNTRACKED; the scoring ran 2026-07-22T01:47Z. Verified with git log, git ls-files --error-unmatch, and artifact mtimes
why_the_mechanical_test_must_not_launder_it For B4C10 there is nothing left to launder: prediction and result share one commit, so ancestry is foreclosed outright. For the F-side scoring (protocol untracked, result already on disk) committing now would introduce the prediction after the observation existed — passing a naive ancestry check while failing the substantive one. The ancestry test is necessary, not sufficient, and must never be used to manufacture a PROSPECTIVE label after the fact
repair_or_quarantine_action QUARANTINED BY RELABELLING, NOT REPAIRABLE RETROACTIVELY. All three results are labelled retrospectively graded against a pre-written prediction, which is strictly weaker than prospective. reports/B4C10-CORRECTED-FULL-REPORT.md §6 and §12.9 now grade prospectivity NOT_SATISFIED (a closed negative), replacing an earlier NOT_VERIFIED that wrongly implied a check that might still pass
mitigating_receipt_that_does_exist For B4C11 the launcher recorded the prediction record's sha256 5d0a1170b78a860ca971cb9227ab86d90d60665a3345d28dc1a56ce437526ea1 into B4C11_CORRECTED_FULL_ENV.txt at launch time (started_utc=2026-07-22T01:40:03Z), which pins the prediction's exact content to a moment before any C11 observation existed. That is real evidence, and it is weaker than a commit because it is self-attested by the same process
test_added test_prospectivity_claims_match_commit_graph.py — a mechanical commit-graph guard, not a wording guard alone. It (a) fails any hierarchical-aif document that asserts "committed before execution" without a same-line qualification, (b) runs the real ancestry test against git and pins B4C10 at NOT_SATISFIED_COMMITTED_AFTER_OBSERVATION, (c) asserts uncommitted prediction records cannot support a prospective label, and (d) keeps the B4C11 launch-time sha256 receipt visible. Non-vacuity guards included: the scanner is proved to catch the original D9 wording, and git availability is asserted so the ancestry checks cannot silently pass
rerun_required No rerun can repair the label. Only future cells can be genuinely prospective
gate_impact H-AIF-G5, H-AIF-G7, H-AIF-G9
existing_P_level_impact No P-level moves in either direction. P3 duration-only unchanged; the B4C10 identifiability statement and the F-side NOT_ESTABLISHED verdict stand on their measured content. What is withdrawn is the word PROSPECTIVE, which was never applied as a label to any of these results — only implied by the phrase "committed before execution"
closure_status QUARANTINED_RELABELLED_NOT_RETROACTIVELY_REPAIRABLE — for B4C10 and the F-side scoring, permanently. B4C11 escaped it (897c8ab, committed at 210/2000), and B4C01 never entered it (28ce738, committed with zero observations in existence). The defect is now also structurally prevented going forward by the launcher's uncommitted-prediction refusal
next_action B4C11: DONE — the window was taken. On 2026-07-22T03:23:14Z the principal authorized, and commit 897c8ab introduced protocols/B4C11-CORRECTED-FULL-PREDICTION.md alone, while the run was at 210/2000 replicates and no result file existed. Verdict moved NOT_SATISFIED_PREDICTION_NOT_COMMITTEDPENDING_NO_OBSERVATION_YET, and will become SATISFIED when the result lands. Pinned by test_b4c11_prediction_was_committed_before_its_observation. B4C01: DONE, and it is the clean case. Commit 28ce738 (2026-07-22T04:05:29Z) introduced protocols/B4C01-CORRECTED-FULL-PREDICTION.md alone, while the cell had never been executed at any N (frozen artifact status=NOT_RUN, actual_N=0; no smoke test, no partial, no result anywhere). Launched afterwards at 04:13:27Z. Committed blob, on-disk bytes and launch-pinned sha256 are all identical (5e08cfd3…) — no post-commit drift, unlike B4C11. The launch_B4C01_corrected_full.sh launcher now REFUSES to run if the prediction record is uncommitted (exit 7), making D9 structurally unrepeatable for future cells. Flip PENDING → PROSPECTIVE only in the result commit
blocking_or_nonblocking Blocks the PROSPECTIVE label on B4C10, B4C11 and the F-side scoring only. Blocks no verdict and no measurement

D10_NO_MINIMUM_EFFECT_SIZE_GUARD

field value
affected_lane LANE F - verdict interpretation across every CI-bound contrast; LANE D - the F-side scoring readout
unaffected_lanes Every measurement and every interval is correct. No number, seed, threshold, or frozen criterion is wrong. LANE A B3 leaderboard unchanged; LANE B C02/C10 verdicts unchanged (their criteria are fractions/spans, not CI contrasts); LANE C untouched; LANE E no receipt moves
defect_summary The frozen convention decides a contrast solely by whether its paired motor-cluster bootstrap interval excludes 0. It has no practical-significance floor. Because the bootstrap resamples MOTORS, a difference of any magnitude resolves provided its sign is consistent across motors
evidence Contrasting the F-side candidate against frozen M7_HIERARCHICAL_MOTOR: point +2.506984e-07 nats, 95% interval [+1.604451e-07, +3.374688e-07], which excludes 0 and yields RESOLVED_ABOVE. The effect is ~168 000x below the 0.042-nat resolution floor. 16 of 19 per-motor differences positive. The two models are the same model to numerical precision - the F-side hierarchy re-derives M7 via 33-node Gauss-Hermite
why_this_matters Reporting that as "the candidate beats M7" would be truth laundering: a numerically identical model presented as a winner on consistent float noise. It is the failure mode the contract's "predictive superiority is never promoted to mechanism" rule exists to prevent, one level lower down
also_explains The recorded miss in the F-side prediction scorecard (item 6): M5_GAMMA at +0.031 nats resolved despite sitting below the ~0.042 floor. Same mechanism, milder. The floor predicts what is scientifically material, NOT what the bootstrap will call
repair_or_quarantine_action REPAIRED BY ADDED INTERPRETATION, NOT BY RE-THRESHOLDING. The frozen verdict is reported verbatim and unaltered - never softened, suppressed, or re-thresholded. Every contrast now carries scientificReading (MATERIAL / SUB_FLOOR_EFFECT / SCIENTIFICALLY_NULL), a reportableAsAWin flag that is false whenever a resolved verdict sits below the floor, and an explicit WARNING string. No frozen threshold, criterion, seed, or interval was changed
test_added test_minimum_effect_size_guard.py (8 tests). Includes a from-first-principles non-vacuity test reproducing the mechanism on synthetic data (a consistent 1e-7 offset resolves), a counter-test that a genuine 0.20-nat effect still classifies MATERIAL so the guard cannot suppress real findings, and a test forbidding equivalence language on sub-floor intervals
rerun_required No. Every recorded interval is correct as computed; only the accompanying interpretation was missing
gate_impact H-AIF-G7, H-AIF-G9
existing_P_level_impact P0/P1 reporting integrity only. No verdict changes and no scientific level moves. P3 duration-only unchanged. Specifically: the F-side candidate is not credited with beating M7
closure_status CLOSED_BY_ADDED_INTERPRETATION_AND_TESTED_GUARD
next_action Apply scientificReading to any future CI-bound contrast before it is reported as a win. A sub-floor resolved verdict is a precision artifact, not a finding
blocking_or_nonblocking Nonblocking. It blocks a wording - "beats" - not any measurement

D11_FABRICATED_NUMBERS_IN_GENERATED_REPORTS

field value
affected_lane LANE F - report integrity in generated builder-support artifacts
unaffected_lanes Every recorded artifact and every verdict. No result JSON, no frozen record and no CI verdict was affected. Both defects were in PROSE that misquoted a value the underlying artifact recorded correctly. LANE A/B/C/D/E untouched; the running B4C11 and B4C01 cells untouched
defect_summary Two numbers in the builder-support probe pack could not be traced to any artifact, both in reports/POWER-ATLAS-MOTOR-EQUAL-SCORING.md: (1) a Monte-Carlo SE quoted as 0.043 for the worst cross-check cell where the artifact records 0.03952847075210474; (2) a D10-counterfactual mean CI half-width quoted as 0.0790 where the artifact records 0.07996917206325926. The second is the instructive one: 0.0790 is not a rounding of anything in that row - it is the recorded M3 percentile half-width 0.0789979 transplanted from a different table in the same document
why_this_matters A transplanted neighbouring number is the hardest fabrication class to catch by eye: it is real, precise and locally plausible. It is exactly what the contract's never-invent-a-number rule targets, and it survived the authoring agent's own wording-guard run - because that guard checks WORDING and never numeric provenance
detection Caught pre-publication by the adversarial verification lane, briefed to trace every numeric claim to a source and to treat an untraceable number as CRITICAL. Independently re-verified by the orchestrator against power_atlas.json before any correction was applied
repair_or_quarantine_action REPAIRED. Both values corrected to the recorded artifact values, each carrying an inline note naming the error. Four further reporting defects found in the same sweep were corrected with them: an atlas-prediction label set P1..P4 colliding with the frozen P0..P8 ladder inside the same document (renamed A1..A4 with a label note); free-parameter counts that were load-bearing for a hypothesis; a self-contradicting count; and a latent or beatsM3 disjunct that could have set a win flag without consulting the interval
test_added A mechanical guard now exists. src/motor_stack_aif/numeric_provenance_guard (module) + test_numeric_provenance_guard.py (9 tests) + test_report_numbers_trace_to_artifacts.py (6 tests). The guard checks declared provenance: a decimal may be ANCHORED to a file.json#dotted.path (and must match it at display precision), RECOMPUTED by a named script, or explicitly DESIGN_ONLY / NOT_COMPUTED / NOT_MEASURED. The failing class is ANCHORED_MISMATCH — a number that names a source and contradicts it. On mismatch the guard searches every artifact for a field whose value does round to the quoted figure and names it, turning "this number is wrong" into "this number is the value of that field"
test_catches_the_known_defects Both D11 values are covered by tests that fail without the fix. 0.043 (invented — appears in no artifact) and 0.0790 (transplanted — the recorded M3 percentile half-width 0.0789979 pointed at the D10-counterfactual field) are each caught as ANCHORED_MISMATCH. A dedicated non-vacuity test proves the hard case is hard: find_transplant_source confirms 0.0790 does match a real recorded field, so a naive "does this number appear anywhere?" check would have PASSED it. Provenance is about the POINTER, not the digits
scope_stated_honestly This does not make numeric provenance decidable in general, and the guard says so in its own report. UNANCHORED numbers are reported and do not fail, because reports legitimately carry counts, dates and derived arithmetic — a guard that fires on everything is a guard nobody reads. Numeric provenance is also not decidable by a wording guard, which is why the claim-guard wording check passed both values clean. The general control remains an adversarial reader briefed to trace every number
rerun_required No. The underlying power_atlas.json was correct throughout; determinism and input hashes re-verified
gate_impact H-AIF-G9
existing_P_level_impact None. Every verdict, every P-level and every frozen record is unchanged and untouched. P3 duration-only unchanged; P0/P1 receipts unchanged. This is report-integrity provenance only. The artifacts involved are builder-support probes that carry no evidential standing by construction, so no level could move even in principle
closure_status CLOSED_BY_CORRECTION_AND_TESTED_MECHANICAL_GUARD
next_action Run numeric_provenance_guard.py alongside the wording guard after every report batch. Anchor any number a report asserts as a quoted artifact value. Keep the trace-every-number brief mandatory: treat an untraceable number as CRITICAL and a plausible number matching a neighbouring table as the prime suspect. Do not mistake either guard for full numeric coverage
blocking_or_nonblocking Nonblocking

Scoped P-level statements now in force

Replacing the unscoped "P6 weaker" formulation:

  • P6 for C11 U4 — withdrawn until corrected C11 lands.
  • P6 for Wadhwa mark-process mechanism — retrospective-only, transfer-required (D5, D6).
  • P6 for duration-only B3/B4unchanged until corrected B4 results land.
  • P6 for full motor-stack AIF — pending constrained implementation and scoring.
  • P3 duration-only — unchanged; B3 stands.
  • P2 mark fields — limited (D6). P2 duration fields unchanged.

Closure summary

status defects
CLOSED D1, D2, D3, D4, D8, D10, D11
CLOSING (forward-discipline only, no rerun owed) D7
CLOSING (D12 containment: guard + redaction + round-trip-verified successor archive; incident stays NEGATIVE, transmission principal-gated) D12
QUARANTINED (bounded, needs external data or not retroactively repairable) D5, D6, D9
OPEN (none — the last open defect closed when its corrected run landed)

All twelve defects are routed. Seven are CLOSED (D1, D2, D3, D4, D8, D10, D11); two are CLOSING (D7 forward-discipline with no rerun owed; D12 containment — guard + redaction + round-trip-verified successor archive, with the incident permanently NEGATIVE and transmission principal-gated); three are QUARANTINED with an explicit external route (D5/D6 need independent data; D9 is not retroactively repairable and is quarantined by relabelling). Zero OPEN. All four corrected B4 cells have landed at full frozen N.

Run-state as of 2026-07-22T01:40Z

defect blocking run state
D1 B4C11 corrected full N_boot = 2000 LANDED 2026-07-22T22:47:14Z — 564a5b0f…, 2000/2000, 0 failed, U4_OK (collapse 0.0055), 21.12 h at 38.01 s/replicate. D1 CLOSED_BY_CORRECTED_RERUN
D2 B4C02, B4C10, B4C01 ALL THREE LANDED. B4C10 959a00e9… (8372.7 s); B4C02 0633988d… (8.17 h); B4C01 8256cb12… (16.83 h). B4C11 still running
D3 CLOSED both affected cells completed on the corrected harness: B4C02 and B4C01, 0 failures each

D2 note, measured not asserted: every cost re-measured so far has come in below the figure that justified a partial run — C10 at 2.3 h measured, and C11 projecting ≈14 h against a recorded 20.1 h estimate. The pattern that produced D2 keeps reproducing, which is why the C11 harness now records secondsPerReplicate in its own result.


D12_DISTRIBUTABLE_MARK_IDENTITY_LEAK

field value
affected_lane LANE C (mark process) — distributable documents only; LANE F (governance/reporting)
unaffected_lanes LANE A/B (duration-only evidence never touched); LANE D/E (motor-stack AIF, parity ladder — no P-level moves)
defect_summary Real event-level identifiers, an associated real motor identifier, and record-shaped held-out mark tuples (found by D6) survived in distributable surfaces beyond the external D5 safety review's own JSON/JSONL/Markdown-scoped scan, which missed a .py test fixture entirely. Found via external review; independently reproduced by the new d5_distribution_guard (16 findings, 3 files, pre-redaction).
repair_or_quarantine_action REPAIRED (redaction sub-step only). 4 distributable surfaces redacted to "below-physical-minimum target-state marks" wording, preserving the scientific finding while removing event/motor identifiers and row-level tuples: reports/D6-INGEST-NEXTSTATE-RANGE-CHECK-DEFECT.md, protocols/MARK-PROCESS-TRANSFER-RESCUE-PROTOCOL.md, ledgers/HIERARCHICAL-AIF-DEFECT-LEDGER.md, reports/ULTRACODE-TRACK-D-VERIFICATION.md (found by package-stage scan, not in the original 4 named surfaces). tests/motor_stack_aif/test_nextstate_range_check.py explicitly NOT redacted (functional regression fixture; must be excluded from distribution packages, not textually altered — see reports/D12-INCIDENT-CONTAINMENT-REPORT.md §2). Frozen results, audits/phase-b/**, and the raw/served datasets explicitly NOT touched — see report §3.
test_added test_d5_distribution_guard.py (12 tests, all synthetic fixtures — no real identifier used); includes a permanent regression gate (test_named_d12_surfaces_are_clean_after_redaction) that fails if any of the 3 redacted .md surfaces regresses
rerun_required N/A — documentation/prose defect, not a computational result
gate_impact new gate, D5-lineage; H-AIF-G2 (correction record)
existing_P_level_impact NONE — no P-level moves; this is containment only, not science, and the P0..P8 ladder is unchanged. Per authorization: "Effect on P-levels: NONE."
closure_status CLOSING_BY_CONTAINMENT_REMEDIATION — guard built, 4 distributable surfaces redacted, successor archive round-trip-verified (see reports/D12-SUCCESSOR-ARCHIVE-RECEIPT.md). Incident state NEGATIVE and permanent — never CLOSED_BY_REDACTION; it does not clear when the remediation gate reaches PASS. Historical archive UNI-FLAGELLUM-haif-closure-e21747c.zip WITHDRAWN_D5_UNSAFE (sha256 7b28f0d6…41b2). Transmission principal-gated; prior distribution cannot be recalled.
next_action Build d5_distribution_guard-verified successor archive (staging → scan → manifest → archive → unpack → rescan → recompute hash → confirm no withdrawn blobs/bundle → sanitized ancestry receipt) before the remediation gate can reach PASS. Transmission of the withdrawal notice remains principal-gated.
blocking_or_nonblocking Non-blocking for in-repo push of the redacted HEAD; blocking for any future external distribution package until the successor archive passes the round-trip.

D12 note. e21747c and all commits before this repair keep the original, unredacted content in git history — this is deliberate and authorized ("preserve e21747c... unchanged in the authoritative audit history"; no amend, rebase, or force-push). D12 redacts the current working tree going forward; it does not and cannot retroactively scrub history. The NEGATIVE incident state accounts for exactly that residual.

sha256 1e593f062a18f4b9 — of the original file, so what was ingested stays checkable.