Skip to content

seals: refresh the 102 the last two backend repairs invalidated - #3441

Merged
gHashTag merged 1 commit into
masterfrom
seals/refresh-after-backend-fixes
Sep 8, 2026
Merged

seals: refresh the 102 the last two backend repairs invalidated#3441
gHashTag merged 1 commit into
masterfrom
seals/refresh-after-backend-fixes

Conversation

@gHashTag

@gHashTag gHashTag commented Sep 8, 2026

Copy link
Copy Markdown
Owner

Refs #3440

Spec Guards has been red on master since #3435, and red again after
#3437. Both merged, because it is not a required context — so --auto never
looked at it, and neither did I. It was wired one pass earlier precisely
because three checks only ran when someone typed them.

The guard is right

#3435 changed C parameter emission and #3437 changed the Rust Copy derive,
so the seals recording what those backends emit stopped describing the output.

Measured on b519f902e:

count
seals scanned 1318
current 953
STALE generated-code hash 102, across 57 specs
sealed with gen_hash=none 169
spec file no longer present 94

By field: 88 gen_hash_rust, 19 gen_hash_c. spec_hash stale for
zero — which is why every coverage and freshness gate stayed green, the
same shape as #3415, one merge later.

A cycle, not rot

The previous sealed_at on the affected files was 2026-09-07T21:07:04Z
hours old. Every backend change invalidates seals, and nothing in the merge
path refreshes them or blocks on them.

The diff

102 files, and exactly three keys move:

key files
sealed_at 102
gen_hash_rust 88
gen_hash_c 19

spec_hash, gen_hash_verilog and gen_hash_zig are untouched. After the
reseal: 0 stale, gate exits 0.

What this deliberately does not do

The repair is one-time and the condition recurs. Three cures, and picking one
is the owner's call, not mine — they are laid out in #3440:

  1. make Spec Guards required (needs the paths: filter dealt with first — a
    required paths-filtered workflow hangs every PR it does not match, Ten constants declare a type they cannot fit; three of four backends emit them verbatim #2925);
  2. reseal automatically in the pre-commit hook, which makes the seal a derived
    artefact rather than a record;
  3. leave it advisory. That is the status quo, and it failed twice in two days.

Two neighbouring populations are left alone and named rather than folded in:
94 seals whose spec file no longer exists, and 169 recording
gen_hash=none. Conflating them is how the last batch stayed invisible.

Refs #3440

`Spec Guards` has been red on master since #3435 and red again after #3437.
Both merged, because it is not a required context -- so `--auto` never looked
at it, and neither did I. It was wired one pass earlier precisely because
three checks only ran when someone typed them.

The guard is right. #3435 changed C parameter emission and #3437 changed the
Rust `Copy` derive, so the seals recording what those backends emit no longer
described the output. Measured on b519f90:

    seals scanned                 1318
    current                        953
    STALE generated-code hash      102   across 57 specs
    sealed with gen_hash=none      169
    spec file no longer present     94

By field: 88 gen_hash_rust, 19 gen_hash_c. `spec_hash` stale for ZERO, which
is why every coverage and freshness gate stayed green -- the same shape as
#3415, one merge later.

This is a cycle rather than rot: the previous `sealed_at` on the affected
files was 2026-09-07T21:07:04Z, hours old. Every backend change invalidates
seals and nothing in the merge path refreshes them or blocks on them.

The diff is 102 files and exactly three keys move: `sealed_at` (102),
`gen_hash_rust` (88), `gen_hash_c` (19). `spec_hash`, `gen_hash_verilog` and
`gen_hash_zig` are untouched. After: 0 stale, the gate exits 0.

Two neighbouring populations are deliberately left alone and named in #3440
rather than folded in: 94 seals whose spec file no longer exists, and 169
recording `gen_hash=none`. Conflating them is how the last batch stayed
invisible.

The cure for the cycle is the owner's call and is not in this commit.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@gHashTag
gHashTag enabled auto-merge (squash) September 8, 2026 00:34
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-08 00:34:34 UTC

Summary

Status Count
Total Open PRs 16
PRs with Failing Checks 13
PRs with All Checks Green 3
READY 2
FAILING 13
PENDING 0
NO CHECKS YET 0

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

Seal Status

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

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@gHashTag
gHashTag merged commit 2c18b2d into master Sep 8, 2026
26 of 29 checks passed
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.

1 participant