ci(bins): 28 of 29 binaries are never compiled — inventory them and stop the bleed - #377
Merged
Conversation
…stop the bleed Same trap as the dead test target (#376), one directory over. Cargo.toml sets 'autobins = false', so a file in src/bin/ is compiled ONLY with an explicit [[bin]] block. There is exactly ONE such block for 29 files: 28 binaries are never built, never type-checked, free to rot silently. Among the dead: trinet_compute_lifecycle.rs -- the end-to-end proof that tests/compute_ring_invariants.rs cites as living outside cargo -- and trinet_ledger_head.rs, the binary the tri_sha256 spec credited with proving two-block bit-exactness before #371 moved that proof in-spec. Triaged all 28 with cargo check, one target at a time: 24 compile once the gen/rust modules they include by #[path] exist. Ten of those gens were simply never committed even though every spec is present (the same omission #376 hit). NOT revived here: those #[path] mods lack #[allow(clippy::all, unused)], so 'clippy --all-targets -D warnings' reports 349 errors from the GENERATED code and would redden the required build+test gate. Reviving them is attribute surgery across 24 files -- its own change. 3 are genuinely rotted, and this records why: tri_rti unresolved import trios_mesh::rti trinet_a2a_node needs gen/rust/router_ttl.rs -- no such spec exists trios_meshd method 'send' is not a member of trait 'Transport' The guard makes the debt visible and bounded: every src/bin/*.rs must be declared or named in KNOWN_DEAD, so a NEW binary can never join them silently. Shrink the list; never grow it. Verified: clean tree exits 0 and prints '29 files, 1 declared, 28 known-dead'; a new undeclared bin is caught; the test-side guard still catches an undeclared test file. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Same trap as the dead test target (#376), one directory over.
Cargo.tomlsetsautobins = false, so a file insrc/bin/is compiled only with an explicit[[bin]]block. There is exactly one such block for 29 files — 28 binaries are never built, never type-checked, free to rot silently.Among the dead:
trinet_compute_lifecycle.rs— the end-to-end proof thattests/compute_ring_invariants.rscites as living outside cargo — andtrinet_ledger_head.rs, the binary the tri_sha256 spec credited with proving two-block bit-exactness before #371 moved that proof in-spec.Triage (cargo check, one target at a time)
24 compile once the gen/rust modules they include by
#[path]exist. Ten of those gens were simply never committed even though every spec is present (the same omission #376 hit).They are not revived here: those
#[path]mods lack#[allow(clippy::all, unused)], soclippy --all-targets -D warningsreports 349 errors from the generated code and would redden the required build+test gate. Reviving them is attribute surgery across 24 files — its own change.3 are genuinely rotted, and this records why:
tri_rtitrios_mesh::rtitrinet_a2a_nodegen/rust/router_ttl.rs— no such spec existstrios_meshdsendis not a member of traitTransportThe guard
Every
src/bin/*.rsmust be declared or named inKNOWN_DEAD, so a new binary can never join them silently. Shrink the list; never grow it.Verified: clean tree exits 0 and prints
29 files, 1 declared, 28 known-dead; a new undeclared bin is caught; the test-side guard still catches an undeclared test file.🤖 Generated with Claude Code