Repository navigation
feat(cli)!: remove --dry-run; a change without --execute is the preview - #54
Merged
Merged
Conversation
A change without --execute already printed the same description as --dry-run, offline and without credentials, so the flag only added a second way to preview. The remaining differences did not need a flag: VOLTAGE_EXECUTE=0 overrides an exported VOLTAGE_EXECUTE=1 for one command, --no-input and --json keep the pickers from asking, and exit code 6 is how a script recognizes a description. Reads are safe to run, so describing them offline had little use. One rule remains: reads run, and changes are described (exit 6) unless --execute asks to send them. -n and --dry-run are gone (they were never released). The description and its outcome: dry_run envelope are unchanged. The docs and help examples show a preview as the same command without --execute; the example test accepts a change without --execute only when the same command is also documented with --execute, so a forgotten --execute still fails. The offline example tests now expect exit 6. The safety model leads with a table of reads, changes, and --execute. A test that previewed checkout reads is replaced by one that sends a real session read and checks its Origin header.
tee8z
approved these changes
Oct 19, 2026
thebrandonlucas
added a commit
that referenced
this pull request
Oct 20, 2026
…ew (#54) A change without --execute already printed the same description as --dry-run, offline and without credentials, so the flag only added a second way to preview. The remaining differences did not need a flag: VOLTAGE_EXECUTE=0 overrides an exported VOLTAGE_EXECUTE=1 for one command, --no-input and --json keep the pickers from asking, and exit code 6 is how a script recognizes a description. Reads are safe to run, so describing them offline had little use. One rule remains: reads run, and changes are described (exit 6) unless --execute asks to send them. -n and --dry-run are gone (they were never released). The description and its outcome: dry_run envelope are unchanged. The docs and help examples show a preview as the same command without --execute; the example test accepts a change without --execute only when the same command is also documented with --execute, so a forgotten --execute still fails. The offline example tests now expect exit 6. The safety model leads with a table of reads, changes, and --execute. A test that previewed checkout reads is replaced by one that sends a real session read and checks its Origin header.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stack: master ← #20 ← #22 ← #24 ← #19 ← #26 ← #27 ← #28 ← #29 ← #30 ← this PR.
Responds to tee8z's question on #20: if changes are described by default, why have both
--dry-runand--execute?Problem
For a change,
--dry-runand "no--execute" printed the same description, offline and without credentials. The other differences did not need a flag:--dry-rundid--executealready doesVOLTAGE_EXECUTE=1VOLTAGE_EXECUTE=0for one command--no-inputor--jsonChange
One rule: reads run, and changes are described (exit 6) unless
--executeasks to send them.-n/--dry-runare removed. They were never released (not inv0.1.0), so the changelog's Unreleased line is corrected; no "Removed" entry is needed.outcome: dry_runenvelope are unchanged.--execute(for example,wallets delete).--executeonly when the same command is also documented with--execute, so a forgotten--executestill fails. I checked this by adding an unmatched line, which failed as expected.--execute. It also says that a picker can still list choices from the API on a terminal; pass the scope,--no-input, or--jsonto stay offline.Originheader. The stream test already covers the stream's header.Validation
cargo fmt --check,cargo clippy --locked --all-targets -- -D warnings,cargo test --locked(99 unit, 72 integration), andpython3 scripts/check-coverage.pypass.global-flags.mdis unchanged, because--dry-runwas a per-command flag. On the built binary,wallets deletewithout--executeexits 6 withoutcome: dry_run, and--dry-runexits 2 as an unknown argument.Limits
cargo macheteis not installed locally; dependencies are unchanged.