Skip to content

refactor(cli): absorb error-reason classification into typed errors (links-va-001-error-reason-3dy.1)#214

Merged
brandon-fryslie merged 1 commit into
masterfrom
links-va-001-error-reason-3dy.1
Jun 11, 2026
Merged

refactor(cli): absorb error-reason classification into typed errors (links-va-001-error-reason-3dy.1)#214
brandon-fryslie merged 1 commit into
masterfrom
links-va-001-error-reason-3dy.1

Conversation

@brandon-fryslie

Copy link
Copy Markdown
Collaborator

Summary

  • Added 5 typed error types to internal/cli/: UsageError, UnknownCommandError, ValidationError, UnsupportedError, OutsideWorkspaceError
  • Added store.ValidationError for domain constraint violations (issue type, priority)
  • Wrapped all 46+ usage/validation/unsupported/workspace error sources across 20 files
  • Deleted all 11+ strings.Contains/HasPrefix checks in exit.go and error_output.go; both sinks now dispatch via errors.As — zero message-text inspection remains

Test plan

  • go test ./... — all 22 packages pass
  • exit.go has zero strings. imports or calls
  • error_output.go has zero strings. imports or calls
  • TestExitCodeMappings exercises typed error → exit code mapping
  • TestBuildCommandErrorPayloadUnknownCommand / TestWriteCommandErrorJSON / TestWriteCommandErrorText exercise typed error → reason/code/remediation mapping

…delete 11+ string-match patterns (links-va-001-error-reason-3dy.1)

Add UsageError, UnknownCommandError, ValidationError, UnsupportedError,
OutsideWorkspaceError to cli package; add store.ValidationError for
domain constraint violations. Wrap all 46+ usage/validation/unsupported
error sources. Replace every strings.Contains/HasPrefix check in exit.go
and error_output.go with errors.As dispatch — zero string inspection
remains in the two classification sinks. Tests updated to use typed errors.
@brandon-fryslie brandon-fryslie merged commit 110cf17 into master Jun 11, 2026
5 of 6 checks passed
@brandon-fryslie brandon-fryslie deleted the links-va-001-error-reason-3dy.1 branch June 11, 2026 08:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant