Parent: #9492
Summary
src/review/issue-rag-wire.ts has zero production importers. Both real consumers import packages/loopover-engine/src/issue-rag-query directly; only the wire's own test imports the wire.
Test coverage camouflages this rather than catching it: a dead module's own test exercises it perfectly well, so it reports green while contributing nothing to the running system. Commit 39cc9583c shows this class has bitten before.
There are 26 *-wire.ts files and no registration protocol; ~18 are direct-import-only, so a forgotten import is a silently dead feature. The one real registry (src/review/feature-activation.ts:80-89, a total Record over CONVERGED_FEATURE_KEYS) is compile-time drift-proof and is the right model — but it covers only converged features.
No mechanical check exists for the class: there is no knip or ts-prune, and none of the ~15 scripts/check-*-drift.ts covers reachability.
Requirements
- Delete the dead wire (or wire it up, if it was meant to be used).
- Add a check that makes the class fail CI, not merely be noticed by a future reader.
- The check must not be defeated by an allowlist of individual dead files — that would defeat its own purpose. A false positive is fixed at the root (a legitimate importer root, or a declared entry point with a stated reason), never by exempting the file.
Deliverables
Tests
Expected outcome
A module that stops being reachable fails CI on the PR that orphans it, instead of sitting green for months.
Parent: #9492
Summary
src/review/issue-rag-wire.tshas zero production importers. Both real consumers importpackages/loopover-engine/src/issue-rag-querydirectly; only the wire's own test imports the wire.Test coverage camouflages this rather than catching it: a dead module's own test exercises it perfectly well, so it reports green while contributing nothing to the running system. Commit
39cc9583cshows this class has bitten before.There are 26
*-wire.tsfiles and no registration protocol; ~18 are direct-import-only, so a forgotten import is a silently dead feature. The one real registry (src/review/feature-activation.ts:80-89, a totalRecordoverCONVERGED_FEATURE_KEYS) is compile-time drift-proof and is the right model — but it covers only converged features.No mechanical check exists for the class: there is no knip or ts-prune, and none of the ~15
scripts/check-*-drift.tscovers reachability.Requirements
Deliverables
src/review/issue-rag-wire.tsand its test.scripts/check-dead-source-files.ts: everysrc/**file must have at least one importer outside its own test.scripts/check-import-specifiers.tsis a ready template (injectablelistFiles/readFileseams, pure core,main()guard).test:ciand the CI workflow, alongside the sibling drift checks.Tests
scripts/**counts as a production importer — several CLIs are the sole consumer of a livesrc/**module.export ... from.src/**is ignored rather than miscounted.Expected outcome
A module that stops being reachable fails CI on the PR that orphans it, instead of sitting green for months.