You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
t27o golden PRs (step 4 of #9000), measured first: the 85 Rust files that convert whole, ranked by hand lines a port would delete #11149
Step 4 of #9000 ("golden PRs"), measured first: list the tracked Rust files of our own repositories that t27o converts WHOLE (every fn converted, valid output), rank them by the hand-written lines a port would delete, and say which ones can be replaced by a generated file without changing a caller. The first golden pull request then deletes hand-written Rust, net-negative, with the oracle and tests as its evidence.
Why
Two measurements today (lane A5, #11135: Vec parameters, ceiling 1 fn; lane A6, #11145: iterator chains, 17 to 32 fns, 0.17%) show the converted share of all fns is bounded by language features t27 does not have, not by missing converter rules: it was 9.93% at 04:20 and is 9.88% after two days of converter work. The unit that matters for the only-t27 rule and for #9000 is the file whose hand-written Rust can be deleted. The sweep of 2026-10-20 over 1,388 files has 85 files that convert whole; nobody has listed them, sized them, or checked that a generated replacement keeps the file's public items.
Boundary
docs/now/2026-10-20-golden-candidates.md
User Scenarios
Given the sweep summary of all tracked Rust files, when the analysis runs, then it prints one row per whole-converting file with repository, path, hand-written lines, fns, tests, public items and the callers of those items.
Given a candidate whose public items are used elsewhere, when it is ranked, then the row says which callers must change, so the port is not blind.
Given a candidate in a generated, vendored or test-only path, when it is ranked, then it is excluded with the reason.
Requirements
FR-001: The table MUST name the sweep driver and the commits it was run at, and MUST count hand-written lines the way the own-language gate does.
FR-002: Each candidate MUST be checked for valid output (t27c test-report on its converted spec) and for the oracle verdict, where --check can run.
FR-003: This issue is analysis only: no Rust is deleted and no spec is added before the table is on the issue.
Success Criteria
The table is posted on this issue with at least 20 rows ranked by hand-written lines, and the document docs/now/2026-10-20-golden-candidates.md holds the same rows.
It names the first candidate whose port deletes at least 100 lines of hand-written Rust with every caller unchanged, or states in numbers why none does.
Measured, analysis only. Same content as docs/now/2026-10-20-golden-candidates.md in draft PR #11155 (head f6a12d7). Sweep: lane A4's, 1,388 files; converter re-checked at master a1780a1.
docs/now/2026-10-20-golden-candidates.md (Closes #11149, step 4 of #9000; analysis only)
Sweep: 1,388 .rs files (t27 382, trios 786, trinity 23, trinity-fpga 30, 999-multibots-telegraf 167; 435,491
physical lines), one process per file, the sweep_all.zsh driver of lane A4 (every .rs of its copy of each checkout;
the t27 copy has no gen/ files), summary written 2026-10-20 00:48 local with that lane's converter build, which is earlier than ca90be1
(02:10; t27o: converter trio -- callers of an out-buffer String fn refused, a match in the oracle of a two-text fn, refused receivers named #11130 changed refusal comments only and lost no converted fn). It is not a tri t27o-sweep run: there is
no tri build on this Mac and the shared tri binary predates the converter. t27 had 376 non-generated .rs
tracked at master plus 6 files of the swept checkout that master does not track (none of them converts whole).
Re-check at master a1780a1: gen/rust/tools/t27o/rust_convert.rs (sha256 prefix fdac1e1c4eeebc21) was last
changed by ca90be1; no commit since touches gen/rust/tools/t27o or specs/tools/t27o. A driver built from it
with rustc reproduces the fn, test and refusal counts of all 85 files exactly.
Answer
PORTABLE-NOW: 78 rows, 2,864 lines. NEEDS-CALLER-CHANGE: 1 row (SC-00, 40 lines). NOT-NOW: 1 row (rainbow-bridge lib.rs, 102 lines). Excluded: 1 test-only file, 8 generated files that the sweep did not see.
Of the 78 PORTABLE-NOW rows: 42 keep every public item (855 lines), 7 keep every name and compile every caller
unchanged (1,186 lines: five CR-CHAT guards, trinity_loss, bitmask), 29 rename items nobody uses (823 lines).
70 of the 80 ranked rows are scaffold stubs of 20-32 lines with no caller and no workspace build (1,643 lines).
The other 10 rows (1,363 lines) are real code. Replacing a scaffold with a generated copy of itself is mechanical and
gains nothing; deleting it is the trios owner's call, not a port.
Seven rows delete at least 100 lines with every caller unchanged: the five CR-CHAT guards (837 lines), crates/trinity_loss/src/lib.rs (179) and bootstrap/src/host/bitmask.rs (170). First by rank is wire_frame_integrity_guard.rs (184 lines), but it narrows Result<(), WireFrameError> to bool, and trios has no
generated root and no own-language gate to deliver it (below).
First golden candidate: bootstrap/src/host/bitmask.rs of this repository, 170 lines (139 non-blank, 96 of them #[cfg(test)]), one caller (two lines of bootstrap/src/host/mod.rs), gate-counted hand lines +1 / -171.
Section "First candidate" has the evidence. After it lands, no file of t27 converts whole (1 of 382 today).
Ranked rows
Lines are physical lines (what git diff --numstat counts when the file is deleted) / non-blank lines / lines inside #[cfg(test)]. fns excludes tests. "callers" is the number of files outside the row that name a public item or re-export it (then which), read
from an identifier index of every tracked text file of the five checkouts plus the 154 files of trios main that the
sweep missed; the callers of the ten non-stub rows were then read by hand, and for nine of them compiled against the
generated file (see "Not run"). "workspace" is
whether the trios Cargo workspace (main's 88 members and their path dependencies) builds the crate.
"t27c test-report" is pass/tests, vac N (vacuous passes). "oracle replay" is the tri t27o --check path replayed
by hand: oracle harness compiled with rustc, run, appended to the spec as tests, judged by t27b test
(pass/fail count the spec's tests; asserts is the number of recorded oracle vectors). All 85 files: gen-rust
output compiles with rustc --crate-type lib, t27c test-report exits 0, replay passes.
names kept, Result<(), E> becomes bool, #[non_exhaustive] lost
PORTABLE-NOW (contract narrowed)
trinity_loss/src/lib.rs
1
179
tests/loss.rs
&[i8; 64] becomes impl AsRef<[i8]>; the 16 tests pass unchanged against the generated lib
PORTABLE-NOW (DRY blocks, see below)
bootstrap/src/host/bitmask.rs
1
170
host/mod.rs
names kept; const fn becomes fn; FieldDesc methods become free fns; none used
PORTABLE-NOW
PH-00/src/lib.rs (5 f64 consts)
1
35
PH-01, BR-OUTPUT
same
PORTABLE-NOW
SC-00/src/lib.rs
1
40
SC-01, BR-OUTPUT
Vec2::new and .dot() become free fns
NEEDS-CALLER-CHANGE
trios-rainbow-bridge/src/lib.rs
1
102
the crate
8 pub mod, 8 pub use, 2 inner attributes dropped
NOT-NOW
Not ranked
Seen == converted but an item is refused (not whole):
repo
path
lines
refused
trios
crates/trios-agents/src/types.rs
130
7 structs (a String field)
trios
crates/trios-kg/src/types.rs
109
7 items (String, Vec fields)
999-multibots-telegraf
rust/rings/GOLD-RING-TY00/src/payment.rs
49
struct Transaction (a uuid field)
trios
crates/trios-trinity-brain/src/phi.rs
17
item phi_attention
Excluded:
crates/trios-coq-witness/tests/witness_lepton_mass_chain_L01_L02_L03_numerical.rs (25 lines): test-only path
(tests/); its converted spec is a test already, 1 test, vacuous.
The sweep read the local trios checkout (a feature branch), which lacks 153 .rs files that trios main has
(111 under apps/trios-macos/rings), and trinity-fpga lacks a vendored zig-pkg file. Those 154 were fetched from
GitHub main and converted with the same driver: 8 convert whole, all under apps/trios-macos/rings/RUST-13/trios-mesh/gen/rust/ (483 lines, header "Generated from .t27 spec / DO NOT
EDIT"). Generated, excluded.
The 84 non-t27 whole files are byte-identical (git blob sha) to GitHub main at trios 78671ba794, trinity
8e535bc9bb, trinity-fpga c9b180bf78, 999-multibots-telegraf fcdbb2f7dc. The sweep checkouts were at trios 483dd9ee
(branch golden-bridge-p1-bibliography), trinity 0770abb9, trinity-fpga 20bf4c41, 999-multibots-telegraf 6e551289.
The t27 row is bootstrap/src/host/bitmask.rs at master a1780a1.
What a port changes (gen-rust mapping against the original)
Counted over the 80 ranked rows, from the converted spec's t27c gen-rust output:
Kept exactly: integer types (usize, u64, u32, u8), f64/f32 consts and &'static str (41 ring_id
returns, the RING/PURPOSE consts). Numeric literals lose their _ separators (same value).
Result<(), E> becomes bool (5 fns, the CR-CHAT guards): the converter drops the Err payload ("Err payload
dropped"), so a caller that matches the variant cannot be written. #[non_exhaustive] on the error enums is lost
(5), and the enum is left without a producer.
Methods and associated items become free items named Type_name with self_ first: impl methods (31 rows),
associated consts (29 rows). Vec2::new(1.0, 0.0) becomes Vec2_new(1.0, 0.0). The only row with a caller that
does this is SC-00; rustc on SC-01/src/lib.rs against the generated SC-00 says E0599 "no associated function new found for struct Vec2".
const fn becomes fn (8 fns in bitmask.rs): a const context using them stops compiling (none exists).
&[i8; 64] becomes impl AsRef<[i8]> (5 fns of trinity_loss): every old call form still compiles, but the
length is no longer part of the type.
Unit and tuple structs become braced structs (30 rows); Default, PartialEq, Eq derives are dropped (31 rows)
while the output always derives Debug, Clone, Copy.
Doc comments, #[inline], doctests and inner attributes (#![forbid(unsafe_code)] in the five CR-CHAT files, #![deny(missing_docs, unsafe_code)] in rainbow-bridge) are not carried. The #[cfg(test)] modules move into the
spec as test blocks; cargo test loses them.
The use splice adds public helper fns to the generated module (pub fn same in 70 files, count_ones_u32 and
friends in bitmask.rs): extra public names, harmless behind an explicit pub use list.
"Whole" overclaims for a module hub: trios-rainbow-bridge/src/lib.rs has 8 pub mod, 8 pub use and 2 inner
attributes that the converter drops without a refusal line; only its 5 consts and 2 tests convert. A port would
break the crate. The refusal count should include dropped mod, use and inner-attribute items.
Six of the 85 files already have a hand-written port spec under specs/port/ (trinity_loss, three CR-CHAT files,
SC-00, phi.rs). They disagree with the original too: trinity_loss takes [i8; 64] by value (the &a call
sites of tests/loss.rs would not compile) and validate_wire_frame returns i32 codes. dupe_scan --like flags phi_prior_term of the converted trinity_loss spec as already written there. A golden port of these files must
replace or reconcile the old spec, or the DRY criterion of specs/tools/t27o/golden.t27 refuses it.
Delivery: where a generated file can replace a hand file
t27: 117 #[path = "...gen/rust/..."] mounts in 22 hand files (bootstrap/src/main.rs, compiler.rs, cli/t27b/src/lower.rs, cli/tri/src/main.rs, ...). bootstrap/gen/, gen/ and bootstrap/src/memory/generated/
are generated roots, so the generated file is not counted; the own-language budget needs the diff to lose at
least as many hand lines as it gains. Precedent: t27b: which calls lower as the .len field, decided by lencall.t27 (Closes #7524) #7530 deleted cli/t27b/src/lower/lencall.rs (56 lines) and
mounted gen/rust/tri/t27b/lencall.rs.
trios (80 of 81 whole files; 79 of the 80 ranked rows): no generated root, no own-language gate or foreign-lines
budget (21 workflows on main, none named for one), and no t27c, tri gen or gen-rust step in the 17 workflows of the sweep checkout. Its only generated Rust is the trios-mesh gen/rust/ tree, which its own lib.rs documents as excluded from compilation. 73 of the 80 ranked rows are in
crates that the workspace does not build (not a member, no path dependency from a member, absent from main's Cargo.lock). The only ranked trios crates in the lock are CR-CHAT rings 01, 04, 06, 07 (five files) and
rainbow-bridge (one file).
A golden PR in trios therefore needs, first, a generated-file convention in trios (header plus root) and the gate;
until then the verdicts above say the replacement is safe for callers, not that it can be delivered.
First candidate: bootstrap/src/host/bitmask.rs
File: 170 physical lines, 139 non-blank, 96 #[cfg(test)] lines (14 #[test]); 11 free fns, FieldDesc and 5
methods. Crate t27c (binary, no [lib]), module host (mod host; in main.rs).
Callers: bootstrap/src/host/mod.rs line 26 pub mod bitmask; and line 69 pub use bitmask::{clear_bit, extract, field_mask, insert, is_set, mask, popcount, set_bit, toggle_bit, FieldDesc};.
Nothing else in the five repositories names host::bitmask, FieldDesc, or these fns through the module. All ten
re-exported names exist in the generated file, and that pub use line compiles against it.
Converted spec: 163 lines, 16 fns, 14 tests. t27c test-report: 14/14 pass, 0 vacuous. t27b test of the spec plus
the oracle: 25 tests pass, 0 fail, 95 recorded asserts. dupe_scan --like: nothing in the file is written
elsewhere. t27c gen-rust output (131 lines with the spliced std helpers) compiles with rustc --crate-type lib.
Equivalence beyond the recorded vectors: a differential program compiled the hand file and the generated file side by
side and compared every fn over all widths and (high, low) pairs and nine values: 68,268 comparisons, 0
disagreements. A simulated tree with the generated file mounted by #[path = "../../gen/rust/host/bitmask.rs"] pub mod bitmask; built and ran.
Shape of the pull request: delete bootstrap/src/host/bitmask.rs (-170); line 26 of mod.rs becomes the mount line
with the #[allow(...)] attributes the other mounts carry (+1 / -1); add the spec (for example specs/host/bitmask.t27, directory to confirm against specs/OWNERS.md) and bootstrap/gen/rust/host/bitmask.rs.
The own-language budget from the base revision, fed this numstat (1/1 mod.rs, 0/170 bitmask.rs, 150/0 spec,
130/0 generated), returns rc 0; a control of +60/-0 in one hand file returns rc 1 with the 40-line message.
Side effects to state in that PR: cargo test -p t27c loses 14 tests (they move into the spec); const fn and the FieldDesc methods are gone (no user); the new spec needs a seal, a t27b ledger row and a types-ratchet check
(the diff declares FieldDesc; the name appears in specs/ only inside rust_convert.t27 comments).
Not run
tri t27o --check itself and tri t27o-sweep: no tri build (no cargo build on this Mac, disk). The --check path
was replayed by hand with a driver built from master's converter, t27b-tb2-c3 for the judge, and the shared t27c (13:04 on 2026-10-19) for test-report and gen-rust.
No cargo build or cargo test of t27c, trios or any crate: caller claims rest on rustc simulations (the pub use lines of five rings, PH-01 and BR-OUTPUT against the generated PH-00, trinity_loss/tests/loss.rs
against the generated lib, the #[path] mount) and on the identifier index, not on a workspace build.
Callers were searched in the five repositories only (BrowserOS, ghashtag.github.io and trios-railway were not
read); the index is word-level, so a caller that reaches an item through a glob import and a different name would be
missed (the CR-CHAT-04 glob pub use trios_chat_cr_chat_04::* in BR-OUTPUT-CHAT was checked: no file names the
guard's items).
No seal, ledger row or t27b ledger edit; no spec was added to the repository.
Activity
gHashTag commentedon Oct 19, 2026
Measured, analysis only. Same content as
docs/now/2026-10-20-golden-candidates.mdin draft PR #11155 (head f6a12d7). Sweep: lane A4's, 1,388 files; converter re-checked at master a1780a1.docs/now/2026-10-20-golden-candidates.md (Closes #11149, step 4 of #9000; analysis only)
repositories t27o converts whole, what a port would delete, and which of them a generated file replaces without
changing a caller. The table below is the same one posted on t27o golden PRs (step 4 of #9000), measured first: the 85 Rust files that convert whole, ranked by hand lines a port would delete #11149.
.rsfiles (t27 382, trios 786, trinity 23, trinity-fpga 30, 999-multibots-telegraf 167; 435,491physical lines), one process per file, the
sweep_all.zshdriver of lane A4 (every.rsof its copy of each checkout;the t27 copy has no
gen/files), summary written 2026-10-20 00:48 local with that lane's converter build, which is earlier than ca90be1(02:10; t27o: converter trio -- callers of an out-buffer String fn refused, a match in the oracle of a two-text fn, refused receivers named #11130 changed refusal comments only and lost no converted fn). It is not a
tri t27o-sweeprun: there isno
tribuild on this Mac and the sharedtribinary predates the converter. t27 had 376 non-generated.rstracked at master plus 6 files of the swept checkout that master does not track (none of them converts whole).
fns seen == converted > 0(the 85 of t27o golden PRs (step 4 of #9000), measured first: the 85 Rust files that convert whole, ranked by hand lines a port would delete #11149). 4 of them refuse an item that is not a fnand are not whole (list below), leaving 81. One of the 81 is a test-only integration test (excluded), leaving
80 ranked rows with 3,006 physical lines (2,569 non-blank; 1,301 of the lines are
#[cfg(test)]). That is0.69% of the 435,491 swept lines.
gen/rust/tools/t27o/rust_convert.rs(sha256 prefix fdac1e1c4eeebc21) was lastchanged by ca90be1; no commit since touches
gen/rust/tools/t27oorspecs/tools/t27o. A driver built from itwith rustc reproduces the fn, test and refusal counts of all 85 files exactly.
Answer
lib.rs, 102 lines). Excluded: 1 test-only file, 8 generated files that the sweep did not see.unchanged (1,186 lines: five CR-CHAT guards,
trinity_loss,bitmask), 29 rename items nobody uses (823 lines).The other 10 rows (1,363 lines) are real code. Replacing a scaffold with a generated copy of itself is mechanical and
gains nothing; deleting it is the trios owner's call, not a port.
crates/trinity_loss/src/lib.rs(179) andbootstrap/src/host/bitmask.rs(170). First by rank iswire_frame_integrity_guard.rs(184 lines), but it narrowsResult<(), WireFrameError>tobool, and trios has nogenerated root and no own-language gate to deliver it (below).
bootstrap/src/host/bitmask.rsof this repository, 170 lines (139 non-blank, 96 of them#[cfg(test)]), one caller (two lines ofbootstrap/src/host/mod.rs), gate-counted hand lines +1 / -171.Section "First candidate" has the evidence. After it lands, no file of t27 converts whole (1 of 382 today).
Ranked rows
Lines are physical lines (what
git diff --numstatcounts when the file is deleted) / non-blank lines / lines inside#[cfg(test)]. fns excludes tests. "callers" is the number of files outside the row that name a public item or re-export it (then which), readfrom an identifier index of every tracked text file of the five checkouts plus the 154 files of trios main that the
sweep missed; the callers of the ten non-stub rows were then read by hand, and for nine of them compiled against the
generated file (see "Not run"). "workspace" is
whether the trios Cargo workspace (main's 88 members and their path dependencies) builds the crate.
"t27c test-report" is
pass/tests, vac N(vacuous passes). "oracle replay" is thetri t27o --checkpath replayedby hand: oracle harness compiled with rustc, run, appended to the spec as tests, judged by
t27b test(
pass/failcount the spec's tests;assertsis the number of recorded oracle vectors). All 85 files: gen-rustoutput compiles with
rustc --crate-type lib,t27c test-reportexits 0, replay passes.Top 20 rows:
All 80 ranked rows (open for the full table)
Families of the 80 rows:
ring_id()scaffold (rings/*/src/lib.rs)pub fn ring_id() -> &'static str)XScope, RING, PURPOSE, new)newbecomeXScope_RING,XScope_new; unit struct becomes bracedXAssembly)lib.rsre-export onlyResult<(), E>becomesbool,#[non_exhaustive]losttrinity_loss/src/lib.rstests/loss.rs&[i8; 64]becomesimpl AsRef<[i8]>; the 16 tests pass unchanged against the generated libbootstrap/src/host/bitmask.rshost/mod.rsconst fnbecomesfn;FieldDescmethods become free fns; none usedPH-00/src/lib.rs(5f64consts)SC-00/src/lib.rsVec2::newand.dot()become free fnstrios-rainbow-bridge/src/lib.rspub mod, 8pub use, 2 inner attributes droppedNot ranked
Seen == converted but an item is refused (not whole):
Stringfield)String,Vecfields)Transaction(auuidfield)phi_attentionExcluded:
crates/trios-coq-witness/tests/witness_lepton_mass_chain_L01_L02_L03_numerical.rs(25 lines): test-only path(
tests/); its converted spec is a test already, 1 test, vacuous..rsfiles that trios main has(111 under
apps/trios-macos/rings), and trinity-fpga lacks a vendoredzig-pkgfile. Those 154 were fetched fromGitHub main and converted with the same driver: 8 convert whole, all under
apps/trios-macos/rings/RUST-13/trios-mesh/gen/rust/(483 lines, header "Generated from .t27 spec / DO NOTEDIT"). Generated, excluded.
8e535bc9bb, trinity-fpga c9b180bf78, 999-multibots-telegraf fcdbb2f7dc. The sweep checkouts were at trios 483dd9ee
(branch golden-bridge-p1-bibliography), trinity 0770abb9, trinity-fpga 20bf4c41, 999-multibots-telegraf 6e551289.
The t27 row is
bootstrap/src/host/bitmask.rsat master a1780a1.What a port changes (gen-rust mapping against the original)
Counted over the 80 ranked rows, from the converted spec's
t27c gen-rustoutput:usize,u64,u32,u8),f64/f32consts and&'static str(41ring_idreturns, the RING/PURPOSE consts). Numeric literals lose their
_separators (same value).Result<(), E>becomesbool(5 fns, the CR-CHAT guards): the converter drops theErrpayload ("Err payloaddropped"), so a caller that matches the variant cannot be written.
#[non_exhaustive]on the error enums is lost(5), and the enum is left without a producer.
Type_namewithself_first:implmethods (31 rows),associated consts (29 rows).
Vec2::new(1.0, 0.0)becomesVec2_new(1.0, 0.0). The only row with a caller thatdoes this is SC-00;
rustconSC-01/src/lib.rsagainst the generatedSC-00says E0599 "no associated functionnewfound for structVec2".const fnbecomesfn(8 fns inbitmask.rs): aconstcontext using them stops compiling (none exists).&[i8; 64]becomesimpl AsRef<[i8]>(5 fns oftrinity_loss): every old call form still compiles, but thelength is no longer part of the type.
Default,PartialEq,Eqderives are dropped (31 rows)while the output always derives
Debug,Clone,Copy.#[inline], doctests and inner attributes (#![forbid(unsafe_code)]in the five CR-CHAT files,#![deny(missing_docs, unsafe_code)]in rainbow-bridge) are not carried. The#[cfg(test)]modules move into thespec as
testblocks;cargo testloses them.usesplice adds public helper fns to the generated module (pub fn samein 70 files,count_ones_u32andfriends in
bitmask.rs): extra public names, harmless behind an explicitpub uselist.trios-rainbow-bridge/src/lib.rshas 8pub mod, 8pub useand 2 innerattributes that the converter drops without a refusal line; only its 5 consts and 2 tests convert. A port would
break the crate. The refusal count should include dropped
mod,useand inner-attribute items.specs/port/(trinity_loss, three CR-CHAT files,SC-00,
phi.rs). They disagree with the original too:trinity_losstakes[i8; 64]by value (the&acallsites of
tests/loss.rswould not compile) andvalidate_wire_framereturnsi32codes.dupe_scan --likeflagsphi_prior_termof the convertedtrinity_lossspec as already written there. A golden port of these files mustreplace or reconcile the old spec, or the DRY criterion of
specs/tools/t27o/golden.t27refuses it.Delivery: where a generated file can replace a hand file
#[path = "...gen/rust/..."]mounts in 22 hand files (bootstrap/src/main.rs,compiler.rs,cli/t27b/src/lower.rs,cli/tri/src/main.rs, ...).bootstrap/gen/,gen/andbootstrap/src/memory/generated/are generated roots, so the generated file is not counted; the
own-languagebudget needs the diff to lose atleast as many hand lines as it gains. Precedent: t27b: which calls lower as the .len field, decided by lencall.t27 (Closes #7524) #7530 deleted
cli/t27b/src/lower/lencall.rs(56 lines) andmounted
gen/rust/tri/t27b/lencall.rs.budget (21 workflows on main, none named for one), and no t27c,
tri genor gen-rust step in the 17 workflows of the sweep checkout. Its only generated Rust is thetrios-meshgen/rust/tree, which its ownlib.rsdocuments as excluded from compilation. 73 of the 80 ranked rows are incrates that the workspace does not build (not a member, no path dependency from a member, absent from main's
Cargo.lock). The only ranked trios crates in the lock are CR-CHAT rings 01, 04, 06, 07 (five files) andrainbow-bridge (one file).
until then the verdicts above say the replacement is safe for callers, not that it can be delivered.
First candidate: bootstrap/src/host/bitmask.rs
#[cfg(test)]lines (14#[test]); 11 free fns,FieldDescand 5methods. Crate
t27c(binary, no[lib]), modulehost(mod host;inmain.rs).bootstrap/src/host/mod.rsline 26pub mod bitmask;and line 69pub use bitmask::{clear_bit, extract, field_mask, insert, is_set, mask, popcount, set_bit, toggle_bit, FieldDesc};.Nothing else in the five repositories names
host::bitmask,FieldDesc, or these fns through the module. All tenre-exported names exist in the generated file, and that
pub useline compiles against it.t27c test-report: 14/14 pass, 0 vacuous.t27b testof the spec plusthe oracle: 25 tests pass, 0 fail, 95 recorded asserts.
dupe_scan --like: nothing in the file is writtenelsewhere.
t27c gen-rustoutput (131 lines with the spliced std helpers) compiles withrustc --crate-type lib.side and compared every fn over all widths and (high, low) pairs and nine values: 68,268 comparisons, 0
disagreements. A simulated tree with the generated file mounted by
#[path = "../../gen/rust/host/bitmask.rs"] pub mod bitmask;built and ran.bootstrap/src/host/bitmask.rs(-170); line 26 ofmod.rsbecomes the mount linewith the
#[allow(...)]attributes the other mounts carry (+1 / -1); add the spec (for examplespecs/host/bitmask.t27, directory to confirm againstspecs/OWNERS.md) andbootstrap/gen/rust/host/bitmask.rs.The
own-languagebudget from the base revision, fed this numstat (1/1 mod.rs, 0/170 bitmask.rs, 150/0 spec,130/0 generated), returns rc 0; a control of +60/-0 in one hand file returns rc 1 with the 40-line message.
cargo test -p t27closes 14 tests (they move into the spec);const fnand theFieldDescmethods are gone (no user); the new spec needs a seal, a t27b ledger row and a types-ratchet check(the diff declares
FieldDesc; the name appears inspecs/only insiderust_convert.t27comments).Not run
tri t27o --checkitself andtri t27o-sweep: notribuild (no cargo build on this Mac, disk). The--checkpathwas replayed by hand with a driver built from master's converter,
t27b-tb2-c3for the judge, and the sharedt27c(13:04 on 2026-10-19) fortest-reportandgen-rust.cargo buildorcargo testoft27c,triosor any crate: caller claims rest onrustcsimulations (thepub uselines of five rings,PH-01andBR-OUTPUTagainst the generated PH-00,trinity_loss/tests/loss.rsagainst the generated lib, the
#[path]mount) and on the identifier index, not on a workspace build.read); the index is word-level, so a caller that reaches an item through a glob import and a different name would be
missed (the CR-CHAT-04 glob
pub use trios_chat_cr_chat_04::*inBR-OUTPUT-CHATwas checked: no file names theguard's items).
t27bledger edit; no spec was added to the repository.docs(t27o): golden candidates -- callers as counts, stub range correc…
docs(t27o): golden candidates -- the 81 Rust files that convert whole…
docs(t27o): RFC for heap-free collections, owned strings and inlined …