--- id: 06-migrate-navigation-binders epic: binder-wrap-helper title: Migrate navigation feature binders to wireUseCase type: technical-story status: todo feature: navigation depends-on: [01-wire-use-case-helper] blocks: [08-holistic-validation] --- ## Goal Replace the inline `withSpan + withCapture (+ optional withAudit)` block in `packages/navigation/src/di/bind-production.ts` and `packages/navigation/src/di/bind-dev-seed.ts` with a `wireUseCase` call for navigation's single use case (getHeader). ## Why Navigation's binder pair contributes one of the five top-ten `pnpm fallow` clone groups. Even with a single use case, the inline wrap shape is identical boilerplate that the helper eliminates. ## Done when - `bind-production.ts` and `bind-dev-seed.ts` call `wireUseCase` for getHeader — no inline `withSpan(... withCapture(...))` pattern remains. - Audit-bearing status confirmed via manifest check; `auditLog` + schema passed if needed. - `pnpm test --filter @repo/navigation` green. - `pnpm typecheck --filter @repo/navigation` green. - `assertFeatureConformance` does not throw at boot for navigation. ## In scope - `packages/navigation/src/di/bind-production.ts` — use-case binding block only. - `packages/navigation/src/di/bind-dev-seed.ts` — use-case binding block only. - Repository and service bindings stay as-is. - Controller bindings stay as-is. ## Out of scope - Controller bindings — deferred follow-up per PRD. - Changes to navigation use-case implementations, schemas, or tests outside the binder. ## Tasks - [ ] Read `packages/navigation/src/feature.manifest.ts` — confirm getHeader audit status - [ ] Read `packages/navigation/src/di/bind-production.ts` — understand inline wrap shape and deps - [ ] Read `packages/navigation/src/di/bind-dev-seed.ts` — same for dev-seed mode - [ ] Update `packages/navigation/src/di/bind-production.ts` — replace inline wrap block with `wireUseCase` call - [ ] Update `packages/navigation/src/di/bind-dev-seed.ts` — same - [ ] Run `pnpm test --filter @repo/navigation` — verify all tests pass - [ ] Run `pnpm typecheck --filter @repo/navigation` — verify no type regressions