Skip to content

seals: verdict-blocked specs compile and seal; 11 refused specs fixed, 30 blocked ones listed (Refs #8314) - #10370

Merged
gHashTag merged 7 commits into
masterfrom
seal/verdict-blocked
Oct 18, 2026
Merged

gHashTag merged 7 commits into
masterfrom
seal/verdict-blocked

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Refs #8314

What this PR is

Branch seal/verdict-blocked had no PR. It carried the verdict fix (143 of the 153 verdict-blocked specs compile, pass and stop being vacuous) and a seal run with four problems. This PR adds two commits on top and answers all four. No seal --force anywhere; every seal below was produced by t27c frontier --reseal on the Railway lab (~/t27-lanes/fs-lab.sh), nothing was built or tested on the Mac.

Commit Content
8ae9de1ed .t27 only: 10 specs declare string arrays as [N]str instead of [N][]const u8
42040f96e the resealed .trinity/seals/*.json: 296 files (284 refreshed, 12 new)
4ab200073 merge of master (32 commits behind; only .trinity/seals conflicted, taken from the branch)
6e5043b2e 28 seals resealed after the merge with master's t27c

Only .t27 and tool-written seal data are touched; no code in any other language.

1. Refused specs: 11 (the brief said 10)

Reason for all of them: refusing to seal ...: 1 of 4 backends rejected it. gen-verilog (detect_unsupported_verilog_locals) rejects a local whose type contains ][ and whose element is not primitive, and it reads [2][]const u8 as an array of the aggregate const u8. [N]str is the same slice type without ][ and passes. Fixed in .t27, same strings, same asserts, only the declared local type changed:

config/schema, port/tools/{dedupe_identical_tests,published_figures,queen/feed_untested}, runtime/{execute,process}, server/router ([][]const u8 to []str), tri/io/{filesystem,fs}, tri/search/match, plus verify_trainer_c, which was refused too but needed no edit once its closure was resealed (so commit 8ae9de1ed says "ten", the real number is eleven).

All 11 now seal with every test passing and no backend rejected.

2. Stale seals

After the reseal t27c seal-audit reports STALE (spec edited): 0. I saw 18 stale seals for 15 specs mid-run (the brief said 17); they were stale because the specs they describe were edited by the verdict commit and, for the refused ones, never resealed. They are gone: either resealed, or their legacy twin was refreshed by the same pass.

3. Verdict count 10 to 32: not a regression

The 30 specs listed below are not among the 143 this branch changed, and their seals say blocked: does not compile ... as before the branch. frontier ranks rebuild reasons spec(1) > closure(2) > ... > verdict(5), so a spec with a stale hash or closure shows as "spec"/"closure" and its blocked verdict stays hidden. Each reseal pass clears spec/closure rebuilds, so the verdict bucket grows as it becomes visible: frontier went spec 193 / closure 90 / verdict 12 before the pass to spec 61 / closure 63 / verdict 30 after (final, on the tree merged with master). The brief's 32 and my 30 differ by a few specs whose state depends on which master the pass ran against; I could not reproduce 32 exactly.

4. Malformed tar artifact filenames: cause found, fix is not in .t27

Two things combine:

  1. extract_module_name (bootstrap/src/main.rs:5701) takes the first line that starts with module , so a spec with such a line in a string or doc produces seal names like search_[]const u8.json, "[]const u8".json, enrichment::youtube_transcript.json, tools_specs::port::tools.json. 526 seal files have odd characters (::, spaces, quotes, [], #).
  2. A file list built from git status --porcelain is C-quoted by git (core.quotePath), so a name with " or a non-ASCII byte arrives as ".trinity/seals/\"[]const...; handed to tar -T the quotes become part of the name and tar fails with Cannot stat. GNU tar 1.34 itself handles colons and spaces fine.

Fix for the transport (used here, plain commands): git ls-files -z -m -o --exclude-standard .trinity/seals | tar --null -T - -czf out.tgz. Fix for the names is a compiler change (module name from the module declaration, not the first matching line), outside .t27, so only reported.

Result of the seal run

frontier --reseal (no --force), run again after merging master: 0 refused, seal-audit STALE 0. In the 324 committed seal files (296 + 28): 0 blocked, 0 forced, 0 vacuous, 0 failing tests.

Still blocked: 30 specs, none changed by this branch

Reasons are the tests.blocked text in each seal (Zig compile error). The first group is a spec that refers to a name from another module that its generated spec.zig never imports; the second is a spec that produces Zig the compiler rejects, which needs a t27c fix or a deeper rewrite.

Undeclared identifier (missing import or helper in the spec):

Spec Reason
specs/bus/pubsub.t27 spec.zig:266:21 use of undeclared identifier 'bus'
specs/config/load.t27 78:34 undeclared 'config_schema'
specs/runtime/instance.t27 118:43 undeclared 'runtime_process'
specs/file/operations.t27 20:46 undeclared 'Result'
specs/igla/race/bram_weights.t27 65:11 undeclared 'read'
specs/igla/race/cordic_top.t27 137:11 undeclared 'latency'
specs/igla/race/formal.t27 55:29 undeclared 'RtlModule'
specs/igla/race/opcodes.t27 181:17 undeclared 'OP_ADD'
specs/igla/race/ternary_dot_sw.t27 97:5 undeclared 'latency_us'
specs/ml/transformer/multi_head_attn.t27 181:19 undeclared 'random_input'
specs/tools/tri_to_t27_converter.t27 82:19 undeclared 'trim'
specs/enrichment/youtube_transcript.t27 55:21 invalid builtin '@trim'

Generated Zig is invalid or the type does not match (t27c gen-zig gap or a type fix in the spec):

Spec Reason
specs/compiler/optimizer.t27 21:5 duplicate enum member 'String'
specs/compiler/stdlib.t27 229:36 expected ',' after initializer
specs/compiler/typechecker.t27 80:53 expected ',' after initializer
specs/igla/race/ternary_gemm.t27 504:49 expected '}', found ':'
specs/provider/stream.t27 153:102 expected '}', found ':'
specs/neural/forward_pass.t27 39:37 expected ']', found ';'
specs/fpga/mac.t27 202:11 redeclaration of local constant 'a'
specs/sync/index.t27 180:29 unused capture
specs/test_framework/runner.t27 84:29 unused function parameter
specs/lsp/client.t27 145:339 expected '[]u8', found '*const [8:0]u8'
specs/lsp/server.t27 18:32 expected '[3]u8', found '*const [7:0]u8'
specs/provider/adapters.t27 22:36 expected '[3]u8', found '*const [3:0]u8'
specs/provider/transform.t27 215:33 expected '[]u8', found '*const [19:0]u8'
specs/tri/utils/bytes.t27 28:36 index syntax required for slice type '[]const u8' (blocked on master too)
specs/tri/utils/logging.t27 77:22 undeclared 'tag': the if (opt) |tag| capture is not lowered (blocked on master too)
specs/tri/crypto/crypto.t27 38:5 not yet implemented
specs/tri/encoding/json.t27 53:18 no member 'parseValue' in 'spec.Parser'
specs/depin/prove.t27 unable to load 'TriSha256.zig': FileNotFound (closure file not generated)

I did not fix these 30: each needs its own spec work (or a t27c change for the gen-zig group) and none belongs to the verdict-test fix this branch is about. They are the honest remaining list for #8314.

Not covered

  • 4 vacuous seals (docs/nona-03-manifest/*.md, specs/sandbox/sandbox.tri, ...) and 89 seals whose spec file no longer exists were already there; not touched.
  • 228 specs have no seal at all ("missing"); out of scope.

🤖 Generated with Claude Code

gHashTag and others added 7 commits October 18, 2026 13:47
Tool-written seals only (.trinity/seals/*.json), produced on the lab with
t27c frontier --reseal and, for legacy v1-sealed specs that --reseal never
touches, t27c seal --save, keeping a seal only when it is schema 2, has no
failing tests, is not forced and is not vacuous (the same rule as
si::remint_keeps). No --force. Specs whose tests fail, whose generated Zig
does not compile, or whose reseal the silicon-receipt guard refuses were
left alone.

Refs #8314

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…7c emits

specs/t27f/spec_graph{,_derive,_export,_fold}.t27 and specs/tools/t27o/rust_convert.t27 changed on
master without a reseal (rust_convert in #10251), which kept spec-guards and seal coverage red on
master. specs/igla/own_model{,_board}.t27 were sealed earlier in this branch by a compiler older than
master's. All 7 resealed with t27c built from this tree (no --force). On the lab, with that binary:
tools/check_seal_currency.py 0 stale of 2732; tools/check_seal_coverage.py OK, 2610 hold, 122
known-broken already in seal_baseline.txt.

Refs #8314

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

t27c frontier counted 153 specs under rebuild reason `verdict`: their generated Zig did not compile
or their tests failed, so no seal could be saved and frontier rebuilt them every run. 143 now
compile with every test passing and 0 vacuous passes, checked with t27c test-report on the lab.

The fixes are .t27 only:
- Zig-isms the lowering cannot take (for-captures, `!=` on structs, untyped array literals,
  missing casts, undeclared helpers) rewritten into constructs it lowers.
- Stubs whose tests expected behaviour were given that behaviour; placeholder asserts became real.
- Where a test's expected value was provably wrong it was changed, with the reason recorded in the
  PR, for example: bus/schema "lsp_request" length 10 -> 11, "running" 6 -> 7; igla/race/
  ternary_mac a sign error -2147483520 -> 2147483520; tri/utils/time 1010 -> 1011; sync/schema
  reconcile enum 5 -> 4.

10 specs are left unchanged because they need a compiler feature, another spec or an owner call:
tri/encoding/json, igla/race/{bram_weights,cordic_top,formal,opcodes}, enrichment/youtube_transcript,
tools/tri_to_t27_converter, tri/crypto/crypto, physics/formula_discovery, depin/prove.

Seals for these specs and their direct importers come in the next commit.

Refs #8314

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… accepts them and they can be sealed

The reseal run on this branch refused ten specs: "refusing to seal ...: 1 of 4 backends rejected it".
gen-verilog (detect_unsupported_verilog_locals) rejects a local whose type contains "][" and whose
element is not a primitive, and it reads `[2][]const u8` as an array of the aggregate `const u8`.
The previous commit wrote its test fixtures that way. `[N]str` means the same slice type, has no
"][" and passes the check. Same strings, same asserts, only the local's declared type changes in
config/schema, port/tools/{dedupe_identical_tests,published_figures,queen/feed_untested},
runtime/{execute,process}, server/router, tri/io/{filesystem,fs}, tri/search/match.

Refs #8314

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…no refused spec left

Output of `t27c frontier --reseal` on the Railway lab (no --force) on top of the [N]str commit.
284 existing seals refreshed, 12 new. None is blocked, forced, vacuous or has a failing test.
Eleven specs were refused before (not ten: verify_trainer_c was refused as well); they now seal
with every test passing. `t27c seal-audit` reports STALE 0 afterwards.

The 29 specs whose seal says "blocked: does not compile" are untouched: their blocked seals are unchanged by this branch
and the frontier only shows them as "verdict" once their spec and closure
rebuilds are gone (10 -> 29 is that surfacing, not a regression). Reasons are in the PR body.

Refs #8314

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…e branch side, resealed next)

Refs #8314

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ster's compiler

Master moved by 32 commits (gen-zig open-ended slices, new specs). Seal conflicts were taken
from the branch in the merge; this is the frontier reseal on the Railway lab afterwards
(no --force): 28 seal files refreshed, none blocked, forced, vacuous or failing. seal-audit
reports STALE 0.

Refs #8314

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@gHashTag
gHashTag enabled auto-merge (squash) October 18, 2026 09:47
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-18 09:48:19 UTC

Summary

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

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=fad12492937a != 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 merged commit b2fbb75 into master Oct 18, 2026
27 of 34 checks passed
gHashTag added a commit that referenced this pull request Oct 18, 2026
…Status leaves the ledger, five specs resealed (Closes #10389)

#10370 made specs parse that did not before, so Context, MatchResult,
UnsubscribeResult and ProofTrace gained a second definition. Renamed on the
side #10370 touched: LocalhostContext (security.t27), RouteMatchResult
(router.t27), SchemaUnsubscribeResult (bus/schema.t27), CoaProofTrace and
DatalogProofTrace. HttpStatus has one definition again, so its ledger line and
classified row are dropped.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
gHashTag added a commit that referenced this pull request Oct 18, 2026
…Status leaves the ledger, five specs resealed (Closes #10389)

#10370 made specs parse that did not before, so Context, MatchResult,
UnsubscribeResult and ProofTrace gained a second definition. Renamed on the
side #10370 touched: LocalhostContext (security.t27), RouteMatchResult
(router.t27), SchemaUnsubscribeResult (bus/schema.t27), CoaProofTrace and
DatalogProofTrace. HttpStatus has one definition again, so its ledger line and
classified row are dropped.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
gHashTag added a commit that referenced this pull request Oct 18, 2026
…he ledger (Closes #10389) (#10390)

* types ratchet: four newly parsed type names get their own names, HttpStatus leaves the ledger, five specs resealed (Closes #10389)

#10370 made specs parse that did not before, so Context, MatchResult,
UnsubscribeResult and ProofTrace gained a second definition. Renamed on the
side #10370 touched: LocalhostContext (security.t27), RouteMatchResult
(router.t27), SchemaUnsubscribeResult (bus/schema.t27), CoaProofTrace and
DatalogProofTrace. HttpStatus has one definition again, so its ledger line and
classified row are dropped.

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

* ledger: unsubscribe_result_create is no longer a duplicate body (Closes #10389)

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

---------

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
gHashTag added a commit that referenced this pull request Oct 18, 2026
#10370 (Closes #10450)

#10370 rewrote specs/ar/asp_solver.t27 and specs/ar/ternary_logic.t27 so they
compile (#8980): Program is now fixed arrays with counts, Trit is i8, and the
list functions take slices. The pinned source signatures and the Lean
witness models were stale. The specs and gen-rust output are correct, so the
expected signatures and the Lean models are updated to the real interfaces;
ar_asp_solver stays unlowerable (string fields), and a new theorem pins the
exact set of slice/usize functions that block ar_ternary_logic.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
gHashTag added a commit that referenced this pull request Oct 18, 2026
#10370 (Closes #10450) (#10462)

#10370 rewrote specs/ar/asp_solver.t27 and specs/ar/ternary_logic.t27 so they
compile (#8980): Program is now fixed arrays with counts, Trit is i8, and the
list functions take slices. The pinned source signatures and the Lean
witness models were stale. The specs and gen-rust output are correct, so the
expected signatures and the Lean models are updated to the real interfaces;
ar_asp_solver stays unlowerable (string fields), and a new theorem pins the
exact set of slice/usize functions that block ar_ternary_logic.

Co-authored-by: Claude Sonnet 5.5 <noreply@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.

1 participant