Mind stone

Council

Speaks, never acts. The stone that thinks out loud, in assigned seats, on a budget, and then falls silent.

deliberation <= 120 s seats: 1+ per cabinet executes: never

The discipline

Council is multi-model deliberation, not a chat room. Seats are assigned, rounds are counted, and the ruling is written down.

Assigned seats stream arguments across rounds. The operator can intervene between rounds, a validator can check claims, and the chair files a ruling at the end. When an ambiguous Escalation arrives, Council adjudicates it and emits a bounded Directive. It does not execute anything, ever.

Thought is rare, so it is budgeted: deliberation gets at most 120 seconds, then silence. The gauntlet does not do infinite meetings.

The one-rule summary

Council may speak, sign nothing, and touch nothing. Rulings and Directives are words with structure; the action path belongs to other stones, and only after the human says so.

The CLI

One binary, many levers. Every row below is copyable, and every tag says whose lever it is.

council --discover

OperatorNon-billable transport scan. Reports which provider CLIs are present on this machine. Presence only: it says nothing about whether the login behind them is valid.

council "Should we split the parser crate?"

OperatorRun a deliberation on a topic with the standard cabinet. Tear-down is the default mode, so a no-go is a permitted outcome.

council --quick "Ship the hotfix tonight?"

OperatorThe quick path for a topic that does not deserve a full cabinet.

council --cabinet triad-risk "Launch on the holiday weekend?"

OperatorPick a named cabinet instead of the default. The roster ships 21 of them; see the cabinets section below.

council --pathfind "How do we migrate the store?"

OperatorPathfind mode: objections must come with a path. No veto without a route forward.

council --harden --map ./src "Attack this design."

OperatorHarden mode: adversarial findings, each with a concrete fix. Often paired with --map ./src so the seats argue over real code.

council --pathfind --then-tear-down "Bet the release on the new cache?"

OperatorCombined mode: find the path first, then let tear-down try to break it.

council --map ./src "Review the hot path."

OperatorMap a code path into the session so seats deliberate over the actual tree, not a summary of it.

council --recall "auth timeout"

OperatorSearch the precedent index for past sessions matching these terms.

council --budget 0.50 "Rewrite the scheduler?"

OperatorUSD cap per run. Thought is rare and it is also metered.

council --context notes.md "Continue the design review."

OperatorFeed a notes file into the session as context for every seat.

council --smoke-provider claude_code "Reply with the word ok."

EngineeringOne live, billable call to verify a seat actually works. This, not --discover, is the proof that a transport is authenticated.

council --smoke-model claude-opus-4-6

EngineeringThe model-level twin of --smoke-provider: smoke one specific model.

council --reindex

EngineeringRebuild sessions/index.jsonl, the precedent index.

council --serve --port 8765

OperatorRun the Council API and WebSocket server on loopback, the surface the War Room talks to.

Cabinets: who sits at the table

A cabinet is a chair plus one or more seats plus a round count, declared in YAML. The file stem is the cabinet's key, and it must match ^[a-z0-9][a-z0-9_-]{0,63}$.

Cabinet schema

Field
Meaning
name
Cabinet name.
description
What this cabinet is for.
rounds
How many argument rounds the seats get.
seats[]
One entry per seat: name, provider, model, system.
chair
name, provider, model, system, and thinking_effort of low, medium, high, or max.
local_code_only
Restrict the session to local code.
synthesis_mode
generic or directive_proposal_v1.
hash
Internal.

Modes are flags, not fields

Mode is a CLI or session flag, never a YAML field. The shipped modes and tags, per docs/cabinets.md:

  • tear-down: the default. A no-go is a permitted outcome.
  • pathfind: objections must come with a path.
  • harden: adversarial findings with concrete fixes.
  • pathfind-then-tear-down: route first, wreck it second.
  • Also: recall, blind, wargame, premortem.
  • War Room direct-fire tags: contrarian, munger, kiss, specops.

The roster: 21 shipped cabinets

General purpose:

  • checklist-duo, code-verify, duo, freeride, heritage, quick, reflection, sovereign, standard, trinity, wargame, warroom

Domain triads (triad-*):

  • triad-architecture, triad-debugging, triad-product, triad-risk, triad-shipping, triad-strategy

Machine-output cabinets (triage*), running directive_proposal_v1 synthesis:

  • triage, triage.canary-novertex

Optional first run:

  • starter-nvidia: needs NVIDIA_API_KEY, and its seat models must be in config/nim-invokable-allowlist.txt. The allowlist is a snapshot, not a guarantee.

The canonical example: standard.yaml

rounds: 2
seats:
  - name: Strategist
    provider: grok_hermes
    model: grok-4.3
  - name: Mirror
    provider: gemini_agy
    model: gemini-3.1-pro-preview
  - name: Operator
    provider: claude_code
    model: claude-opus-4-6
chair:
  provider: claude_code
  model: claude-opus-4-8
  thinking_effort: high

ReferenceThree seats, two rounds, one high-effort chair. Fields not shown follow the schema above.

The record: what a session leaves behind

Deliberation is ephemeral; precedent is not. Every completed session is written down so future councils can stand on it.

Precedent and retrieval

Completed sessions become PrecedentEntry lines in sessions/index.jsonl. Retrieval produces a RetrievalReceipt: the ranker (hybrid-v1 or keyword-v1), the query, and per-hit session id, score, and why-matched. That one receipt feeds prompt injection, the precedent_loaded event, and session.precedent_ids identically, so what the seats saw is exactly what the log says they saw.

The keyword precedent path is separate from the War Room semantic embedding search. Two search systems, two purposes; do not conflate them.

What a session records

Field
Meaning
budget
The USD cap the run was given.
total_cost_usd
What the run actually cost.
total_tokens
Tokens consumed across seats and chair.
total_latency_ms
Wall time the deliberation took.
ruling_digest
Digest of the chair's ruling.
confidence
The recorded confidence of the outcome.

Sheldon validation

Run with --validate and Sheldon checks the claims. Each round gets a validation_report, and every claim lands one of four verdicts: supported, consistent, no evidence, or contradicted.

Five artifacts you must not conflate

  • Source receipt: irin-runtime.sh writes ~/.local/state/irin/runtime/source.json with origin, branch, SHA, and cleanliness.
  • Precedent RetrievalReceipt: what past sessions were injected, and why.
  • Ed25519 Gateway audit ledger: the signed record of routed calls.
  • Watch hash-chained fires: the Sentinel's tamper-evident observation log.
  • Signed Outbox directive: an action artifact. Ordinary deliberation NEVER creates one.

The honest limits

Fine print, read before you assemble

  • Deliberation does not guarantee correctness. A ruling informs your call; it does not make the call.
  • Discovery does not prove a credential is authenticated. CLI binary presence is not a valid login; the first real seat call is the proof.
  • A multi-seat council needs at least 2 usable transports.
  • Provider and model names churn per account. What ships today may rename tomorrow.
  • --discover output is authoritative for the current commit only.
  • Partial seats stay visible at reduced emphasis with a need <provider> note. They are never silently dropped or rerouted.