Commit Graph

1 Commits

Author SHA1 Message Date
Drew T fe399b4550 feat(phase-30 S45p7): Stage 2 — verify_worktree, a COMMIT-COMPLETENESS checker (not a concurrency device)
tools/verify_worktree.py: check a commit out into its own git worktree, provision the
untracked build deps (cc1 from the COMMITTED tarball, checksum-verified against the
COMMITTED record; .venv + extracted/ symlinked; maspsx submodule at the expected pin),
run make extract-all && check-all there, write .run/verify/<sha>.json with verdict +
toolchain provenance.

RESULTS
  GREEN at HEAD: 213 passed / 0 failed, 86.6s wall.
  NEGATIVE CONTROL PASSES: a throwaway commit splicing a deliberately corrupted body over
  func_8014CBE8 went RED naming exactly ov_SC02_037 (212/1 of 213). The detector fires, so
  its green means something (R35 — an unproven detector's green is not evidence).

TWO DESIGN CLAIMS CORRECTED BY CONTACT WITH REALITY
  1. Sparse checkout (to save ~1GB of ghidra/) was proposed, and would have owed an R34
     sparse-vs-full validation. Measured free space: 941 GB. Full checkout instead —
     simpler AND strictly more trustworthy; the validation obligation disappears.
  2. "A pristine checkout of exactly C's tracked content rebuilds byte-identical" is NOT
     ACHIEVABLE here. Only 3 files under extracted/ are tracked; the 760MB of ROM payloads
     are gitignored, so a pristine checkout extracts NOTHING (first honest run: 212/212
     FAIL). No commit in this repo is self-sufficient, by design. The honest claim is
     "the commit's TRACKED SOURCE, built against a supplied extraction" — corrected in the
     docstring AND in the emitted `licenses` string, which is what actually gets quoted.

SCOPE, REFRAMED (Drew's challenge, and he was right)
  I sold this partly on concurrency. At 86.6s, serializing R22 costs almost nothing, so the
  concurrency argument is WEAK. What it actually buys is commit-completeness: the worktree's
  src/ holds only committed content, so a source file someone forgot to `git add` fails BY
  CONSTRUCTION — the documented "a clone of such a bank commit failed to build" class.
  => Run it at checkpoints and before pushing, NOT every batch. Plain in-tree check-all is
     fine for routine verification.
  => The wave-vs-`make clean` blocker that started all this was already solved, more simply,
     by tools/wave_snapshot.py. Neither the worktree nor path-parameterizing was needed for it.
  => STAGE 5 (verify coalescing / auto-bisect) IS CANCELLED: it existed to handle verify
     lagging commits, which cannot happen at 87 seconds.
2026-08-07 19:06:15 -06:00