Rig Challenge
Run a bounded adversarial convergence loop with independent challengers and a strict-decrease stop rule.
Files1
View on GitHubSKILL.mdplugins/opencode-rig/src/resources/skills/rig-challenge/SKILL.md
GitHubRig Challenge
Read Evidence rules and Convergence.
Input
- Bounded task, exact source paths, and acceptance criteria.
- Optional: a prior ledger and its run ID.
Workflow
- Freeze the baseline. Start a run with
rig_evidence(skill: "rig-challenge") and record the exact source and acceptance criteria. - Round 1 — independent challenge. Dispatch
rig-challengerwith the complete source and criteria. The challenger returns structured findings: invariant, counterexample, severity, and file reference. The parent does not challenge its own work. Ensure correctness is covered (the challenger must examine logic/control flow). - Validate. Check each finding against the source. Record a stable signature: file plus normalized invariant. Use
rig_loopwithaction: "start"andreviewernaming the independent challenger; the baseline round's weighted total isW0. - Fix. Address validated findings only. One writer per path. Refresh the run scope with
rig_evidence(action: "refresh") after the last fix, then run configured gates. - Re-assess. A fresh challenger receives the prior findings, the complete required source, and the changed paths. It marks each signature
verified-fixedorrejectedand may report new signatures. - Score and decide. Append the round with
rig_loop(action: "append",reviewer, and every prior signature assessed). Compute the open weighted total using security 20, critical 10, high 6, medium 4, low 2, nit 1.- Strictly decreasing total: continue or stop as converged.
- Equal total: plateau; stop.
- Increasing total: non-converging; stop.
- Print progress. After each validated round, print the cumulative table:
Iteration | Security | Critical | High | Medium | Low | Nits | Weighted score, with every numeric cell asold + new. - Finalize. Record the terminal stop reason with
rig_loop(action: "finalize",reviewer,stop_reason, and anotefor authority, drift, or unavailable-reviewer stops) and finalize the run. Security or critical residue blocks finalization; any stop other than convergence leaves the run blocked.
Rules
- No arbitrary round cap replaces the stop rule;
maxLoopRoundsis a safety ceiling, not a target. - A new finding never resets prior signatures or history.
- Do not reclassify a finding as fixed without independent assessment.
- Scope changes retain the parent stop and mark unassessed prior findings as unassessed.
Output
Report the run ID, weighted series, stop reason, unresolved signatures, gate receipts, and remaining risks.