quorum_create
- Category: quorum
- Access: write
- Audience: administrative (ordinary users do not normally call this directly)
Purpose
Creates one coordination quorum: the agreed-what in Mind Quorum layering (Debate holds why, Quorum holds what was agreed, Lane carries the coordinated stream, Job is one executable unit). Call it when a decision needs named participants and later lanes and jobs under one agreement.
Arguments
Required: project.
Optional: participants, primary_topic_id.
-
project. -
participants. Note: Optional JSON array of {kind, ref} entries, at most 64. kind is client or role; client refs must name a live principal. Entries start pending. -
primary_topic_id. Note: Optional debate topic the quorum coordinates around; when given it must exist.
Result
JSON object with quorum_id (new UUID), status (always open on creation), and project.
Boundaries
Requires the conductor role AND an explicit project grant together; star scope never confers origination and literal * plus the unreconciled sentinel are rejected as projects. Stored within the selected profile boundary only.
Lifecycle / side effects
Creates the quorum in open standing with its participant entries in one atomic operation and records an audit/history event. New quorums start open with participants pending.
Errors
Missing conductor role or missing explicit grant is denied. Missing or reserved project is rejected as invalid project. Unknown topic reads as unknown_topic. Malformed participant payload, too many participants, and unknown client refs are rejected. Unknown arguments are rejected. Failures create nothing.
Example
{
"participants": "[{\"kind\":\"role\",\"ref\":\"EXECUTOR\"}]",
"primary_topic_id": "<uuid>",
"project": "shared-ops"
}
Result shape:
{
"project": "shared-ops",
"quorum_id": "<uuid>",
"status": "open"
}
quorum_id is assigned by the server; the placeholder stands for the returned UUID.
See also
quorum_list, quorum_resolve, quorum_cancel, quorum_participant_set, debate_init.