Adversarial triage with three roles. Argument: $ARGUMENTS
Overview
Triage-three orchestrates adversarial subagents — Pushers propose, Challengers question, Arbiters decide — to produce high-confidence results through tension.
The core unit is the Pusher–Challenger pair: a thesis and its Socratic interrogation. Multiple pairs explore different angles of the same problem. The Arbiter synthesizes across all pairs into verified truth.
For multi-run triage, the Investor sits between runs — a fund manager operating under the user's goal as its charter. It analyzes ROI, reallocates effort, and issues a directed investment thesis. Every allocation must trace back to the charter. Runs are controlled capital deployment, not open-ended repetition.
Everything works in threes: three roles, up to three angles, up to three runs.
Scoring System
Each finding follows a lifecycle: Proposed → Questioned → Decided. Every agent has a point ledger that makes trade-offs explicit. State the relevant scoring table in each agent's prompt.
For complete scoring tables (Pusher, Challenger, Arbiter, Investor ledgers, escalation multipliers), consult references/scoring.md.
Step 1: Understand & Calibrate
Parse the goal from $ARGUMENTS. If empty or unclear, ask using AskUserQuestion.
Infer Roles Silently
From the goal, determine what the three roles do. Do NOT ask the user to name or confirm them — just proceed.
- [I] Pusher: what to pursue (e.g., "find bugs", "spot security issues", "identify refactoring opportunities")
- [II] Challenger: what to question (e.g., "verify these are real bugs", "challenge severity claims")
- [III] Arbiter: what to decide (e.g., "emit only confirmed issues", "rank by actual impact")
Calibrate Effort from the Query
Read the goal and reason about the right effort level. Consider:
- Scope: A single file → light. A module → standard. A whole system → deep.
- Stakes: Quick check → light. Production audit → deep. Security review → deep.
- Specificity: "Are there bugs in this function?" → 1 angle. "Review this codebase" → 3 angles.
Derive effort:
| Effort | Angles | Depth | When |
|---|---|---|---|
| Light | 1 | surface | Focused question, small scope, low stakes |
| Standard | 3 | thorough | Most tasks. Broad enough to catch what matters. |
| Deep | 3 | exhaustive | Critical systems, security audits, complex problems |
Briefly tell the user the reasoning and chosen effort level before proceeding:
"This looks like a [light/standard/deep] triage. I'll explore [N] angle(s): [list]. Here's why: [1-sentence rationale]."
If the user pushes back, adjust. Otherwise, proceed. Do NOT present parameter tables or ask the user to pick from systematic options.
Plan Angles (for Standard/Deep)
When using multiple pairs, identify distinct angles — genuinely different perspectives, not overlapping.
- Prioritize: primary angle gets full depth, others get depth−1 (minimum surface).
- Examples: correctness + security + performance, feasibility + impact + risk, logic + edge-cases + API contract.
Step 2: Determine Scope
Identify what agents will operate on:
- Code: Target files/directories. Read them to build context.
- Documents: Target docs, specs, PRs.
- Architecture: Code + configs + docs together.
Gather context so agents work on concrete material. Do NOT run agents on vague input.
Step 3: Execute Triage
Phase [I]–[II]: Pusher–Challenger Pairs
Execution order:
- Spawn all Pusher agents in parallel (one per angle). Wait for all to complete.
- Spawn all Challenger agents in parallel, each receiving its paired Pusher's output. Wait for all to complete.
- Spawn the Arbiter with all Pusher + Challenger outputs.
For complete prompt templates for each role (Pusher, Challenger, Arbiter), consult references/prompts.md.
[I] The Pusher
Select mandate from style (default: measured):
| Style | Mandate |
|---|---|
measured |
"Find real issues. Accuracy over quantity. Evidence for each claim." |
wide-funnel / baseline |
"Find as much as possible. Quantity and depth. Don't self-censor." |
paranoid / max-tension |
"Assume everything is broken. Find what others would miss." |
Include scoring from references/scoring.md (Pusher's Ledger section) in the prompt. Output: numbered findings, each with statement + evidence/location + severity.
[II] The Challenger (Socratic)
The Challenger uses Socratic questioning — not assertion — to stress-test findings. The Challenger genuinely investigates each question against the source material before reaching a verdict.
Select intensity from style:
| Style | Intensity |
|---|---|
measured / wide-funnel |
Genuine inquiry. Verify together. Benefit of the doubt when evidence is ambiguous. |
baseline |
Skeptical cross-examination. Prove it or it's out. |
paranoid / max-tension |
Hostile interrogation. Wrong until proven right. |
Five Socratic questions per finding:
- "What specific evidence proves this?"
- "What would need to be true for this NOT to be an issue?"
- "Is this the root cause or a symptom?"
- "What's the alternative explanation?"
- "Under what real conditions does this matter?"
Verdicts: CONFIRMED, REJECTED, or DISPUTED. Include scoring from references/scoring.md (Challenger's Ledger).
Phase [III]: The Arbiter
After ALL pairs complete, the Arbiter synthesizes across every angle.
Select mandate from style:
| Style | Mandate |
|---|---|
measured / baseline / max-tension |
"Only verified truth. False positive = heavy penalty. Missing true finding = mild penalty." |
wide-funnel |
"Most complete truth. Missing real finding = HEAVY penalty. Borderline inclusion = mild penalty." |
paranoid |
"Only PROVABLY TRUE. Any doubt → exclude." |
Rules:
- CONFIRMED by [II]: Include, refine for clarity
- REJECTED by [II]: Exclude UNLESS [II]'s reasoning is itself flawed (verify independently)
- DISPUTED by [II]: Independent judgment against source material
- Cross-angle convergence: If multiple angles flag the same area → higher priority
- Cross-angle conflict: If angles disagree, investigate the discrepancy
Output: verified findings grouped by priority, each with evidence, severity, recommendation. Stats: total → confirmed → rejected → disputed → final.
Iteration (Investor-directed loop)
If effort is Deep or the user requested multiple runs:
- Compute scorecard — calculate point totals for this run (using the current multiplier). Calculate confirmation rate per angle.
- Spawn the Investor — give it the full scorecard, per-angle ROI breakdown, and verified findings. See
references/prompts.mdfor the Investor prompt template. - If Investor says stop → present final results.
- If Investor says continue → the directive reshapes the next run (new/killed/refocused angles, depth adjustments).
- Next run uses multiplier N+1 (run 2 = 2×, run 3 = 3×). All point values scale.
- Feed forward: Each agent receives the Investor's thesis and their angle's specific focus.
For Investor scoring, charter drift detection, and the complete Investor prompt, consult references/scoring.md and references/prompts.md.
Step 4: Present Results
- Verified findings — the Arbiter's final output
- Triage flow — findings generated → questioned → verified (per angle + total)
- Scorecard — each agent's point total from the scoring system (see
references/scoring.mdfor ledger format) - Investment trail (multi-run only) — Investor's directive after each run
- Cross-angle patterns — what multiple lenses revealed together (if applicable)
- Evolution — if multiple runs, how findings and angles shifted across runs
Notes
- Each subagent is a fresh Agent tool invocation (general-purpose)
- Launch [I]–[II] pairs in parallel across angles
- Read scoped context ONCE and reuse across all agents
- If a pair produces zero findings, skip it in arbitration
- If a run produces zero findings total, stop early
- Style: pass as
style=Xin arguments; defaults tomeasured - Available styles:
measured,wide-funnel,baseline,paranoid,max-tension
Additional Resources
Reference Files
For detailed scoring and prompt templates, consult:
references/scoring.md— Complete scoring tables for all roles, escalation multipliers, Investor ledger, charter drift detectionreferences/prompts.md— Full prompt templates for Pusher, Challenger, Arbiter, and Investor subagents