diff --git a/docs/remediation/TASKS.md b/docs/remediation/TASKS.md index 4a8d2d58..aa4a0ca5 100644 --- a/docs/remediation/TASKS.md +++ b/docs/remediation/TASKS.md @@ -179,6 +179,46 @@ outage and defers the degraded path to "later", which in this codebase means **a under incident pressure**. Three such bypasses are already on the books; do not create the conditions for a fourth. +### D-29 — the registry's own coverage clause was SYNTACTIC, not semantic + +`rev-974` blocked PR #1030 with a finding that lands in the keystone's own enforcement: + +> It **moved** `RM02-MEANING-PROVENANCE` and `RM02-PROSE-CONTROL` from the stale-build-lock case to an +> **unrelated type-error case**, reformatted the manifest, and **`pnpm gate:verify` still exited 0.** + +So the registry verifies that a criterion **has a binding**, not that the bound case **can fail for that +criterion's stated reason**. That is exactly what **RM02-REQ-03 (clause 2, from D-17)** requires, and it +is not satisfied — `gates/gates.manifest.json:471-488` + `scripts/gate-verify.mjs:410-417`. + +**The keystone reproduced the defect it was built to eliminate, in its own coverage check.** D-17 said a +green suite can leave a criterion untested; here the tool that enforces that clause enforces only its +_syntax_. A binding that can be pointed anywhere without complaint is a binding that proves nothing — +**D-24's "true answer to a different question" wearing a manifest.** + +Caught only because the reviewer **mutated the binding and re-ran**, rather than reading the manifest and +confirming the entries existed. Inspection would have passed it. + +### D-30 — the orchestrator fed a reviewer a false comparator supporting its own conclusion + +In the review brief for #1030 I stated the `ci-postgres` FAIL had "appeared under overall-success on +**#2167**/#2170/#2175". `rev-974` refuted it: **#2167's `ci-postgres` step is `OK`.** Verified — +#2158 `OK`, **#2167 `OK`**, #2170 `FAIL`, #2175 `FAIL`, #2182 `FAIL`. + +**My own banked D-21 says so explicitly:** _"Observed on #2170 and #2175 (**not on #2158, #2167**, or the +manual #2171)."_ I contradicted my own written record — because I **restated it from memory instead of +reading it.** That is **D-26 recurring**, committed by the orchestrator, in a reviewer brief, hours after +promoting render-not-restate to the charter. + +**The specific harm is worse than the inaccuracy.** I supplied a reviewer with **fabricated supporting +evidence for my own reading**, in a brief that also asked it to accept my `ci-postgres` interpretation. +Had it deferred, the false comparator would have propagated into the review record and strengthened a +conclusion it never supported. It refuted me instead — which is the query-for-refutation rule paying for +itself in the same document that introduced it. + +**Requirement.** A brief that supplies evidence must **cite it from the record, not from recall** — +findings are quoted with their identifier, not paraphrased. RM-02 registers it: where a document cites a +finding, the citation must match the banked text, with a must-fail control on divergence. + ### D-28 — a swallowed diagnostic destroyed the evidence a fail-closed check needed RM-02's CI run failed on four `scripts/gate-history.test.mjs` sandbox tests. **The fail-closed logic