Repository navigation
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
Description
Goal
Every first-refusal kind above 1 % of the roadmap dogfood (#10527) is tracked. The kinds already in a lane are #10526 (Ok/Err asserts, for over &[..], &[], raw strings, line continuations; PR #10593), #10534 (integer !), #10546 (Vec, vec!, Vec::new) and #10544 (run time). This issue is the backlog for the rest, one checkbox per kind, ranked by count, so each becomes its own lane when it starts. Part of #10522.
Source of truth
First refusals of tri t27o on every tracked .rs file of t27 7496ed2, trios 483dd9ee, trinity 0770abb9, trinity-fpga 20bf4c418, 999-multibots-telegraf 6e5512881 (17,015 in total, before #10593). Re-measure with tri t27o-sweep (#10543) before starting a kind: #10593 moves some counts.
The backlog (kind, first refusals, share, the largest single reasons)
- Methods outside the std table -- 2,228 (13.1 %):
iter205,to_string161,arg114,contains114,into103,unwrap_err82,to_vec65,push62,lines57,get57,join53,sqrt49. Each pure one goes intorust_std.t27with its I/O proven against Rust;arg/path/lineson I/O types stay refused. - Macros other than
vec!-- about 380 (2.2 %):env!72,println!57,format!55,include_str!51,eprintln!39,json!38.format!into an out-buffer already exists for String results; the print macros stay refused (I/O). - Item kinds -- 1,127 (6.6 %):
typealiases 105,useinside a block 55, and named items that are not fns. - Tuples -- 797 (4.7 %):
(550,Stringin a tuple 57,&53. A tuple of scalars as a struct with fields_0,_1(as tuple structs are today). - Names from another file -- 704 (4.1 %):
env::temp_dir50,serde_json::to_string47, and same-crate callees. Same-crate callees can be followed through the file'smodgraph; crate-external ones stay refused. - Enum variants with data -- 476 (2.8 %).
- Trait impls other than Default -- 323 (1.9 %):
std::error::Error50 and the like. - The cascade -- 2,248 (13.2 %): not a kind to implement, but the report should show root and cascade apart (done in
tri t27o-sweep, tri t27o-sweep: t27o coverage over a tree, rows reused by the seal hashes of the converter (warm run in seconds) #10543).
Done when
Each box is either an issue with a lane or a stated refusal with its reason kept, and the dogfood document lists it.
Boundary
- This issue changes no file. Each lane it starts names its own boundary (usually
rust_convert.t27,rust_std.t27, their gen files and seals), one lane at a time onrust_convert.t27.
Links
#10522, #10527, #10526, #10534, #10544, #10546, #10543.
User Scenarios
- Given the backlog of first-refusal kinds above 1 % in
tri t27o-sweep, when a contributor picks a kind to address, then they open a lane issue that names its own boundary (e.g.,rust_std.t27,rust_convert.t27) and the dogfood document records the kind as tracked. - Given the dogfood roadmap document, when all seven backlog kinds are resolved, then each kind appears in the document either with a lane issue reference or a stated refusal reason, and
tri t27o-sweepreports zero untracked first-refusal kinds above the 1 % threshold.
Requirements
- FR-001: Every first-refusal kind above 1 % of the roadmap dogfood MUST have a corresponding lane issue or a documented refusal reason kept in the dogfood document.
- FR-002: Each lane issue started from this backlog MUST declare its own boundary files (typically
rust_std.t27,rust_convert.t27, their generated files and seals) and work onrust_convert.t27one lane at a time. - FR-003: The dogfood document MUST list all seven backlog kinds with their status (lane issue link or refusal reason) before this issue is considered done.
Success Criteria
tri t27o-sweepruns and reports 0 first-refusal kinds above 1 % that lack a lane issue or documented refusal (exit 0)- 7 kinds tracked in the dogfood document (one per backlog item: methods outside std table, macros other than
vec!, item kinds, tuples, names from another file, enum variants with data, trait impls other than Default) - Each kind's checkbox in this issue is either converted to a lane issue reference or marked with a stated refusal reason
Activity
gHashTag commentedon Oct 18, 2026
Added from the review of #10611 (lane F, #10534):
let t = f(..)with no annotation leavestunclassed, so!t.verified(and any rule that needs the class oft.field) refuses. Give such a local the declared return type offwhenfis in the same file (fn_ret_typeexists). Known case: rings/ring-097-rust/src/lib.rsnew_proof_trace_creates_empty, converted before t27o: integer ! is a bitwise ~, the oracle spec uses type_text, the harness drops no_std (Closes #10534) #10611 only because every!was read as boolean.github-actions commentedon Oct 18, 2026
Closed by the issue-shape gate (specs/policy/issue_shape.t27, #7498): an issue must have the template's sections. Edit the body; an edit that passes reopens it.
FR-001: ... MUST ...exit 0, or a backticked commandgHashTag commentedon Oct 18, 2026
Added from lane V (#10643, PR #10648): once read-only
vec![..]literals convert, 679 fns get past theirvec!, and 575 of them stop at a refused callee, mostly in the trios guard validators.BTreeSet139 andBTreeMap37 first refusals as types at the baseline, plusBTreeSet::new45 as a path call, and now the callee behind most of the 575 above. A set or map of scalars with a bound the fn states is the candidate form, and the ordered trees already specified (specs/tri/trees/b_tree.t27,avl_tree.t27,red_black_tree.t27;specs/tri/collections/skip_list.t27) are the first things to reuse, not to copy; one that grows without a bound stays refused.