Dialogue · Design notes · DECIDE — the response gate
← Design notes

How DECIDE works

Archived — A design-log for a “response gate” built on the now-frozen exp-010 study; the shipped room uses the confer-then-speak megaprompt instead, so this gate was never built as described. Kept for provenance; no longer maintained.

In a room with the panel and one or more humans, a message to the panel gets every character — but they can't all say the same thing at length, or that's chorus, talking over the people. DECIDE is the cheap pass that runs after each (debounced) human message and sets the shape of the reply: who leads, who adds a distinct point, and who answers in a single line. The restraint is in length, not in whether anyone replies — the only silence is for talk that isn't the panel's.

For every character, after a human message: what do I have to add, right now? A fresh point earns a full answer; mere agreement earns a single line. Everyone in the room replies, in relevance order — the gate sizes and orders the voices, it doesn't silence them. The one exception: a human-to-human aside, where the whole panel stays out.
product explainerWorking cast: Li + Doronin, with several humans sharing the room. DECIDE is a multi-human mechanic — the gate only has real work to do when more than one person can take the floor. exp-010 is the reduced first step — 1 human + Li + Doronin — where everything below applies unchanged, except the human-to-human aside, which simply can't arise with a single human. That one case is tagged needs ≥2 humans.

The gate — what each voice does

addressed? @mentioned or asked by name → that one answers; the rest hold — a direct question, confer skipped
aside? human-to-human, not the panel's → the whole panel holds — the only true silence
otherwise aimed at the panel → everyone answers, in relevance order: the most-implicated leads, a distinct point adds, pure agreement concurs in one line. nobody just holds — chorus is trimmed by length, not silence

In the megaprompt engine this isn't a separate model — it's the one model, run either as a cheap pre-pass or folded into the generation: “order the voices and size each one — a full point, or a single line.”

Worked example

Room — humans: You · Mara · Tom  |  hosts: Li (investor) · Doronin (developer).  exp-010 reduces this to 1 human + the two hosts
Mara“So which of the two would actually appreciate the most?”
decide
Lileadmost-implicated; a clear, prudent view
Doroninadddisagrees — bets on scarcity → a distinct point
Li leads, Doronin counters — two replies, real disagreement, no chorus
Tom“Mara, weren't you about to buy last year?”
Mara“Yeah. Chickened out.”
decide
Liholda human aside — not addressed, nothing to add
Doroninholdtheir exchange, not the panel's
— nobody speaks · the floor stays with the humans  can't occur in exp-010 (one human)
You“I'm leaning toward the safe, liquid one. Anyone disagree?”
decide
Lileadhis native turf → backs it with the full case
Doroninconcurwould only concede here → one short line, not silence
Li leads, Doronin concurs in a line — two replies, neither chorus
Tom“@Li you've gone quiet — your call?”
decide · short-circuited
Lianswer@addressed → answers directly, confer skipped
Doroninholdnot addressed
Li answers directly · no group confer
Doronin…just replied. Li just replied. No new human message.
decide
DECIDE doesn't run. Only a human message re-opens it — AI lines never trigger themselves, so the panel can't spiral into talking to itself. A beat-cap also limits consecutive AI turns.
— floor returns to the humans · quiet until someone types —

The three guards that keep it bounded

@-address overrideAn explicit @Name pins the reply to that one character — the rest stay out. The user's way to single out a voice instead of hearing the whole panel.
human-only re-triggerDECIDE fires on human messages only. An AI reply never re-opens it, so characters can't loop into an endless back-and-forth.
beat-capEven within one decision, consecutive AI turns are capped — after a short volley the floor returns to the humans no matter what.

The hard case: a reply that isn't coming

This is the case that settled the rule. An earlier design let DECIDE answer "no one" — but from the human's chair a deliberate hold and a broken app look identical: a blank screen. Silence couldn't tell you which kind it was. The same nothing could mean four different things:

aside the panel's staying out of human-to-human talk — by design → but reads as "they ignored me"
consensus everyone agrees; there's nothing additive left to add → also reads as "they ignored me"
misjudged the gate held, but it really should have spoken → reads as "it's broken"
lag a reply is coming — it just hasn't rendered yet → reads as "it's broken"

The sharpest was consensus: the old gate hunted for what's additive, so when the only honest answer was "yes, we agree," it suppressed everyone — and a real question came back as a void. Three ways to close the gap were on the table, all on the same input — and this time nobody actually disagrees:

You"I'm leaning riverfront. Anyone actually disagree?"
AGuarantee a reply adopted

A direct question from whoever holds the floor makes "everyone holds" an illegal outcome. The single most-implicated character must say something — and "nothing to add — your call" is a complete, valid reply. Messages that aren't directed questions (true asides) still go silent, but show a quiet marker with a one-tap re-ask.

you seeDoronin → "No argument here — the moat point still stands. Your call."

Feels like: you never ask a question into a void.

cost · the gate has to judge "is this a direct question?", and will sometimes force a thin reply you didn't need. Belt-and-suspenders.
BLegible silence only asides only

Never force anyone to speak — silence stays fully honest. But it's never a blank: a held turn always renders a faint "no one jumped in — the floor's yours" line plus an ask anyway / @someone button. Want a reply? Tap, and the gate re-runs with the bar lowered (or you @-address).

you see— no one disagreed · the floor's yours —
  [ ask anyway ]  [ @ someone ]

Feels like: the room never fakes engagement — it just hands you the lever.

cost · a question can still come back empty until you tap — one extra step on you. Purest to "silence is honest."
CMinimal acknowledgment for length

When the only honest reply is agreement — the consensus case — let a character surface a single short line instead of nothing. No confer, no volley, hard-capped at one line.

you seeDoronin → "The panel's with you on that."

Feels like: the most normal chat — agreement reads as agreement.

cost · reintroduces a sliver of the chorus DECIDE exists to kill. One line today; two tomorrow.
✓ lockedEveryone answers, sized to substance. A message aimed at the panel gets every voice in the room: the most-implicated leads with the full case, anyone with a distinct point adds it, and a character who would only agree says so in one short line — a nod, never silence (A's guarantee + C's brevity, now applied to every character, not just the floor). The gate sizes and orders the voices; it doesn't pick who's allowed to speak. The only true silence is a real human-to-human aside (B's marker) — and a one-human chat has none.

The thing to hold onto: silence is for human asides only — never for chorus, never for fading. Everyone answers a message meant for the panel; the gate sizes the voices (a full point, or a one-line nod) and orders them, and only steps aside for talk that isn't theirs. Trim the length of the redundant, never the presence of the important.

lead / add a full answer concur agrees in one line hold silent — asides only dot = the character's colour