Repository navigation
spec(t27f): rebuild rule for the exporter wasm, sealed inputs, one build record - #10241
Merged
Merged
Conversation
…ild record (Closes #10229) specs/t27f/build.t27 holds every rule of the T27F wasm build: REUSE or the first reason to run again (closure of the exporter specs, zig version, t27c binary, export.zig, outputs), the refusal of a root whose seal is missing or stale, the drift verdict per file, and the one record format (`#` input lines plus `<sha256> <file>` lines that `shasum -a 256 -c` reads). 5 tests, 0 vacuous, 1 invariant; the negative control fails 2 tests. The exporter specs and their imports are now sealed (t27c seal --save), so the seal closure tracks them. gen/rust/t27f/build.rs is the t27c output; it is not mounted in tri yet: the 40 lines of `tri t27f` glue would add hand-written Rust and the shrink-only foreign-budget gate refuses that, so the glue is parked as a patch (see the PR body). Measured on the Railway lab with the glue applied: cold 1111 ms, REUSE hit 218-243 ms. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
gHashTag
enabled auto-merge (squash)
October 18, 2026 05:24
Contributor
The t27b ratchet reported specs/t27f/build.t27 UNLISTED: the reference passes it and the ledger did not name it. One row, in sorted order. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This was referenced Oct 18, 2026
Contributor
PR DashboardGenerated at: 2026-10-18 05:32:19 UTC
Summary
Seal Status
|
This was referenced Oct 18, 2026
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.
Closes #10229
T27F hot loop: a make-style, seal-gated rule for the exporter wasm (
t27-mcp/wasm/t27f.wasm, which the graph page and the MCP tools t27f_graph, t27f_outline and t27f_view run).What this adds
specs/t27f/build.t27-- every rule of the wasm rebuild: REUSE, or the first reason to run again (closure of the exporter specs and their imports, zig version, t27c binary hash,export.zig, outputs); refusal of a root whose seal is missing or stale; the drift verdict per file; the one record format. 5 tests, 0 vacuous, 1 invariant. A mutated rule fails 2 tests (negative control).gen/rust/t27f/build.rs--t27c gen-rustoutput of that spec (force-added,gen/is ignored)..trinity/seals/t27f_*.json-- the exporter specs and their imports are now sealed (t27c seal --save), so the seal closure tracks them.#input lines (closure,zig,t27c) then<sha256> <file>lines, so any repository can check a vendored copy withgrep -v '^#' t27f.build | shasum -a 256 -c -and no code of ours.Measured on the Railway lab
The cold run reproduced trinity's vendored wasm byte for byte (sha 7b2a0f0c), so it is deterministic. Negative controls on the lab: a changed spec constant -> REBUILD (closure); a changed byte in a vendored file ->
checkexits 1 and names the file; a missing or stale seal -> REFUSED.Not in this PR: the
tri t27fgluetri t27f [build|check]needs 40 lines of hand-written Rust incli/tri/src/main.rs(spawn t27c and zig, read files). The lefthookforeign-budgetgate (check_budget, shrink-only, no label lifts it) refuses any diff that adds more foreign lines than it deletes, and I found no in-scope deletion to pair it with (the unused-code warnings are in other modules, and their items are used by tests). So the glue is parked as a patch in the shared notes folder (t27f-tri-glue-parked.patch), not committed and not pushed around the gate. The generatedbuild.rsis not mounted yet. Until the glue lands, the rule runs only through the parked patch; the check side needs no tri (see the t27-mcp and trinity PRs:shasum -cover the record).Attribution note: the task text said Opus 5.5, the session attribution reminder says Sonnet 5.5, which is the model that ran; commits use the Sonnet line.
🤖 Generated with Claude Code