Skip to content

batch: make /batch a conversational door, not a command wrapper - #321

Merged
Jammy2211 merged 1 commit into
mainfrom
claude/autonomous-task-batching-k8lw9t
Aug 30, 2026
Merged

batch: make /batch a conversational door, not a command wrapper#321
Jammy2211 merged 1 commit into
mainfrom
claude/autonomous-task-batching-k8lw9t

Conversation

@Jammy2211

Copy link
Copy Markdown
Contributor

The /batch skill was a thin wrapper — "run batch plan, return the decision" — which is enough to read a proposal and nothing like enough to run a slot from a chat. This adds the body (skills/batch/batch.md, with SKILL.md pointing at it, matching the repo's convention).

Why

The intended interface is a conversation, not a terminal: paste some tasks from the Mind dashboard, describe the batch you want, say go, and later work through what came back. The CLI exposes one verb; a human says three different things.

The three things a human actually says

"What should I run?" → the BatchDecision as written, with the two parts that must survive into the reply: the review-minute total (the budget is the human's hour, not a task count) and the other lane's ready count when this session cannot plan it. An empty batch at the backpressure cap is reported as a finding, not a deadlock.

"Here are the ones I want." → a paste of dashboard paths, or a description. Resolve it, run the constraints over exactly that set, and report per task what was taken and what was rejected in the planner's own words (autonomy supervised — would park at ship, Status: says the work is already done, epic <slug> phase N is not next, …). Never silently substitute different picks; if everything they named is rejected, say so and offer the planner's proposal as an alternative, not as though it were the ask.

Two rejections may not be overruled: an open Blocked-by:, and Unattended: never. Everything else the human may overrule, provided the reply names which rejection is being overruled and why.

"Go." → vitals, the Heart reason set recorded verbatim, the batch record written before any session starts, then one session per member — never shared, because a shared session serialises them and carries one member's context into the next.

The return path, which was missing entirely

Read the PRs failures-first, then decision-taken, then clean. Offer merge / tweak / reject, and on a tweak, draft the follow-up prompt — the human says one line and never writes a prompt file. Then get review-minutes-actual:, asking for it if it is not volunteered, since it is the only calibration the whole estimate ever gets.

Two guards restated where they will be read

  • The independent adversary leg must have run, in a session using a different model, before any PR from a batch is reviewed. If it has not, say so rather than reviewing as though it had.
  • delivered: is not "green" — a cloud session's green status means it exited without an infrastructure error, not that the task succeeded.

And the rule that outranks convenience, in both files: the human's go in the conversation is what launches a batch. A schedule may carry the timing; it never carries the authority.

Validation

119 lines against the 200-line mandatory-load budget. 691 tests pass, including the skill-install and local-link guards. (Pre-existing and untouched: skills/prm/ at 251 lines is the one skill over budget.)


Generated by Claude Code

The skill was a thin wrapper — "run batch plan, return the decision" — which is
enough to read a proposal and nothing like enough to run a slot from a chat.
This is the body: skills/batch/batch.md, with SKILL.md pointing at it, matching
the repo's own convention.

It covers the three things a human actually says, rather than the one verb the
CLI exposes:

  "What should I run?"        -> the BatchDecision as written, with the two
                                 parts that must survive into the reply: the
                                 review-minute total, and the other lane's ready
                                 count when this session cannot plan it.
  "Here are the ones I want."  -> a paste of dashboard paths, or a description.
                                 Resolve, run the constraints over exactly that
                                 set, and report per task what was taken and
                                 what was rejected IN THE PLANNER'S OWN WORDS.
                                 Never silently substitute different picks; if
                                 everything they named is rejected, say so and
                                 offer the planner's proposal as an alternative
                                 rather than as though it were the ask.
  "Go."                        -> vitals, the Heart reason set recorded verbatim,
                                 the batch record written BEFORE any session
                                 starts, then one session per member.

Two overrules are refused: an open Blocked-by, and Unattended: never. Everything
else the human may overrule, provided the reply names which rejection is being
overruled.

The return path is the half that was missing entirely: read the PRs
failures-first, offer merge / tweak / reject, and on a tweak DRAFT THE FOLLOW-UP
PROMPT so the human never has to write a prompt file. Then get
review-minutes-actual, asking for it if it is not volunteered — it is the only
calibration the whole estimate ever gets.

Two guards restated where they will actually be read: the independent adversary
leg must have run, in a session using a different model, BEFORE any PR from a
batch is reviewed; and `delivered:` is not "green", because a cloud session's
green status means it exited without an infrastructure error, not that the task
succeeded.

119 lines against the 200-line mandatory-load budget. 691 tests pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RQeMJZznA3xTQXX4PqWg1v
@Jammy2211
Jammy2211 merged commit 9fb2085 into main Aug 30, 2026
2 checks passed
@Jammy2211
Jammy2211 deleted the claude/autonomous-task-batching-k8lw9t branch August 30, 2026 23:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant