Skip to content

guard_tree.sh: vacuous PASS — lost scratch dir → '0 checks, 0 failed', exit 0; make gate green on nothing #4108

Closed

Description

@noahgift

Measured on lambda, 2026-09-23 (while running make gate for #4107, branch feat/ont-4c5-capability-cells): two make gate runs started at the same time, one on the branch worktree and one on a detached worktree of 6db770d2f. In both, scripts/guard_tree.sh lost its mktemp -d scratch directory mid-run. The log shows 22 lines like guard_tree.sh: line 280: /tmp/tmp.692dO8zpps/68.rows: No such file or directory and line 614: /tmp/tmp.692dO8zpps/plan: No such file or directory. The script then printed:

dispatch: up to 8 guard(s) at a time (GUARD_TREE_JOBS)
0 guard(s) skipped
0 checks, 0 failed

and exited 0, so make gate exited 0 (the gate-reduce receipt recorded "exit":0). The same branch run alone minutes later executed 122 checks, 6 failed, exit 2. So a run that executed nothing reported a pass. This is the vacuity shape "a gate that nothing reaches": zero executed is not green.

Not diagnosed yet: what removed the directory (a concurrent run's cleanup, or a guard that sweeps /tmp/tmp.*). That matters, but the gate must not pass whatever the cause.

Do: guard_tree.sh exits non-zero when it executed 0 checks, or fewer checks than the worklist it planned, naming both numbers. It must also fail on any lost scratch file rather than continuing.

Must-RED: a case-table row that runs guard_tree against an empty or vanished worklist (or deletes its scratch dir mid-run) and expects a non-zero exit with a named reason. The mutant that removes the new check turns the row RED.

Evidence (lambda runtime dir): $XDG_RUNTIME_DIR/paiml-implement/agy/PMAT-3972/45be20e8-…/ph5/run-2-vacuous/gate-ph5.{log,json}.

Activity

  1. added this to the 0.70.0 milestone on Sep 23, 2026
  2. added
    kind:codeWork is a code change (derived rule, #4159)
    on Sep 24, 2026
  3. modified the milestones: 0.70.0, backlog on Sep 24, 2026
  4. added a commit that references this issue on Sep 25, 2026
  5. noahgift commented on Oct 12, 2026

    @noahgift
    MemberAuthor

    evidence for close: #4655 / 989cb01 (on main), how checked:

  6. noahgift commented on Oct 12, 2026

    @noahgift
    MemberAuthor

    Cop batch close (FLOW-004 drain, ≤43/d): fix verified on main — merged #4655 ; ancestor of origin/main: 989cb01 . Evidence: #4108 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P0Critical prioritykind:codeWork is a code change (derived rule, #4159)owner:aprender-a7owner sessionsize:MK̂ 3-4 h

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions