From god-of-debugger
Internal step of /god-of-debugger. Dispatches one hypothesis-runner subagent per hypothesis in parallel. Aggregates verdicts into survival table. Invoked after hypotheses written to session.
How this skill is triggered — by the user, by Claude, or both
Slash command
/god-of-debugger:runThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Orchestrate experiments from `debug`. One subagent per hypothesis (`hypothesis-runner`, or `bisect-runner` for bisect). Run **parallel**. Strict verdict back.
Orchestrate experiments from debug. One subagent per hypothesis (hypothesis-runner, or bisect-runner for bisect). Run parallel. Strict verdict back.
Also maintain session cost_log. Record what happened.
.god-of-debugger/current → active session_id..god-of-debugger/sessions/<session_id>.json → bug, repro, localization, hypotheses.Missing either → STOP. Tell user run /god-of-debugger:repro + /god-of-debugger:debug first.
experiment specs.status == "open" (not closed, not repro_unstable).session.parked — need runners not in v0.1.experiment.kind == "bisect" → bisect-runnerhypothesis-runner{ session_id, bug_summary, repro: {command, hit_rate}, hypothesis, budget, repo_path }. Never other hypotheses. Never prior verdicts. Isolation = point..god-of-debugger/experiments/<Hn>/preregistered.json, verdict.json, probe.diff (if edit), run.log. Missing → mark inconclusive, evidence: "runner returned incomplete artifacts".session.hypotheses[i] with verdict, evidence, artifact_path, budget_consumed, retries, confidence, falsification_check.session.cost_log.runs[] with hypothesis id, origin, model, tokens if available.session.survivors. Touch session.updated_at.{
"session_id": "<id>",
"summary": [
{
"id": "H1",
"origin": "primary",
"axis": "concurrency",
"verdict": "killed",
"evidence": "<one line>"
}
],
"survivors": ["H3", "H4"],
"inconclusive": [],
"killed": ["H1", "H2", "H5"]
}
Render exactly this shape. Columns in order:
| ID | Origin | Axis | Verdict | Evidence (≤60 chars) |
Origin: prim | advVerdict: killed | survived | inconc… if >60 chars.Then prose, branch on outcome:
Round 1 missed. Don't silently regenerate.
"All killed. Cause in axis not covered. Run
/god-of-debugger:debugagain. Regenerate with ruled-out axes deprioritized. Must cover ≥2 axes not yet tried. Cap: 2 regen rounds."
Counter in session.regenerations (increment each). After 2, halt, hand to user.
Likely root cause. State plainly.
"H_n survived. Origin: . Axis: . Evidence: . Run
/god-of-debugger:promoteto convert experiment to regression test before fix."
Experiments not discriminating.
"N survived (H_i, H_j, ...). Design experiment that distinguishes them — their
expected_if_truemust differ. Loop back to/god-of-debugger:debugwith survivor set as context."
Same hypothesis flips verdict across retries (retries > 1 with differing evidence) → STOP aggregation. session.status = "repro_unstable". Tell user: "Repro went flaky during falsification. Harden via /god-of-debugger:repro before retry."
killed without quoted evidence from subagent.inconclusive is first-class. Includes: timeout, crash, ambiguous output, budget exhaust. Never coerce to killed/survived.inconclusive, not survived.origin in every table. Users must see when adversarial is last standing.npx claudepluginhub soummyaanon/god-of-debugger --plugin god-of-debuggerCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.