diff --git a/docs/agents/RETRO-2026-08-31.md b/docs/agents/RETRO-2026-08-31.md index c63b951a..29e02ba6 100644 --- a/docs/agents/RETRO-2026-08-31.md +++ b/docs/agents/RETRO-2026-08-31.md @@ -262,6 +262,34 @@ point: it was run because it could have gone the other way. --- +## 7b. An error path that fired on SUCCESS — found while implementing §6 + +Recorded here rather than left in a commit message, because §5's own rule (D4) +says the file carries the finding and the message carries the delta. + +Implementing the `BLOCKED.md` pointer to **R11** — *a cross-agent pointer must +fail loudly when it goes stale* — I wrote the obvious form: + +```bash +git show "$REF:$FILE" || { echo "the file is missing"; exit 4; } +``` + +Piping that into `head` closes the pipe, `git show` dies of **SIGPIPE**, the +fallback fires, and the script prints *"the file is missing"* for a file it had +just printed **in full**. + +**An error path that fires on success is worth no more than one that never +fires.** It is the same family as the port's material defaulting to `MIX` and my +vertex cap: the run completes, the output parses, and the answer is wrong. Both of +those took an outside observer to catch. This one did not — it was caught inside +one command, because I exercised **all four paths instead of the happy one**. + +That is the cheap version of R3, and it is the version to reach for: a script with +three failure branches has three tests, and they cost one line each. + +Fixed with `git cat-file -e` for existence and `exec git show` for content +([`peer_asks.sh`](../../tools/re-capture/peer_asks.sh)). + ## 8. Proposed `PROTOCOL.md` delta — **not applied** Presented for the human, and for the port to disagree with: