Skip to content

t27b ledger: batch bless from a full lab run on master (Closes #7432) - #7476

Merged
gHashTag merged 5 commits into
masterfrom
claude/t27b-ledger-bless
Oct 7, 2026
Merged

gHashTag merged 5 commits into
masterfrom
claude/t27b-ledger-bless

Conversation

@gHashTag

@gHashTag gHashTag commented Oct 7, 2026 •

Copy link
Copy Markdown
Owner

Closes #7432
Refs #6063

What

One batch bless of docs/reports/t27b_expectations.json from a fresh full lab corpus run on master, so that t27b-native-ratchet goes green. This PR changes data and adds one NOW entry. It has no Rust and no other code, and check_budget passes on the diff.

The run (t27b Railway lab)

  • t27b corpus specs --jobs 2 --blockers at master ba161bb, with the same head's t27c as the reference.
  • 1539 of 1539 files: pass 827, pass_vacuous 152, blocked 537, fail 18, timeout 2, codegen 3.
  • crash 0, mismatch 0, JIT/interpreter mismatch 0, reference disagree 0 of 992 compared.
  • Master kept moving while this PR was open. The directories of the 18 specs it added or changed up to 3489726 were run again, at 848490e, 285694e and 3489726, with that head's binaries. The 286 other rows in those directories agree with the full run. A fourth tail at b94f486 covered the 17 specs master added or changed after that (specs: duplicate test names fixed; 10 ledgered stale seals cleared with the #5084 fixes (Closes #7383) #7386 test-name fixes, ed25519.t27, device_dna.t27, postfix_optional.t27): mismatch 0, reference disagree 0, and the 254 other rows agree.
  • tri t27b ratchet --bless --accept-new then wrote the ledger. A row is recorded only where the reference passes. The committed ledger is byte-identical to the lab's, and the ratchet of the run against it is green: UNEXPECTED FAILURE 0, UNEXPECTED PASS 0, UNLISTED 0, STALE 0, OVER CAP 0.
  • One row was added by hand: specs/ml/recurrent/self_attention.t27, blocked on StmtAssign(undeclared). The first CI run (37607915852) listed it as UNLISTED because CI's native arm64 reference passes it. The lab's x86 reference fails its one test (forward_basic_case) with the same zig 0.16.0. t27b blocks it on both machines.

Ledger moves (vs master b94f486)

  • 123 pass_vacuous -> pass. These are specs whose asserts now count: crons 28, skills 27, tools 26, agents 21, functions 12, docs 7, i18n 2. The list includes the 14 crons and wallet.t27 that were reported as UNEXPECTED PASS.
  • 239 new rows: 180 pass, 11 pass_vacuous, 45 blocked, 3 codegen. Examples are specs/verified/verdict.t27, specs/queen/*.t27 and specs/isa/*.t27.
  • No row leaves the ledger.
  • Counts: pass 536 -> 839, pass_vacuous 262 -> 150, not_pass 24 -> 72.
  • The cap goes from 24 to 72. All 48 of the rise is new specs; no named row regressed.

Left red, outside this bless

specs/policy/own_language.t27 changed in #7399 and now uses @intCast, which t27b blocks (ExprCall(@intCast), lane 4's #7412 / #7417). The bless keeps master's pass row for it, which was measured on the lab at cfda070 before the change. On master, the ratchet will show that one UNEXPECTED FAILURE until @intCast lands.

🤖 Generated with Claude Code

The ledger is rewritten by `tri t27b ratchet --bless --accept-new` from a full
t27b Railway lab corpus run at master ba161bb (1539 of 1539 files, --jobs 2,
reference = that head's t27c; crash 0, mismatch 0, JIT/interpreter mismatch 0,
reference disagree 0 of 992). The four specs master added or changed up to
848490e were run again with the same binaries. The result is byte-identical
to the lab's blessed ledger, and the ratchet of the run against it is green.

Moves: 123 pass_vacuous -> pass, plus 224 new rows (170 pass, 12 pass_vacuous,
39 blocked, 3 codegen). Counts pass 535 -> 828, pass_vacuous 262 -> 151,
not_pass 24 -> 66; the cap rise of 42 is all new specs.

specs/policy/own_language.t27 keeps master's pass row (lab, cfda070); since
#7399 it uses @intcast, which t27b blocks (lane 4, #7412).

Refs #6063

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ledger = master's plus the bless moves, re-blessed on the lab at 3489726
(the 18 specs master added or changed since ba161bb run again). Plus one row
by hand: specs/ml/recurrent/self_attention.t27 blocked on StmtAssign(undeclared);
CI's arm64 reference passes it, the lab's x86 reference fails it. Counts pass
535 -> 831, pass_vacuous 262 -> 150, not_pass 24 -> 67 (cap 67).

Refs #7432
Refs #6063

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

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-07 12:18:18 UTC

Summary

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

These columns do not partition: 1 + 47 + 0 + 0 = 48, and there are 50 open PRs. A PR is being counted twice or not at all.

Seal Status

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

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-07 13:22:49 UTC

Summary

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

These columns do not partition: 1 + 48 + 0 + 0 = 49, and there are 50 open PRs. A PR is being counted twice or not at all.

Seal Status

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

…nst today's base (Refs #7432)

The own-language run on 72c07b2 used pull_request.base.sha 848490e, so
its foreign-line budget counted bootstrap/src/service.rs from #7416 and
#7434, already on master. Against current master this branch changes
only the t27b ledger and its docs/now note.

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

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-07 14:12:29 UTC

Summary

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

These columns do not partition: 1 + 48 + 0 + 0 = 49, and there are 50 open PRs. A PR is being counted twice or not at all.

Seal Status

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

…n and large_frame rows (Refs #7432)

Header-only conflict with #7425 (t27b: frames over 16 KiB). Its two rows
(gen_w384_lean codegen -> pass, large_frame.t27 pass) merged cleanly;
counts and cap recomputed from the entries: pass 841, pass_vacuous 150,
not_pass 71, max_not_pass 72 -> 71.

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

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-07 14:25:47 UTC

Summary

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

These columns do not partition: 1 + 47 + 0 + 0 = 48, and there are 50 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=627a4e17525e != 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 329c5f4 into master Oct 7, 2026
25 of 28 checks passed
gHashTag added a commit that referenced this pull request Oct 7, 2026
… Q59) (Refs #7410)

Re-merge after the #7476 batch bless. The ledger is master's ledger plus
only this PR's own moves (Q61): specs/numeric/gfternary.t27 blocked -> pass,
specs/tri/t27b/conformance/eval_branch_quota.t27 new, pass. Recounted:
pass 843, pass_vacuous 150, not_pass 70 (max_not_pass 70), no duplicate
paths (Q65). source.rs keeps master's new tests and adds this PR's one;
foreign-exceptions.txt keeps both blocks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gHashTag added a commit that referenced this pull request Oct 7, 2026
…59) (Refs #7402)

Re-merge after the #7476 batch bless. The ledger is master's ledger plus
only this PR's own moves (Q61): gen_ring_buffer, gen_rtree and gen_wal
blocked (ExprReturn) -> pass, gen_work_stealing ExprReturn -> the frame-size
row this PR recorded, conformance/return_undefined_void.t27 new, pass.
Recounted: pass 845, pass_vacuous 150, not_pass 68 (max_not_pass 68), no
duplicate paths (Q65). source.rs keeps master's new tests and adds this
PR's one; foreign-exceptions.txt keeps both blocks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gHashTag added a commit that referenced this pull request Oct 7, 2026
…, Q59) (Refs #7413)

Re-merge after the #7476 batch bless. The ledger is master's ledger plus
only this PR's own move (Q61): trios-mesh packet.t27 blocked (type [*]T) ->
pass; the server_main.t27 row this PR once added is already on master with
the same value. Recounted: pass 842, pass_vacuous 150, not_pass 70
(max_not_pass 70), no duplicate paths (Q65).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gHashTag added a commit that referenced this pull request Oct 7, 2026
… Q59) (Refs #7404)

Re-merge after the #7476 batch bless. The ledger is master's ledger plus
only this PR's own moves (Q61): layernorm_layer.t27 and
ternary_mac_synth.t27 blocked -> pass, wrapup-auto.t27 stays blocked with
its new first blocker ExprArrayLiteral(to slice field). Recounted: pass 843,
pass_vacuous 150, not_pass 69 (max_not_pass 69), no duplicate paths (Q65).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gHashTag added a commit that referenced this pull request Oct 7, 2026
…Q59) (Refs #7422)

Re-merge after the #7476 batch bless. The ledger is master's ledger plus
only this PR's own moves (Q61): zig_test_shadowing.t27 blocked
(StmtAssign(reference redeclares)) -> pass, conformance/shadow_module_var.t27
new, pass. Recounted: pass 843, pass_vacuous 150, not_pass 70
(max_not_pass 70), no duplicate paths (Q65). foreign-exceptions.txt keeps
both blocks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gHashTag added a commit that referenced this pull request Oct 7, 2026
…Q59) (Refs #7448)

Re-merge after the #7476 batch bless. The ledger is master's ledger plus
only this PR's own moves (Q61): boards/xc7a100t_minimal.t27 blocked -> pass,
conformance/str_module_var.t27 and undefined_module_var.t27 new, pass,
vsa/similarity_search.t27 stays blocked with its next blocker
ExprCall(@intcast). Recounted: pass 844, pass_vacuous 150, not_pass 70
(max_not_pass 70), no duplicate paths (Q65). foreign-exceptions.txt keeps
both blocks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gHashTag added a commit that referenced this pull request Oct 7, 2026
#7537)

* t27b: the Mach-O object layout and bytes are a t27 spec (Closes #7526)

specs/tri/t27b/macho.t27 states the MH_OBJECT writer: the mach_header_64,
LC_SEGMENT_64 with its __text and __const sections, LC_BUILD_VERSION,
LC_SYMTAB and LC_DYSYMTAB, the alignment math, the relocation pairs and
the nlist_64 entries. Its 15 tests assert the exact bytes master's Rust
wrote for three inputs. t27c gen-rust gives gen/rust/tri/t27b/macho.rs,
which cli/t27b/src/macho.rs mounts the way check_budget is mounted.

cli/t27b/src/macho.rs: +21 glue, -153 hand Rust. Generated: 278 lines.
Spec: 476 lines. t27b build over all 1552 specs: the 980 objects are
byte-identical to master's; the t27b lab corpus counts are unchanged
apart from the new spec itself, mismatch 0, cargo test 126/126.

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

* ci/affected: Markdown anywhere and seal files select nothing (Closes #7527) (#7529)

The selector sent every path outside specs/ to RUN_ALL. Over the last 400
first-parent master commits that ran everything on 373 of them, 208 because
of docs/*.md alone, so wiring it into CI would have saved almost nothing.

Two exceptions, both things no spec test reads: a .md file anywhere is
prose, and .trinity/seals/*.json is the verdict record t27c writes, not an
input. .txt stays RUN_ALL outside specs/ (tools/*.txt are baselines).

Measured on the lab with the regenerated gen/c/ci/affected.c: 284 of 400
commits are now selective, median 1 affected spec of 1545, p90 5, max 49.
15/15 tests (zig and the C runner); 5/5 mutants of the new lines killed.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* gen-rust: wrap a value returned from a ?T fn in Some (Closes #7534) (#7536)

* gen-rust: wrap a value returned from a ?T fn in Some (Closes #7534)

gen-rust lowered a `?T` return type to `Option<T>` and `return null;` to
`return None;`, but a plain value return reached rustc as is: E0308 at
`return (x / 2);`. expr_to_rust_as, which every return and fn tail goes
through, now wraps the value in `Some(..)` when it is surely not optional
already (literal, operator, cast, struct, tuple, `x.?`, or a name or call
whose declared type is not Option). `null`, an optional local, a call to a
`?T` fn and anything of unknown type pass through unchanged, so output
that compiled before is not double-wrapped. The width cast for a narrower
integer goes inside the `Some`.

Fixture: specs/compiler/rust_optional_returns.t27. The compiler.rs seal
moves in bootstrap/stage0/FROZEN_HASH (shasum -a 256 of the new file).

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

* spec(compiler): no lone ; line in the rust_optional_returns header (Refs #7534)

A ; alone on a line made the parser read the next comment as a statement
(parse error at line 6). Joined the two comment paragraphs.

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

* seals: gen_hash_rust for the 16 seals whose Rust output the Some wrap changes (Refs #7534)

Only the gen_hash_rust line moves, and only in seals whose gen_hash_rust
held with the master binary (7959d8b): 9 specs, 16 seal files, of 1400
checked (1394 held with master). Computed by `t27c seal` with this
branch's binary on the Railway lab.

Each moved output was compiled with rustc on the lab, master vs this
branch: no new rustc error in any of the 9; E0308 drops by one or two in
array, bitmap, net, regex and bytes. The other four stop at a parse error
before type checking, unchanged.

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

* seal: compiler_RustOptionalReturns for the #7534 fixture (Refs #7534)

t27c seal --save with this branch's binary on the Railway lab, zig on PATH:
7 of 7 tests pass. Without a seal the suite's seal-verify phase counts the
new spec as a failure.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* t27b: the A64 instruction encoders come from specs/tri/t27b/a64.t27 (Closes #7531) (#7535)

Port slice of #6198. The functions that build one 32-bit AArch64 instruction
word from register numbers and immediates, the Cond/Ext/Shift/LogOp enums, the
register and access-kind constants and the two patch helpers move from
hand-written cli/t27b/src/a64.rs into specs/tri/t27b/a64.t27. cli/t27b mounts
its `t27c gen-rust` output gen/rust/tri/t27b/a64.rs the way main.rs mounts
check_budget.rs; the encoder `b` is `branch` in the spec (the Zig prelude's
assert_eq(a, b) shadows a fn named b, #7532) and is re-exported as `b`.

Hand Rust: -531 lines, +11 glue (a64.rs 1067 -> 547). Generated: 531 lines.
Spec: 1253 lines, 30 tests, all with runtime asserts.

Still hand-written in a64.rs: impl Cond (invert/name/from_bits), bitmask_imm,
logic_imm (now calls the generated logic_imm_word), mov_imm and the
disassembler. bitmask_imm/logic_imm wait on #7534 (gen-rust does not wrap a
?T return value in Some).

Checks: spec asserts hold on the old hand Rust and on the generated Rust;
18.6M random-argument words identical between the two; 56 words checked
against LLVM's assembler; 639 literal mutants of the encoder half: 582
killed, 52 rejected by the compiler, 5 equivalent. t27b lab, head vs master
ec5c3cf over the same 1553-file tree: pass 844, pass_vacuous 151, fail 16,
blocked 536, mismatch 0 on both, per-file verdicts/tests/asserts identical;
`t27b asm` output byte-identical for all 995 passing files (10.85 MB);
cargo test -p t27b 126 passed, 0 failed.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* t27b ledger: batch bless from a full lab run on master (Closes #7432) (#7476)

The ledger is rewritten by `tri t27b ratchet --bless --accept-new` from a full
t27b Railway lab corpus run at master ba161bb (1539 of 1539 files, --jobs 2,
reference = that head's t27c; crash 0, mismatch 0, JIT/interpreter mismatch 0,
reference disagree 0 of 992). The four specs master added or changed up to
848490e were run again with the same binaries. The result is byte-identical
to the lab's blessed ledger, and the ratchet of the run against it is green.

Moves: 123 pass_vacuous -> pass, plus 224 new rows (170 pass, 12 pass_vacuous,
39 blocked, 3 codegen). Counts pass 535 -> 828, pass_vacuous 262 -> 151,
not_pass 24 -> 66; the cap rise of 42 is all new specs.

specs/policy/own_language.t27 keeps master's pass row (lab, cfda070); since
#7399 it uses @intcast, which t27b blocks (lane 4, #7412).

Refs #6063

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* spec(policy): drop a redundant @intcast in added_lines so t27b compiles own_language (Refs #7023) (#7479)

#7399 wrote `@as(u32, @intcast(c - '0'))` in added_lines. `c - '0'` is
already a u8 that @as widens to u32 losslessly; the @intcast adds nothing,
and t27b refuses it (ExprCall(@intcast), lane 4, #7412), so the t27b-native
ratchet row for specs/policy/own_language.t27 went from pass to fail.

`@as(u32, c - '0')` says the same thing. gen/c/policy/own_language.c is
regenerated with `t27c gen-c` (one line: a redundant pair of parentheses).

t27b test specs/policy/own_language.t27: 32 passed, 0 failed (was a
compile refusal). t27c test-report: 0 of 32 vacuous.

Census re-blessed (tri census pin --bless), byte-identical to #7454:
quiet `named a path but not quiet` 181 -> 182 and shell `run: steps`
301 -> 302, both moved by #7399's new own-language.yml step. Without it
the pre-commit census gate refuses every commit on master.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* specs(tri): TemplateEntry, not Entry, so template.t27 adds no type conflict (Refs #7383) (#7488)

Follows #7386. That PR added `pub const Entry = struct { name, value }` to
specs/tri/utils/template.t27, but master already declares a type `Entry` in
specs/port/browseros/trios/agent-server/apps/server/src/tools/filesystem/ls.t27,
so `tri types ratchet` reports `+ Entry NEW conflict`. Rename the template's
struct to TemplateEntry at all six uses in that file; no other spec touched.

Evidence (merge of this branch with PR #7482, local scratch, not pushed):
  tri types ratchet               observed 111 -> 110, RATCHET CLEAN
  t27c test-report template.t27   3 pass, 0 fail, 0 vacuous
  t27c seal --verify template.t27 all hashes MATCH (both seal files resealed)
  check_seal_currency / check_seal_coverage / check_duplicate_declarations  rc 0

Census re-bless, not caused by this change: master is already off its pin
since #7399 (.github/workflows/own-language.yml adds one run: step), which
moves quiet "named a path but not quiet" 181 -> 182 and shell "run: steps"
301 -> 302 ("the runner does" 280 -> 281). `tri census explain` names that
file as the only mover for both. The pre-commit census gate refuses every
commit on master until re-blessed, so tools/census/{quiet,shell}.txt are
re-recorded here with `tri census pin --bless`.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

owner-approved-foreign Owner-approved exception to the only-t27 rule: hand-written foreign code allowed in this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

t27b ledger: batch bless from a full lab run on master (ratchet green)

1 participant