Files
stack/docs/scratchpads/B4-wizard-step-dedup.md
jason.woltje 495f73bfdb
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
fix(wizard): avoid rerunning completed setup steps (#692)
2026-06-25 18:44:35 +00:00

2.0 KiB

B4 — Wizard step deduplication

Problem

Greenfield wizard testing showed completed wizard steps could be executed again after the menu marked them [done]. In practice this made the Providers/API-key flow and Skills flow appear twice in one wizard run.

There was a second related API-key duplication path: when the Providers step was completed with no key, gatewayConfigStage still prompted for ANTHROPIC_API_KEY during Finish because it only skipped the gateway API-key prompt when providerKey was non-empty.

Diagnosis

  • runMenuLoop labeled completed sections with [done], but still dispatched the selected step again if the user selected that row.
  • Quick Start ran Providers and Skills but did not mark those sections complete in completedSections.
  • runFinishPath/quickStartPath defaulted providerType to none for gateway config, which made it impossible for gatewayConfigStage to distinguish:
    • provider step completed and user intentionally skipped the key, vs.
    • provider step was never run.

Fix

  • Added a shared menu section key helper and a completed-step guard in runMenuLoop.
  • Completed menu steps now log a skip message instead of re-running their stage.
  • Quick Start marks Providers and Skills complete after running them.
  • Finish/Quick Start now pass state.providerType as-is to gateway config instead of defaulting to none.
  • gatewayConfigStage treats providerType: 'none' as an explicit completed provider setup with no key and skips the second gateway API-key prompt.

Verification

  • Added unified wizard regression coverage asserting repeated Providers/Skills menu selections only execute each stage once.
  • Added gateway config coverage asserting providerType: 'none' does not prompt for a gateway API key and writes no API key env var.
  • Targeted: pnpm --filter @mosaicstack/mosaic test -- unified-wizard gateway-config
  • pnpm format:check
  • pnpm typecheck
  • pnpm lint
  • pnpm build
  • pnpm test
  • Codex code review: approve.
  • Codex security review: no findings.