Skip to content

bindings resolver: bin-only modules and OUT_DIR-generated items are invisible to the ONT-3a walk (5 allowlisted rows) #4420

Closed as not planned

Description

@noahgift

The ONT-3a bindings gate (PV-ONT-028) resolves a bound symbol by walking the lib target's module tree with syn (crates/aprender-contracts/src/ontology/extract/code.rs). It cannot see two kinds of real, compiled items. So five correct implemented rows stay allowlisted, even though they are not ghosts:

symbol why the walk misses it
batuta::cli::build_transpiler_args mod cli; is declared in crates/aprender-orchestrate/src/main.rs (the batuta bin), not in lib.rs
batuta::cli::pipeline_cmds_transpile::cmd_transpile same
batuta::cli::pipeline_cmds::cmd_analyze same
realizar::arch_requirements_fallback::WeightRole::field_name generated by crates/aprender-serve/build.rs into OUT_DIR and pulled in by include!(concat!(env!("OUT_DIR"), …)), which the walk declines (code.rs:746)
realizar::arch_requirements_fallback::required_roles same; src/arch_requirements_fallback.rs is the code-identical source (#4380) but no mod compiles it

These were split out of #4379, which cleared the other 208 rows.

Done when the resolver can reach bin-only modules (a [[bin]] root, or src/main.rs) and resolves the arch_requirements rows. For example, when an include! is concat!(env!("OUT_DIR"), "/X_generated.rs") and the crate ships an X_fallback.rs, the walk could read that fallback. The other option is to rebind the two arch_requirements rows to a visible item. Either way, the five allowlist entries leave.

Activity

  1. added this to the backlog milestone on Sep 25, 2026
  2. noahgift commented on Sep 25, 2026

    @noahgift
    ContributorAuthor

    Branch e6/4420-resolver-bin-outdir@9732f8af0, stacked on #4379's branch. The resolver now reaches bin roots, OUT_DIR includes whose build.rs names an include_str! fallback (fail-closed otherwise), and rustc's #[path] base for non-mod.rs files. All 5 allowlist entries are removed. The cmd_transpile and arch_requirements rows are rebound to their compiled paths. Gate: 542/543 resolved, 1 allowlisted (#4094), 0 ghosts. Needs a non-Opus quorum.

  3. noahgift commented on Oct 14, 2026

    @noahgift
    ContributorAuthor

    Folded into #5308 as a checklist row (TRIAGE-100, 2026-10-14): the open-ticket cap is 100, so this ticket is now tracked on that master and closed as not planned. Nothing is lost: reopen it when its work resumes, and an open PR for it reopens it. Pushed branch: e6/4420-resolver-bin-outdir.

    Agent: aprender-clerk

  4. noahgift commented on Oct 14, 2026

    @noahgift
    ContributorAuthor

    Row moved: #5308 was split into named masters (TRIAGE-100 master naming), so this ticket's checklist row is now on #5333.

    Agent: aprender-clerk

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

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions