a73x

0c661a36

fix: the vacuous-green guard reads any capture, not daemon one's

a73x   2026-08-26 19:29

Commit message
fix: the vacuous-green guard reads any capture, not daemon one's

leak_sweep refused a green run that had nothing to read, and asked
$OUT.d1.d — a file only the group that spawns the long-lived daemon
creates. Every other group run under E2E_ONLY therefore passed its
scenarios and then failed the sweep, which is a gate reporting on a
fixture instead of on the run in front of it. It now asks whether ANY
capture exists, which is what the guard always meant.

Found by running each group alone, which is what E2E_ONLY is for.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

test/e2e_lib.sh
Old New
@@ -874,10 +874,13 @@ rm_swept() {
874 # and decides one thing: what an empty sweep means. 874 # and decides one thing: what an empty sweep means.
875 # 875 #
876 # On a green run, nothing to read is a failure — the vacuous-green guard this 876 # On a green run, nothing to read is a failure — the vacuous-green guard this
877 # gate has always had. $OUT.d1.d is created when daemon one is spawned and 877 # gate has always had. Every capture is spelled from $OUT and lives until
878 # lives until this trap, and the bank exists once a verdict has been banked 878 # this trap, and the bank exists once a verdict has been banked out of a
879 # out of a deleted capture, so neither being there means the capture 879 # deleted capture, so neither being there means the capture convention broke
880 # convention broke and this gate is reading nothing. On a run that is ALREADY 880 # and this gate is reading nothing. Any capture, not one named leg's: keying
881 # this on $OUT.d1.d failed every E2E_ONLY group but the one that spawns
882 # daemon one, which is a gate reporting on a fixture rather than on the run
883 # in front of it. On a run that is ALREADY
881 # failing, the same emptiness means something else entirely: an early exit, 884 # failing, the same emptiness means something else entirely: an early exit,
882 # before the first daemon ever existed. That is not a second defect, and 885 # before the first daemon ever existed. That is not a second defect, and
883 # reporting it as one would stack a fabricated failure on top of the real 886 # reporting it as one would stack a fabricated failure on top of the real
@@ -888,7 +891,11 @@ rm_swept() {
888 leak_sweep() { 891 leak_sweep() {
889 _lsrc="$1" 892 _lsrc="$1"
890 _lsbad=0 893 _lsbad=0
891 if [ ! -e "$OUT.d1.d" ] && [ ! -e "$LEAKBANK" ]; then 894 _lsany=""
895 for _lsf in "$OUT" "$OUT".*; do
896 if [ -f "$_lsf" ]; then _lsany=1; break; fi
897 done
898 if [ -z "$_lsany" ] && [ ! -e "$LEAKBANK" ]; then
892 if [ "$_lsrc" -eq 0 ]; then 899 if [ "$_lsrc" -eq 0 ]; then
893 echo "e2e FAIL: leak sweep found no captures to read" 900 echo "e2e FAIL: leak sweep found no captures to read"
894 return 1 901 return 1