Let the room decide things together
Questionnaires, answered collaboratively in a pane beside the plan. Everyone present edits one shared draft rather than a copy each, because the result is a single decision: free text is a CRDT string, so two people typing merge instead of overwriting, and whoever submits it is recorded as having decided. The server owns the draft and is the only thing that may write to it. A patch is applied to a clone and read back against the definition before it is kept, so a client cannot introduce a shape the definition does not describe whatever it sends. That rule lives in the domain package, next to the definition it enforces; what the server decides is who may ask, not what is acceptable. Resolution is two-phase because it has two halves. The record owns the answer and the plan shows it, and until both have happened neither the waiting asker nor any client may be told the decision is final. A failed document write rolls the claim back and leaves the questionnaire open, which is a state everything already renders. The record is authoritative and lives beside the plan rather than in it, so rewriting the prose around a decision cannot change the decision. What appears in the MDX is a projection, kept so the source reads correctly on its own. Questions are answered only in the decisions pane. A form inline in the prose competes with the prose, and a decision is worth keeping visible after it has been made. A dev injector asks a sample questionnaire when DEV_QUESTIONS is set. It mints identity and asks through the same path the agent's tool will, so what it exercises is the real one rather than a rehearsal of it.
Parentd36845a
36 files changed+3706-155
StackedSplit