forked from heavy-duty/rig
The #43 sweep (test/cli.sh:705) matched the literal `-rsp` spelling and scanned commands/ only. #68 was a plain `read -r reply` in bin/rig, so it missed on BOTH axes — the spelling and the path — and the bug survived until a drill hit it. The class is the shape, not the flags: any `read` run as a plain statement under `set -euo pipefail` kills the shell at EOF, before the `case` that would have printed the abort. The failure is silent and exits 1, which is also what a normal refusal exits, so an exit-code assertion passes against it. The new sweep anchors `read` at the start of a statement across bin/ and commands/, whatever its flags or arity, and subtracts only the two shapes that are safe by construction: a `||` guard (the cure itself) and a `<<<` here-string (which cannot return non-zero). `while`/`if ! ` heads need no subtraction — the anchor already excludes them. Guard against reintroduction, not a live fix: the tree is clean once #68's one-token fix lands. Mutation-verified — a bare `read -r foo` planted in bin/rig gives 404 passed, 1 failed, and the old #43 sweep stays green on the same tree, which is precisely the gap being closed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| cli.sh | ||
| db-integration.sh | ||
| labels-reconcile.sh | ||
| release.sh | ||