- Bug fix (non-breaking)
- New feature (non-breaking, additive)
- Behavior change to an existing command (potentially user-visible)
- Breaking change (CLI flag, exit code, JSON shape, or
error.coderename/removal) - Documentation only
- CI / packaging / tooling
- Refactor (no behavior change)
- No public-contract impact.
- Adds or changes a JSON envelope shape — described below.
- Adds a new
error.code— added todocs/error-codes.md. - Renames or removes an
error.code— flagged as breaking, included in CHANGELOG. - Changes an exit code for an existing command — flagged as breaking.
- Adds or changes a CLI flag — documented in help text and (if user-facing)
docs/automation.md.
-
go test ./...passes locally. -
make lintpasses locally (gofmt,golangci-lint, error-code coverage audit). - New behavior is covered by a JSON-mode integration test in
internal/cli/integration_test.go. - Edge cases are covered by unit tests in
internal/cli/app_test.go(where applicable).
-
CHANGELOG.mdupdated under## Unreleased(Added / Changed / Deprecated / Removed / Fixed / Security). -
docs/automation.mdupdated for any user-facing JSON shape, env var, or flag change. -
docs/error-codes.mdupdated for any newerror.code(or N/A). -
README.mdupdated if the command tree, install path, or quickstart changed. -
AGENTS.mdupdated if engineering or release process changed.
- No credentials, App Certificates, tokens, or PII added to fixtures, logs, or test output.
- No new outbound network call without timeout / context cancellation.
- No new file written under user
$HOMEwithout0o600perms when it can contain credentials (e.g. session, config). - No new
unsafeimport.