User-facing error audit (no-stuck / dead-end pass)

Working notes for Story 04. docs/ is not published in the npm files list (see package.json).

Convention

User-visible errors use one of:

  • Simple: <What failed>. Run \` to .`
  • Contextual: short cause, then Run \…`(and optionally, or `…“).

Inventory (representative callsites)

File:line (area)StatusNotes
commands/new-story.tsREWRITE → OKMissing slug, tracker id, invalid id, folder name, duplicate intake
commands/tracker-link.tsREWRITE → OKNon-interactive usage, invalid id, missing intake
commands/new-plan.tsREWRITE → OKMode conflict, paths, API/config/copy, empty plan
commands/init.tsREWRITE → OKExisting config (non-interactive), bad --planner
commands/config/*.tsREWRITE → OKset planner/tracker, remove-credential
commands/rm/*.tsREWRITE → OKUsage, confirmation, resolve errors, shared pickers
commands/upgrade.tsREWRITE → OKDev install, registry, major bump, non-interactive, spawn failure
commands/migrate.tsREWRITE → OKNon-interactive confirm, suspicious path
core/config.tsREWRITE → OKSecrets in YAML, YAML/parse, validation, budgets
core/secrets.tsREWRITE → OKRead/parse/structure
core/paths.tsOKAlready had Run \squad init“
planner/provider-errors.tsREWRITE → OKmodelNotFoundMessage recovery list
planner/loop.tsREWRITE → OKProvider stopReason error
tracker/index.tsREWRITE → OKClientResolutionError.detail for jira/azure/unsupported

Internal or non-CLI errors (registry fetch, package root resolution, etc.) were reviewed; only user-reachable paths were expanded with Run \…“ hints.

Maintenance

When adding a new throw new Error or ui.failure on a command path, keep the same shape and update this table if the command is user-facing.