--- name: red-verify-without-stash description: "Prove a regression test is red-capable against pre-fix code in a shared worktree where git stash/checkout are policy-blocked, via git-show blob swap with md5-verified restore." --- # Red-verifying tests without `git stash` ## When You fixed a file and added tests that should have failed before the fix, but workspace policy blocks `git stash` (and `git checkout -- file`) in shared worktrees (e.g. `~/.omp` shared-workspace policy). Needed to prove red-capture instead of asserting it. ## Recipe One `bash` call — swap the fixed file for the HEAD (pre-fix) blob, run only the fix-relevant tests, restore, verify byte-identity: ```bash cd "$WT" md5sum path/to/fixed.file > /tmp/file-hash cp path/to/fixed.file /tmp/fixed.file.bak git show HEAD:path/to/fixed.file > path/to/fixed.file # pre-fix content; new tests now exercise old code bats -f "test name A|test name B" tests/suite.bats # expect: not ok for every fix-relevant test cp /tmp/fixed.file.bak path/to/fixed.file md5sum -c /tmp/file-hash && echo RESTORED ``` ## Notes - `git show HEAD:path > path` truncates-and-refills the file in place; safe because you hold the md5 and a backup copy, and the restore check proves the fixed bytes are back. - Run only the fix-relevant tests via the runner's name filter (`bats -f` regex); a full suite wastes time and old tests pass on both versions. - Expect exactly the tests that pin the fix's behavior to fail pre-fix; tests unrelated to the change (pure coverage of old behavior) pass on both versions — don't count them as red evidence. - `bats` pipelines mask exit codes without `pipefail`; judge by the `ok`/`not ok` lines, not the shell status. - For non-test proof of endpoint behavior (live A/B of an HTTP request body), replay the exact body with `curl` against the live endpoint instead of speculating; keep both timings.