Conversation
…al draft-enhancement pipeline Route a drafted issue through an ordered pipeline of enhancement agents (codex, claude, agy, grok) before the approval gate — each sharpens the previous agent's output for a more decision-complete issue. New shared lib/enhance-loop.md mirrors local-agent-review-loop's binary pre-flight, background+poll invocation, and missing-binary-skip-never-substitute rule. Defines grok as a first-class enhancement agent (grok -p / -m / --permission-mode bypassPermissions); its dependency #112 (per-agent [model] bracket grammar) has landed, so the codex[o3]-style selector works. Grok as a --review-with reviewer is a larger cross-cutting change tracked separately in #120. Closes #111
…nhanced drafts under --yes
Add --enhance-with to /do:plan-task for a sequential draft-enhancement pipeline
Grok is an agentic local CLI, so it plugs into the local-agent review loop alongside codex/agy/claude: add its slug, binary resolution, and headless invocation (grok -p / --permission-mode bypassPermissions / --model), driven by the same self-contained $LOCAL_PROMPT in both review-only and reviewer-applies modes. Thread the grok slug and its grok[<model>] bracket through the multi-reviewer loop (validation, dedup identity, effective-model resolution, binary probe, dispatch) and every command that documents --review-with (pr, rpr, review, better, better-swift, depfree, release, config) plus review-config-defaults and the README reviewer table — so the accepted-slug lists and 'Unknown --review-with value' abort messages stay consistent across the codebase. Add a config round-trip test covering grok[<model>] in review-with and a review-models.grok entry. Follow-up to #111, which defined the grok headless invocation for --enhance-with. Closes #120
…r dispatch table release.md advertised grok in its abort text but its accepted-values list (line 13), model-bracket note (15), and dispatch table (176) still omitted it, so --review-with grok was rejected/unrouted there. Swept every remaining local-agent enumeration: review.md dispatch, rpr.md loop heading, the commit- attribution slug list, and ollama-review-loop's 'unlike the agentic reviewers' contrast.
…path review artifact
Make grok a first-class --review-with reviewer
…m release review Release-gate review findings: recompute per-entry MODEL_FLAG/AGY_ENH_MODEL so a prior agent's [model] bracket can't leak into the next pass; set EXIT_CODE=0 on the in-process claude path so a stale subprocess exit code can't void a good enhancement; verify the enhancer's read-only contract with git baselines and revert violations; make TIMEOUT_CMD a shell array in all three loops (a two-word string is executed as one bogus command under zsh, failing exactly when coreutils IS installed); add cli-error to the parallel-mode inconclusive list; add grok to the stale reviewer enumerations in pr.md/release.md/README.
…ct checks - reset --mixed (never --hard) when a contract-violating enhancer committed, so the caller's pre-existing uncommitted work swept into its commit survives - diff-hash baseline + stash-create snapshot to detect and restore edits to files that were already dirty (identical porcelain line either way) - least-privilege invocations: codex --sandbox read-only, grok dontAsk - stderr to a separate file so post-answer CLI noise can't leak into the parsed issue body - load drafts via quoted heredocs so $(...)/backticks in issue markdown are never shell-expanded - parallel-mode carve-out: cli-error from an optional reviewer still blocks
…eredoc-load REPO_CONTEXT git checkout -- restores from the index, so an enhancer killed between add and commit kept its staged edits through the 'restore'; use git restore --source=HEAD_BASELINE --staged --worktree (and git rm --cached for staged new files). REPO_CONTEXT gets the same quoted-heredoc loading as the draft fields — it carries the same backtick/$() expansion hazard.
…nce-loop rollback git diff HEAD and git stash create both ignore untracked files, so an enhancer that edited or deleted a caller's untracked work-in-progress file was undetected (unchanged ?? porcelain line) and unrestorable. Add an untracked content tarball plus a path+hash baseline to the step-2 snapshot and a matching detect/restore branch in step 4.
…plan-task A model selector with spaces (agy[Gemini 3.5 Flash (High)]) split on whitespace leaks its tail into the free-form task description that follows the flags in this command; end the value at the first whitespace outside brackets.
…d runs, explicit detach instruction dontAsk does not dependably auto-approve grok's headless tool calls, so an unattended enhance pass could hang waiting for approval and degrade to no-op; keep bypassPermissions (grok has no read-only sandbox) with the step-4 git contract check as the write backstop. Also state that the launch snippet must run via the host's background mode (or a trailing &) — it is not self-detaching, and a foreground run is killed at the host's ~10-min cap before polling starts.
…oop rollback Per-path rollback choreography kept growing destructive edge cases (mixed reset wipes the caller's staged state, then porcelain-line comparison misreads 'M ' as ' M' and restores the caller's own edit away). Replace it: snapshot the full pre-pass state (HEAD, index via write-tree, tracked worktree via stash commit, untracked via tar) and on violation restore all four layers wholesale — soft reset, read-tree, restore --source, tar re-extract — then re-verify against the baselines. Sequence validated end-to-end in a sandbox repo (staged + unstaged + untracked + agent-commit case).
…gitignored-file writes
The untracked-files hash piped filenames through xargs -I{} into sh -c, so an
untracked file named $(cmd).txt would execute cmd during snapshotting; switch
to git hash-object --stdin-paths (no shell sees the names — verified in a
sandbox repo). Gitignored files stay outside the snapshot/restore guarantee
(tarring node_modules is unbounded) but now get cheap mtime-window detection
and a loud not-auto-restorable warning instead of silence.
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
Minor release: v3.23.0 → v3.24.0.
Task planning
/do:plan-taskgains a--enhance-with <list>flag that routes the drafted issue through a sequential pipeline of enhancement agents (codex,claude,agy,grok) before the approval gate, each sharpening the previous one's draft.Code review
grokis now a first-class--review-withreviewer everywhere reviewers run, with per-reviewer model pinning viagrok[<model>]and saveable defaults through/do:config.Release-gate hardening (found during pre-release review)
EXIT_CODEreset, read-only contract verification with git-baseline revertTIMEOUT_CMDconverted to a shell array in all three loops (zsh does not word-split an unquoted string expansion)cli-erroras inconclusiveFull Diff: v3.23.0...v3.24.0
Test plan
npm test— 173/173 passing