Skip to content

t27o golden functions (step 4 of #9000), measured first: hand lines in converted fns of partly converting files, and which can move without changing a caller #11159

Closed

Description

@gHashTag

Goal

Measure the per-function golden prize: the hand-written Rust lines that sit in functions t27o already converts, inside files that only partly convert, and which of those functions could be replaced by a generated function mounted into the same file without changing a caller. This is step 4 of #9000 for the files that do not convert whole.

Why

The first golden port (#11157, bootstrap/src/host/bitmask.rs, +1/-171 hand lines) was the only file in the t27 repository that converts whole; A7's analysis (#11149) found 3,006 hand lines in 80 whole files across five repositories (0.69% of the swept lines), most of them stubs or in trios crates the workspace does not build. The sweep of 2026-10-20 converts 632 of 7,038 fns in the t27 tree and 1,824 of 19,392 over all five. Those converted fns sit in files that also hold refused fns, so the file cannot be replaced, but the function can: its body moves into a spec, the file mounts the generated function with #[path], and the hand lines are deleted. Nobody has counted those lines or checked how many have callers whose types would change.

Boundary

  • docs/now/2026-10-20-golden-functions.md

User Scenarios

  • Given a partly converting file, when the analysis runs, then it lists each converted fn with its hand-written line span, its callers in the same file and in other files, and the type difference gen-rust would introduce.
  • Given a converted fn called only by other converted fns of the same file, when it is ranked, then the row says the whole group can move together.
  • Given a converted fn whose signature changes under gen-rust, when it is ranked, then it is marked with the callers it would break.

Requirements

  • FR-001: The table MUST count hand-written lines the way the own-language gate does, name the sweep driver and the commits, and exclude generated, vendored and test-only paths with the reason.
  • FR-002: Each ranked fn MUST be checked for valid output (t27c test-report of its converted spec) and for the signature gen-rust writes against the original.
  • 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 and held in docs/now/2026-10-20-golden-functions.md, with at least 30 rows ranked by hand-written lines.
  • It names the first group of fns that deletes at least 200 lines of hand-written Rust with every caller unchanged, or states in numbers why none does.

Activity

  1. gHashTag commented on Oct 19, 2026

    @gHashTag
    OwnerAuthor

    Measured, analysis only. Same content as docs/now/2026-10-20-golden-functions.md in draft PR #11160 (head 22a43fb), cut to the answer, the scale, the reasons, the first bundle, the top bundles and the top 120 of the 187 ranked rows; the rest, the signature appendix and the per-file list of every converted fn are in the document.

    valid-output: unchecked on 44 of the 187 rows (45 of the 223 specs): t27c test-report was stopped when the shared Mac ran low on disk under load; those rows still carry the rustc compile of their gen-rust output. The unchecked rows are 30 trios rows and 14 999-multibots-telegraf rows; every t27 row was checked (all 93 t27 specs).

    Answer

    • Scale: 223 partly converting files hold 817 converted fns with 6,555 hand lines (outside #[cfg(test)]; 44,864 #[cfg(test)] lines sit in the same files).
      That is 1.51% of the 435,491 physical lines lane A4 swept (the denominator 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), where the whole files 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 were 0.69%.
    • MOVABLE (same name, same types, every caller unchanged): 146 fns, 1,375 hand lines (0.32% of the swept lines). MOVABLE-WITH-CALLER-CHANGE: 54 fns, 406 lines.
      NOT-NOW: 617 fns, 4,774 lines (73% of the hand lines in converted fns).
    • Where the MOVABLE lines are: t27 workspace crates (bootstrap, cli/*) 217 lines in 27 fns; t27 rings/ crates 510 in 38; t27 other crates 108 in 9; trios workspace crates 421 in 49;
      trios crates not built 110 in 14; the three other repositories 9 in 9. Methods never move without a caller change, and a fn that names a hand-file type cannot move before the type does.
    • Net, if every MOVABLE bundle above 5 lines were ported with a 5-line mount each: 1036 lines out of hand files in 52 files (31 of them under 20 lines); the 40-line-per-file and 80-per-PR budget is never the limit, the fixed cost of one spec, one generated file, one seal and one ledger row per bundle is.
    • Biggest call-connected group: exp_f64 + apply_softmax of rings/ring-092-rust/src/lib.rs, 93 lines. No call-connected group reaches 200.
    • First MOVABLE bundle that deletes at least 200 hand lines with every caller unchanged: the 7 MOVABLE fns of rings/ring-092-rust/src/lib.rs, 201 hand lines
      (abs_f64 9, exp_f64 45, apply_softmax 48, cache_kv 20, compute_scores 38, weighted_values 30, identity_witness 11), one file, one mount, five call-connected groups that do not call each other.
      Plainly: 201 lines deleted against a 5-line mount added, net -196; no other bundle exceeds 88 lines (ring-093 88, ffi 78, ring-099 46, cli/tri/src/fpga.rs 45). Section "First bundle" has the evidence.
    • In the crates the t27 workspace builds the prize is small: the largest MOVABLE bundle is cli/tri/src/fpga.rs with 45 lines; all 27 MOVABLE fns of bootstrap and cli/* hold 217 lines.
    • Valid output: 178 of the 223 specs were run through t27c test-report (one spec per file, a fresh ZIG_LOCAL_CACHE_DIR deleted after each run): 100 specs hold tests (377 tests, 377 pass, 0 FAIL, 57 vacuous passes);
      78 specs hold no test (their file has none), so the report has nothing to run for them and those rows lean on the rustc compile of the gen-rust output. 45 specs were NOT checked
      (stopped when the shared Mac ran low on disk under load): 45 files, the 44 rows marked valid-output: unchecked below (of 187 rows).
      Every row's gen-rust output was also compiled with rustc --crate-type lib (stub fns removed; the ring crates also under #![no_std]).

    Scale (partly converting files only; fns and lines are converted non-test fns)

    area what it is files converted fns hand lines cfg(test) lines in those files MOVABLE fns / lines CALLER-CHANGE fns / lines NOT-NOW fns / lines
    W27 t27 workspace crates (bootstrap, cli/*) 63 295 2195 28194 27 / 217 29 / 229 239 / 1749
    R27 t27 rings/ (standalone crates built by rings-rust.yml) 17 142 1403 3907 38 / 510 1 / 10 103 / 883
    O27 t27 other crates (ffi, bindings, contrib, backend; not built by the workspace) 6 23 148 141 9 / 108 1 / 9 13 / 31
    WT trios crates built by its workspace (88 members + path dependencies) 82 242 1864 8743 49 / 421 9 / 106 184 / 1337
    NT trios crates the workspace does not build 40 79 712 3450 14 / 110 9 / 43 56 / 559
    OT trinity, trinity-fpga, 999-multibots-telegraf (no workspace build checked) 15 36 233 429 9 / 9 5 / 9 22 / 215
    all 223 817 6555 44864 146 / 1375 54 / 406 617 / 4774

    Why the rest cannot move now (NOT-NOW, by first reason)

    reason fns hand lines
    ty-: method of, or signature names, a hand-file type with derives gen-rust drops (PartialEq, Eq, Hash, Default, serde ...): the type cannot move without breaking users 340 2663
    ty+: method of, or signature names, a hand-file type whose derives gen-rust keeps (Debug, Clone, Copy): the type must move first 137 952
    bad: gen-rust output does not compile (or calls a fn / needs a const that does not) 68 736
    trait: method of a trait impl (callers dispatch through the trait) 38 189
    attr: cfg, proc-macro or ABI attribute, or unsafe/extern 20 146
    constctx: const fn called in a const context (gen-rust writes a plain fn) 13 76
    dep: calls a NOT-NOW fn 1 12

    Per area (fns / lines): W27: ty+ 56/367, ty- 119/836, bad 43/400, constctx 9/59, trait 11/75, dep 1/12; R27: ty+ 14/73, ty- 71/694, bad 11/92, constctx 3/12, trait 4/12; O27: ty- 10/18, attr 2/10, trait 1/3; WT: ty+ 54/416, ty- 93/632, bad 5/88, constctx 1/5, attr 16/128, trait 15/68; NT: ty+ 11/92, ty- 34/320, bad 7/128, trait 4/19; OT: ty+ 2/4, ty- 13/163, bad 2/28, attr 2/8, trait 3/12

    • 465 of the 617 NOT-NOW fns (3441 lines) are methods: gen-rust turns Type::method(&self, ..) into the free fn Type_method(self_, ..) and writes the type again in the generated module, so
      every method and every fn that takes or returns a hand-file type needs the type moved first; types that derive PartialEq, Eq, Hash, Default or serde
      lose those derives (gen-rust writes Debug, Clone, Copy), which is the second row. A type-move PR is the next step for the ty+ fns, not a function move.
    • &str parameters become &[u8] when the spec slices (56 free fns) or &'static str (9): the call sites need .as_bytes() or a literal, which is why those fns are CALLER-CHANGE.
    • gen-rust output that does not compile: array consts (pub const X: Vec<u64> = [..], Vec<const u8>), const-evaluated calls (E0015), Option<T> indexing, &str iteration,
      text indexing; these are gen-rust and converter defects, listed by rustc message in the appendix.

    First bundle: rings/ring-092-rust/src/lib.rs (7 fns, 201 hand lines)

    • Crate ring-092-rust (package name), rings/ring-092-rust: in the root Cargo.toml exclude list, built standalone by .github/workflows/rings-rust.yml (Rust 1.83, continue-on-error).
      The names apply_softmax, weighted_values, compute_scores and cache_kv occur in no other .rs file of the five repositories; identity_witness (17 rings), exp_f64 (ring-093) and abs_f64 (ring-093, compiler.rs) are defined again in independent crates that do not depend on ring-092; #![no_std], #![forbid(unsafe_code)],
      #![deny(missing_docs)].
    • Callers: all of them are inside the file: the 28 #[test] fns of its #[cfg(test)] module (21 of them converted into the spec as tests) and, between the fns, apply_softmax -> exp_f64
      and identity_witness -> abs_f64. No refused fn calls any of the 7. Call-connected groups: {exp_f64, apply_softmax}, {abs_f64, identity_witness}, {cache_kv}, {compute_scores}, {weighted_values}.
    • gen-rust signatures: identical names and types except the three fns that take &[f64], which gen-rust writes impl AsRef<[f64]> (every call form of the file compiles; &[] literals would need an annotation).
      The consts the fns use (NUM_HEADS, HEAD_DIM, EMBED_DIM, CONTEXT_LEN, SACRED_SCALE) also convert and compile, but this count does not delete them from the hand file.
    • What was built to check it (scratch only, not committed): a group-only spec of the 7 fns, its 16 consts and the 21 tests that call nothing else; t27c gen-rust of it (198 lines);
      a copy of the crate with the 7 fn spans deleted and a 5-line mount (#[path], #[allow(missing_docs, ..)], mod golden;, pub use golden::{5 pub fns};, use golden::{abs_f64, exp_f64};).
      rustc --test of the original: 28 passed, 0 failed; of the mounted copy: 28 passed, 0 failed; 201 lines out, 5 in (761 -> 565 lines). abs_f64 and exp_f64 are used only by tests and by
      generated code in the hand file, so the use line wants #[cfg(test)] in crates with deny(warnings) (rings 094-099); ring-092 only warns "unused imports".
    • Differential run of the hand fns against the generated ones, same inputs, results compared by bit pattern (NaN equal to NaN), or both must panic: exp_f64 and abs_f64 over
      4,000,022 inputs each (specials, subnormals, +-inf, NaN, the 700 cut-off, random bit patterns, uniform and wide ranges); apply_softmax 300,000 arrays and seq_len values including out of range;
      cache_kv 200,000; compute_scores and weighted_values 30,000 each, with short buffers and out-of-range positions; identity_witness. 8,560,045 comparisons, 0 disagreements, 180,769 cases where
      both panicked (out-of-contract buffers), at -C opt-level=0 (overflow checks on), -C opt-level=3 -C overflow-checks=off and -C opt-level=3 -C overflow-checks=on.
    • python3 -I tools/dupe_scan.py --like on the group spec: "nothing in this file is written elsewhere" (no byte-identical body). But specs/nn/attention.t27 already declares cache_kv, compute_scores, apply_softmax,
      weighted_values and ternary_matmul, with a different argument order for compute_scores and weighted_values; the crate says it mirrors that spec. A port must reconcile with it first (as the
      six specs/port/ files do in 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), or it adds a second spec of the same kernel.
    • Shape of the pull request (not done): delete the 7 spans (-201), add the mount (+5), add the spec and the file t27c gen-rust writes under a generated root (for example gen/rust/rings/, mounted as
      #[path = "../../../gen/rust/rings/ring092_attention.rs"]), a seal and a t27b ledger row. The own-language budget sees +5 / -201 in one hand file.

    Bundles: the MOVABLE fns of one file, one mount per file (top 25 of 74 files)

    Not all of a bundle's fns call each other: "groups" is the number of call-connected groups in it. "net" is lines minus a 5-line mount (3 if the mount attributes share one line, as in #11157).

    # area path MOVABLE fns groups lines net consts the fns use (lines) CALLER-CHANGE lines in the file cfg(test) lines valid output
    1 R27 rings/ring-092-rust/src/lib.rs 7 5 201 196 CONTEXT_LEN, EMBED_DIM, HEAD_DIM, NUM_HEADS +1 (18) 0 355 tr 21/21 vac 5
    2 R27 rings/ring-093-rust/src/lib.rs 5 4 88 83 none 0 498 tr 14/14 vac 4
    3 O27 ffi/src/lib.rs 2 2 78 73 GF16_EXP_BIAS, GF16_EXP_BITS, GF16_EXP_MASK, GF16_MANT_BITS +1 (5) 0 141 tr no tests in spec
    4 R27 rings/ring-099-rust/src/lib.rs 5 5 46 41 STAGE_COMMIT, STAGE_DONE, STAGE_GEN, STAGE_INIT +5 (10) 0 328 tr 23/23 vac 5
    5 W27 cli/tri/src/fpga.rs 5 4 45 40 PVT_TEMP_MIN_C, PVT_VCCINT_MAX_MV (3) 8 3918 tr 12/12 vac 0
    6 R27 rings/ring-097-rust/src/lib.rs 3 1 45 40 none 0 337 tr 4/4 vac 1
    7 WT crates/trios-tri/src/core_compat.rs 3 3 45 40 none 0 95 valid-output: unchecked
    8 R27 rings/ring-095-rust/src/lib.rs 6 5 40 35 PHI, PHI_INV (4) 0 387 tr 7/7 vac 0
    9 W27 bootstrap/src/math_compare.rs 3 3 38 33 none 0 116 tr no tests in spec
    10 NT crates/jepa_t_ingest/src/lib.rs 1 1 36 31 none 0 62 tr 4/4 vac 0
    11 W27 cli/tri/src/prcheck.rs 2 2 33 28 none 0 845 tr 9/9 vac 1
    12 NT apps/trios-macos/rings/RUST-13/trios-mesh/src/wire.rs 5 3 32 27 KIND_DATA, VERSION (2) 0 34 tr 2/2 vac 1
    13 WT crates/trios-trainer/src/backward.rs 1 1 29 24 none 0 153 valid-output: unchecked
    14 WT tools/acm_ae_check/src/lib.rs 3 3 29 24 TRINITY_ANCHOR, ZENODO_DOI (8) 0 190 valid-output: unchecked
    15 WT crates/trios-chat/rings/CR-CHAT-07/src/egress_fingerprint.rs 2 2 28 23 CANONICAL_BURST_GAPS_MS, CANONICAL_LENGTH_CLASSES (5) 0 94 tr 2/2 vac 0

    Ranked table: every MOVABLE or MOVABLE-WITH-CALLER-CHANGE group (187 rows), ranked by hand lines

    Legend. area: W27 t27 workspace crates, R27 t27 rings/, O27 other t27 crates, WT trios workspace crates, NT trios crates not built, OT trinity / trinity-fpga / 999-multibots-telegraf (repo named). A group is the
    call-connected set of converted fns of one file that call only each other (a lone fn is a group of one); a group is MOVABLE only if every fn in it is. "callers in file": conv = another converted fn,
    refused = a fn the converter refuses (it keeps calling the moved fn by name through a use, so it blocks only when a signature changes), test = a #[test] or helper in the #[cfg(test)] module,
    other = a const/static initializer. "callers elsewhere": files outside the row that name the fn through its module path, an import or the crate name (checked by hand for every MOVABLE row that had a hit).
    "gen-rust vs original": differences in the signature gen-rust writes; const fn -> fn matters only to a const context (checked: none for a MOVABLE row); impl AsRef widens. "valid output": tr P/T vac V is
    t27c test-report of the file's converted spec (P passes of T tests, V vacuous passes); "gen-rust compiles" is rustc --crate-type lib of the generated file with the refused stubs removed.

    # area repo path fns (hand lines) lines callers in file callers elsewhere gen-rust vs original valid output verdict
    1 R27 t27 rings/ring-092-rust/src/lib.rs exp_f64 (45), apply_softmax (48) 93 8 test, 1 inside group none same tr 21/21 vac 5; gen-rust compiles MOVABLE
    2 O27 t27 ffi/src/lib.rs encode_gf16_from_u32 (52) 52 5 refused none same tr no tests in spec; gen-rust compiles MOVABLE
    3 R27 t27 rings/ring-097-rust/src/lib.rs write_byte (8), write_usize (19), write_u64 (18) 45 5 refused, 4 inside group none same tr 4/4 vac 1; gen-rust compiles MOVABLE
    4 R27 t27 rings/ring-092-rust/src/lib.rs compute_scores (38) 38 2 test none &[f64] -> impl AsRef (widens) x2 tr 21/21 vac 5; gen-rust compiles MOVABLE
    5 NT trios crates/jepa_t_ingest/src/lib.rs quantize_phi_prior (36) 36 1 refused, 7 test crates/jepa_t_ingest/tests/quantize.rs (use jepa_t_ingest::quantize_phi_prior) same tr 4/4 vac 0; gen-rust compiles MOVABLE
    6 R27 t27 rings/ring-093-rust/src/lib.rs exp_f64 (33) 33 1 refused, 2 test none same tr 14/14 vac 4; gen-rust compiles MOVABLE
    7 R27 t27 rings/ring-092-rust/src/lib.rs weighted_values (30) 30 1 test none &[f64] -> impl AsRef (widens) x2 tr 21/21 vac 5; gen-rust compiles MOVABLE
    8 WT trios crates/trios-trainer/src/backward.rs softmax_cross_entropy_backward (29) 29 1 test none &[f32] -> impl AsRef (widens); &[usize] -> impl AsRef (widens) valid-output: unchecked (gen-rust compiles) MOVABLE
    9 R27 t27 rings/ring-088-rust/src/lib.rs round_half_to_even (17), libm_floor (10) 27 1 refused, 1 inside group none same tr 1/1 vac 1; gen-rust compiles MOVABLE
    10 R27 t27 rings/ring-093-rust/src/lib.rs load_balance_loss (27) 27 6 test none &[u32] -> impl AsRef (widens) tr 14/14 vac 4; gen-rust compiles MOVABLE
    11 WT trios crates/trios-chat/rings/CR-CHAT-01/src/key_package_expiry_guard.rs validate_key_package_expiry (27) 27 10 test crates/trios-chat/rings/CR-CHAT-01/src/lib.rs (1, import) ret Result<(),KeyPackageExpiryError> -> bool tr 9/9 vac 0; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: kpx_01_expired_rejected, kpx_02_not_yet_valid_rejected, kpx_03_inverted_rejected, kpx_04_too_short_rejected +6]
    12 O27 t27 ffi/src/lib.rs decode_gf16_to_u32 (26) 26 11 refused none same tr no tests in spec; gen-rust compiles MOVABLE
    13 W27 t27 cli/tri/src/fpga.rs cclk_period_ns (9), cclk_nominal_hz (15) 24 5 refused, 12 test, 1 inside group none same tr 12/12 vac 0; gen-rust compiles MOVABLE
    14 WT trios crates/trios-trainer/src/validation.rs is_within_champion_tolerance (24) 24 2 test, 5 other none same valid-output: unchecked (gen-rust compiles) MOVABLE
    15 W27 t27 cli/dlc10/src/lib.rs Dlc10::build_read_cfg_packets (23) 23 2 refused, 1 test none Type::fn -> free fn Dlc10_build_read_cfg_packets tr no tests (binary crate spec); gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: Dlc10::read_cfg_reg_diag, Dlc10::read_cfg_reg_raw_n, build_read_cfg_packets_idcode_matches_openfpgaloader]
    16 WT trios crates/trios-trainer/src/optimizer.rs lr_schedule_54_f64 (21) 21 none none same valid-output: unchecked (gen-rust compiles) MOVABLE
    17 WT trios crates/trios-tri/src/lib.rs ternary_size_bytes (21) 21 none none same valid-output: unchecked (gen-rust compiles) MOVABLE
    18 W27 t27 cli/tri/src/gates.rs leaves_function (20) 20 4 refused none &str -> &[u8] (callers .as_bytes()) tr 4/4 vac 0; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: assert_sites, boundary_sites, invert_sites, sites_in_direction]
    19 R27 t27 rings/ring-092-rust/src/lib.rs abs_f64 (9), identity_witness (11) 20 14 test, 1 inside group none same tr 21/21 vac 5; gen-rust compiles MOVABLE
    20 R27 t27 rings/ring-092-rust/src/lib.rs cache_kv (20) 20 1 test none &[f64] -> impl AsRef (widens) x2 tr 21/21 vac 5; gen-rust compiles MOVABLE
    21 NT trios apps/trios-macos/rings/RUST-13/trios-mesh/src/wire.rs be_byte (10), header_byte (10) 20 1 refused, 2 inside group none same tr 2/2 vac 1; gen-rust compiles MOVABLE
    22 R27 t27 rings/ring-095-rust/src/lib.rs pow_u64 (15), compute_bias_correction (4) 19 2 refused, 9 test, 1 inside group none same tr 7/7 vac 0; gen-rust compiles MOVABLE
    23 NT trios apps/trios-macos/rings/RUST-05/clade-monitor/src/main.rs calculate_backoff (9), calculate_backoff_with_jitter (10) 19 5 refused, 15 test, 1 inside group none same tr no tests (binary crate spec); gen-rust compiles MOVABLE
    24 WT trios crates/trios-chat/rings/CR-CHAT-02/src/ratchet_replay_window_guard.rs validate_counter_advance (19) 19 7 test crates/trios-chat/rings/CR-CHAT-02/src/lib.rs (1, import) ret Result<(),RatchetReplayError> -> bool tr 7/7 vac 0; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: rpla_01_zero_counter_rejected, rpla_02_not_advanced_rejected, rpla_03_rollback_rejected, rpla_04_gap_too_large_rejected +3]
    25 W27 t27 bootstrap/src/formula_eval.rs map_formula_id (18) 18 1 refused none &str -> &'static str (narrows); ret &str -> &'static str (benign) tr no tests in spec; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: evaluate_formula]
    26 W27 t27 cli/tri/src/prcheck.rs verdict_code (18) 18 1 refused, 1 test none same tr 9/9 vac 1; gen-rust compiles MOVABLE
    27 R27 t27 rings/ring-093-rust/src/lib.rs abs_f64 (8), identity_witness (10) 18 20 test, 1 inside group none same tr 14/14 vac 4; gen-rust compiles MOVABLE
    28 WT trios crates/trios-tri/src/core_compat.rs ternary_compression_ratio (18) 18 1 test none same valid-output: unchecked (gen-rust compiles) MOVABLE
    29 WT trios crates/trios-tri/src/core_compat.rs ternary_compression_vs_gf16 (18) 18 1 test none same valid-output: unchecked (gen-rust compiles) MOVABLE
    30 W27 t27 bootstrap/src/math_compare.rs pell_f64 (17) 17 1 refused none same tr no tests in spec; gen-rust compiles MOVABLE
    31 W27 t27 bootstrap/src/math_compare.rs pell_u64 (17) 17 1 refused none same tr no tests in spec; gen-rust compiles MOVABLE
    32 R27 t27 rings/ring-099-rust/src/lib.rs advance (17) 17 4 refused none const fn -> fn tr 23/23 vac 5; gen-rust compiles MOVABLE
    33 WT trios crates/trios-fpga/src/xdc.rs minimal_qmtech_xdc (17) 17 3 test crates/trios-fpga/src/build.rs:428 as crate::xdc::minimal_qmtech_xdc() same tr no tests in spec; gen-rust compiles MOVABLE
    34 WT trios crates/trios-chat/rings/CR-CHAT-07/src/lib.rs uniform_gap_ms (16) 16 9 test crates/trios-chat/rings/CR-CHAT-07/src/jitter_side_channel.rs (2, import) same tr 2/2 vac 0; gen-rust compiles MOVABLE
    35 W27 t27 cli/tri/src/prcheck.rs merge_outcome (15) 15 2 refused, 3 test, 1 other none same tr 9/9 vac 1; gen-rust compiles MOVABLE
    36 WT trios tools/defense_gate/src/lib.rs count_substr (15) 15 8 refused, 2 test none &str -> &[u8] (callers .as_bytes()) x2 valid-output: unchecked (gen-rust compiles) MOVABLE-WITH-CALLER-CHANGE [change callers in: count_frames, count_qa_pairs, count_sections, count_substr_does_not_overlap]
    37 WT trios crates/trios-chat/rings/CR-CHAT-07/src/egress_fingerprint.rs uniform_burst_ms (14) 14 1 refused, 6 test crates/trios-chat/rings/CR-CHAT-07/src/lib.rs (1, import) same tr 2/2 vac 0; gen-rust compiles MOVABLE
    38 WT trios crates/trios-chat/rings/CR-CHAT-07/src/egress_fingerprint.rs uniform_length_class (14) 14 1 refused, 6 test crates/trios-chat/rings/CR-CHAT-07/src/lib.rs (1, import) same tr 2/2 vac 0; gen-rust compiles MOVABLE
    39 W27 t27 bootstrap/src/main.rs t27a_status_text (13) 13 1 refused none same tr no tests in spec; gen-rust compiles MOVABLE
    40 W27 t27 cli/tri/src/fpga.rs raw_ns_satisfies_flash_spec (13) 13 4 refused none same tr 12/12 vac 0; gen-rust compiles MOVABLE
    41 W27 t27 cli/tri/src/gates.rs silences_stderr (9), counts_zero_when_absent (4) 13 1 conv, 3 refused, 3 test, 2 other, 1 inside group none &str -> &[u8] (callers .as_bytes()) x2 tr 4/4 vac 0; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: a_count_that_reads_zero_is_the_same_defect_in_a_different_costume, counts_zero_when_absent, if_falls_through, is_quiet_candidate +2]
    42 R27 t27 rings/ring-098-rust/src/lib.rs pow_u64 (13) 13 5 test none const fn -> fn tr 11/11 vac 2; gen-rust compiles MOVABLE
    43 R27 t27 rings/ring-099-rust/src/lib.rs pow_u64 (13) 13 5 test none const fn -> fn tr 23/23 vac 5; gen-rust compiles MOVABLE
    44 WT trios crates/trios-hdc/src/phi_quantization.rs compression_ratio (13) 13 none none same tr no tests in spec; gen-rust compiles MOVABLE
    45 WT trios crates/trios-trainer/src/forward.rs vec_scale (13) 13 1 test none &[f32] -> impl AsRef (widens) valid-output: unchecked (gen-rust compiles) MOVABLE
    46 WT trios tools/acm_ae_check/src/lib.rs reusable_required_needles (13) 13 1 refused none same valid-output: unchecked (gen-rust compiles) MOVABLE
    47 W27 t27 bootstrap/src/compiler.rs HirMemory::calc_addr_width (12) 12 2 refused none Type::fn -> free fn HirMemory_calc_addr_width tr 35/35 vac 4; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: HirMemory::new_bram, HirMemory::new_rom]
    48 W27 t27 cli/tri/src/night.rs action_for (12) 12 2 refused, 4 test, 1 other none &str -> &[u8] (callers .as_bytes()) tr 2/2 vac 0; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: clean_merges_and_behind_updates, pr_line, run, unknown_states_refuse_to_guess]
    49 W27 t27 cli/tri/src/red.rs is_lower_bound (4), is_bounded_read (8) 12 1 refused, 8 test, 1 inside group none same tr 2/2 vac 0; gen-rust compiles MOVABLE
    50 WT trios crates/trios-igla-race/src/race.rs deterministic_unit (12) 12 1 refused none same tr no tests in spec; gen-rust compiles MOVABLE
    51 WT trios crates/trios-trainer/src/forward.rs vec_add (12) 12 1 test none &[f32] -> impl AsRef (widens) valid-output: unchecked (gen-rust compiles) MOVABLE
    52 WT trios tools/acm_ae_check/src/lib.rs functional_required_paths (12) 12 1 refused none same valid-output: unchecked (gen-rust compiles) MOVABLE
    53 WT trios crates/trios-ternary/src/lib.rs ternary_size_bytes (11) 11 none none same valid-output: unchecked (gen-rust compiles) MOVABLE
    54 W27 t27 bootstrap/src/bitnet_axi.rs resolve_param (10) 10 2 refused, 5 test none same tr 1/1 vac 0; gen-rust compiles MOVABLE
    55 W27 t27 cli/tri/src/cibase.rs count (10) 10 3 refused, 5 test none &str -> &[u8] (callers .as_bytes()) tr 1/1 vac 0; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: an_unreadable_count_is_not_a_zero_and_does_not_claim_it_never_ran, baseline]
    56 R27 t27 rings/ring-093-rust/src/lib.rs relu_inplace (10) 10 1 refused, 2 test none same tr 14/14 vac 4; gen-rust compiles MOVABLE
    57 R27 t27 rings/ring-100-rust/src/lib.rs Mesh::identity_witness (10) 10 1 test none Type::fn -> free fn Mesh_identity_witness tr no tests in spec; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: identity_witness_holds]
    58 WT trios crates/trios-chat/rings/CR-CHAT-04/src/padding_timing_uniformity_guard.rs approx_sqrt (10) 10 1 refused none same tr no tests in spec; gen-rust compiles MOVABLE
    59 WT trios crates/trios-chat/rings/CR-CHAT-07/src/cover_traffic_burst_interval_regularity_guard.rs approx_sqrt (10) 10 1 refused none same tr no tests in spec; gen-rust compiles MOVABLE
    60 WT trios crates/trios-cli/src/cmd/roster.rs agent_name (10) 10 1 refused none &str -> &[u8] (callers .as_bytes()) tr no tests in spec; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: roster_show]
    61 WT trios crates/trios-phd/src/main.rs regex_lite_global (10) 10 1 refused none arity 2->3 tr 3/3 vac 3; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: materialize_stubs]
    62 WT trios crates/trios-trainer/src/train_loop.rs evaluate_step (10) 10 1 refused none ret Result -> Option valid-output: unchecked (gen-rust compiles) MOVABLE-WITH-CALLER-CHANGE [change callers in: run]
    63 W27 t27 bootstrap/src/compiler.rs Codegen::zig_is_primitive (9) 9 2 refused none &str -> &[u8] (callers .as_bytes()); Type::fn -> free fn Codegen_zig_is_primitive tr 35/35 vac 4; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: Codegen::gen_fn_decl, Codegen::zig_binding_ident]
    64 W27 t27 bootstrap/src/main.rs backend_extension (9) 9 3 refused none &str -> &[u8] (callers .as_bytes()); ret &str -> &'static str (benign) tr no tests in spec; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: run_compile, run_compile_all, run_compile_project]
    65 W27 t27 bootstrap/src/phi_f64_literals.rs expected_phi (9) 9 1 refused none same tr no tests in spec; gen-rust compiles MOVABLE
    66 W27 t27 cli/tri/src/depin/phi_challenge.rs pack_gf16_matrix (9) 9 1 refused, 1 test cli/tri/src/depin/prove.rs (2, import) &[[u8;16];16] -> Vec<[u8;16]> tr no tests in spec; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: compute_phi_response_v2, test_v2_wrong_matrix_fails]
    67 W27 t27 cli/tri/src/gates.rs says_lower_bound (9) 9 1 refused none &str -> &[u8] (callers .as_bytes()) tr 4/4 vac 0; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: bounded_reads_outside_the_crate]
    68 W27 t27 cli/tri/src/issues.rs read_is_complete (9) 9 3 refused, 4 test, 1 other cli/tri/src/gates.rs (1), cli/tri/src/prcheck.rs as issues::read_is_complete() same tr 1/1 vac 0; gen-rust compiles MOVABLE
    69 O27 t27 contrib/solana/programs/tri-mining/src/lib.rs pack_gf16_matrix (9) 9 1 refused none &[[u8;16];16] -> Vec<[u8;16]> tr no tests in spec; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: verify_phi_response_v2]
    70 R27 t27 rings/ring-095-rust/src/lib.rs fabs_no_std (9) 9 2 refused, 20 test none same tr 7/7 vac 0; gen-rust compiles MOVABLE
    71 NT trios apps/trios-macos/rings/RUST-08/clade-promote/src/main.rs severity_cost (9) 9 1 refused, 11 test none &str -> &[u8] (callers .as_bytes()) tr 1/1 vac 0; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: severity_cost_critical, severity_cost_high, severity_cost_low, severity_cost_medium +3]
    72 WT trios crates/trios-chat/rings/CR-CHAT-03/src/treekem_parent_hash_binding.rs sibling_index (9) 9 3 refused, 3 test none same tr no tests in spec; gen-rust compiles MOVABLE
    73 WT trios crates/trios-igla-race/src/victory_new.rs t_cdf_lower_tail (9) 9 1 refused none same tr no tests in spec; gen-rust compiles MOVABLE
    74 NT trios crates/trios-mcp/rings/SR-01/src/audits_new.rs category_to_label (9) 9 none none &str -> &'static str (narrows); ret &str -> &'static str (benign) tr no tests in spec; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: other files only]
    75 WT trios crates/trios-tri/src/core_compat.rs format_description (9) 9 1 test none same valid-output: unchecked (gen-rust compiles) MOVABLE
    76 W27 t27 bootstrap/src/compiler.rs VerilogCodegen::is_primitive_scalar_type (8) 8 18 refused none &str -> &[u8] (callers .as_bytes()); Type::fn -> free fn VerilogCodegen_is_primitive_scalar_type tr 35/35 vac 4; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: Compiler::is_icarus_lowerable_type, VerilogCodegen::call_returning_cse_value_info, VerilogCodegen::expr_width_signed, VerilogCodegen::gen_verilog +7]
    77 W27 t27 cli/tri/src/fpga.rs quad_refused (8) 8 1 refused, 5 test, 1 other none &str -> &[u8] (callers .as_bytes()) tr 12/12 vac 0; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: another_board_is_not_this_bench, both_quad_flags_are_refused_on_the_ssot_board, program_flash, without_a_quad_flag_nothing_is_refused]
    78 R27 t27 rings/ring-091-rust/src/lib.rs abs_f32 (8) 8 6 test none same tr 8/8 vac 1; gen-rust compiles MOVABLE
    79 R27 t27 rings/ring-096-rust/src/lib.rs fabs_no_std (8) 8 1 refused none same tr 10/10 vac 5; gen-rust compiles MOVABLE
    80 NT trios apps/trios-macos/rings/RUST-13/trios-mesh/src/wire.rs frame_kind_valid (4), parse_accepts (4) 8 2 refused, 5 test, 1 inside group none same tr 2/2 vac 1; gen-rust compiles MOVABLE
    81 WT trios crates/trios-server/src/rest_browseros.rs is_safe_id (8) 8 2 refused none &str -> &[u8] (callers .as_bytes()) valid-output: unchecked (gen-rust compiles) MOVABLE-WITH-CALLER-CHANGE [change callers in: create_skill, resolve_skill]
    82 WT trios crates/trios-train-cpu/src/attention.rs relu_squared_backward (8) 8 1 refused none same valid-output: unchecked (gen-rust compiles) MOVABLE
    83 W27 t27 bootstrap/src/compiler.rs CCodegen::is_primitive (7) 7 4 refused none &str -> &[u8] (callers .as_bytes()); Type::fn -> free fn CCodegen_is_primitive tr 35/35 vac 4; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: CCodegen::c_array_info, CCodegen::gen_c_const, CCodegen::is_type_name, Compiler::detect_unsupported_verilog_locals]
    84 W27 t27 cli/tri/src/gates.rs too_few_runs_to_judge (7) 7 1 conv, 2 test none same tr 4/4 vac 0; gen-rust compiles MOVABLE
    85 W27 t27 cli/tri/src/scratch.rs yn (7) 7 5 refused none same tr no tests in spec; gen-rust compiles MOVABLE
    86 W27 t27 cli/tri/src/unparsed.rs is_if_capture (7) 7 3 test, 1 other none &str -> &[u8] (callers .as_bytes()) tr 5/5 vac 0; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: a_capture_in_a_for_loop_is_not_the_if_form, bitwise_or_is_not_a_capture]
    87 R27 t27 rings/ring-099-rust/src/lib.rs pipeline_progress (7) 7 7 test none same tr 23/23 vac 5; gen-rust compiles MOVABLE
    88 WT trios crates/trios-golden-float/src/bin/gptq_calibration_ablation.rs t_cdf_df2 (7) 7 1 refused none same tr no tests in spec; gen-rust compiles MOVABLE
    89 W27 t27 bootstrap/src/compiler.rs RustCodegen::is_int_type (6) 6 3 refused none &str -> &[u8] (callers .as_bytes()); Type::fn -> free fn RustCodegen_is_int_type tr 35/35 vac 4; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: RustCodegen::expr_to_rust_as, RustCodegen::infer_int_type]
    90 W27 t27 bootstrap/src/service.rs close (6) 6 4 refused none same tr 2/2 vac 0; gen-rust compiles MOVABLE
    91 W27 t27 bootstrap/src/service.rs silicon_receipt_word (6) 6 1 refused, 2 test none same tr 2/2 vac 0; gen-rust compiles MOVABLE
    92 W27 t27 cli/tri/src/cibase.rs is_not_found (6) 6 1 refused, 4 test none &str -> &[u8] (callers .as_bytes()) tr 1/1 vac 0; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: a_404_is_an_answer_and_a_rate_limit_is_not, fetch]
    93 R27 t27 rings/ring-098-rust/src/lib.rs identity_witness (6) 6 3 test none const fn -> fn tr 11/11 vac 2; gen-rust compiles MOVABLE
    94 WT trios crates/trios-chat/rings/CR-CHAT-03/src/treekem_parent_hash_binding.rs _parent_index (6) 6 none none same tr no tests in spec; gen-rust compiles MOVABLE
    95 WT trios crates/trios-phi-schedule/src/lib.rs flat_lr (6) 6 1 refused, 3 test none same tr 1/1 vac 0; gen-rust compiles MOVABLE
    96 NT trios crates/trios-ui/rings/UR-04/src/lib.rs chrono_now_iso (6) 6 1 refused none arity 0->1 valid-output: unchecked (gen-rust compiles) MOVABLE-WITH-CALLER-CHANGE [change callers in: send_message]
    97 O27 t27 bindings/javascript/src/lib.rs gf16_is_inf (5) 5 1 refused none same tr no tests in spec; gen-rust compiles MOVABLE
    98 O27 t27 bindings/javascript/src/lib.rs gf16_is_nan (5) 5 1 refused none same tr no tests in spec; gen-rust compiles MOVABLE
    99 O27 t27 bindings/javascript/src/lib.rs gf32_is_nan (5) 5 1 conv none same tr no tests in spec; gen-rust compiles MOVABLE
    100 W27 t27 bootstrap/src/suite.rs header_ok (5) 5 1 refused none &str -> &[u8] (callers .as_bytes()) tr 1/1 vac 0; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: validate_gen_headers]
    101 W27 t27 bootstrap/src/use_resolve.rs indent_of (5) 5 2 refused none &str -> &[u8] (callers .as_bytes()) tr no tests in spec; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: split_decls, top_level_indent]
    102 W27 t27 cli/tri/src/unparsed.rs is_fn_literal (5) 5 2 test, 1 other none &str -> &[u8] (callers .as_bytes()) tr 5/5 vac 0; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: the_three_new_rows_have_the_boundary_right]
    103 O27 t27 contrib/backend/agent-runner/src/api.rs backoff_secs (5) 5 2 refused none same tr no tests in spec; gen-rust compiles MOVABLE
    104 R27 t27 rings/ring-099-rust/src/lib.rs identity_witness (5) 5 3 test none const fn -> fn tr 23/23 vac 5; gen-rust compiles MOVABLE
    105 R27 t27 rings/ring-101-rust/src/lib.rs identity_witness (5) 5 1 test none same tr 1/1 vac 0; gen-rust compiles MOVABLE
    106 R27 t27 rings/ring-102-rust/src/lib.rs identity_witness (5) 5 1 test none same tr 1/1 vac 0; gen-rust compiles MOVABLE
    107 R27 t27 rings/ring-103-rust/src/lib.rs identity_witness (5) 5 1 test none same tr 2/2 vac 1; gen-rust compiles MOVABLE
    108 R27 t27 rings/ring-104-rust/src/lib.rs identity_witness (5) 5 1 test none same tr 1/1 vac 0; gen-rust compiles MOVABLE
    109 WT trios crates/trios-train-cpu/src/attention.rs relu_squared (5) 5 2 refused none same valid-output: unchecked (gen-rust compiles) MOVABLE
    110 NT trios validate_bpb.rs simulate_loss_step_0 (5) 5 1 refused none same valid-output: unchecked (gen-rust compiles) MOVABLE
    111 O27 t27 bindings/javascript/src/lib.rs gf32_is_inf (4) 4 1 conv none same tr no tests in spec; gen-rust compiles MOVABLE
    112 W27 t27 bootstrap/src/compiler.rs return_unsized (4) 4 1 refused none arity 1->2 tr 35/35 vac 4; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: RustCodegen::t27_type_to_rust]
    113 W27 t27 bootstrap/src/entry_points.rs is_void (4) 4 3 refused none &str -> &[u8] (callers .as_bytes()) tr no tests (binary crate spec); gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: classify_at, forced_signature, signature_of_forced_any]
    114 W27 t27 bootstrap/src/math_compare.rs phi_f64 (4) 4 1 refused none same tr no tests in spec; gen-rust compiles MOVABLE
    115 W27 t27 cli/tri/src/fpga.rs n25q128_pvt_temp_derating_ns (4) 4 1 conv none same tr 12/12 vac 0; gen-rust compiles MOVABLE
    116 W27 t27 cli/tri/src/fpga.rs n25q128_pvt_voltage_derating_ns (4) 4 1 conv none same tr 12/12 vac 0; gen-rust compiles MOVABLE
    117 W27 t27 cli/tri/src/trees.rs gib (4) 4 4 refused, 2 test none same tr 1/1 vac 0; gen-rust compiles MOVABLE
    118 W27 t27 cli/tri/src/unparsed.rs is_for_range (4) 4 2 test, 1 other none &str -> &[u8] (callers .as_bytes()) tr 5/5 vac 0; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: a_capture_in_a_for_loop_is_not_the_if_form]
    119 W27 t27 cli/tri/src/unparsed.rs is_stray_close (4) 4 3 test, 1 other none &str -> &[u8] (callers .as_bytes()) tr 5/5 vac 0; gen-rust compiles MOVABLE-WITH-CALLER-CHANGE [change callers in: the_three_new_rows_have_the_boundary_right]
    120 R27 t27 rings/ring-094-rust/src/lib.rs identity_witness (4) 4 1 test none same tr 6/6 vac 1; gen-rust compiles MOVABLE

    Rows 121-187, Appendix A (gen-rust signature differences) and Appendix B (every converted fn by file, with its verdict code) are in the document.

    Not run

    • t27c test-report of 45 specs (30 trios files, 15 files of trinity, trinity-fpga and 999-multibots-telegraf): stopped when the shared Mac ran low on disk under load. Their rows say valid-output: unchecked.
      Their gen-rust output was still compiled with rustc.
    • tri t27o --check (the oracle replay) on any file: not run. The only behavioural comparison is the differential run of the ring-092 bundle above; no other group was compared against its hand fns.
    • No cargo build, cargo check or cargo test of any crate. Callers come from a token index of every .rs file of the five repositories (comments and strings blanked), with module-path, import and crate-name matching,
      then git grep by hand for every MOVABLE row that had a hit elsewhere; a caller that reaches a fn through a glob import and another name, or through a macro, would be missed. Only the ring-092 bundle was mounted and
      compiled (with rustc, the crate has no dependency).
    • "gen-rust compiles" is a library compile of the generated file with the refused stubs removed, repeated after removing every item that failed; it does not prove the converted body equals the hand body.
    • No seal, ledger row, t27b ledger edit, own-language gate run or dupe_scan over any spec but the ring-092 group spec; no spec was added to the repository.
    • Method rows were not checked for the type-move variant (moving a type with its fns): the ty+ rows are the candidates for it.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions