Skip to content

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

Closed as not planned

Description

@gHashTag

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 %): iter 205, to_string 161, arg 114, contains 114, into 103, unwrap_err 82, to_vec 65, push 62, lines 57, get 57, join 53, sqrt 49. Each pure one goes into rust_std.t27 with its I/O proven against Rust; arg / path / lines on 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 %): type aliases 105, use inside a block 55, and named items that are not fns.
  • Tuples -- 797 (4.7 %): ( 550, String in 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_dir 50, serde_json::to_string 47, and same-crate callees. Same-crate callees can be followed through the file's mod graph; crate-external ones stay refused.
  • Enum variants with data -- 476 (2.8 %).
  • Trait impls other than Default -- 323 (1.9 %): std::error::Error 50 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 on rust_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-sweep reports 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 on rust_convert.t27 one 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-sweep runs 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

  1. gHashTag commented on Oct 18, 2026

    @gHashTag
    OwnerAuthor

    Added from the review of #10611 (lane F, #10534):

  2. added
    shape-refusedClosed by the issue-shape gate (specs/policy/issue_shape.t27); a passing edit reopens it
    on Oct 18, 2026
  3. github-actions commented on Oct 18, 2026

    @github-actions
    Contributor

    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.

    • missing: ## User Scenarios -- at least one Given/When/Then scenario
    • missing: ## Requirements -- numbered obligations, FR-001: ... MUST ...
    • missing: ## Success Criteria -- an outcome a machine can settle: a number with a unit, a backticked file, exit 0, or a backticked command
  4. gHashTag commented on Oct 18, 2026

    @gHashTag
    OwnerAuthor

    Added from lane V (#10643, PR #10648): once read-only vec![..] literals convert, 679 fns get past their vec!, and 575 of them stop at a refused callee, mostly in the trios guard validators.

    • Collections from std -- BTreeSet 139 and BTreeMap 37 first refusals as types at the baseline, plus BTreeSet::new 45 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.
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 requestphi-loopPHI LOOP development cyclequeen-shapedshape-refusedClosed by the issue-shape gate (specs/policy/issue_shape.t27); a passing edit reopens ittooling

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions