# X_RELEASE_TREE_DIRTY

## Means

`scripts/release.ts` was run over a working tree with uncommitted changes

## Typical cause

the release rewrites 47 files and is committed as one; over a dirty tree that commit carries whatever else was in flight, as part of a release nobody reviewed as one. Checked under `--dry-run` too, so a dry run predicts the real one. A `git status --porcelain` that could not run is the same refusal, never a pass

## Fix

`git stash -u && bun run scripts/release.ts --bump patch --dry-run --json` — the fix line repeats your own flags; the cause lists the dirty paths

[CLI and verify](/error-codes#cli-and-verify)
