tri seals twins — one spec, two seals, two answers - #2768
Merged
Conversation
`t27c seal <spec> --save` writes a path-derived file name. Many specs also carry
an older seal keyed by the bare module name, both naming the same `spec_path`,
and the gate reads both while --save updates one.
seals with a spec_path 1311
specs sealed more than once 547
of those, pairs that DISAGREE 31
The failure is quiet: on #2766 a spec was repaired, re-sealed, and `coverage`
stayed red -- on the twin. This command names those pairs in one call.
It reports and does not write. Which of two disagreeing seals is the truth is
#2767's decision; re-sealing both would freeze whichever generation happens to
be current into two places instead of one.
Two tests, each for a way the comparison could be wrong: a difference in ANY of
the five fields counts (testgen's twin matched on rust and verilog and differed
on zig and c -- a single-hash comparison would have called it identical), and an
absent field is not equal to a present one.
A missing .trinity/seals is an error, not "zero twins": nothing was read, so
nothing is claimed.
Refs #2767
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Contributor
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
Contributor
PR DashboardGenerated at: 2026-08-28 23:00:31 UTC
Summary
Seal Status
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #2767
t27c seal <spec> --savewrites.trinity/seals/<module>.jsonwith a path-derived name. Many specs also carry an older seal keyed by the bare module name —ast.json/compiler_ast.json,testgen.json/codegen_testgen.json— both naming the samespec_path. The seal gate reads both;--saveupdates one.The failure it produces is quiet. On #2766 a spec was repaired, re-sealed, and
coveragestayed red — on the twin. This command names those pairs in one call:It reports; it does not write
Which of two disagreeing seals is the truth is #2767's decision. Re-sealing both would freeze whichever generation happens to be current into two places instead of one — the same defect, wider.
Tests
Two, each for a way the comparison could be wrong:
testgen's twin matched on rust and verilog byte for byte and differed on zig and c; a comparison written against a single hash would have called that pair identical.gen_hash_rustexisted does not silently agree with one written after.A missing
.trinity/sealsis an error, not "zero twins" — nothing was read, so nothing is claimed.Its own reading cross-checks the seal gate: 1311 seals carry a
spec_path, andcheck_seal_coverage.pycounts 1316 total with 5no-spec-path.🤖 Generated with Claude Code