Repository navigation
[EPIC] t27o overnight loop: dogfood on the roadmap repos, t27b-fast checks, refusal classes, competitors (feeds #10486 M2) #10522
Description
Goal
Make t27o (Ouroboros, specs/tools/t27o/) measurably better overnight, driven by its own output on the code of the roadmap repositories (label:roadmap, stages 1-9 behind app.t27.ai): measure where it refuses, fix the largest refusal classes in the spec, make the inner loop fast with t27b and seal reuse, and track every refusal class in an issue. This feeds M2 of #10486 (the SPICE front end is a second t27o front end beside rust_convert.t27); the M2a lane itself (#10509, spice_convert.t27) is owned by the analog loop and is not touched here.
Why it matters
t27o is the road by which foreign code is eaten into .t27 (AGENTS.md, "t27o"). On 2026-10-11 it converted 129 of 1772 fns of compiler.rs (7%), and its reuse count was 0. A converter that refuses most real code, and a --check that takes minutes per spec, cannot carry the roadmap.
Source of truth
specs/tools/t27o/rust_convert.t27, specs/tools/t27o/rust_std.t27, specs/tools/t27o/service.t27, cli/tri/src/main.rs (cmd_t27o, glue only).
Baseline measured 2026-10-18 (master 7496ed2, shared release binaries)
t27b teston the six t27o specs: 11+11+10+66+10+4 = 112 tests pass, 0 fail;rust_convert.t27in 13.5 s.t27c test-report specs/tools/t27o/rust_std.t27: 10/10 pass, 0 vacuous, 94 s wall on the loaded Mac;t27b teston the same spec: 0.89 s, same 10/10.t27c coverage:rust_convert.t2713 of 283 fns named by a test (5%);rust_std.t2752 of 59 (88%); golden/install/ledger/service 100%.tri t27osample:cli/tri/src/scratch.rs13 fns seen, 1 converted, coverage 7%. Whole-tree sweep over the Rust of t27, trios, trinity, trinity-fpga and 999-multibots-telegraf is running; results land in the ledger comment below.
Sub-tasks (opened one at a time as each starts; each its own issue and PR)
-
Dogfood sweep: per-repo coverage and the refusal-reason histogram -- docs: t27o dogfood baseline on the roadmap repos and its competitor map (ten weaknesses) #10527, PR docs: t27o dogfood baseline on the roadmap repos and its competitor map (Closes #10527) #10529 (merged)
-
tri t27o --checkrunst27b testfirst and falls back tot27c test-reportonly when t27b cannot judge -- t27o: --check judges with t27b test first (0.89 s vs 94 s), t27c test-report only when t27b cannot judge #10525, PR t27o --check: t27b test judges first, t27c test-report only when t27b cannot (Closes #10525) #10538 (merged) -
A tri command that sweeps a tree with t27o and reuses unchanged verdicts by hash (the seal idea), so each loop tick re-measures in seconds -- tri t27o-sweep: t27o coverage over a tree, rows reused by the seal hashes of the converter (warm run in seconds) #10543, PR tri t27o-sweep: t27o over a whole tree, rows reused while the file and the two seals hold (Closes #10543) #10587 (merged)
-
The largest refusal classes from the sweep, fixed in
rust_convert.t27/rust_std.t27, each with tests and a negative control -- t27o: five refusal classes from the roadmap dogfood -- Ok/Err in test asserts, for over &[..], &[] arguments, raw strings, string line continuations #10526 PR t27o: five refusal classes from the roadmap dogfood convert (Closes #10526) #10593 (merged), [bug] t27o: integer ! miscompiled as boolean not; oracle tests miss the type_text use; the oracle harness keeps #![no_std] #10534 PR t27o: integer ! is a bitwise ~, the oracle spec uses type_text, the harness drops no_std (Closes #10534) #10611 (merged), the rest ranked in t27o: refusal backlog -- every first-refusal kind above 1 % that no lane holds yet (methods, macros, item kinds, tuples, other-file names, data enums, trait impls) #10602 -
Run time: the quadratic declaration lookups -- t27o: quadratic run time -- find_struct, const_type and fn_ret_type rescan the whole file per expression (40 % of samples in tok_end) #10544, PR t27o: a declaration index, a line cache and a bounded for-search make tri t27o linear in the file; compiler.rs finishes in 1.3 s (Closes #10544) #10631 (merged; compiler.rs 1.44 s, was > 600 s)
-
rust_std.t27fn test coverage 88 % -> 100 % -- t27o: rust_std.t27 function test coverage 88 % -> 100 % (parse helpers and four sums) #10550, PR t27o: rust_std.t27 function test coverage 88 % -> 100 % (Closes #10550) #10553 (merged) -
Test coverage of
rust_convert.t27from 5% toward 100% of fns named by a test -
Next front end chosen by measurement: census of Python / TypeScript / Zig / shell -- docs: t27o front-end census of the roadmap repos -- Zig, deeper Rust, Python, TypeScript, shell, ranked #10599, PR docs: t27o front-end census of the roadmap repos -- Zig first, then deeper Rust, Python, TypeScript, shell (Closes #10599) #10601 (merged); proposal t27o: a Zig front end (zig_convert.t27) -- 36,495 Zig fns on the roadmap repos, 10-38 % in a first subset, tests as the oracle (stage 5) #10597 (Zig)
-
Competitor and prior-art map for t27o, with ten weaknesses and what to adopt -- docs: t27o dogfood baseline on the roadmap repos and its competitor map (ten weaknesses) #10527, PR docs: t27o dogfood baseline on the roadmap repos and its competitor map (Closes #10527) #10529 (merged)
-
Skills:
tri-pipeline(t27b first, seal reuse), at27oskill with the loop protocol -- skills: tri-pipeline fast path (t27b first, frontier --only seal reuse) and a t27o skill #10541, PR skills: tri-pipeline fast path (t27b first, frontier --only seal reuse) and a t27o skill (Closes #10541) #10542 (merged) -
Option A (owner 2026-10-19): pure std methods -- t27o: pure std methods convert -- contains, get, sqrt, saturating_*, unwrap_or, is_ascii, is_finite, to_bits, div_ceil, bit counts (16 % of first refusals are methods) #10764
-
Option B (owner 2026-10-19): Zig front end -- t27o: a Zig front end (zig_convert.t27) -- 36,495 Zig fns on the roadmap repos, 10-38 % in a first subset, tests as the oracle (stage 5) #10597, step 1 t27o: Zig front end step 1 -- zig_convert.t27 converts tier-1 leaf fns and translates the file own tests as the oracle (step 1 of #10597) #10765
Done when (acceptance)
- Every number in the final report comes from a command in this issue's ledger, with the commit it ran at.
- Every refusal class with more than 1% of refused fns has an issue.
- Coverage of
rust_convert.t27is reported byt27c coveragebefore and after.
How to verify
./target/release/t27b test specs/tools/t27o/rust_convert.t27
./target/release/t27c coverage specs/tools/t27o/rust_convert.t27
./target/release/t27c seal specs/tools/t27o/rust_convert.t27 --verify
./target/release/tri t27o <file.rs>
Boundary
- May touch:
specs/tools/t27o/rust_convert.t27,specs/tools/t27o/rust_std.t27, new specs underspecs/tools/t27o/other thanspice_convert.t27, their seals under.trinity/seals/, generated files undergen/rust/tools/t27o/(regenerated, never hand-edited),cli/tri/src/main.rs(glue only, within the 40-line cap),docs/t27o/,.claude/skills/tri-pipeline/SKILL.md, a new.claude/skills/t27o-loop/SKILL.md. - Must not touch:
specs/tools/t27o/spice_convert.t27and the extension dispatch oftri t27o(lane analog M2a: SPICE front end for t27o -- parse, flatten and inventory an ngspice netlist, or refuse with the line #10509),specs/analog/,specs/fpga/.
Risks / blockers
rust_convert.t27is 8055 lines; two lanes editing it at once will conflict. One lane at a time on it.- The Mac is shared with the analog loop (load average above 100 at 23:05 local); builds are reused from the shared release binaries, not repeated.
Links
Epic #10486 (analog emulation v0.1, M2), #8998 (t27o as a service), #8969 (refused bodies become bee issues), #8995 / #9006 (Python front end), #10509 (M2a SPICE front end).
Activity
gHashTag commentedon Oct 18, 2026
Loop ledger (15 min ticks, session cron 276346d4, started 2026-10-18 23:04 local / 16:04 UTC)
This comment is the t27o loop's state. Every tick reads it first, edits it last, and never starts work a row says is running. The analog loop keeps its own ledger on #10486; lanes listed there (#10509
spice_convert.t27,specs/analog/) are not started here.t27c test-report rust_std.t2794 s vst27b test0.89 s;rust_convert.t27fn test coverage 5%. Shared release binaries symlinked (no rebuild).--checklane--check(#10525; rule in ledger.t27, 12/12, mutant caught; bound to this session with auto-fix), #10542 skills tri-pipeline fast path + newt27oskill (#10541). Filed #10526 (five refusal classes, about 2,000 first refusals) and #10534 (bug: integer!miscompiled as boolean not, oracle tests miss the type_text use, harness keeps no_std -- found by dogfooding--check).t27o/refusal-classes-10526, worktree scratchpad/wt-c)trisweep command in ledger.t27 with key_state reuse; after #10526: #10534, then the quadratic passt27o/sweep-10543, stacked on #10538). Profiledtri t27owith macOSsample: 40 % of samples intok_endunderfind_struct/const_type/fn_ret_type, each rescanning the file from byte 0 per expression -> #10544. Filed #10546 (Vec / vec! without a heap, 16 % of first refusals). Anomaly: the scratchpad was wiped at about 16:53 UTC when the session resumed: lane worktrees, the cargo target and raw dogfood outputs gone; pushed branches and both agents survived; lanes told to recreate and push after every step; loop data now in$TMPDIR/t27o-loop(not wiped).own-languagecheck (+9/-0 hand lines; check_budget refuses a diff whose counted foreign lines gain more than they lose, on top of the 40/80 cap). Fixed in f966f32: glue 6 lines, deadcclk_variant_and_xadc_envelope_checkdeleted from fpga.rs (no caller, no test), net +6/-7; auto-merge re-armed. Its other reds (Corpus ratchet, t27b-native-ratchet: 4 UNLISTED analog specs) are on master 2c02386 too: inherited. Warned the analog session (#10530 had the same shape; it deletes nownote.rs dead code) and lane B; split the dead code between the three PRs. Rule added to the skills (#10542, re-pushed 70b844f). #10550 / PR #10553: rust_std.t27 fn test coverage 88 % -> 100 % (59/59, mutant caught). #10546 filed (Vec).tri t27o-sweep(warm run 0.3 s, all 377 rows reused; 23 tests; glue 34 lines offset by 42 dead lines). Review: fixed a fourth copy ofstarts_at(nowuse tri::reseal::seal::starts_at, 19d4054); explained the 7,108 vs 7,052 fn gap (the two runs excluded different big files: main.rs vs service.rs; one fn unexplained). #10587 waits for #10538 (stacked). Lane R started: Python / TypeScript / Zig / shell census of the roadmap repos (read-only, Sonnet) for the next front end.tri t27o-sweep), #10601 (census doc); earlier #10542, #10538, #10553, #10529. Lane P done: PR #10631 (#10544): declaration index built once per conversion; compiler.rs converts in 1.44 s (base > 600 s), count 1766 seen / 109 converted; reviewed: independent identity sample 58/58 equal (convert + --oracle), 101/101 t27b, seal MATCH, cargo check clean. Rebased #10611 onto master (cbb551d) and #10631 onto it; converter files identical to reviewed heads; auto-merge on both. Building tri from the stack tip for the end-of-night sweep of the five repos.tri t27o-sweep --repo <dir>, one cache per repository, a missing seal now names its path; main.rs +11/-11; 29/29; per-file counts equal the night sweep on all 1,006 files of the four other repos (trios crates 1.8 s cold / 0.16 s warm). Reviewed (re-ran tests, cargo check, own-language rc=0); tried reusing rust_converts out_is -- it drags the whole converter into the ledger and collides with machos put_text, so the 8-line test helper stays; auto-merge on.scanis red for every later PR -> #10653 / PR #10654 (neutral /srv/checkouts paths, check prints OK, gen unchanged, seal MATCH; auto-merge). Rebased #10648 onto master (bd7f2c8, 4 commits, converter files identical). Rule added to memory.contains_*copy the u8bytes_containbody (types normalized) andsaturating_add_u64equals hosting/panel.t27saturating_add. My review checked names (t27c dupes --name) but not bodies (tools/dupe_scan.py) -- rule fixed in memory. Auto-merge OFF on #10801; lane A2 resumed to delete the per-type contains (u8 only, others refused with the reason) and build saturating_add_u64 on rust_stds own checked add; no--bless` (the ledger only moves down). t27b-native-ratchet red is the inherited UNLISTED 9.t27b testand agrees with t27c. Rules from the t27b-loop skill: decisions in specs/tri/t27b/*_plan.t27, cli/t27b hand lines net <= 0 (#6198, #8236), ledger rows left to the steward. Lane TB-M started (measurement): the t27o-output corpus (Rust of the five repos with masters converter, Zig from #10819) undert27b corpus --blockers+ a 150-spec--referencesample; it files one issue per top-5 blocker. Known first gap: calls intoused modules (type_text::same`).#[path] .. mod x;mounts madetri mods orphan(line-based) bind the path to the nextmod renum;-> renum.rs reported orphaned, the reachability check red on master -> #10936 / PR #10950: the parser reads the mod on the attribute`s own line; +6/-6 hand lines; 7/7 tests, the extended existing test fails on the old parser; the gate on master with the fix: cli/tri 54/54 compiled, 0 orphaned; auto-merge. #10918 (Zig step 2) rebased (Zig files identical to reviewed head; 61/38/7 tests, seals MATCH, budget rc=0, cargo check clean), ready, auto-merge + auto-fix. Owner asked to run on Sonnet: this session cannot switch its own model (the app refuses); told the owner to pick Sonnet in the model menu; all lanes already Sonnet.s reference workers recreated zig-local0/1, Us target-u 2.5 GB -- caches deleted (7.3 GB), both lanes told to stop heavy runs and clean.scan= the analog session's doc, fix #11084); merged with a sha-guarded PUT, not before the slow checks. I made the ledger commit myself when TB2 reported it had not (schema.t27 pass, cap 127). Machine: free disk fell to 759 MB at 16:16Z with none of my jobs running (swap + load 50 across 5 lanes of 3 sessions); gave back both idle lane worktrees; lane A4 stopped at 46b3eff (Vec out-buffer rule pushed, 3 commits), to be resumed with SendMessage when free disk >= 8 GB (watcher armed). Report artifact rewritten twice (version 8+), source$TMPDIR/t27o-loop/t27o-night-report-v9.html. Queued: #11070 (tri pr preflight gets the budget + home-path rules), then Python front end (option B), then fresh five-repo sweep on a rebuilt tri.tri pr preflighthas no glue (parked); filed #11126 (land it net-zero). Issues filed from lane findings: #11111 #11112(closed by #11109) #11113 #11122(closed) #11126 #11128. Lane R1 running: #11111 + #11113 + #11128 in one PR. Report artifact version 12. Peers: analog session fixed masterscan(#11084).tri t27o-sweepfor real and to land #11126; Python front end (#8995/#9006)selfimpl type): sweep over all 1,388 files, unattributed cascades 696 -> 58 (47 type aliases, 9 extern fns, 2 assert), 0 converted fns lost, 0 files pass -> not-pass, 153 changed output specs differ in refusal comments only. All gates green except the two reds master has (Verilog widths: widget session fixes in #11107; t27b ratchet: UNLISTED/STALE + the lab spec's jit/interp mismatch, filed #11131 and sent to the lab session). Filed: #11135 (Vec parameters: measure first, then slice for read-only, out-buffer for push-only). Lane A5 running on #11135 (id a037e1417ea33fed4, branch t27o/vec-params-a5), told to report the split table first and open no rule PR if the form is not worth it. Report artifact version 13. Still open and gated by disk >= 8 GB (tri build): #11126 (land the preflight glue net-zero), the realtri t27o-sweeprun; #11131 t27b mismatch.type Vecrefusals, ceiling 1 fn) and lane A6 (#11145, iterator chains with a one-expression closure: 676 lowerable, 17 convert end to end, 32 with callers = 0.17% vs the 1% target); no rule PR for either, both issues closed not planned with the tables. Combined with the flat share (9.93% -> 9.88%) this moves the lever from converter rules to the FILE: 85 Rust files convert whole; #9000 step 4 (golden PRs, hand Rust deleted, net-negative). Filed #11149 (rank the 85 by lines deleted and callers touched) and started lane A7 (analysis + a docs file, no Rust change). Rule recorded: measure first, write the rule only above a stated threshold. Report artifact version 14 (Option A reframed to golden PRs). Peers: lab session fixed the lab spec's jit/interp mismatch in #11136 (#11131).bootstrap/src/host/bitmask.rs(170 lines) ->specs/host/bitmask.t27+ generatedbootstrap/gen/rust/host/bitmask.rs; hand lines +1/-171. Evidence: 756,232,068 side-by-side comparisons of the old hand file and the generated one, 0 disagreements (12.85M out-of-contract calls panic on both); real t27c cratecargo check --all-targetsok,cargo test -p t27c host::577 pass; spec 26/26, vacuous 0, coverage 16/16, seal MATCH; 46 CI checks, 44 green, the 2 others are master's (Verilog widths from two widget specs - fix in the widget session's #11107 - and the t27b ratchet's steward rows). Public differences stated in the spec header (const fn -> fn; FieldDesc methods -> free fns; no PartialEq/Eq); nothing uses them. Also merged: #11155 (A7's ranked candidates: 85 whole files, 80 rows, 3,006 hand lines = 0.69%).tribuilt from master (1 m 33 s) and the realtri t27o-sweepverified (exit 0, 386 files cold 1.5 s). Next: lane A8 on #11159 (per-function golden prize: converted fns in partly converting files, which can move without changing a caller; analysis only). Watch master's post-mergebuild-and-teston 0e00974.cli/tri/src/fpga.rs); NOT-NOW 617 fns / 4,774 lines (methods and hand-file types 477, gen-rust output that does not compile 68, trait impls 38). First bundle >= 200 lines: the 7 movable fns ofrings/ring-092-rust/src/lib.rs, 201 lines (28 crate tests pass with the mount in a scratch copy, 8,560,045 comparisons 0 disagreements;specs/nn/attention.t27already declares four of those fns with another argument order: reconcile first). 44 of 187 rowsvalid-output: unchecked(t27c runs stopped at 3.8 GB free). Conclusion for Rust: converting existing Rust deletes at most ~1% of hand lines (whole files 3,006 + movable fns 1,375); the first deletion (#11157) is merged. Filed #11168 (Python debt census, measure first for #8995) and started lane A9 (analysis + docs file). Masterbuild-and-testgreen on the first-port merge commit. Owner decision recorded in the report (version 16): "start language features" (heap-free collections etc.) is not started; default = options A (delete what converts, ring-092 first) and B (Python, only above 150 lines).docs/now/2026-10-20-heap-free-collections-rfc.md(981 lines). Recommendation: NONE of the five constructs now (Buf(T), Vec(T,N), arenas, inlined closures, owned strings as buffer+count): the whole package converts 30-64 more Rust fns (0.15-0.33%) and deletes 15-139 hand lines at the rates measured (best end-to-end ~1.3 per 100); bar for building anything = a pilot rate >= 15 in 100 (experiment X2, sized, not run). Experiment X1 (4 census functions by hand in the proposed forms): 9/9 under t27c and t27b, 9/9 mutants killed, generated Rust compiles, generated C does not (12 errors), generated Verilog does not elaborate (20). Seven back-end defects D1-D7 filed: #11181 (gen-c writes[7] ** 4as{0}: SILENT MISCOMPILE, reproduced by me on a t27c built from master 16c7dcf, C run abortsAssertion failed third() == 7; no committed gen/c file carries the pattern), #11182 (gen-rust D1-D3), #11183 (gen-c D4/D5 + gen-verilog D7). Lane L1 (id a89c171a673efe742, branch t27c/gen-c-repeat-l1) fixes #11181: probe matrix first, failing test first, compiler.rs FROZEN_HASH + own-language rules. Python census merged (#11176); report artifact version 19 (decision section now: default = build no construct; "start language features" would start from option (a)).gen-cmiscompile[7] ** 4->{0}is FIXED (cf2d61e). Probe matrix 408 cells: 137 wrong on master, 0 now; cause = the parser gives a repeat's single element two shapes and the C arm handled one;compiler.rs+40/-42 (net -2),FROZEN_HASHverified by me = SHA-256 of the file at the head; 66 of 2,857 gen-c outputs changed (zeros -> real values), 3 list-repeat specs now REFUSED loudly and ledgered (suite_expectations 66 -> 69, expires 2026-11-30, issue #11181), 1 spec fails loudly on clang (HirIpCatalog_new). First CI run caught 16 stale seals the lane had misjudged as "already stale on master" (it checked nothing against master's runs) + a type-name collision: both fixed before merge; lesson = an emitter fix re-seals every spec whose output it moves, andcheck_seal_coverage.py+check_seal_currency.pyare the two local gates to run before pushing. Disk: deletedtarget-tri/debug(2.5 GB), free 6.5 GB. Master post-mergebuild-and-teston cf2d61e was still running at 08:45: READ IT FIRST next tick. Open: #11182 (gen-rust D1-D3), #11183 (gen-c D4/D5 + gen-verilog D7), ring-092 port (201 lines), #11126 glue. Report artifact version 20.tri pr preflightEXISTS (#11207, 0543510, closes #11126): glue 40 lines in prcheck.rs paid by deleting 52 dead lines in inflight.rs (net -12, no exception file; honest limit: of 11 never-used items only the Merge/merge_outcome pair + 3 tests was truly dead). 13 rules, exit 0/1/2; 7 real runs (clean PASS; copied body, +9/-0 shape, home path each FAIL their own rule; stub output and missing t27c = UNREAD exit 2); full run with the corpus ratchet 13/13 PASS in ~11 min; found and fixed a spec defect (baremktemp -dignores TMPDIR on macOS). I dogfooded it on my own skills branch (exit 0). Master post-merge CI for the compiler fix (cf2d61e): build-and-test, validate, test-ratchet, coverage, spec-guards, both cargo-test jobs all green; reds = Verilog widths (widget session #11107) + Scorecard. Skills: #11209 / PR #11210 (docs, auto-merge armed) putstri pr preflight --quickand the day-two lessons into the t27o skill. Lane L2 (id af5fb0fe2d194887b, branch t27c/gen-rust-slices-l2, #11182) running; its brief carries the emitter-fix recipe (local seal checks, output diff over all specs). Report artifact version 21. Next: L2 review (compiler change: full CI), then #11183 (gen-c/gen-verilog) serialized after L2 (both edit compiler.rs), ring-092 port.Lane order on
rust_convert.t27(one at a time): #10526 -> #10534 -> #10544 (quadratic lookups) -> #10546 (Vec) -> per-fn tests (coverage 5% ->).Rules for every tick:
git ls-remote origin | grep t27o/and open PRs before starting a lane; at most 2 subagents from this loop (the analog loop runs 3 on the same 8 GB Mac); merge only when required checks are green (claw-sarif App-permission red is inherited); never touch #10509's files; to change a PR under auto-merge, disable it, push, enable again.skills: tri-pipeline fast path (t27b first, frontier --only seal reus…
gHashTag commentedon Oct 18, 2026
End-of-night report (2026-10-19 03:25 local)
Same sources as the 2026-10-18 baseline (t27 7496ed2, trios 483dd9ee, trinity 0770abb9, trinity-fpga 20bf4c418, 999-multibots-telegraf 6e5512881); only the converter differs (master + #10611 + #10631).
t27b testvst27c test-report, rust_std.t27tri t27o-sweepwarm vs coldMerged: #10529 (dogfood baseline + competitor map), #10553 (rust_std.t27 fn tests 100 %), #10538 (
--checkjudges with t27b first), #10542 (skills: fast path,t27oskill, net-zero hand-code rule), #10593 (five refusal classes), #10587 (tri t27o-sweep), #10601 (front-end census). In CI, auto-merge: #10611 (#10534: integer!miscompile, oracleuse, harnessno_std), #10631 (#10544: declaration index, compiler.rs converts).Filed for the next loop: #10546 (
Vecwithout a heap, the largest refusal block), #10602 (ranked backlog of every first-refusal kind above 1 % no lane holds), #10597 (Zig front end, proposal), #10638 (tri t27o-sweepcannot sweep another repository).Three ways to work together in the next loop (detail in the report page the owner holds):
Not claimed: converted means a body was written; golden means equal on recorded vectors, not a proof. Coverage did not reach 100 % overnight; rust_std.t27's function tests did, and every refusal kind above 1 % now has an issue.
t27o: pow converts -- pow_<T> of rust_std runs Rust's own loop, and a…
t27o: pow converts -- pow_<T> of rust_std runs Rust's own loop, and a…
t27o: saturating_add, saturating_sub, saturating_mul convert -- one r…
t27o: div_ceil converts for the unsigned types -- div_ceil_<T> of rus…
t27o: sqrt, is_finite, to_bits convert for f32 and f64; ln is refused…
t27o: is_ascii converts for texts, byte slices and u8; to_ascii_lower…
t27o: slice get(i) converts for slices of scalars -- get_<T> of rust_…
t27o: slice get(i) converts for slices of scalars -- get_<T> of rust_…
t27o: contains converts on slices of any scalar and on a text with a …
t27o: contains converts on slices of any scalar and on a text with a …
t27o: unwrap_or converts where it stands alone as a value, as an if o…
t27o: a .len() receiver is a usize, so the integer rows reach saturat…
t27o: the pure std methods convert -- bit counts, pow, saturating, di…
skills: t27o -- the night lessons: review checklist, drafts hold PRs,…