Skip to content

006 Consensus

floor edited this page Oct 19, 2026 · 5 revisions

006 Consensus

Status: Draft — may change (2026-10-19)

1. The question

A team has several agents, from several labs, and at least one person. Some decisions are taken by one of them; others should not be. For every kind of decision a team takes: who decides and by which means; what makes a voice count; what is the floor; what silence, disagreement and a lent voice are worth; and what every decision keeps — with no refusal the Kernel does not name and no rule the board's own text already holds for TeamCLI?

2. What we propose

Eleven commitments: nine from RFC 006, re-laid, one for where the module ends, and the settings. Each says what it keeps here, what it leaves to a tier below or to governance, and what 0.5.0 does.

A. Which decisions, and how

  1. Every kind of decision says how it is taken, and by which means. For each kind a team takes (a text accepted, a change checked, an entry remembered, a power given, a finding closed, a team's shape chosen) there MUST be a rule you can read, saying who (one voice; several asked and one decides; a number; all) and by which means (a fact; a trial; a vote; one voice that hears the others; a rule already written, found and applied; review in rounds; the owner; a project's own). The rule MUST name the means before the work it decides on is opened, with what the means is to show and what it cannot settle, and is set by whoever holds the right to set it, never by the one whose work is decided on. Changing a rule, its number or its floor MUST be recorded with who and when, and a rule changed mid-round applies to the next question, not the one being decided. The floor other texts set is theirs: a power given (the Kernel §9, §10), an entry remembered (003), what is checked before it lands (005 commitment 3). A means gives a decision its ground; whoever holds the right still takes it: a run that passes is a check (005) and a trial is an analysis (004), neither an acceptance. Where nothing is set, one voice decides: the holder of the right to that act (Kernel §3). Spec: none of its own; the means a text names are the texts'. Proof: none at the tag. Today (v0.5.0). The tool knows no kind of decision and no means. The one agreement it once took by hand, the owner's team approve of a team file, is gone in 0.5.0: "the live team file is the record, and nothing needs approving" (src/cli.ts, the removed command's one line; UPGRADE-0.5.md). An approval record an earlier version wrote is still read when present, for the out-of-band owner token, the budgets and the watch values in force, and re-signed when add, remove --keep or rename keep it in step; a legacy or unreadable one refuses up outside dev mode and is folded into a warning in it; a file never approved launches silently; nothing writes a new record for a file that never had one (src/approve/approval.ts, src/commands/up.ts). The rules themselves exist as texts: the board's in the Charter's Part 3, in force for this series, and in Board as a proposal; the tool carries their names, board and review-terms, as advised policies at the project level, each a string the owner may set with team policy set project <name> <text>, clear with team policy unset, and team policy lists, read by nothing else (src/policy/types.ts). The owner's decisions are a rule already written for some acts: a standing word for signed inbox posts (an owner decision, superseded in part: its build items were reassigned and the §1 run-authorization stands) and for one design (an owner decision); a release that ships when five written conditions hold and nobody asks again (an owner decision); an acceptance delegated to the entity orchestrator for one text after its last round (an owner decision).

  2. A fact before an opinion, and more than one voice only for what deserves it. Where the rule says a question can be answered by trying the thing, it MUST be tried before any voices are counted (005 commitment 4), and what came out is what the voices and the decider start from. Several voices cost time and what each lab is paid for; most decisions SHOULD be one voice's; the rule says for each kind what asking more costs, and the tool shows what the asking took. Spec: none. Proof: none at the tag. Today (v0.5.0). Nothing counts what a round costs. team usage reads each account's tokens, what is left and used, with the time and source of each figure, and knows nothing of what a reading was spent on; the gate scripts print their durations (005 commitment 8); a round's readings are three seats' turns that no record sums.

B. What makes a decision's ground worth something

Commitments 4 and 9 hold for every means. Commitments 3, 5 and 6 hold whenever voices are asked; a fact, a trial and a rule have no voices, and what stands in for independence there is in commitment 4.

  1. A voice counts only if it is independent. Each voice MUST read alone, the same text or the same state of the work, without seeing the others' answers first. Voices from one lab are one voice, however many agents gave them; the lab that produced a thing MUST NOT count toward agreement on it; the decider is not among the voices asked; a dependent voice is heard, recorded, and counted toward neither the number nor the floor. Where the tool knows that two voices share more than a lab (one model reached two ways, one lead, the same files read), it says so beside the decision. The two halves the Kernel enforces are the Kernel's: the author's seats never gate or merge their change, and the lab predicate at the gate (§5). The counting is this module's. Spec: Specs-rfc-process-files §3 (the verdict file's blindness rule). Proof: none at the tag; the series' rounds keep it by practice. Today (v0.5.0). Nothing in the tool knows who read what, or before whom: no review record, no reviewer's verdict and no vote exist under src/ (review is a grant capability word and part of the review-terms name; verdict is the code's word for a gate's answer; vote does not appear). The practice knows: a verdict file names its seat and the model as run, and is written blind to the other verdicts (the review process, the review kind); the reviewer rule is three labs, none the author's and never the authoring model (the review process); the owner's data rule for a private text is per team, revised once for one lab (an owner decision).

  2. What is decided on does not move while it is being decided. Voices MUST answer on one named state and an answer MUST name it; if the thing changes, the answers before are answers on the old state, kept and not counted; changes go between rounds. For a change, the state is the Kernel's effect id over the paths, the tree, the ref, the base and the policy (§15), and a merge consumes a pass bound to that id. For a text, a round is frozen at a commit, any edit to an in-scope file voids it, and every answer names the commit it read. For a fact, a trial, a rule or a project's own means, the ground is named the same way (what was run, on which state, with what, by whom, what came out; which rule, as it stood when, and how applied), and a ground that cannot be named is no decision by that means. Spec: Specs-rfc-process-files §3 (frozen-at). Proof: none at the tag; the series' briefs and verdicts carry it. Today (v0.5.0). The commands that check read what is there when they run and record nothing of it; there is no review record and no effect id (the Kernel's Grants section's decision record: 0.5.0 gates none of review, gate, merge). The series' rounds carry frozen-at in every brief and every verdict, and a round whose in-scope file changed is void by the brief's own words.

  3. Silence is never agreement. An answer exists only when given whole with its verdict. Every asking MUST have a time by which answers are due; when it passes, the tool finds out why a voice is missing (a question on its screen, its lab's limit, the network, a stop) and says so; the voice is asked once more when the cause has gone, then replaced from the same lab if there is one, the replacement reading the whole; who may stand in MUST be named before the asking, by the rule or by you, never by the one whose work is decided on nor by anyone casting a voice for them; a person is never replaced by an agent: the decision waits, or goes to whoever the rule names; a decision that asked three and heard two says so. The Runtime's watch is the sensor; the message, its thread and its timeout are 002's, and the decision's due time, its retry and replacement, and the trace of them are this module's (question 5). Spec: none yet; the watch's reports are the seat-state spec's. Proof: none at the tag. Today (v0.5.0). The watch reports the causes and ties none to a question. Its attention check names a permission prompt, a vendor notice and an unrecognised blocked screen to the owner, and a question on the screen or an unknown status to the operator (src/watch/checks/attention.ts); its idle check tells the operator at the lead's window, repeatable, and the owner once at the owner's; its unsent check names unsent text to the operator, and its provider-error check a connection lost or a rate limit once to each (Runtime commitment 20). team answer <seat> trust presses the one recorded key of a folder-trust dialog and nothing else (src/commands/answer.ts). No command knows that a question was put to a seat, so nothing is due and nothing is found missing: every team send --wait is refused in this build, and team ask-show only prints a signed ask, its question, request id and expiry written by a guard outside the CLI. The practice has the rule in words: a time limit per round, the cause recorded, one retry, then a replacement from the same lab or another, named in the record and reading the whole (the owner's rules of 2026-10-07; the Charter: asked again, then replaced); a reviewer whose lab's window ran out was replaced by hand in the rounds of 2026-10-10 and 2026-10-11.

  4. There is a floor. The rule MAY name the least that makes a decision valid, how many voices from how many labs; below it there is no decision, however many said yes; where one lab is all there is, the decision MUST say it was one lab's. Spec: none. Proof: none at the tag. Today (v0.5.0). No floor exists in the tool. The series' floor is three reviewers from three labs, none the author's, or the round is void (the Charter's Part 3; the review process); Board leaves the number to a review-terms page, and the tool's review-terms name exists with no reader.

C. When voices do not agree

  1. Review in rounds is one means, and it has an end. When voices disagree, what each raised MUST be decided point by point by the decider with the reason written; the thing is changed; it is asked again. A point once decided is reopened only if the new state contradicts itself or the decision. Rounds MUST end: when a round raises no new point, or when the same point has come back a number of times the owner sets, the decider decides it and the disagreement stays on record with the voice that held it. The decider is whoever holds the right to that decision (Kernel §3); where another module says who may not (the lab a work came from never closes a finding against it, 005 commitment 6), that holds here. Spec: Specs-rfc-process-files §3 (the round's files). Proof: none at the tag; the series' rounds keep it by practice. Today (v0.5.0). Nothing of it exists in the tool. The Charter stops a point after three returns and sends it to the board; the owner stops two seats after three exchanges and takes it himself (an owner decision); the series' rounds are a practice of files and a brief, the changes between rounds listed in the next brief (the review process).

  2. A voice can be lent, within limits, and the record says so. Whoever holds a voice of their own in a decision MAY lend it to another for named decisions; a voice held by lending MUST NOT be lent on; it MUST NOT be lent to whoever produced the thing decided, nor to their lab, and the tool refuses that; the record MUST say whose voice it was, who cast it, and for what; a lent voice is never an independent one and does not count toward commitment 3's number; lending a voice lends nothing else, no power passes with it (Kernel §9: a capability moves by grant or lease, not with a vote). Spec: none. Proof: none at the tag. Today (v0.5.0). No vote exists in the tool, so none is lent. The Charter says a vote is not lent to whoever drafted the text, after the founder had lent his to the drafting agent for the first six texts and gave his own vote the same day (the headers of RFC 003 and RFC 004; the Charter's Part 3).

  3. Every decision keeps its trace. The trace MUST say: by which means, set by whom and when; what it rested on, in full as commitment 4 names it; who was asked and when; who answered what on which state; which points were raised, how each was decided and by whom; who was replaced and why; who did not agree at the end. You can read it, and a later reader can tell an agreement of five independent readings from one voice counted twice. For a gated act, the trace is the Kernel's review and gate records (§15); for everything else this module says the fields and the Runtime keeps the record (commitment 26). Spec: Specs-rfc-process-files §3 (the decision records). Proof: none at the tag. Today (v0.5.0). The tool keeps no decision's trace beyond its log: one cleaned line per change in the team log, when, which command, by whom, what (Runtime commitment 26). The approval record of an earlier version, where a team still has one, keeps its format, when it was given, the root, the file's fingerprints, the ceilings, its checks, overrides and submitting actor where there were any, the stored copy of the file, a generation and the machine key's signature (src/store/store.ts); 0.5.0 writes no new one for a file that never had one. The series keeps its trace in files: the brief, review-<seat>-r<N>.md with its frozen-at, reviewer and verdict, the round record for the rulings, the acceptance record for the vote (the review process); the owner's decisions in one log cited by id, revoked by status and never deleted.

D. Where the module ends

  1. The board's own rules are a project's advised policies, not the module. How TeamCLI's own board decides (its members, the reviewer count and labs, unanimity, the deadlock ruling) is written in the Charter's Part 3 and proposed in Board and Review-terms, a first draft with four open questions; this module generalises it for any team and MUST NOT replace any of it. In the catalogue's form they are board and review-terms, advised, at the project level, set by the owner, read by the RFC process and by nobody's gate (the Kernel checks labs alone, §5). Spec: none; the names go to the policy-names registry. Proof: none at the tag. Today (v0.5.0). The Charter's rule is in force for the series; Board is a proposal with eleven open questions; Review terms is a first draft (draft-2), in review, not yet accepted; the two names are in the tool's advised vocabulary as strings with no reader (src/policy/types.ts, ADVISED_POLICY_NAMES).

E. Settings

  1. All of it is yours to set. Which decisions ask more than one voice, how many, from how many labs, by when, how many rounds, who decides when they do not agree — each MUST be settable in the catalogue's form (the Kernel's Policies section), inheriting entity, project, team, tightening only (more voices, more labs, fewer returns before the stop, a nearer due time). The settings this module names — the rule by kind, the floor's two numbers, the answer window, the returns of one point before the decider decides, who is escalated to, and whether a voice may be lent — are the policy-names registry's planned consensus block, with their allowed values and the draft's proposed defaults there. Five things hold whatever is set: silence is never agreement; the producing lab does not count; a voice is not lent to the producer; no means takes less than another text requires; the record says who really decided. The second is the Kernel's (§5); the four others are this module's words. Spec: Specs-registries-policy-names § Consensus settings (planned). Proof: none at the tag. Today (v0.5.0). None exists. review-lab is a planned policy row (Specs-registries-policy-names), proposed by 005 Quality (commitment 12; quality-gates.md §6) and cited by 010, its single home an open point of 005's spec (quality-gates.md §7 open point 5); not in the code at v0.5.0. The two advised names of commitment 10 are strings.

3. Why

  • Agreement that was one opinion. A fault in how the tool stops an agent was read five times by one lab's agent and passed each time; an agent from a second lab found it on its first reading (RFC 006 §3). Commitment 3's counting by lab is that night.
  • A run that ended the argument. Three rounds of reading and several thousand tests passed a release; one run of the real thing on a small team found two faults within minutes. Commitment 2.
  • A yes on a state that moved. A reviewer stood behind a release an hour before another found a fault in it and before three more changes landed; its yes named the state it read, which is the only reason it was not mistaken for a yes on the release. Commitment 4, and frozen-at on every verdict since.
  • A voice that went silent. A reviewer's lab reached its limit mid-reading, twice in one evening; the second time the rule existed, the cause was written, another lab read the whole, and the record says which lab did not read the final state. Commitment 5.
  • One member, two voices. The six texts before RFC 006 were first accepted by a board of two after the founder lent his vote to the agent that had drafted them; all three reviewers of RFC 006 said a tool should refuse exactly that. Commitment 8.
  • A reviewer reading its own lab's text. The Charter's round 4 had one; round 5 was re-run without it and with a fourth lab (an owner decision). Commitment 3, the Kernel's predicate, and the series' rule.

4. What it costs, and what it does not cover

  • Agreement between agents is weaker than it looks. They read the same words, were made in similar ways, and tend to follow a confident text. Unanimity is evidence, not proof, and no substitute for trying the thing (005).
  • Independence is hard to keep. Agents that share files, a tracker or a lead can see each other's answers without anyone meaning them to. The tool can ask each alone and record the order; until agents are contained (Kernel §14) it does not prevent one from reading another's answer. A lab is a coarse unit: two labs may build on one model, and one lab's two models may differ more than two labs' (question 1).
  • It is slow, and it costs every lab asked. Five rounds by three labs is fifteen readings; right for a text people will rely on, wrong for most of what a team decides in a day, which is why rounds are one means and not the rule.
  • A fact settles only what it measures. Choosing the means is a judgment; the rule names it before the work opens and the one whose work it is does not choose; whoever sets the rule can still set a narrow one, and the trace shows it without preventing it.
  • The decider still decides. Rounds inform; a decider who ignores three refusals is within the rule, and the record shows it.
  • A lent voice is a weaker voice, and a delegated acceptance is a delegated one: each keeps a decision moving when someone is away, and each removes exactly the second look that asking two was for.
  • It does not make anyone right. It makes a decision traceable.

What this release must not pretend

  • The live file is not an agreement. up reads the file as it is; nobody agreed to it but whoever edited it, and the log line says which command ran, not who decided.
  • The watch's report is not a missing answer. A question on a screen is reported to the operator; nothing knows a question was asked of that seat, by whom, or when it was due.
  • A verdict file is a practice, not a record the tool reads. Its frozen-at, reviewer and verdict lines are kept by the organiser's discipline and the lint of the series, not by any gate.
  • An advised name is not a rule. board and review-terms are strings the tool lists and never reads; setting them changes nothing a command does.
  • A delegated acceptance is the owner's act carried by another. The acceptance of one amendment by the entity orchestrator (an owner decision) rests on the decision that delegates it; the record of that acceptance names the owner as signer and the orchestrator as actor (Kernel §9), or it is nothing.

5. What would change our mind

  • Decisions taken by rounds that turn out no better than one careful voice's: then rounds are ceremony and belong only where a person requires them.
  • Labs whose agents agree so often that a second lab adds nothing: then counting by lab is cost without return, and the unit becomes the model (question 1).
  • Teams that set every decision to one voice within a month: then the default is right and the rest of this text is a small option.
  • A decision harmed by a lent voice or a delegated acceptance: then lending and delegating should not exist for some kinds of decision at all.

6. What is true today

"Today" is the tag v0.5.0 of floor/teamcli (52db9b75), read clause by clause, and the files of this series' rounds as they stand on 2026-10-18.

# Commitment Today
1 Every kind of decision says how, and by which means No. The one hand-given agreement, team approve, is gone; the live file is the record; the board's rule is a text; board and review-terms are names with no reader; some acts are the owner's written word
2 A fact before an opinion; more voices only for what deserves it No. Nothing counts what a round costs
3 A voice counts only if it is independent No in the tool; yes in the practice: a verdict names seat and model, written blind; three labs, none the author's, never the authoring model
4 What is decided on does not move No in the tool: no record, no effect id; yes in the practice: frozen-at on every brief and verdict
5 Silence is never agreement No. The watch reports the causes; nothing ties a report to a question put to a seat; the practice replaces by hand
6 There is a floor No in the tool; three labs in the practice
7 Review in rounds has an end No in the tool; three returns to the board, three exchanges to the owner
8 A voice can be lent, and the record says so No. No vote exists; the Charter forbids lending to the drafter
9 Every decision keeps its trace In part. The team log and an earlier version's approval record; the series' files and the owner's log
10 The board's rules are governance, not the module As stated: the Charter in force, Board a proposal, Review terms a first draft (draft-2), in review, not yet accepted
11 The settings No

One of eleven holds in part, one is as stated, nine not at all. Consensus is a practice: a folder of files, a brief, the owner's log, and the discipline of whoever runs the round, which this series has kept for nine texts.

7. The security boundary

  • A decision confers nothing. A board's yes, a round's unanimity, a vote carried or lent: none is an authorization. The act still needs the capability or the live lease the Kernel's table names, checked at the gate (Kernel §9, §16; Board §5).
  • The author never gates its own change, and the lab predicate at the gate is owner-set (Kernel §5); this module adds the counting and takes nothing from either.
  • A verdict is talk until the Kernel records it. The review record is the only verdict a gate reads (§15); a verdict file in a folder is material, and a seat that writes one for another is caught by the signature line and the organiser's read, not prevented.
  • The owner's stop and revoke are not votes. They commit unconditionally (Kernel §9); no rule of this module waits on a round to stop a team.
  • The same-user limit. A process of the same OS user can write a verdict file, edit a brief, or sign as any seat (Kernel §14); the series' trace holds against a mistake, not an attempt, until identity keys and containment are built. The limit is the Kernel's, stated once there.

8. Where it sits, and what it leaves to others

A Tier 3 module under the Kernel and the Runtime, registering no capability (Kernel §13). It leaves to the Kernel who holds the right to decide and what a power is, the separation of duties and the lab predicate (§3, §5, §9), and the review and gate records (§15); to the Runtime the watch as the sensor and the store (commitments 20, 26); to 002 how a question reaches a voice and its answer comes back; to 003 whether what was decided becomes memory; to 004 what is measured about decisions; to 005 what a check is worth and when one is needed; to 008 the items a decision belongs to; to the Charter and governance how TeamCLI's own board decides.

9. Prior art and alternatives

The rejected design the accepted RFC 006 settled: a vote lent to the drafter — the first six texts were accepted that way, all three reviewers of RFC 006 said a tool should refuse it, and the Charter now does (commitment 8). The one-voice default is the argued alternative to rounds for most decisions: rounds are one means, not the rule (commitments 1, 7). Nothing else is argued in this text.

10. Open questions

  1. The unit of independence. RFC 006 counts by lab; the series' rule adds "never the authoring model"; the Kernel's predicate names the lab (§5); Board leaves lab against model open (its question 4). The draft: the lab is the Kernel's unit, enforced; the model is this module's second unit, advised, said beside the decision when two voices share one (commitment 3). Confirm.

  2. One stop or two. The Charter's three returns to the board and the owner's three exchanges to him are one setting, rounds-max, with escalate-to by kind (commitment 11); a round that raises no new point ends by itself. Confirm, or keep two rules.

  3. The verdict record. The Kernel's review record carries a verdict on a change. The draft proposes the same shape for a verdict on a text, a vote and a replacement (a kind, the subject's frozen state, the voice by registry id with its lab and model, the verdict, the time), as records of the store and not of the ledger unless the decision gives a power (the frozen 002 amendment 01 §10 question 6; 002-Communication commitments 17–34).

  4. A vote as an act. Casting, lending and replacing a voice are acts; agree admits an agreement (Kernel §10); a vote on a text is nobody's capability. The draft: a vote is talk recorded, never gated, and lending is a setting (vote-lending) with the one refusal of commitment 8 enforced by the tool when votes exist.

  5. The unanswered voice and the watch. The link the Runtime lacks is a message with a due time and a receipt: the asking is a team send of kind question with --wait on its thread, and the missing answer is the thread's timeout plus the seat event that explains it (002's amendment 01). Confirm that the link is 002's and not a record of this module.

  6. One text or the missing half of 005. 005 keeps the finding and its closing (commitment 6) and the review of the whole (commitment 11) and cites this module for how several voices decide; this module keeps the means, the counting, the floor, silence, the end of rounds, lending and the trace. The line holds; the round may still merge.

  7. RFC 006's open points 1 to 7 and 9: which kinds ask more than one voice by default (the draft: a text accepted and a power given, and nothing else); all or a number (a number, with "all" as a setting that ends by commitment 7); the decider among the voices (never, even when the decider knows the subject best); how many rounds; lending at all (the draft proposes values for both, kept in the registry's planned consensus block); a person among the voices (a person's silence waits, never replaced by an agent); the list of means (the seven named means of commitment 1 plus a project's own eighth).

  8. The verdict-file contract. rfc-process-files.md §3 puts a VERDICT line first in the body and keeps an older vocabulary; Review terms §3.2 puts the verdict last, and this round's briefs ask for the ending line. One placement and one vocabulary, with any accepted legacy aliases, are the format's to name and future briefs' to follow.

  9. Frozen inputs and reference texts. Commitment 4 and rfc-process-files.md §3 void a round for a changed "in-scope" file; this round's brief and keep a unit's frozen files apart from reference texts read at the same commit, so a later reference change does not void the round. Whether the commitment and the format carry that distinction is open.

  10. Three sentences to restore. Corrections 1 and 2 would add: that a means used outside the scope it is the one to make is not a decision; that the ground names what was asked, what each was given, what each answered and what each could see; and that where you are the one whose work is decided on, your own voice is not counted and the decision says so. The accepted source does not carry those sentences as quoted (commitments 1, 4 and 5), so whether to add them is this round's.

  11. The rule-change record's fields in the spec. Commitment 1 restores the source's rule-change record — who set a rule, number or floor, and when, applying only to decisions opened afterwards — while the format's decision records (rfc-process-files.md §3) carry created and decided-by but no prospective-applicability field. `` C4 (line 31) asks that the needed fields be carried into the spec; whether the format takes them is open.

12. Links to the spec

  • Specs-rfc-process-files §3: the brief, the verdict file, frozen-at, the decision records — the series' own file formats.
  • Registries this text contributes to: policy-names (board, review-terms, both advised, no reader at the tag; the seven planned consensus settings — decision-rule, voices-min, labs-min, answer-due, rounds-max, escalate-to, vote-lending — in its planned consensus block).

Clone this wiki locally