prune: rename --yes to --delete-branches; MCP confirm= becomes delete_branches= #205

Closed
opened 2026-07-17 15:16:51 +00:00 by hexajon · 0 comments
hexajon commented 2026-07-17 15:16:51 +00:00 (Migrated from codeberg.org)

Companion to #204's explicit-consent-flags pass. prune's --yes / -y means "actually delete" (dry run is the default), which is a different semantic from install's old blanket --yes, and the name says that I agree without saying what happens. The MCP surface calls the same switch confirm=, so the two surfaces also disagree on the name.

What prune destroys when armed: branch refs merged into the default branch - local branches, and with --remote their remote twins plus orphaned merged remote branches (squash merges are content-verified first, so the commits survive in the default branch; the refs are what get deleted).

Decided naming: the flag states the consequence.

  • CLI: --delete-branches replaces --yes. Dry run stays the default; --dry-run/-n unchanged.
  • MCP: madt_prune's confirm= is renamed delete_branches= to keep one canonical name per operation across surfaces (the ADR 0016 rule).
  • --yes/-y are released surface, so they stay as hidden deprecated aliases for one release cycle, then drop.

Acceptance criteria:

  • madtea prune --delete-branches deletes exactly what the dry run listed; bare madtea prune stays a dry run.
  • --yes/-y still work but are hidden from help and marked deprecated (pointing at --delete-branches); removal noted for the following release.
  • madt_prune accepts delete_branches=true; confirm= handled the same deprecated-alias way if the MCP layer supports it, otherwise renamed outright with the change called out in the release notes.
  • docs/COMPARISON.md prune row and the prune reference/help topics use the new names.
  • Parity test in internal/parity/ passes with the new canonical name.
Companion to #204's explicit-consent-flags pass. prune's --yes / -y means "actually delete" (dry run is the default), which is a different semantic from install's old blanket --yes, and the name says that I agree without saying what happens. The MCP surface calls the same switch confirm=, so the two surfaces also disagree on the name. What prune destroys when armed: branch refs merged into the default branch - local branches, and with --remote their remote twins plus orphaned merged remote branches (squash merges are content-verified first, so the commits survive in the default branch; the refs are what get deleted). Decided naming: the flag states the consequence. - CLI: --delete-branches replaces --yes. Dry run stays the default; --dry-run/-n unchanged. - MCP: madt_prune's confirm= is renamed delete_branches= to keep one canonical name per operation across surfaces (the ADR 0016 rule). - --yes/-y are released surface, so they stay as hidden deprecated aliases for one release cycle, then drop. Acceptance criteria: - madtea prune --delete-branches deletes exactly what the dry run listed; bare madtea prune stays a dry run. - --yes/-y still work but are hidden from help and marked deprecated (pointing at --delete-branches); removal noted for the following release. - madt_prune accepts delete_branches=true; confirm= handled the same deprecated-alias way if the MCP layer supports it, otherwise renamed outright with the change called out in the release notes. - docs/COMPARISON.md prune row and the prune reference/help topics use the new names. - Parity test in internal/parity/ passes with the new canonical name.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sixfold-space/madtea#205
No description provided.