council-enginelisted
Install: claude install-skill elliotboney/Parley-Voo
# Council Engine
Orchestrates a deliberation: independent seats reason in parallel, peer-review
each other anonymously, and a chairman synthesizes without smoothing dissent.
The full protocol contract (verbatim guardrail text, output headings,
rationale) lives in `references/protocol.md`. Topology details live in
`references/topologies.md`. Read both before your first run.
## Inputs
You need two things, plus one optional flag:
1. **A roster file** — `councils/<name>.md` (or an explicit path the caller
provides, e.g. a test fixture).
2. **The framed input** — the question, decision, or artifact under
deliberation, exactly as the caller framed it.
3. **Mode escalation (optional)** — quick is the default; a caller passing
the user's `--full` flag escalates to full (see Step 3).
## Step 1: Resolve the roster
Read the roster file's YAML frontmatter:
| Key | Meaning |
|---|---|
| `topology` | `parallel` or `staged` — how the deliberation runs |
| `seats` | ordered list of seat IDs participating in a full run |
| `quick_seats` | non-empty subset of `seats` that runs in quick mode (see Step 3) |
| `model_overrides` | optional map of `seat_id → tier` |
The shape of `seats` depends on topology: a flat list of seat IDs for
`parallel`; an ordered list of **stage groups** (a list of lists) for
`staged` (see `references/topologies.md` for both shapes).
Validate the roster before loading anything:
- `seats` must be non-empty — an empty list → STOP: `Roster '<name>' has n