Skip to content

specs: reseal depin/prove and sandbox/session_timeout after #6954 and #6820 (Closes #7356) - #7360

Merged
gHashTag merged 1 commit into
masterfrom
fix/reseal-prove-session-timeout
Oct 7, 2026
Merged

gHashTag merged 1 commit into
masterfrom
fix/reseal-prove-session-timeout

Conversation

@gHashTag

@gHashTag gHashTag commented Oct 7, 2026

Copy link
Copy Markdown
Owner

Closes #7356

Why

#6954 (specs/depin/prove.t27) and #6820 (specs/sandbox/session_timeout.t27) merged without a reseal, so spec-guards' seal currency check fails on every PR.

What

Evidence (Railway t27c lab, master 223c28c)

  • Scratch spec with pack_gf16_matrix: original tests do not compile; rewritten tests 3/3 pass; mutant without << 4 fails 2 of 3.
  • t27c seal --verify: all hashes MATCH for both specs.
  • check_seal_currency.py and check_seal_coverage.py: neither lists these two specs any more.

Not in this PR

Both checks still fail on other seals left stale by the same 07:24-07:28Z merge wave: knowledge_graph (#6872), prims_mst (#6876), graph_bfs (#7065), formats_catalog (#6930), pipeline/workflow gen-drift (#6800).

🤖 Generated with Claude Code

…6820 (Closes #7356)

Both specs changed on master without a reseal, so spec-guards' seal
currency check failed on every PR.

session_timeout: tests now run and pass 6/6. Resealed as is.

prove: the tests #6954 added used `return false` in a test body (does not
compile) and expected 0x11 at packed[j*8] for the identity matrix, where
row j's diagonal nibble is at byte j*8 + j/2. Rewritten as asserts with a
nibble-order test; measured on the t27c lab in a scratch spec: 3/3 pass,
a mutant without `<< 4` fails 2 of 3. The spec's tests stay BLOCKED on the
unresolved TriSha256 import and the seal records that.

Resealed on the Railway t27c lab at 223c28c; seal --verify: all MATCH.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@gHashTag
gHashTag enabled auto-merge (squash) October 7, 2026 08:07
@gHashTag
gHashTag merged commit 0c63773 into master Oct 7, 2026
21 of 28 checks passed
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-07 08:09:18 UTC

Summary

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

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=1aa228450491 != 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).

@gHashTag

gHashTag commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

Follow-up status (t27c lab, master cd6708d + #7386):

🤖 Generated with Claude Code

gHashTag added a commit that referenced this pull request Oct 7, 2026
…counter (Refs #7307)

After the second master merge (#7374, #7360, #7365), these three specs'
gen-c differs under this branch's compiler only by `for (int ` ->
`for (size_t `, so the Railway t27c lab resealed them (6 files with twins).

Lab check on the merge tree f4edb20 vs master fe1c866:
- gen-c corpus: 132 of 1538 specs change, all counter-type only; no exit-code change
- seal-currency stale list after reseal = master's 13 (all ledgered in tools/seal_baseline.txt)

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

gHashTag commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

Correction to the status above. html/xml were reverted from #7386 because they share 11 helper bodies and turn duplicate-bodies red; that is tracked in #7438.

Final state, checked on the Railway t27c lab with #7386 applied to master fe1c866:

What changed:

CI on #7386: spec-guards is still queued behind the Actions backlog (200+ queued runs). Auto-merge is on.

gHashTag added a commit that referenced this pull request Oct 8, 2026
…se (Closes #7307, Closes #7308) (#7331)

* fix(t27c gen-c): size_t range counter, refuse an integer switch without else (Closes #7307, Closes #7308)

#7307: gen-c declared a range `for` counter as `int`. A range capture is a
`usize`, so the counter is now `size_t`; past INT_MAX the old counter
overflowed and a start bound above INT_MAX ran the loop zero times.

#7308: an integer switch with no `else` (or `_`) arm compiled to a C
conditional chain ending in `: 0`, so an unmatched value yielded 0 where
Zig refuses the program. compile_c now refuses it with
"non-exhaustive switch". Enum switches are unchanged.

Repros: specs/compiler/genc_for_counter.t27,
specs/compiler/genc_switch_exhaustive.t27, driven by
bootstrap/tests/genc_for_counter.rs and genc_switch_exhaustive.rs.

Part of #5980

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

* seals: reseal the 99 specs whose gen-c moved from `int` to `size_t` counters (Refs #7307)

Every changed gen_hash_c was checked on the t27c lab: for each spec, the
master compiler's C with `for (int ` replaced by `for (size_t ` is
byte-identical to the fixed compiler's C. No zig, rust or verilog hash
moved. specs/isa/ternary_shift.t27 was already sealed with --force and
the same two failing tests; it is resealed the same way.

The inclusive-range test expects `(n + 1)`, which is how gen-c renders
the lowered bound.

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

* seals: reseal the 8 specs the merge left stale under the size_t counter (Refs #7307)

The master merge took master's side for 18 conflicting seal files. Under
this branch's compiler, 8 of those specs (16 files with their twins)
produce different gen-c, so the Railway t27c lab resealed them:
constants, phi_split_optimality, gf8, gf12, gf20, gf24, gf32, phi_ratio.
TriTopological's master seal already matches.

Lab check on the merge tree (6ae177d) vs master e45ba56:
- gen-c corpus: 132 of 1527 specs change, all only `for (int ` -> `for (size_t `; no exit-code change
- seal-currency stale list after reseal = master's 18, identical

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

* seals: reseal knowledge_graph, graph_bfs, prims_mst under the size_t counter (Refs #7307)

After the second master merge (#7374, #7360, #7365), these three specs'
gen-c differs under this branch's compiler only by `for (int ` ->
`for (size_t `, so the Railway t27c lab resealed them (6 files with twins).

Lab check on the merge tree f4edb20 vs master fe1c866:
- gen-c corpus: 132 of 1538 specs change, all counter-type only; no exit-code change
- seal-currency stale list after reseal = master's 13 (all ledgered in tools/seal_baseline.txt)

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

* t27c gen-c: fit #7331 into the foreign-line budget; its tests become t27 data

Owner rule #7371 caps hand-written foreign additions at 40 lines per file
and 80 per PR. This PR was +64 in compiler.rs and +237 in two new Rust
integration tests, so the own-language budget denied it.

- compiler.rs: same two fixes, +39. The size_t comments shrink to one
  line, and the #7308 check builds one label list instead of two. The
  behaviour is unchanged: an integer switch (number, negative or char
  label) with no `else` or `_` arm is refused, and enum-literal switches
  are left alone.
- The two Rust test files and their specs/compiler repro specs are gone.
  The same checks are now .t27 data run by the existing core_selfhost
  harness: fixtures/core_selfhost/genc/ is built by gen-c and its tests
  are run (for_counter: counts past INT_MAX; switch_exhaustive: else, `_`,
  enum switches), and fixtures/core_selfhost/both_refuse/ joins
  BOTH_REFUSE (the issue repro, negative and char labels). The harness
  hook is a few lines in core_selfhost.rs.
- The foreign-exceptions entries for the deleted tests are removed.

Refs #7307, #7308

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

* fixtures(core_selfhost/genc): build no `_` arm; gen-c writes `(x == _)` for it

The runnable switch fixture had a `_ =>` arm. gen-c still lowers that arm
to `(x == _)`, which C cannot compile -- the known defect owned by the
gen-c defects lane, out of scope here. The old Rust test only checked
that gen-c accepts the arm; the corpus spec
specs/demos/jones_topology_decision_gate.t27 keeps that covered, since
its three numeric switches end in `_ =>` and still generate.

Refs #7308

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

* seals: reseal the 10 specs the third master merge left stale under the size_t counter (Refs #7307)

After merging master (#7535, #7537), these specs' gen-c differs under this
branch's compiler only by `for (int ` -> `for (size_t ` (0 other changed
lines each), so the Railway t27c lab resealed them (20 files with twins):
automation/bot-topic-tabs, base/types, graph/knowledge_graph,
math/phi_universal_attractor, runtime/execute, runtime/instance,
sync/index, sync/schema, tri/collections/bitvector, vsa/vsa_core.

Lab check on the merge tree:
- FROZEN_HASH matches the merged compiler.rs; cargo build --release -p t27c passes
- check_seal_currency.py: 0 stale gen hashes, 6 ledgered (same as master)
- check_seal_coverage.py: OK, 1496 seals, 121 known-broken all ledgered
- cargo test --release -p t27c --test core_selfhost: 1 passed (genc and both_refuse fixtures)

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude <claude@anthropic.com>
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.

spec-guards: stale seals for depin/prove and sandbox/session_timeout after #6954 and #6820

1 participant