Files
BFM-decomp/cookbook/C0418.md
T

1.4 KiB

§377 — THREE HARNESS DEFECTS FOUND IN ONE GATING SESSION, ALL "A CONFIDENT NUMBER ABOUT A SMALLER WORLD" (P31 S69)

  1. gater_lane's ledger arm is the draft's PARENT-DIRECTORY BASENAME. Re-staging the same (binary, fn) under a different root with the same directory name reads as already-gated: 28 of 28 drafts skipped, exit 0, no gate ran. The arm must be explicit or the full relative path — a basename is not a key (R48).
  2. pgrep -c returned a FALSE ZERO twice for a process pgrep -af listed seconds later. Acting on it, I removed a live run's worktrees and started a second concurrent gate. Never trust a pgrep COUNT; read the rows. Filter the rows too: the naive -af pattern counted 34 "gate processes" on a tree running 2, because the harness's own bash -c wrapper carries the pattern in its argv — a guard that can never pass is as bad as one that never fires (R54).
  3. A live gate makes the stub oracle transiently wrong in BOTH directions. A second gate read ov_SC01_004:func_8017EB30 as already-banked from the first gate's working tree, then the first gate was killed mid-merge and the bank was lost — leaving a phantom banked-elsewhere ledger entry on a function that is still an INCLUDE_ASM stub. Classify only on a quiescent tree (triage_ladder.py refuses otherwise), and never blind-kill a merging gate (R42).