From f8b65463ab95d555b23c57e9ff19f9343ff88c6a Mon Sep 17 00:00:00 2001 From: mos-dt-0 Date: Fri, 31 Jul 2026 17:25:56 -0500 Subject: [PATCH] =?UTF-8?q?docs(remediation):=20bank=20D-8=20=E2=80=94=20a?= =?UTF-8?q?=20pre-registered=20check=20that=20was=20not=20runnable=20as=20?= =?UTF-8?q?written?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #1025's AC2 fixture (mkdir -p apps/*/venv/lib) does not do what it claims when the glob is unmatched. rev-974 ran it exactly as written, caught the defect, re-ran the intended assertion at an explicit path, and DISCLOSED the substitution rather than silently reporting PASS. Pre-registration protects a check from being retrofitted to the implementation. It does not make the check correct. An unverified gate appeared inside the mechanism built to catch unverified gates. Requirement added to RM-02: the registry must self-verify that every registered case actually runs and can actually fail — presence in the registry is not evidence. Co-Authored-By: Claude Opus 5 (1M context) --- docs/remediation/TASKS.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/docs/remediation/TASKS.md b/docs/remediation/TASKS.md index c382c4bc..4b9a4ca6 100644 --- a/docs/remediation/TASKS.md +++ b/docs/remediation/TASKS.md @@ -93,6 +93,32 @@ and must not be cited as merge evidence. Rely on reviewer clearance + real CI. Three independent live instances in a single session — format gate, agent context reset, queue guard — is the class confirmed, not anecdote. +### D-8 — a PRE-REGISTERED acceptance check that was not runnable as written + +On PR #1025 the author (me) pre-registered AC2 with the fixture snippet `mkdir -p apps/*/venv/lib`. +In bash, when no `venv` exists the glob is unmatched and passes through literally, creating a +directory named `apps/*/venv/lib` rather than one per workspace. The check as written did not test +what it claimed to test. + +`rev-974` ran it **exactly as written**, observed the wrong behaviour, then re-ran the intended +assertion at an explicit path — **and said so in the review** rather than silently substituting a +working fixture and reporting PASS. + +Two things this establishes: + +1. **The instruction "do not adjust a check to fit the diff; if it is unrunnable, say so explicitly" + worked.** A silent substitution here would have produced a green AC2 that proved nothing, on the + exact task whose subject is gates that appear to work. The disclosure is what made the PASS + meaningful. +2. **Pre-registration does not confer correctness.** A pre-registered check is protected from being + retrofitted to the implementation; it is not protected from being _wrong when written_. This is a + small instance of the mission's own class — an unverified gate — occurring inside the mechanism + built to catch unverified gates. + +**Requirement on RM-02:** the gate registry must itself be exercised. A registered case that cannot +fail (or cannot run) is as inert as an unregistered one, and the registry check must detect that — +`--dry-run`-style self-verification of every registered case, not merely its presence. + ### D-7 — shared-tmpfs contention → cascading ENOSPC (live incident, 2026-07-31) The shared 30 G `/tmp` hit **100% ENOSPC** mid-session. It broke tool calls in **two different seats**