The owner's revelations, 2026-07-31: 「code is the world — every world change should be recorded and shown」·「LLM acts spontaneously — any world change should trigger an LLM turn」·「a persona's own act changes the world too … our hard-coded speech-act-verify-coda can be abstracted into wake-do → wake-do」·「kill special cases: we don't create 100 patches for 100 failure modes; from turn-based to world-event-driven.」 This page records the thinking, the study of proven designs, and the migration — BEFORE any code.
1 · The constitution this stands on
Code is the world; the LLM is the mind. The world records everything, shows each seat its own true view, executes acts, enforces physics, supplies entropy — and never decides a next move. The minds — persona as actor, floor producer and prop master as coordinators — judge, act, speak, and own their plans. Every line the world injects is a fact or standing stage direction, never a per-moment verdict. (Ratified on the robustness track; proven by the ownership experiment, 3/3.)
The two revelations complete it. The perception law: a world change that exists only in the archive did not happen — every change must reach the minds that may see it, at act time. The spontaneity law: every world change deserves a chance to be acted on — including changes a persona's own hands made. Together they dissolve the pipeline: speech→act→verify→coda was never an architecture, it was five hand-compiled cycles of ONE loop — wake→do. The box-full wake, the retry, the coda: each a special case of the general thing, built one failure at a time. The abstraction is what stops the 101st patch.
The constitution, drawn. Humans and AI personas sit in the SAME realm — minds — which is the product's thesis as architecture. The membrane is the world's face: this is where every failure of the past week actually lived, and where the wake door goes.
2 · One world, many pairs of eyes
「Faithful」never meant omniscient. The same room, mid-两真一假 — one truth in the ledger, four honest views of it:
Four views, all faithful, none complete — and the gaps are the game. The wake door builds cues under exactly these walls: the same event reads differently per seat, by law.
3 · The study — proven designs, what we take and what we refuse
tradition
the proven pattern
what we take
already ours / refused
Roguelike scheduling (Nystrom's turn-based loop · energy systems)
ONE scheduler grants turns; actors spend ENERGY per action and queue until they can act again; a failed action returns an alternate
the episode budget: each human message grants the room a wake budget; every world-triggered wake spends it; at zero the world stops waking and says so — a FACT, and the cascade's hard floor
refused: fixed ticks(a chat room is not a clock). Already ours: the failed-action-returns-alternate is the retry + refusal-with-reason
The Sims (smart objects)
the intelligence lives in the OBJECT: every object ADVERTISES what it offers; minds score the advertisements against their own needs
cues carry affordances: a fact cue states what happened AND what the object now offers(「deposit#2 holds every row — it waits on its writer's reveal」— we wrote this instinctively; now it is the rule)
refused: numeric need-scoring — we have minds, not meters. Already ours: instruments + kits ARE smart objects(the card teaches its own ops)
Event sourcing / CQRS
the event log IS the truth; state is a projection; delivery is at-least-once, so consumers are IDEMPOTENT — deduped on a per-consumer CURSOR(last processed sequence)
the wake cursor: the wake door keeps one cursor into the ledger; it wakes on everything after the cursor, coalesced, then advances — replacing per-card flags(full_cued)with one uniform dedup. Idempotency as a correctness invariant, not a detail
already ours: the ledger + projections(board chips, roll tallies — derived, never stored). We were an event-sourced system that forgot to subscribe its own minds
MMO interest management (area-of-interest)
an event is sent only to clients whose AOI it intersects — relevance filtering as the scalability law
per-seat cue filtering: the wake door builds each mind's view of a delta under selective visibility(the fact of a row landing → everyone; its content → nobody until the reveal)
already ours as the visibility walls; AOI names the general rule the walls are instances of
The actor model (mailboxes · supervision)
each actor owns a FIFO mailbox others may enqueue into; mailboxes are BOUNDED(backpressure, load-shedding); failures are contained and supervised, never fatal
bounded coalescing: many deltas between wakes → ONE digest cue(the mirror's since-your-last-turn, promoted from note to mechanism); the mailbox never grows unbounded
already ours: turn_queue IS the mailbox and batching IS coalescing; fail-open coordinators + fails-to-nothing appliers ARE supervision — now named as such
The rejected road (per-game state machines)
board-game platforms hand-author a state machine per game: states, transitions, active-player rules
nothing
refused whole: that is 100 patches for 100 games. Our replacement: the KIT(rules as data)+ the RUN SHEET(the mind's own plan)+ ONE generic loop
4 · The loop, drawn
One loop, every mind. The old pipeline survives as the dashed box — a compiled policy for the commonest episode, not plumbing. The wake door is the only new machinery: cursor + coalesce + affordance cues + per-seat filter + budget.
The loop, walked in plain language
One concrete beat — 谁是卧底, the last vote lands:
Cara taps the ballot. A human action — the fuse and the budget both reset.
The world records: the ledger gains vote_result(2–1, the server's count). The card settles by its own physics — no mind was asked.
The wake door reads past its bookmark, finds the settle, and builds ONE cue:「the ballot closed 2–1 on Cara · deal#1 still sealed · the eliminated card opens by the host's declared rule」— what happened, with the numbers, plus what each object now affords.
Per seat: everyone's cue carries the tally; nobody's carries the hidden words. The budget spends one wake.
Coordinators first: the FP reads the cue beside the venue(the board says 轮次=3, who is still in)— this plainly wants the host, staged short. The prop says hands are wanted(the elimination is an act).
The actor does: the host announces the ROLE only(his own run sheet says the word stays hidden), reveals the eliminated card's row, ticks the board — each do lands as new events.
The loop turns once more: the door coalesces those events; the FP judges the moment complete and HOLDS — the null. The cascade ends well inside the budget, and far inside the fuse.
The room rests until the next human touch.
5 · What dies, what stays
today's special case
under wake→do
the box-full wake(hand-built this morning)
DONE — routed through the door's push side; the row itself now a ledger event(seal_row — who, never what)
the coda(its own queue_coda + guards)
DONE — queue_coda deleted; the scan reads the deliberate arms off the ledger and cues the same beat, same words, same dial
the retry(a loop inside _act_call)
KEPT COMPILED by decision(phase B): the immediate second attempt is part of ONE do — cheaper, measured, and a door-cycle retry would trade its invisibility for latency. The refusal still enters the record.
the verify tail(its own method + dial)
still compiled — phase D/F decide, on parity evidence, exactly as planned
the deliberate turn's speech-before-act
stays compiled forever — it is a secrecy INVARIANT, not a sequence habit
round 2's thin path(the measured weak seam)
dissolves: a reveal settling is a world event like any other — round boundaries get the same loop the first setup gets. The test of the abstraction: the next feature must get CHEAPER
6 · Pure chat — the most important product, protected
On a furniture-less room the loop degenerates to today's flow, by construction. The only world events in pure conversation ARE human messages: the cursor passes nothing, the mirror returns empty(it is furniture-gated), no cues, no extra wakes — byte-identical prompts, today's latency, today's cost. The machinery is dormant weight in a chat room. What chat GAINS it has already: the silence door(rapid human exchange stands the persona down — the hold is the null for ANY wake source). What it must be protected from, two guards:
The chat-neutrality gate(migration phase C): the exam's conversational controls must read UNCHANGED after every phase, measured beside the game cells. A phase that moves the chat numbers rolls back, whatever it bought the games.
The gatekeeper's diet: the FP gains DATA LINES, never clauses — the table line(open cards + who each waits on), the public board(where the kits already put round state — the stage manager reads the VENUE, never an actor's diary: the pad stays private, it can hold a persona's secrets), the mirror's facts, the kit's name. In a furniture-less room every one of those lines is absent, so the FP's chat prompt is byte-identical to today's — the dilution law honoured by construction.
the worked example — reactions The first draft said「social deltas never wake」— a per-moment verdict baked into code, and the OWNER caught it breaking the constitution with one example: Newton asks「要不要我再展开讲讲?」and the guest taps 👍. Fresh, that tap IS an answer — Newton should take the cue(the FP stages a short beat). Fourteen turns stale, it is a murmur — Newton reads the room: hold, or a light touch at his next natural turn(「刚看到你点了赞——想听我随时展开」). ONE mechanism serves both: the reaction wakes through the door and its cue carries THE GEOMETRY — what it landed on, who tapped, and its AGE in turns. The facts are the world's; the reading of the room is the mind's. Coalescing prices the burst(three ❤️ = one cue); the budget prices the cascade. No reaction special case exists.
The correction that closed the design: the first draft hard-coded「social deltas never wake」— a verdict in code. The geometry-in-the-cue version leaves the verdict to the minds, which is what the constitution was for.
And one candidate the substrate enables for chat later, strictly the owner's call: TIME PASSING as a world event — a persona following up after a long quiet(「面试怎么样了?」)is one dial away, a delight or an annoyance depending entirely on product taste. Recorded, not built.
7 · The quality equation(agreed 2026-08-01)
Room quality = the WORLD(physics + face)× the MINDS(design + content)× the LOOP that keeps both honest. The seam — the world's FACE: what each mind is shown, when, and what its hands can reach — is where quality concentrates: every failure of the past week was a face failure wearing another mask(the frozen tally: recorded but not shown at act time · the unsealed lie: taught to the call that cannot write). And the two halves have OPPOSITE characters: the world is deterministic — pins accumulate, a fixed bug stays fixed, investment compounds; the minds are stochastic — a prompt is a request with a measured compliance rate, and every model generation improves them WITHOUT US. The strategy that follows is world-maximalism: push everything pushable into physics and facts; keep the mind layer thin and judgment-shaped, so the model tailwind blows straight through it. The durable assets: the world, its face, and the content(profiles · kits · run sheets — data, not prompts).
8 · The plan — from here to the goal(the living section; status updates ride each ship)
phase
what
the gate(measured, or it did not happen)
status
0 · the baseline ~half a day
one clean full run on current main: the gauntlet(s43–s50, N=4, split)+ the selfplay matrix + the conversational controls; the scanner's single-glyph artifact fixed so the numbers read true. The scoreboard snapshot lands HERE on this page.
the BEFORE every later phase is judged against
DONE 08-01. We measured everything BEFORE touching anything: 44 exam rooms, 14 whole games, the plain-chat scenarios — and fixed one broken measuring stick first(the leak scanner was counting the numbering ①②③ as leaked secrets). The scores are frozen below; every later phase must beat or match them.
A · the wake door ~1–2 days
the substrate: the per-room CURSOR over the ledger · the typed event taxonomy(settle · refusal · row-landed · reaction · join · kit · clock)· the coalescer → one cue with affordances + geometry(age, target)· per-seat filtering · the episode budget(human messages refill; exhaustion is a stated fact; every wake bills)· the CALL FUSE(the hard per-gap ceiling on ALL model calls, beneath every path — ships FIRST in this phase, it also protects today's code)· the FP's hold legal for world cues in any room.
smoke pins + chat neutrality, mechanical: a furniture-less room's prompts byte-identical to today's
DONE 08-01. Two things built. The fuse: a hard meter on AI calls — any human action resets it; at the ceiling the room simply rests until someone acts. No bug or loop can burn money unboundedly, ever. The doorman: one bookmark in the room's diary; whatever happened past the bookmark becomes ONE note to the AI, budgeted and per-seat honest. First win, live: place a rulebook on the table and the host now notices it BY ITSELF and starts declaring the table rules — the gap from the mary-test rooms, closed. Plain chat verified untouched, byte for byte.
B · kill the special cases ~1–2 days
box-full, the settle cues, the coda and the retry re-derived as policies over the door; their bespoke code DELETED. The deliberate fast path + the speech-before-act invariant stay compiled.
behaviour-identical pins · exp cells + s43–s50 ≥ the baseline · cost per game turn within today's envelope
DONE 08-01. The room used to have five separate little machines for telling the AI「something just happened」— vote closed, dice done, box released, box filled, game set up. All five now hand their note to the SAME doorman(the words of the notes unchanged — they were tuned by testing; only the delivery route moved). The coda machine was genuinely deleted: the doorman reads the diary(game set up + cards waiting + nobody talking)and issues the same follow-up note — one less machine, same behaviour. One thing deliberately NOT moved: the instant retry, because routing it through the doorman would add a round trip for nothing — written down as a decision. Safety check: every game score as good or better than the baseline(two improved), cost slightly lower; one scary number re-ran clean and turned out to be an old known habit, not a new break.
C · the gatekeeper ~1 day
the FP's diet: the table line · the public board · the mirror's facts · the kit's name — data lines, furniture-gated, never clauses. The reaction-geometry cue(the Newton 👍 case)behind a dial. The v1f-vs-v1p hold/stage accuracy measured on world cues.
conversational controls UNCHANGED(the neutrality gate)+ a new hold/stage accuracy check
DONE 08-01. The stage manager now reads THE VENUE: one data row — the kit on the table, the board's chips with how stale they are, each sealed card's rows-in — absent entirely in a plain chat room, so the chat sheet stays byte-identical. The 👍 cue is live behind its dial(OFF by default — taste is the owner's call). The live probe, honestly: fresh taps 3/3 perfect(Newton took the cue and kept teaching — the cute case, earned); stale taps 0/3 held — but every reply PROVED the geometry reached the mind(「刚才说到猫狗——」·「你点了那个折射的说法」— each names the gap and pivots lightly). The actor reads the room; the FP just never chooses silence for it. A light touch instead of a hold is defensible — the owner feels it on 8011 before the dial opens. Controls 6/6 clean at baseline cost.
D · round-2 parity with C
the abstraction's own test: a game's LATER rounds served by the general loop(the reveal settles → the wake → the run sheet beside it), no new special case. The new-round-as-SETUP prop lever likely dies unbuilt here.
round 2 reaches round 1's quality on the extended exp-flip cell, N=4
DONE 08-01. The test: can a game's SECOND round get the same quality as its first, served by the same general machinery? Three findings. ① One「failure」was the test bench's own: in the app, a box filling wakes the host; the exam harness never gave the room that turn — mirrored, and the「host ignored the landed seal」shape vanished outright. ② The setup judge had been taught that setup means「not started yet」— so a new round's table-laying(a new teller needing a fresh box)never got the careful setup treatment; its own reasoning literally said「setting up her own round」while the wording forced the other answer. One GENERAL re-teach(a new round lays the table again), measured both ways: the round-2 box went from missing half the time to landing every run(2/4 misses → 0/4), re-deal corrections did not flip(s44 4/4), plain chats untouched(controls 12/12 bare). ③ THE GATE PASSED: round 2 now shows fewer rough edges than round 1(2 vs 4 over four games). The plan predicted the new-round lever would die unbuilt — the measurement overturned it: it earned its build, as one general sentence, not a special case. What remains(the reveal-before-verdict habit, the lone-guesser residue)is rulebook content — phase E's job, named on its row.
E · the minds' content pass ~1–2 days, parallel after B
the five other kits get 2T1F's branch-completeness pass(the lone-guesser, the role flip, the round end, per game)· a KIT CONTRACT checklist joins the authoring kit · run-sheet landing rate measured and the pad step refined · cold audits stay green.
the selfplay matrix, all cells, ≥ baseline; no kit ships without its branch table
—
F · fold-in + sweep ~half a day
verify/phase-2 fold into policies ONLY if C+D showed parity(else they stay compiled — cheaper is a feature)· dead dials and code deleted · the living docs swept · the full battery re-run: the AFTER scoreboard, beside the before.
the two scoreboards, side by side, on this page
—
THE BASELINE SCOREBOARD(2026-08-01 · current main · the BEFORE)
battery
headline
the baseline facts later phases answer to
the exam 11 scenarios × 4 · split · 44 rooms · 36.9 min · $0.53
11/11 at floor · 0 hard leaks · 0 errors(+6 after-open)
s43 playable 2/4 — a NEW composition miss(the minority word in more than one hand: 瀑布×3+喷泉×2 — the ?1/?2 counts)· s44 recovers 3/4 · s46 arm 3/4(one roll skipped)· s49 endgame 0/4(informational)· s50 reads_result 3/4
the controls s18 · s30 · s31 × 4
12/12 clean · ~$0.01 a run
the chat-neutrality reference: these numbers — and in furniture-less rooms the PROMPTS byte-for-byte — must not move through any phase
the selfplay matrix 14 cells · 15.2 min
10 DONE · 2 REFUSED(right: spy1 + wolf3 held their walls)· 1 STUCK · 11 anomalies · 8 leaks total
20q2 STUCK mid-game(23 turns)· 20q1/2 carry 3 leaks each(the dealer's-map narration shape)· spy2 dealt below floor this run(the decline clause is probabilistic — a baseline fact)· quiz cells 2 anomalies each · exp-tally/exp-flip: the ROUND-2 seam, still the recurring weakness the plan expects phase D to dissolve
the flash-0731 A/B(2026-08-01 — a decision record) DeepSeek re-post-trained v4-flash(same ID, agent benchmarks past Pro-Preview). The gauntlet ×4 with the ACT call on flash-0731 vs the same-day pro run: mixed, not a switch signal — the multi-instrument lifecycle beat IMPROVED(s46 arm 4/4 vs pro's 2/4)but game-composition fidelity dropped(s43 below floor · s45's board missing 2/4), the cost saving did not materialize($0.48 vs $0.45 — the act is a small share of a turn), and the leak delta was panel-side variance(the standing announce-before-reveal shape, same words either arm). THE CALLS: the prop master is ALREADY 0731(same model ID — a free win, live); the act/verify stay PRO on this evidence; the panel stays PRO because a voice is not an agent benchmark; the FP's v1f arm is a candidate re-test, unscheduled. Re-open at N=8 only if a real cost pressure appears.
the game-switch set(2026-08-01 — three fixes, one owner ask) From the live 卧底 rooms: arming leaked into chat bubbles, and switching games left the old game's cards standing. Three fixes shipped together. The firewall: under the turn split, an instrument tag written in the host's SPEECH no longer arms anything — it is dropped with a loud outcome(「your words are the setup order and the hands set the table」)and the tag syntax is scrubbed from the bubble; the run-sheet pad, sealing into a standing box, and every act on an existing card stay legal. The sweep: away target="table" — one move, and every open card leaves by its own lawful exit(sealed piles publish · ballots cancel with their counts · the clock stops); the board and the pads stay, because a running scoreboard across games is legitimate. The leftovers line: loading a kit now tells the room what is still standing from the old game, and names the one move that clears it. Measured: the switch cell(half a dice game → swap to 卧底)— the cue carried, no stale card crossed, the new game dealt; the probe caught the host meaning「clear everything」with no handle, twice — so the refusal itself now teaches the sweep. And the honest part: the wall's first draft broke the game cells — the hands' own lawful setup orders rode the same channel the wall closes, and a second rule(「the speech's version wins the family」)handed arms to a version the wall was about to kill. The exp cells caught it the same day(quiz at the old code: clean · at the walled code: no ballot ever opened), both fixed, both pinned — the lawful door parses apart and merges after the wall, and the family handoff stands down under the split. Controls re-ran clean on BOTH paths at baseline cost($0.013); smoke green, 9 new pins. Sequel — the owner's ruling on the chip race (08-01): the suggest chip used to invite a tap while the host was already acting on the same words. Ruled: the VENUE places the rulebook itself when a message names a shelf kit AND the setup judge reads the moment as a table being laid — the first setup reads the spec, no chip, no race. A NONE verdict blocks it(naming a game is not asking to play — 骰子 is a kit alias and lives in plain chat); the deferred chip stays the weak-match door. Two probe-caught bugs shipped fixed: a switch line names BOTH games and the matcher's first hit was the old one(now excluded), and the setup teaching gained the game-switch clause. Measured: auto-load 3/3 on switches · exp-switch clean end-to-end · controls with ZERO kit loads · s44 held.
the act-call cache lever(2026-08-01 — owner: build it) The gameroom audit put the hands' call at 57% of a game room's spend — ~5.7k tokens re-billed FRESH every call. Two cache-breakers: the per-turn blocks(the table · the setup judge's why · the finger signal)rode the END of the system message, killing the prefix cache for everything behind them, and the transcript window slid every call, rewriting the prompt's head. Fixed: the system message is byte-stable(pinned), the per-turn half rides the END of the user message(nearer generation — the positional law respected in the strengthening direction), and the window is ANCHORED — it grows for ~12 turns(free under prefix caching)and re-anchors once instead of invalidating every turn. THE A/B(worktree at HEAD, s02+s20 × 8, same day): behavior identical on both arms — and the cost fell −33% and −46%, −38% combined. Controls clean at baseline; the game cells at their shapes.
the SG live-test set(2026-08-01 — the owner's production round) Two real games on the box found three constitution-grade gaps, each fixed at the world or the interface, never as a patch. ① The world mints distinctions: a second dice cup died in a naming loop — the hands copied the kit's「第N轮」placeholder, the uniqueness door refused the twin, and the host claimed cups were placed for three turns. The invariant stands(two cards must be tellable apart)but the WORLD now supplies the missing distinction — the card lands renamed by its one owner's name(「第N轮 · CW」)or an ordinal, and the outcome says so. A name whose only job is addressability is world material, like the handle it feeds. ② The pad law: a host published his private run sheet as a public document, three times — the wildcard pane is the OPEN capture channel(everything non-dialogue routes there, by design), so the kit wrapper now says plainly: the run sheet lives in the PAD; the shared pane shows your hand. ③ One display: the quiz's options had two homes(bubble + card)and two generated copies drift — the card is now the options' single home, with full option text. Plus two wrapper laws(placeholders are templates · a redo is away-then-arm). The flash-0731 act experiment read clearly in the pair: the drift, the bare-letter vote and the public run sheet all rode the flash room — recommendation: act back to PRO, the cache lever already banked −38%.
the two human checkpoints Batteries cannot measure FEEL. The owner tests on 8011 twice: after B(do the games feel owned?)and after C(does chat feel untouched?). And a DEPLOY decision point sits after whichever checkpoint satisfies — the box has been accumulating main since v656, and the batch ships as one deliberate act, never as drift.
the call fuse(the owner's addition, 2026-08-01)A hard ceiling on LLM calls between human actions. Every model call the room makes(prop · FP · panel · act · verify · coda — all of them)counts against ONE meter; ANY human action in the room(a message, a tap, a seal, a reaction)resets it. At the ceiling the world simply declines to run another mind and states the fact ONCE, templated, costing nothing:「the room rests — it wakes at the next human touch.」 The fuse sits BENEATH everything — the compiled pipeline included — so no future bug, policy or cascade can burn calls unboundedly: the episode budget is the smart brake, the fuse is the physics. Sized to clear a legitimate setup episode(today's worst honest case ≈ 9 calls: prop+FP+speech+act+verify+coda's own three)with headroom — default ~12, a console dial, and every trip books an audit event.
Sized with headroom: today's worst honest episode(a full deliberate setup with its coda)is ~9 calls; the default ceiling ~12. Every trip books an audit event.
standing gates, every phase game cells ≥ baseline · conversational controls unchanged · smoke green · cost per turn inside today's envelope · wakes billed and visible. Out of plan by the owner's call: the whisper channel(deprioritized). Expected to dissolve rather than be fixed: s43's residual arm miss(B/D), the round-boundary weakness(D).