/council and Codex as $council. Other agents take its name or a plain request such as "put this to a council".| Lens | What it looks at |
| Architecture | Contracts, coupling, failure modes, operability, long-term cost |
| Delivery | Sequencing, testability, migration, rollback, the evidence needed to ship |
| Product | User value, usability, scope discipline, compatibility |
| Security | Trust boundaries, permissions, data exposure, abuse cases |
| Dissent | The strongest evidence-backed case against the emerging consensus |
support, support-with-conditions, oppose or insufficient-evidence), a confidence, its key evidence, risks, required conditions and unknowns.proceed, proceed-with-conditions, revise, stop or gather-evidence, with the consensus, the dissent, the conditions, the evidence gaps, one bounded next action and how conflicts were resolved. Dissent stays in the dissenting lens's own words, attributed to it, even when the other lenses disagree. A lens that returned nothing is listed as not convened and never counted. Lenses that run on the same model through the same runtime are separate roles, and the report says so.| Agent | How it runs |
| Claude Code | /council <decision> runs the saved workflow council: every lens in the table at once, then the synthesis. See Workflows |
| Codex | $council <decision> sends the lenses to subagents by hand, with the same brief and the same response shapes |
| Other agents | Its name, or a plain request such as "put this to a council" |
bun:test to node:test. The session probes the repository first and hands that evidence to the lenses. Architecture, product, security and dissent oppose, delivery supports with conditions, and the synthesis is gather-evidence: nobody has named a machine without Bun yet, so nothing justifies the move.