diff --git a/claude/memory/skill-harvest-register.md b/claude/memory/skill-harvest-register.md index fa66f4c..e7887c7 100644 --- a/claude/memory/skill-harvest-register.md +++ b/claude/memory/skill-harvest-register.md @@ -536,3 +536,15 @@ Proposal: §7.5 derives its shape list from `SKELETON` (or names it as the singl enumerating). ⚠ **Derive from the CONSUMER, not the survivor** — the consumer here is the wrap step finalising a note the hook already created, so `SKELETON` is the natural source. **Classification: `[PROPOSAL]`** — borderline; the FIX lane says propose when in doubt. + +--- + +## Appended 2026-08-25 + +| # | proposal | firing moment (declared) | status | stroke | pointer | +|---|---|---|---|---|---| +| 155 | **A control's fixture must not name a file the session is editing** | ⚠ **Fires at the moment a control is written — a condition the executor must first NOTICE.** Per the routing table this is the weakest class. A mechanical detector IS available and is the honest routing: a check that no control fixture path appears in `git status --porcelain`. **Filed as a detector proposal, not a discipline entry.** If built as a detector it fires always; if left as a remembered rule, **estimated retrieval ~10%, recorded here as the routing table requires.** | PROPOSED | — | this session; earned when the `file-changed-since` negative control pointed at `FOOL-SEED-RULE.md`, which the same session then edited, and the drift-check reported ITSELF unverified | + +⚠ **Why this is filed as a detector rather than a ladder entry.** The verification ladder is **FROZEN** under REVIEWED-123 and takes no additions from any source until the trial is graded, so it could not go there regardless. But the freeze is not the reason: even unfrozen, this is a rule that fires only if someone remembers it while writing a control, and the measured retrieval for that class is ~10%. The failure it prevents was caught **by the controls running on every invocation**, not by anyone recalling a rule — which is itself the argument for routing it to a detector. + +⚠ **Honest limit on the detector, stated before it is built:** it catches a fixture naming a file *currently dirty*. It would NOT have caught today's case at the moment the control was written, because `FOOL-SEED-RULE.md` was clean then and dirtied minutes later. The detector's real firing moment is **the drift-check run**, where it would flag "this control's fixture is now dirty" — a warning, not a block. **Filed with that limit on its face rather than discovered after building.**