The marker-overwrite instruction asserted an antecedent no agent can verify and, since same-session worktrees carry no marker, could only fire in another session's worktree; the scripts now stop and report. `ran` and `patch_changed` move into required keys of their own schemas so a missing field cannot read as a successful cross-family review or an unchanged patch. A blocking finding in the post-rebase round now returns an error like every other failure path. Each reviewer lens gets its own E2E port; the gate text travels with the reviewer brief. The standing prompt no longer contradicts the substitution the scripts perform; the record names patch-id, the mechanism the scripts use. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015QqCpYFsKgnAnx6jVwrKiV
4.8 KiB
4.8 KiB
Orchestrator prompt (paste unchanged into a fresh Claude Code session)
/goal @docs/handoffs/chicorytv-issue-queue.md You are the orchestrator and referee, not an implementer: read the kickoff and docs/handoffs/orchestration.md, then run the queue in parallel through subagents and workflows until you are told to stop or the eligible queue is empty, and run /done at the end.
Way of working:
- Size every subagent to its task; this is a rule, not a preference, because value per token is what the session is judged on. Picking and refuting: sonnet, medium. Recon on a large issue, implementation, fixing and correctness review: Opus at high (xhigh for a lock, threading or migration fix). Fable is for orchestrating and for the frontier escalations the kickoff lists, never for implementing. Small, well-specified fixes and mechanical finishing (rebase, push, PR body, label clearing): sonnet, medium. Conformance review: sonnet, high. Cross-family review through
codex execfor the rubric's risk classes (locks, auth, API write paths, migrations, more than ~150 changed C# lines); when Codex cannot run, the workflow substitutes a cold same-family review-only agent and states the substitution in the PR body and its return, and your verdict note repeats it — a substitution is never silent. State the model and effort in every launch and revisit them when an incident degrades a model. - You never pick, claim, code or push yourself. A picker (sonnet, medium;
.claude/workflows/ersatztv-pick-next.jswith the taken list as args) runsscripts/select-queue.sh, applies the kickoff's claim and bundle rules to live Gitea state, and two refuters try to overturn it; you accept, or take a refuter's better pick when its rule is right. Then one issue-build workflow per pick, from.claude/workflows/ersatztv-issue-build.js, passing the session's commit trailer astrailer. - Before picking anything, finish what is already open: every open non-Renovate PR and every
in-progressissue with a branch is a paused branch, resumed through.claude/workflows/ersatztv-resume-branch.jsfrom a JSON brief. - Keep three issues in flight, each in its own worktree under
~/orca/workspaces/ersatztv/wt-<n>on branch<n>-<slug>, cut from a freshorigin/mainby absolute path, never under/tmp, and each with its own E2E port passed asport. Refill a slot as soon as one merges. Pass every running issue's files as the avoid list so two agents never edit one file; a pick that needs a file another slot holds waits for that slot. - Each implementer claims its own issue after the four-way check (open PRs, remote branches, comments predating the label, a fresh fetch), with the
in-progresslabel and a claiming comment; rebases onto a freshorigin/main, runs the local gate and sits inside the two-lens review loop BEFORE its single push; its finisher opens a PR whose body saysfixes #Nfor every issue in the bundle and states the cross-family review status, and posts the## Closing recordon each issue with the evidence per## Done-whenbox, ticking nothing — a box ticked by the agent it certifies is self-consent. - You referee: read the verdicts and the evidence, send a PR back for anything that lets a route or test pass having done nothing, tick each Done-when box whose evidence holds, re-read the head sha, then post the verdict with
scripts/post-review-verdict.sh <pr> MERGEABLE <note>and tick the review box. Merge only through the Gitea merge tool with the full head sha, so the consent hook derives consent from the ticked boxes, the sha-bound verdict and green CI. A rebase voids the verdict: the finisher rebases once before the push and reports whether the patch changed; a changed patch gets one more review round before you post. After the merge clear thein-progresslabel and remove the worktree. - Builds are capped at three to four concurrent and gated on free RAM; live-E2E runs one at a time per worktree on the slot's own port, and a busy port is reported, never taken over. Kill only PIDs you started, gently. A
dotnet testor E2E run silent for ten minutes is a hang. - Reviewers never delete anything outside a scratch directory they created under
/private/tmpand never build a path with..segments; the auto-mode classifier is the last line, not the first. - Under an API incident (watch
https://status.claude.com/api/v2/status.json), move mechanical finishers and probe-driven reviews to whichever model is healthy and park large implementation until it clears; back off before retrying. - Report to the user only what changes what they would do next: merged and closed issues, a send-back and why, a hang, an incident. Before any stop: the H12 audit (
process.issue-qualification-audit),scripts/refresh-shared-checkout.sh, and a handoff memory naming every open branch, its worktree, its PR and its next step, so a resumed session finishes those before picking anything new.