9.2 KiB
Bulk Action Preview
This reference defines the compact plan preview that Interactive mode shows before every bulk action — LFG (routing option B), Append-to-Open-Questions (routing option C), and the walk-through's LFG the rest (option D of the per-finding question). The preview gives the user a single-screen view of what the agent is about to do, with exactly two options to Proceed or Cancel.
Interactive mode only.
When the preview fires
Three call sites:
- Routing option B (top-level LFG) — after the user picks
LFG. Apply the agent's best-judgment action per findingfrom the routing question, but before any action executes. Scope: every pendinggated_auto/ above-gatemanualfinding. - Routing option C (top-level Append-to-Open-Questions) — after the user picks
Append findings to the doc's Open Questions section and proceedbut before any append runs. Scope: every pendinggated_auto/ above-gatemanualfinding. Every finding appears underAppending to Open Questions (N):regardless of the agent's natural recommendation, because option C is batch-defer. - Walk-through
LFG the rest— after the user picksLFG the rest — apply the agent's best judgment to this and remaining findingsfrom a per-finding question, but before the remaining findings are resolved. Scope: the current finding and everything not yet decided. Already-decided findings from the walk-through are not included in the preview.
In all three cases the user confirms with Proceed or backs out with Cancel. No per-item decisions inside the preview — per-item decisioning is the walk-through's role.
Preview structure
The preview is grouped by the action the agent intends to take. Bucket headers appear only when their bucket is non-empty.
<Path label> — <scope summary>:
Applying (N):
[P0] <section> — <one-line plain-English summary>
[P1] <section> — <one-line plain-English summary>
Appending to Open Questions (N):
[P2] <section> — <one-line plain-English summary>
Skipping (N):
[P2] <section> — <one-line plain-English summary>
Worked example for routing option B (top-level LFG):
LFG plan — 8 findings:
Applying (4):
[P0] Requirements Trace — Renumber R4 to match unit reference
[P1] Unit 3 Files — Add read-fallback for renamed report file
[P2] Key Technical Decisions — Use framework's Deprecated field rather than hand-rolling
[P3] Overview — Correct wrong count (says 6, list has 5)
Appending to Open Questions (2):
[P2] Scope Boundaries — Unit 2/3 merge judgment call
[P2] Risks — Alias compatibility-theater concern
Skipping (2):
[P2] Miscellaneous Notes — Low-confidence style preference
[P3] Abstraction Commentary — Speculative, subjective
Scope summary wording by path
- Routing option B (top-level LFG): header reads
LFG plan — N findings:. - Routing option C (top-level Append-to-Open-Questions): header reads
Append plan — N findings as Open Questions entries:. Every finding lands in theAppending to Open Questions (N):bucket. - Walk-through
LFG the rest: header readsLFG plan — N remaining findings (K already decided):. Already-decided findings from the walk-through are not included in the preview or in the bucket counts. TheK already decidedcounter communicates that the walk-through was partially completed.
Per-finding line format
Each line uses the compressed form of the framing-quality guidance from the subagent template (observable-consequence-first, no internal section numbering unless needed to locate). The one-line summary is drawn from the persona-produced why_it_matters by taking the first sentence (and, when the first sentence is too long for the preview width, paraphrasing it tightly to fit).
- Shape:
[<severity>] <section> — <one-line summary> - Width target: keep lines near 80 columns so the preview renders cleanly in narrow terminals. Truncate with ellipsis when necessary.
- No section numbering unless the reader needs it to locate the issue (when multiple findings hit the same named section).
When no why_it_matters is available for a finding (rare — only if persona output was malformed), fall back to the finding's title directly. Note the gap in the completion report's Coverage section if it affects more than a few findings in the same run.
Question and options
After the preview body is rendered, ask the user using the platform's blocking question tool (AskUserQuestion in Claude Code, request_user_input in Codex, ask_user in Gemini). In Claude Code, the tool should already be loaded from the Interactive-mode pre-load step — if it isn't, call ToolSearch with query select:AskUserQuestion now. The text fallback below applies only when the harness genuinely lacks a blocking tool — ToolSearch returns no match, the tool call explicitly fails, or the runtime mode does not expose it (e.g., Codex edit modes without request_user_input). A pending schema load is not a fallback trigger. Never silently skip the question.
Stem (adapted to the path):
- For routing B:
The agent is about to apply the plan above. Proceed? - For routing C:
The agent is about to append the findings above to the doc's Open Questions section. Proceed? - For walk-through
LFG the rest:The agent is about to resolve the remaining findings above. Proceed?
Options (exactly two, in all three cases):
Proceed— execute the plan as shownCancel— do nothing, return to the originating question
Only when ToolSearch explicitly returns no match or the tool call errors — or on a platform with no blocking question tool — fall back to presenting numbered options and waiting for the user's next reply.
Cancel semantics
- From routing option B Cancel: return the user to the routing question (the four-option menu). Do not edit the document, do not append any Open Questions entries, do not record any state.
- From routing option C Cancel: same — return to the routing question, no side effects.
- From walk-through
LFG the restCancel: return the user to the current finding's per-finding question (not to the routing question). The walk-through continues from where it was, with prior decisions intact.
In every case, Cancel changes no on-disk or in-memory state.
Proceed semantics
When the user picks Proceed:
- Routing option B (top-level LFG): for each finding in the plan, execute the recommended action. Apply findings go into the Apply set for a single end-of-batch document-edit pass (see
walkthrough.mdfor the Apply batching rules). Defer findings route throughreferences/open-questions-defer.md. Skip findings are recorded as no-action. After all actions complete, emit the unified completion report (seewalkthrough.md). - Routing option C (top-level Append-to-Open-Questions): every finding routes through
references/open-questions-defer.mdfor Open Questions append. No document edits apply (beyond the Open Questions section additions themselves). After all appends complete (or fail), emit the unified completion report. - Walk-through
LFG the rest: same as routing option B, but scoped to the findings the user hadn't decided on. Apply findings join the in-memory Apply set with the ones the user already picked during the walk-through; all dispatch together in the single end-of-walk-through Apply pass.
Failure during Proceed (e.g., an Open Questions append fails for one finding during a batch Defer) follows the failure path defined in references/open-questions-defer.md — surface the failure inline with Retry / Fall back / Convert to Skip, continue with the rest of the plan, and capture the failure in the completion report's failure section.
Edge cases
- Zero findings in a bucket: omit the bucket header. A preview with only Apply and Skip does not show an empty
Appending to Open Questions (0):line. - All findings in one bucket: preview still shows the bucket header; Proceed / Cancel still offered. This is the common case for routing option C (every finding under
Appending to Open Questions). - N=1 preview (only one finding in scope): the preview still uses the grouped format, just with a single-line bucket.
Proceed/Cancelstill apply. - Open Questions append unavailable (document is read-only, append flow reports no-go): routing option C is not offered upstream (see
references/open-questions-defer.mdunavailability handling). LFG (option B) and walk-throughLFG the restcan still run — they may contain per-finding Defer recommendations from synthesis. Before rendering any LFG-shaped preview, downgrade every Defer recommendation to Skip when the session's cached append-availability is false, and surface the downgrade on the preview itself (e.g., aSkipping — append unavailable (N):bucket, or a note in the header:N Defer recommendations downgraded to Skip — document is read-only.). - Walk-through
LFG the restwith zero remaining findings: the walk-through's own logic suppressesLFG the restas an option when N=1 and otherwise, so the preview should never be invoked with zero remaining findings. If it is, renderLFG plan — 0 remaining findingsand fall through to Proceed with no-op.