Skip to content

Decide root package ownership and the implicit src/main.rs bin #187

Description

@metaphorics

Question

The workspace root is itself a package, bamts-bench (Cargo.toml:1-28, publish = false), with three explicit benchmark/evidence bins (Cargo.toml:11-21):

  • jit_benchmarksbench/jit_benchmarks.rs
  • stage0_evidencebench/stage0_evidence.rs
  • stage1_regression_guardbench/stage1_regression_guard.rs

In addition, an untracked file src/main.rs (?? src/main.rs in git status) is a 19-line ICU calendar probe importing icu::calendar and icu::locale (src/main.rs:1-17). The root [dependencies] declare only bamts-verification and serde_json (Cargo.toml:23-25); nothing provides the icu crate. Because Cargo auto-treats src/main.rs as an implicit bin named bamts-bench, the file currently breaks any command compiling the root package's bins when present; when absent (a CI checkout) the target silently vanishes.

The decision to make is: keep, rename, split, or remove the root package; whether to declare or remove the implicit bin; and the recovery disposition of the untracked file. The research snapshot recorded different bin names (jit_benchmarks, stage_evidence, stage_regression, stage_response_guard) and explicitly warned the surface is moving.

Consumer evidence required

  • Every consumer of each explicit bin: workflows, Justfile recipes, runbook commands, and verification/perf ledgers that reference stage0_evidence or stage1_regression_guard outputs. The docs audit in Audit documentation rules and build surfaces #163 and the workspace research (.outline/research/workspace-boundaries.md shallow-adapter table, root package row) are the starting inventory; the ticket must positively identify each caller before any reshape.
  • Proof that no documented or scripted path invokes the implicit bamts-bench bin (search docs/, Justfile, .github/, npm/ for --bin bamts-bench or bare cargo run at root).
  • Reproduction of the manifest conflict: cargo check -p bamts-bench with the untracked file present and absent (scoped, local).
  • Untracked-file provenance: Audit documentation rules and build surfaces #163's resolution records src/main.rs as an unrelated, untracked root file that stays protected until an explicit boundary and recovery decision; that recovery is part of this ticket.

Unresolved boundary channels

  • Whether the explicit bench/evidence bins feed release-admission artifacts consumed by Define release admission lifecycle #178; if so, any root reshape must preserve their output identity.
  • Whether the workspace root should remain a package at all (removal changes workspace membership from 12 to 11 members and changes cargo metadata target kinds).
  • Whether the ICU probe is a retained need (it would become a declared, named, dev-scoped target with its own dependency) or abandoned.

No-go conditions

  • Do not delete src/main.rs, and do not delete or rename any explicit evidence bin, from absence-of-consumers alone; absence of local callers is not absence of consumers.
  • Do not "fix" the probe by adding icu dependencies to the root manifest as a silent repair; making the implicit bin compile is one possible fork outcome and must be an explicit decision.
  • No package/target/membership change without the decision stating its effect on the workspace guard's expected graph (crates/bamts-verification/src/workspace_guard.rs).

Observable acceptance

  • Written decision: root package fate (keep / rename / split / remove) and implicit-bin fate (declared target with owner / removed), each justified by the consumer inventory.
  • Every explicit bin has a named consumer (workflow / runbook / ledger citation) recorded in the decision, or an explicit approved removal with recovery path.
  • Untracked-file disposition recorded (adopted as declared target / recovered to an owner / removed with approval) per Audit documentation rules and build surfaces #163's protection rule; never silently deleted.
  • cargo metadata --no-deps target kinds for the root package match the decision exactly.
  • The decision names any required workspace-guard graph change to keep the expected graph truthful.

Blocked by

Activity

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions