PR #TBD — Five Modules, Zero Callers: Finding the Other Dead Charter Bug
The Broader Goal at the End of the Previous PR
PR #2308 closed gh:#2305 end to end: dispatched-agent charters now bind superpowers skills with real enforcement language, not just inert YAML. That closed item 5 of the day's master-plan recap. The goal heading into this PR was item 6 — "auto-upgrade/bundled deps" — logged as a one-line stub with no scope.
Strategic Shifts in This PR
The recap line gave no hint of scope, so the first move was tracing where "auto-upgrade/bundled deps" actually
came from. It traces to a 2026-10-01 DECIDE panel decision (dec-00b401f2) and a full design+plan that a
prior fleet dispatch (PR #1894) claims to have shipped "100% Complete & Verified Green (25/25 Tests Passing)."
Direct grep for import sites — not trusting the completion report's test-pass count — found the same failure
class gh:#2305 had just closed: four of the five new modules PR #1894 built (probe_binding.py,
fleet_templates.py, version_policy.py, first_win_loop.py) have zero callers anywhere outside their own
file and test suite. Their unit tests are real and green. Nothing in cli.py, wizard.py, or viz/server.py
ever imports them. topology_discovery.py is in the same state. Only onboarding_state.py made it into a live
code path. The existing synlynk probe command is unrelated pre-existing code that happens to share a name with
probe_binding.py — easy to mistake for coverage if you don't check the import graph directly.
The shift: item 6 isn't "design auto-upgrade from scratch." It's "five already-designed, already-tested modules were never wired to anything real — wire them in, or retire whichever ones turn out superseded."
What This PR Shipped
Filed gh:#2310 with the verified call-site table before writing any design, so the finding is reproducible by
anyone re-running the same grep later.
The design (docs/superpowers/specs/2026-10-14-onboarding-engine-wiring-design.md) and plan
(docs/superpowers/plans/2026-10-14-onboarding-engine-wiring.md) scope five independent wiring tasks:
synlynk probe --deps— a new flag on the existingprobecommand (not a new command) that callsprobe_binding.probe_all_dependencies()/probe_all_harnesses(). Read-only, matching the 2026-10-01 panel's "probe, plan, confirm, never silent-install" invariant.synlynk fleet list/synlynk fleet apply— wiresfleet_templates.py's role-template merge into a real command, with an explicit flag to verify its output shape actually matches what dispatch routing reads, since that path was never exercised end to end.synlynk upgrade --all— the piece that most literally matches item 6's "auto-upgrade" wording. Wiresversion_policy.py's plan/check functions into a multi-workspace upgrade pass, one rollback checkpoint per workspace, explicit-invocation-only — the panel's own decision text was unambiguous that this must never run from the daemon.first_win_loop.py's fate — not a blind wire-in. The task requires readingwizard.py's current S10 stage handling first, since this module may already be superseded by something that shipped since 2026-10-01.topology_discovery.py→onboarding_state.py— the one case where the "wired" module (onboarding_state.py) depends on a sibling that was never actually connected to it.
Every task's definition of done requires an integration test that exercises the real CLI entry point — not just the underlying module function in isolation — since that's precisely the gap that let PR #1894's dead code pass review undetected the first time.
Brainstorm Visuals Used
None — scoped directly from reading probe_binding.py, fleet_templates.py, version_policy.py,
first_win_loop.py, and the relevant cli.py/wizard.py/viz/server.py call sites.
What This Achieved on the Path to Autonomy
A second confirmed instance, in one session, of "tests green" being treated as "feature shipped" when the code was never reachable. gh:#2305 and gh:#2310 together are becoming a pattern worth naming explicitly: fleet-dispatched implementation work needs an integration-test gate, not just a unit-test gate, before a completion report can claim 100%.
Strategic Note: The Goal at the End of This PR
Item 6's wiring plan is scoped and ready to dispatch. Item 7 — Vizor's full audit and revival — is next, and is
explicitly larger in scope than a one-line stub: Vizor is reportedly not working at all right now, and this
session already touched two of its files (viz/server.py's onboarding endpoints) while investigating item 6,
without yet auditing Vizor as a whole.