/panel — multi-provider deliberation
SkillDev toolsMulti-provider deliberation panel for COMPLEX, multi-view questions — architecture, strategy, market research, and codebase sweeps. Runs a 4-stage deliberation across the provider fleet (diverge → contrarian red-team → adversarial verify → cited synthesis), the same multi-perspective rigour the plan-gate already applies to plan reviews, generalised to arbitrary questions. Use when one model's answer isn't enough and you want convergence THROUGH disagreement + verification, not a single opinion.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the /panel — multi-provider deliberation skill
What this skill tells your AI
The instructions your AI receives, as published by vinix24/vnx-orchestration in .claude/skills/panel/SKILL.md and read by ahel’s review.
For hard questions where you want several strong models to genuinely deliberate, not just answer in parallel. Each stage builds on the last, so the panel converges through disagreement and verification instead of averaging opinions.
When to use
- architecture — a feature/system design where the tradeoffs are non-obvious.
- strategy — a business/product call that rests on assumptions worth stress-testing.
- research — market/competitive questions where claims need refuting.
- sweep — a codebase audit (security / correctness / dead-code / refactor).
Reach for it when a single model's answer would be a guess, and you'd otherwise open five terminals yourself.
How it works (4 stages)
- Diverge — every fleet provider (codex / kimi / claude / glm-5.2 / deepseek-harness) analyses the SAME question through a DIFFERENT mode-specific lens.
- Contrarian — one designated seat red-teams the emerging consensus: what did everyone miss, which "this is fine" is wrong.
- Verify — the top claims are adversarially checked (against the CODE for sweeps — real
file:line; against SOURCES for research — try to refute). - Synthesis — one cited report: consensus + surviving dissent + verified/refuted claims, ranked and deduped.
How seat coverage is counted (OI-1519)
"N of M lenses present" is reconciled against the t0 receipt ledger
(t0_receipts.ndjson), never taken from the exit_code a seat writes about ITSELF in
its own report frontmatter. After each stage completes, every seat's dispatch-id is
looked up in the ledger via receipt_provenance.find_receipts_by_dispatch and lands in
one of THREE outcomes:
- present — the ledger holds a decisive SUCCESS record for the seat's dispatch-id
(
statusin the ADR-035 success setdone/success/complete/completed, orverdict.decision=accept). - failed — the ledger holds a decisive FAILURE record (
statusin the ADR-035 hard-failure setfailed/failure/error/blocked/timeout/contract_invalid, orverdict.decision=reject; multiple receipts for one dispatch-id reconcile failure-beats-success — a success record never launders a recorded failure). A dispatcher that RAISED before the seat completed is failed on direct local evidence. - unmeasured — the ledger has NO decisive record for the dispatch-id (no receipt
at all, or only indecisive ones). This is a third BRANCH, not a third value: the
seat counts as NEITHER present NOR failed and is named in the report
(
**Unmeasured seats:**,[SEAT UNMEASURED — no decisive ledger record]). Reading "unmeasured" as "probably fine" repeats exactly the bug OI-1519 repaired — a measurement gap is not a lens.
Where the ledger and the seat's own frontmatter DISAGREE, the ledger WINS the count and
the divergence itself is reported (## Ledger reconciliation — divergences in the
report, result.ledger_divergences) — a silent correction would produce a panel that
cannot be weighed. When no ledger exists or can be read at all (fresh checkout) the
tally falls back to the pre-OI-1519 frontmatter measurement, flagged loudly via
ledger_available=False in the report — never silently.
This holds for the diverge fan-out AND for the sequential stages (contrarian, verify,
synthesis), which accept a seat via _first_ok under the same measurement: a
ledger-failed seat is skipped; an unmeasured seat is kept only as a last-resort
fallback so a measurement gap cannot collapse a stage to [empty] when real content
exists.
Measured case (2026-08-29, the dispatch that opened OI-1519): seat
panel-sweep-diverge-0-a6421f (codex) wrote exit_code: 0 in its own report
frontmatter while the receipt ledger records status=timeout,
verdict.decision=reject after the 600s deadline. Pre-fix it counted PRESENT (4/5
lenses reported; really 3 + a timeout). Post-fix it counts FAILED, and the divergence
is printed in the report.
Run it
python3 scripts/panel.py <mode> "<question>" [--context-file FILE] [--timeout 900] [--out FILE]
Examples:
# architecture decision, grounded on a design doc
python3 scripts/panel.py architecture "Should the judge run per-receipt or batched?" --context-file docs/adr-028.md
# code sweep grounded on a diff or file list
git diff origin/main > /tmp/d.diff
python3 scripts/panel.py sweep "Review this change for security + correctness" --context-file /tmp/d.diff
# market research
python3 scripts/panel.py research "Is there an underserved MKB market for local-LLM invoice processing?"
The cited report lands in unified_reports/panel-<mode>-<id>.md and prints to stdout.
Notes
- Governed lane: each panelist dispatches through the review lane and emits a receipt. Respects the provider constraints (kimi-via-cli-only, glm via OpenRouter/harness, deepseek-harness with its own key + hardening, no-anthropic-sdk) — the dispatcher routes each provider correctly.
- A dead/absent provider (e.g. deepseek without its key) degrades the panel gracefully; it never blocks the run.
- The panel is the fabric's general multi-view tool. It complements the plan-gate panel (which is scoped to plan reviews) and the t0-orchestrator skill (which owns orchestration decisions). Implementation:
scripts/lib/deliberation_panel.py.
Signals
- GitHub stars
- 61
- Forks
- 8
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
panel-vinix24- Source
- github.com/vinix24/vnx-orchestration