feat: dry-run read-only, --issue, --check-cmd, abort trap, .fixbuddy.conf - #2
Merged
Conversation
Bundles five improvements: read-only --dry-run, --issue N, --check-cmd test gate, Ctrl-C abort trap, and .fixbuddy.conf config files (+ wizard). Captures the approved design decisions and integration points.
Incorporate Codex's design-review feedback: - --check-cmd reuses the exact DONE-REJECTED retry/budget path; insertion point pinned before the review block; output capped/tailed - add --auto-merge flag so the boolean is CLI-overridable both ways - document additive label/check_cmd config keys (AND filter, not override) - harden Ctrl-C trap: CURRENT_PUSHED guard (don't delete pushed branches), kill+wait children before git cleanup, disarm re-entrancy, best-effort PIDs - config parser: strip CRLF, warn on malformed lines - --issue fetches issues directly to dodge the 200-item list limit - wizard writes to CWD with absolute-path notice + quoting
Implements the five approved product improvements (see docs/superpowers/specs/2026-06-11-product-improvements-design.md): - --dry-run is now fully read-only: label creation, the fix:pr-open unstick scan, and the dirty-worktree preflight are skipped; the report shows the planned config + check commands and respects --max. - --issue N (repeatable): process specific issues, fetched directly via `gh issue view` (no 200-item list blind spot); dedup filters and --label/--severity still apply; non-actionable numbers warn distinctly. - --check-cmd (repeatable): deterministic test gate run in the project dir after the fix commit and before review; failure shares the exact review-rejection retry path (same budget, fix:rejected on exhaustion), so it also gates auto-merge. Output is capped (200 lines / 16 KB). - Ctrl-C/abort trap: kills the in-flight agent (PIDs via a shared file, since run_agent runs in a command-substitution subshell), SIGTERM -> SIGKILL escalation, then local-only branch cleanup (remote branch/PR survive). No label is set, so the issue resumes next run. - .fixbuddy.conf config files: safe-parsed (no eval/source) from ~/.fixbuddy/config then ./.fixbuddy.conf, before arg parsing so CLI wins; allowlisted keys, additive label/check_cmd; new --auto-merge flag; the wizard offers to write the config; action.yml passes the flag both ways. Reviewed via the DoD pipeline (Codex x2 + Claude x2): all PASS.
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.
Summary
Five approved product improvements (design + spec in
docs/superpowers/specs/2026-06-11-product-improvements-design.md).--dry-run— label creation, thefix:pr-openunstick scan, and the dirty-worktree preflight are all skipped; the report shows the planned config +--check-cmdstrings and respects--max. (Fixes the bug where dry-run mutated labels.)--issue N(repeatable) — process specific issues, fetched directly viagh issue view(no 200-item list blind spot); dedup filters and--label/--severitystill apply; non-actionable numbers warn distinctly.--check-cmd(repeatable) — deterministic test gate run in the project dir after the fix commit and before review; a non-zero exit shares the exact review-rejection retry path (sameattemptbudget,fix:rejectedon exhaustion), so it also gates auto-merge. Output capped (200 lines / 16 KB).run_agentruns in a command-substitution subshell), SIGTERM→SIGKILL escalation, then local-only branch cleanup (remote branch/PR survive). No label set, so the issue resumes next run..fixbuddy.conf— safe-parsed (noeval/source) from~/.fixbuddy/configthen./.fixbuddy.conf, before arg parsing so CLI wins; allowlisted keys, additivelabel/check_cmd; new--auto-mergeflag; the wizard offers to write the config;action.ymlpasses the flag both ways.Verification
bash -n✓ ·shellcheck -S warning✓ (clean) ·action.ymlYAML ✓run_checkscaps, dry-run read-only behavior,--issuedirect fetch, and the Ctrl-C trap (real agent process killed via the PID file, branch cleaned up).