Skip to content

ci(bins): 28 of 29 binaries are never compiled — inventory them and stop the bleed - #377

Merged
gHashTag merged 1 commit into
mainfrom
ci/dead-binary-inventory
Aug 9, 2026
Merged

ci(bins): 28 of 29 binaries are never compiled — inventory them and stop the bleed#377
gHashTag merged 1 commit into
mainfrom
ci/dead-binary-inventory

Conversation

@gHashTag

@gHashTag gHashTag commented Aug 9, 2026

Copy link
Copy Markdown
Owner

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.

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)], 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:

binary error
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

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

…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)
@gHashTag
gHashTag merged commit 6c6b072 into main Aug 9, 2026
4 checks passed
@gHashTag
gHashTag deleted the ci/dead-binary-inventory branch August 9, 2026 05:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant