Skip to content

feat(frontier): --watch skips a spec whose four gen hashes did not change - #10247

Merged
gHashTag merged 1 commit into
masterfrom
claude/10237-watch-skip-same-gen
Oct 18, 2026
Merged

gHashTag merged 1 commit into
masterfrom
claude/10237-watch-skip-same-gen

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Closes #10237

Epic #8095 (hot reload), ledger #8737. Second step of the change-only inner loop.

What changes

  • specs/verified/watch.t27 gains watch_skip(recorded, computable, same_gen) (2 new tests incl. a negative control, 1 new invariant; 5 tests + 2 invariants in all, 0 vacuous). A spec whose closure digest moved is skipped only when its four gen hashes (Zig, Verilog, C, Rust) were recorded, are computable now, and are unchanged. No recorded or no computable gen hashes means a rerun: fail open to a rerun, never to silence.
  • run_frontier supplies the three booleans from gen_cached, the cache the digest already keys. It records the four gen hashes of every spec at the first look and of each spec after its rerun. A skipped spec still has its digest recorded, so the next look does not see it as changed again.
  • Hand-written Rust: +4 / -4 in bootstrap/src/service.rs (every edit is folded into an existing line). bootstrap/src/test_report.rs is untouched.
  • Regenerated bootstrap/gen/rust/verified/watch.rs and resealed .trinity/seals/verified_VerifiedWatch.json.

Checked on the Railway lab

  • t27c test-report specs/verified/watch.t27: 5 of 5 pass, 0 vacuous.
  • frontier --list before vs after the reseal differs only in 1 specs/verified/watch.t27 (now REUSE) and the matching totals; no other line moves.
  • frontier --watch, appending a comment word to a header line of watch.t27: silent for 12 s. Changing return digest_changed; to return digest_changed == true;: ok specs/verified/watch.t27: 5 of 5 pass printed.

🤖 Generated with Claude Code

…ange (Closes #10237)

The watch loop reran every spec whose closure digest moved, and the digest
hashes source text: a comment or a blank line moves it while the Zig, Verilog,
C and Rust outputs stay byte-identical, so the rerun (about 2 s) could not
change the verdict.

specs/verified/watch.t27 gains watch_skip(recorded, computable, same_gen), with
tests and a negative control: a spec with no recorded or no computable gen
hashes is rerun (fail open to a rerun, never to silence). The loop records each
spec's four gen hashes (gen_cached, the cache the digest already keys) at the
first look and after every rerun, and supplies the three booleans. A skipped
spec still has its digest recorded, so the next look does not see it as changed
again. The hand-written Rust is net zero lines (4 added, 4 deleted).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-18 05:42:00 UTC

Summary

Status Count
Total Open PRs 50
PRs with Failing Checks 47
PRs with All Checks Green 3
READY 0
FAILING 47
PENDING 0
NO CHECKS YET 0

These columns do not partition: 0 + 47 + 0 + 0 = 47, and there are 50 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=0f8c66b9ed0e != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

frontier --watch: skip the rerun when the four gen hashes did not change (#8095 hot reload, step 2)

1 participant