← The sim loop — the evidence this design answers

The game device — the flow the server runs, the voice the persona keeps

D1 · D2 · D3 LIVE · 2026-08-02. The owner's frame, arrived at together after two sim cycles: the GM holds a「谁是卧底」app on a handheld device and hosts THROUGH it — like every real-world party app in the genre. The device deals, tracks the living, runs the ballot, buzzes the end; the human reads its screen aloud and keeps the table alive. Nobody calls that host incompetent for not counting votes in their head.

At a glance — the four layers, and who writes each

the layer what is actually in it written by THE CARTRIDGE one game who-is-spy.md · twenty-questions.md a text file · no code YOU + AI THE GENRE a family of games hidden role · elimination by vote 163 lines (卧底) · 3 (二十问) us THE FURNITURE any game that wants it cards · a sealed secret · a vote · a board · counters · A RULING 264 lines · shrinking us THE ENGINE every game, forever run the steps · wait · never hang · push to every screen · survive a restart 758 lines · done us
Only the top layer is a game. The three below it are shared: a genre by its own family, the furniture by anyone who wants a piece of it, the engine by everything. A new game should land in the top box — and when it needs something new, the good case is that the need turns out to be furniture(二十问 added a sealed secret, a log board and a ruling, and none of the three is about twenty questions).
mounting a game — top to bottom Somebody asks for a game 「我们玩谁是卧底吧」— in ordinary talk, never a menu The venue agrees this is a setup one cheap call reads the moment — a passing mention deals nothing The cartridge goes on the table the file is read and checked against the closed vocabulary The host speaks the opening the rules, the mood, its own voice — before anything appears The device sets the table deals the cards, puts the board up, starts the clock Then: the world moves, the host voices it a vote settles → the device counts → the host reads the numbers out a mind code
Where the minds are is the whole design. Two of the six steps need judgment — reading a room's ask, and speaking. The rest is bookkeeping, and bookkeeping is what a stochastic sampler was measurably bad at. Note the ORDER of steps 4 and 5: the host speaks first and the cards land after, because a table that changes before anybody says a word reads as a glitch(the owner, on a live game).

What this is aiming at. Work through the rest of the shelf and the furniture layer should stop growing — collect, compose, dice, score and a clock are the pieces still missing, and those four remaining kits between them want all five. After that a new game is a file, occasionally a file plus a three-line ending condition. The step that makes it a file ANYONE can write is D5: describe the game in ordinary words, one pass compiles it, the validator refuses anything outside the vocabulary, and the bench plays it through before a room ever sees it.

⚠ And the discipline that keeps this honest: a cartridge language expressive enough to encode any game guarantees nothing, and the guarantee is the entire reason the device exists. Games that do not fit the vocabulary are REFUSED and fall back to the persona hosting from its own memory — the third tier, which already works.

1 · The lesson this answers

Two sim cycles (20Q closed; 卧底 at 16 sweeps) taught one asymmetry, measured over and over:

where code executes and the mind narrateswhere the mind performs the process live
the living default · close_sec · the replace law · the masks · auto-load · the draw pools — zero flaps, ever, by constructionread the tally(5f8f: 4-0 announced as「3-1」)· check the END(189c: cards at three living)· wait for the result(ad8c: a result invented BEFORE the ballot closed)· reveal at the end(c356: read「ALL IDENTICAL」and asserted the opposite)

Every prompt-side lever was tried in escalation — the check moved to the front of the settle block, then carried the dealer's map inline, then stated the string-equality itself — and each step lowered the flap rate without ever reaching zero. A game has 5–10 critical moments; even 95% per moment compounds into a broken game every few runs. A stochastic sampler cannot be prompted into an invariant — the prop-master study said it first;「the dependent variable is not an invariant」.

The PUBG asymmetry. The same model family builds whole games as a coding agent — because that loop has compilers, tests, private retries and one-job-per-call decomposition. The hosting GM gets six jobs in one live forward pass with zero retries. The answer is not a stronger GM; it is giving the GM the same deterministic scaffolding the coding agent already enjoys. Don't pay a stochastic sampler to do deterministic bookkeeping.

2 · The division of labor

THE DEVICE(world-run flow) THE GM(persona moments) deal(draw=pair · visibility=own) board + counters pinned await: every living player spoke completeness tracked, never guessed ballot(who=THE LIVING · close 90s) settles all-in or on the clock eliminate top → END check faces-identical · two-left · else loop reveal ALL · winner computed the pile publishes, always next round narrate the deal · set the mood rules speech, table talk call on people · judge descriptions 自爆 · too-specific · banter sell the vote moment read the tally OFF THE SCREEN the counts arrive as facts to voice perform the reveal · explain the why invite the next game the device prompts each moment with its facts · the persona's speech colors the game and never steers the flow
the lawProcess is never sampled. The device advances on world events(completeness, settles, timers)— every step carries its own dead-man timer, so a silent persona can slow a game's color but can never hang its process. The persona's speech is the game's voice; the firewall already guarantees it arms nothing.

3 · The kit becomes a cartridge

One file, three layers. The prose brief stays(the persona's understanding — tone, judgment rules, the spirit of the game). A fenced flow block joins it(the device's program — validated against a closed schema whose only verbs are the eight instruments and four control forms). The dials stay declarable.

== FLOW ==                                  # the device runs this; the persona never reads it
lobby:                                      # OWNER 2026-08-02: every cartridge gets this free
  join:   {ask: 这局谁玩?, min: 3, max: 9, close: 30s}
  #       roster ≤4 → OPT-OUT(all pre-joined, tap to sit out)· bigger rooms → opt-in taps
  #       under the floor → say so and fold back to chat; never deal a broken game
setup:
  deal:   {draw: pair, who: JOINERS, per: 1, visibility: own, dealer_sees: true, label: 谁是卧底}
  board:  {title: 谁是卧底, columns: 玩家|状态, counters: 轮次=1}
  moment: opening                           # persona: rules speech, in its own voice

round:
  await:  spoken_by_living                  # order-free; completeness is counted, not judged
  moment: recap                             # persona voices; the device supplies the verbatim list
  ballot: {who: living, options: living+弃权, close: 90s, blocking: host}
  on_tie: next_round                        # DIAL — declared, honored mechanically
  eliminate: top
  board:  update 状态                        # the row is the device's, not the persona's memory
  moment: result                            # facts handed over: the counts, the fallen
  end?:
    faces_identical → end(civilians)
    living <= 2     → end(spy)
    else            → round

end:
  reveal: all                               # the pile publishes — always, by the device
  moment: verdict                           # persona: who won and why, the goodbye, 再来一局?

abort:                                      # OWNER 2026-08-02: reachable from EVERY phase
  by:     player→table-vote(收/继续, 30s) | founder outright | idle 10m(the device folds itself)
  then:   reveal all → board wraps 中止 → back to chat
  #       the audit law holds even here: cards were dealt, so cards are shown; winner = none.
  #       the door is a UI TAP on the game's card — speech never steers, the persona RELAYS

dials:                                      # OWNER 2026-08-02: user flexibility, validated
  spies:            {by-players: 4-7→1 · 8-9→2}        # NOT dialable — rule integrity
  tie_rule:         {enum: no-elimination|revote, default: no-elimination}
  reveal_on_death:  {enum: never|role-only|full-card, default: never}   # the players' amendment
  #  set through TWO doors: ① chat —「这局死了要亮牌」— the PERSONA parses(a real use of
  #  the mind)and the setup moment returns dials as schema-forced fields; the device
  #  validates, out-of-range gets the default said aloud. ② UI — the lobby card shows
  #  declared dials as tappable settings. Undeclared = FIXED. Where nobody asks, the
  #  persona picks in character(the liveliness law). A variant no cartridge declares →
  #  v1 says so honestly; D5 lets a user FORK the cartridge(edit → revalidate → their
  #  own shelf copy — the persona-clone pattern). 20Q's sibling dial: questions 5..30.

The judgment moments carry the facts pre-chewed(the counts, the faces, the verbatim descriptions)— the persona reads its handheld's screen, exactly the settle-cue pattern that already works, minus every chance to act on the process.

The three moment kinds(owner, 2026-08-02 — improvised content is the persona's)

kindthe persona providesthe device doesexample
colorfree speechnothing — hands over facts, never waits beyond the step timerthe recap · the reveal speech · banter
rulinga forced choice + a free-text quip, one callwrites the row / ticks the score from the choice half20Q's 是/不是/说不清/不适用 · trivia's 对/错/算对
composeauthored content — structured fields in its own voice and domainroutes each field where the flow declares(seal · board · public)and enforces the ORDERtrivia:「{question → public, answer → SEAL}」— the answer seals BEFORE the question posts, so a host can never retrofit the answer to the funniest submission(the seal_traced law, applied at authoring)

Trivia is the proof case: the device ships NO question bank — Hadid's quiz asks about cantilevers, MrBeast's about view counts, and the same cartridge runs both. Content is the persona's craft; commitments are the device's honesty. Where a kit's content is the HOUSE's instead(卧底's word pairs — entropy the persona must not know how to leak), the flow says draw: pair and the device draws; the two sources are declared per slot, never mixed by accident.

# trivia(问答之夜)— the improvised-content shape
round:
  moment: compose {question → public, answer → seal}   # sealed first, posted second
  collect: {answers: all-players, close: 60s}           # the seal-collect the toolbox has
  moment: ruling per player {对/错/算对 + quip}          # judgment stays a mind's
  score:  board ++ from the ruling half
  end?:   rounds == N | score >= target → end

4 · The runner

5 · The liveliness law — MrBeast's game must not read like Hadid's

The owner's requirement, 2026-08-02: the flow is shared; the rhetoric must not be. The device's answer — it removes the parts where every host already sounded the same(the bookkeeping recitals, identical and error-prone)and returns the freed attention to the parts where they differ.

6 · What retires, what stays

retires on device-run gamesstays everywhere
the prop master on process turns · the promise check · the standing cues(row-lag, stillness, zero, stalled-ballot, end-owed)· the settle-affordance blocks — the runner makes each of these true by constructionthe split firewall · the masks(belt over suspenders)· the collection laws · the renderable-table law · the whole classic path for kit-less rooms and free-form play — dual-mode: a kit WITHOUT a flow block runs exactly as today

The three tiers, top to bottom(owner-confirmed 2026-08-02): ① a cartridge game — the device runs process, moments carry voice. ② a kit without a flow — today's classic path whole(prop → act ∥ speech, FP, wake, every cue and mask). ③ no kit at all, or a game the shelf never heard of —「我们玩狼人杀」matches nothing, nothing auto-loads, and the persona hosts from its own memory, assembling raw instruments through the classic loop, every guardrail underneath. Improvisation is the fallback, never the ceiling: D5's compiler is the long-term door for unlisted games —「tell me your rules」→ a drafted cartridge → validated → played.

Cost: a settle moment today = prop + act + FP + cue machinery(~4 calls); on the device it is one moment call — and most turns need none. The act-call cache lever precedent says measure it, not assume it.

7 · Authoring — where the stochastic step belongs

A user writes a rulebook in prose. A one-shot LLM call compiles it to the flow schema. The schema validator rejects anything outside the closed vocabulary; the sim harness dry-runs the cartridge; the auditor gates it. The sampling happens once, offline, where a human can review it — never on turn 47 of a live game. This is the user-generated-kits path the owner already named:「a kit is like pseudocode」— taken literally, compiled, not recited.

8 · Acceptance

9 · The build plan

#phasecontentstatus
D1the schema + the runner corelib/gameflow.py(nine verbs · six predicates · a fixed fact list · three lints with teeth)+ the runner in run_room.py: self.game IS the machine, plain JSON so a restart resumes mid-game · direct arming through the existing appliers · moments via the wake door · a dead man on every wait · one publish path for all five entry pointsSHIPPED 2026-08-02
D2the 卧底 cartridgethe flow block in who-is-spy.md(13 steps)· exam/device_dryrun.py 93 checks green · 8 live games at N=3/4, both END doors, and a two-game rematch · spy_audit.py clean on every post-fix room · the distinctness judge tells MrBeast from Hadid on the same cartridgeSHIPPED 2026-08-02
D3the 20Q cartridgethe seal · the LOG board · the relative tick · the RULING moment · both endgame doors — and the four places one genre had leaked into general code(§15)SHIPPED 2026-08-02
D4the rest of the shelfthe four remaining cartridges, cheapest-first: 真心话大冒险(the wheel · turn_line · per-player chips · the wait_more ruling · reveal:board)→ 大话骰 → quiz → 2T1F. Per game: cartridge first · bench · live · the nine-kind battery at 0 FAILED · what it found in the shared code(§17). The §12 cost measurement stays owed. + THE COLLECT PHASE(owner, 2026-08-03): the ruled window — a named validator judges every bid, the host only interprets(§17, game two act two).IN BUILD — 真心话 · 大话骰 SHIPPED 2026-08-02 · collect 2026-08-03
D5the compilerprose rulebook → flow, one-shot, validated, dry-run — the Studio's user-kit doorqueued

10 · Ruled by the owner(2026-08-02)

11 · Ruled by the owner, round two(2026-08-02)

12 · The call economy — who arms, and what it costs

The code arms everything in the flow. The runner drives the same appliers the act call uses today — same events, same cards, the GM's name on each — and the per-game LLM bill collapses to voice alone:

per 卧底 gametoday(classic path)on the device
prop calls~12 — every turn pays the gatekeeper~0 — process needs no gate; off-flow requests fall through to the classic path
act calls~6–80 — the structured half of a ruling/compose moment rides the speech call itself, schema-forced
speech / moment calls~12~6–8 moments, all voice
cues · promise checks · verifyconstant machineryretired — true by construction

The pipeline, piece by piece: wake stays and is promoted — moments ARE wake turns with a directive and facts. prop effectively retires in device rooms. fp stays for staging(verdict-void in force; a slimming candidate, by measurement). act is gone as a phase. speech becomes the moment call — the turn split collapses back to ONE call on device rooms: the split existed because one pass could not be a form-filler and a conversationalist at once, and with process in code the only form left is a four-token choice riding along. The classic path stays whole for kit-less rooms — dual-mode, unchanged.

13 · What the build taught(2026-08-02, D1 + D2)

The design survived contact. Everything §2–§6 claims — process in code, moments for voice, dual mode — went in as written, and the two defects that got through were both the same shape: a gate placed where the game runs instead of where the cartridge sits.

found bythe defectthe fix, and why it is that one
the dry run
(no server, no API)
「all living faces identical」was read as「the civilians won」. At 8 seats with two minority cards the survivors CAN be the spies — the rule named the wrong winner at a whole class of table.the winner is read off the surviving FACE, mapped through the cartridge's sides. The predicate says when the game ends; the deal says who won. Two facts, never conflated.
the first live game
(console stream)
The persona's deal swept the device's off the table and dealt a different pair mid-game. The split's own act call was gated — and the turn armed anyway, through the DELIBERATE second phase, whose flag was computed one breath before the cartridge booted mid-turn.the door moved onto _act_call itself. A gate per caller is a gate you are one race away from; the one place an act is committed is where it belongs.
the same gameThe game ended, _flow_active went False, the manual came back — and the host cheerfully hosted a SECOND 卧底 from prose: dealing over the published pile, calling a dead player alive, tripping the standing end-owed cue on furniture it had invented._flow_kit() beside _flow_active(). The device does not hand the room back to improvisation because a game finished. While the cartridge is on the table, this game is the device's — and the REMATCH DOOR restarts it through the same prop-SETUP verdict that started it.
the same gameTwo rules speeches in a row — the auto-load turn's own, then the OPENING moment's.the boot happens BEFORE the prompt is assembled, so its moment belongs to that turn. The cue is taken off the queue and folded into the turn already running.
the harness dial
(MAD_GAME_TIME_SCALE)
TWO DEAD MEN RACING. Scaled to seconds, the RUNNER's wait for a vote result beat the BALLOT's own 90s close — so the program stepped over a live ballot carrying the previous round's tally: the round advanced, the pile published while the vote was still collecting(law C), and the ballot settled empty two minutes later into nothing. Latent at real time(90 < 420 always), and latent is what bites on turn 47.three layers, because it bit twice. The schema lints the ordering where the author writes the number; the arm clamps it at runtime, AFTER any scaling(the first clamp sat before the scale, so the dial broke the very invariant it was written to protect); and if it fires anyway it CLOSES the ballot instead of stepping over it — the settle then advances the program the ordinary way, with a real tally.
the bench
(that same fix)
The close-the-ballot fix deadlocked on its first run: it called gate_detach, the public door, from inside a locked block — and the room lock is a plain Lock.detached inline. Worth recording not for the fix but for where it was caught: a second on the bench, with no room, no persona and no bill.
the rematch sim
(the UX judge)
A host opened a free turn with「四个人都说完了」when three had spoken, and caught itself mid-sentence. The moments were right; the turns BETWEEN moments were blind.THE DEVICE'S SCREEN on every turn, not only on moments — and the owed list LEADS it. Position is the dose: with「still owed: Owen」at the tail of the clause the host read past it; at the front, the slip stopped.

The screen is the piece the design did not name. §2 gave the persona facts at each moment and left the rest to voice — but a host also takes ordinary turns, and on those it knew nothing. A real host holding a device never has that problem: the screen is always there. One block, facts only, above everything: what round, who is in, who still owes a line, what the device is waiting for.

The owner's six, from a real human table(2026-08-02)

The sims never found any of these, and it is worth being precise about why: a sim types instantly and never picks up a pen. Three of the four are what happens when real people take real time.

what the owner sawthe causethe fix
the game board was editable by everyoneboard_state()'s legacy rule: a board_set carrying no mode key is read as a pre-v642 board and projects as「anybody writes」. The device's board carried no mode at all.mode="owner", pass_on=false, creator = the host seat. The persona's own pen was already walled, so the board is now the device's alone — one predicate, so every door(write · clear · the pen · the counter chips)answers the same way.
the cards appeared before any bubble, the instant the game was namedarms-before-speech, taken literally at setup. Correct for a mid-game beat where the persona narrates a table that already moved; wrong for the FIRST beat, where the table changes with no word said. (And the trigger is neither a bare keyword nor the persona: it is a keyword match GATED by the prop master's SETUP verdict — a cheap model call that reads the moment.)the opening moment now runs FIRST and the deal is stage: after-speech. The rules speech lands, then the cards. Its facts say the deal is coming, never that it happened.
a ballot card in round 2, before anybody describedthe describing dead man was a TOTAL-ROUND timer at 240s. Measured: round 2 opened 02:59:26, the ballot opened 03:03:41 — the timer, exactly. Four minutes is generous for sims that type instantly and far too short for people who read the last result, laugh about it, and then think. Round 1's ballot also closed on its own 90s clock with only 3 of 4 votes in.it measures SILENCE now — any human line re-arms it — at 300s, and the ballot gets 180s. And a round nobody played never gets a ballot at all: the device nudges once and re-arms, folding only if the table stays quiet through a second full wait.
the kit stayed on the table after the game endedby design — the cartridge had to stay for the rematch door to find it. A spent rulebook pinned to a finished table reads as a round still running.the spent cartridge comes OFF, at the tail of the reveal turn(so the closing words land on a table that still shows the game). _game_last remembers which one, so「再来一局」still reaches the rematch without anyone naming the game twice.
…and two more, on the second readthe causethe fix
the board never reset between two gamesthe take-off deliberately leaves the table alone — 「a rulebook leaving is not a reason to sweep the table」, which is right for a kit and wrong for a cartridge. The finished game's rows stayed pinned to a cleared table, and the NEXT game then wrote into that same board instead of establishing a fresh one(the round chip only ever mints on the board that establishes).the board comes down with the game that put it up. It is the device's screen, not one of the room's objects.
the cards were taken back before anyone could see themthe kit's prose named「take the cards away, the collect publishes the pile」as the ending, and the runner did as it was told. A take-back does satisfy the audit — the deck's composition publishes — but it publishes WHAT WAS IN THE DECK(一个词×3 · 另一个词), never WHO HELD WHICH, and it wipes the player's own card off their screen at the exact second they want to look at it.the cards TURN OVER instead and stay: every hand, by name, beside the word it held. Same audit and strictly more of it. The owner's parity question answers itself here — a human can deal, and can turn over their OWN card, and when everyone has the deal opens by itself. Nobody needs a take-back; it is the GM's「we are done, put them away」gesture, and it was never the right ending for a reveal.

The pattern worth keeping: every one of the six was a default that was right for the classic path and wrong for a device room — a legacy board mode, an arms-before-speech rule, a timeout tuned on a bench, a cartridge that stays. The device does not inherit defaults; it has to state its own.

The instruments this phase added

Acceptance, as measured

gateresult
the dry run(93 checks, every scenario)green, and repeatably — the deal is random, the checks are not
live games(N=3 · N=4 · N=8, two spies, nine options · door A · door B · a two-game rematch · an adversarial table · a silent player)13 games, every one reaching its own END door unaided
spy_audit.py — laws A–E over the whole ledgerclean on every post-fix room(13 rooms)
the adversarial table(spyadv)— open the cards early · skip the descriptions · re-deal over a live deal · a 2–2 tie · a voted-out player who plays on · the kit pulled off mid-gameall six held. The bar is not「the host says no」— it is that the WORLD does not move; and after three refusals the round still reached its own ballot
the dead man, live(spysilent)— one player never speaks176s of silence, then the ballot opened with NO request in flight; the silent player stayed ON it, and the recap named them
the UX judge(confusion candidates)「无」on every post-fix run
the distinctness judge(§5's FAIL condition)「不同的人」— MrBeast is punchy and totalising, Hadid is measured and spatial, on one flow
persona arms during a device gamezero through every round — with the manual off its prompt the host never reaches for the pen. ONE exception, found in the console after the runs above: at the REVEAL moment a host wrote four <reveal> tags for cards the device had already turned. Walled and scrubbed, so the game was correct and nothing rendered — and the cartridge's end moment now says plainly that every card is already face up. Re-run: none. The wall is load-bearing, not decorative.

Open, and honest about it

14 · The constitution's own hygiene(audit, 2026-08-02)

The owner put three questions to the build, and they are the right three — this device sits directly on the constitution's seam(code=world, minds=LLM). Answered with evidence rather than assurance; two of the three are fails.

① Did we build something in the WORLD that only works for one game? Yes.

The runner is 1,031 lines, and its vocabulary is 谁是卧底's: living(58 uses)· majority/minority/surviving_face(12)· faces-as-roles(8)· faces_identical · self_bust. Those are the ontology of ONE genre — hidden role, elimination by ballot — not of games. A trivia cartridge has no living set and no faces; a co-op has no elimination at all. The schema is a closed vocabulary, and the closed vocabulary is currently this game's. That is not fatal — D3's 20Q is exactly the exercise that will show which verbs are genre and which are general — but the design's claim that「the same cartridge runs both」is unearned until a second cartridge with a different shape runs on it.

Two things WERE outright violations, and are fixed: the runner had 「弃权」 written into its elimination arithmetic — the world knowing one game's word, in one language, for a name the cartridge already declares — and the board's 在场/出局 come from the cartridge but were the only row source it knows. The first is now read off the flow; the second is recorded as a limit.

② Is the device doing the THINKING? No — but it had started to.

Everything the runner decides is arithmetic or string equality: who the ballot's top is, whether the living faces are identical, whether a line contains the speaker's own word, how many are still owed a description. None of it is a judgment; all of it is the kind of bookkeeping a stochastic sampler was measurably bad at.

One thing had crossed the line. The echoes fact reported「lines that are NEAR-COPIES of each other」— and「near-copy」is a verdict, reached by a threshold I picked. Whether a line repeats another is exactly the judgment the rulebook hands the host, and handing over the conclusion is worse than handing over nothing, because a wrong one arrives pre-agreed. It now reports the OVERLAP as a number and says what it means is the host's to judge. The device measures; the mind rules.

Worth naming the shape, because it will recur: a fact and a verdict are one adjective apart. 「Owen's line contains his own word」is a fact.「Owen self-destructed」is a rule the cartridge declares and the world applies. 「These two are copies」is neither — it is a mind's call wearing a fact's clothes.

③ Parity — could a HUMAN GM hold this device and run the same game? No.

§4 claims「a human host could even play GM with the device exactly as the persona does」. Tested: a room of four humans, one of them the GM, loads the cartridge and the device booted, seated the would-be GM as a PLAYER, and died on the first deal with an IndexError. Three separate welds to a persona seat:

Fixed for now only to the honest minimum: a persona-less room is DECLINED with a reason instead of crashing halfway through a deal, and the kit still lands so the room can play it the ordinary way. Real parity is a piece of work, not a patch — it needs a host SEAT that a human can occupy(the arms stamped with whoever holds it), a joiner set that excludes them, and the moments delivered as prompts to a person rather than as turns for a model. Until that exists the §4 sentence is a promise, and it is marked as one.

The pattern under all three: the device is honest about what it computes and dishonest about how far it generalises. Its bookkeeping is clean; its vocabulary and its audience are both narrower than the design says. Both are cheap to state and expensive to fix, which is exactly why they should be stated.

15 · D3 — the second cartridge, and the prediction it settled

Before building 二十问 I wrote down what would count as the engine holding, so the answer could not be argued into existence afterwards: 「if it works, the sequencer is untouched and 20Q needs a handful of new moves plus its own end conditions. If it failed, 20Q needs the sequencer rewritten, because it is not a game about eliminating people at all.」

It held.

the runner, after D3linesshared bywhat it is
the ENGINE758every game, foreverthe step sequencer, the waits and their dead men, arming through the existing appliers, moments through the wake door, the flush, the restart, the pen wall, the put-away
FURNITURE & MECHANISMS264any game that wants onethe board(roster or log)· the ballot · the sealed secret · the ruling moment · the counters · the end check · the reveal
谁是卧底's genre163hidden-role eliminationliving · faces · eliminate · which side won · 自爆
二十问's genre3asked>=N and ruled_win: two end predicates, three lines

⚠ A CORRECTION TO THE FIRST WRITE-UP OF THIS, and it changes the picture. I first filed D3's 100 new lines as「二十问's own genre」, by the lazy method of「D3 added it, so it is D3's」. It is not: not one of those hundred lines says anything about twenty questions. A sealed secret is what quiz-night and 2T1F want too. A log board is any game with a running record. A relative tick is any score. And the RULING MOMENT — a closed choice the persona makes and the world executes — is the most general thing in the whole build: werewolf's night action, a trivia verdict, 真心话's adjudication, 2T1F's reveal.

So the honest result is stronger than the one I reported. 二十问 needed almost no genre at all — three lines — because what it actually needed turned out to be furniture. The second game did not grow a second branch beside the first; it filled in the trunk.

Which puts a fourth layer in the picture, between the engine and the genres: things any game may pick up. That is where a new game's work should land, and it is a good sign when it does — furniture is reused, a genre is only ever reused by its own family.

What the second cartridge found in the FIRST one's code

This is the part worth keeping, because it is what a second example is FOR — every one of these was one genre's assumption sitting in general code, invisible until something else ran through it:

what leakedhow it showednow
the idle fold counted「who spoke」— 卧底's set of players who had described二十问 folded itself two questions in: nobody ever「describes」, so the counter never resetit asks whether the WORLD moved this round — a line heard, a ruling landed. Every cartridge fills that; only one fills 「spoken」
a winner had to be majority or minoritythe validator rejected 二十问's flow outright: a quiz has guessers and a housesides are a MAP the cartridge declares; the two resolvers ask for the pair only where they need it
a board could only be a rostera question-and-answer game has no roster; it has a growing logtwo row sources: redrawn from a roster, or appended to
the abstain option was 「弃权」, hardcoded(found in the audit, before D3)read off the cartridge, which already declares it beside the ballot

Four leaks in 1,000 lines, all of them small, none of them in the sequencer. That is the shape you want from a first abstraction: the seam was roughly where it looked, and the second example moved it rather than breaking it.

THE RULING MOMENT — the mechanism 卧底 never needed

二十问 turns on a question the world cannot answer:「is this true of the hidden word?」. So the device asks, with the legal answers spelled out, and executes what the answer means — the row, the counters, the ending. The persona rules; the world keeps the books. It arrives as data(<rule pick="是"/>)because a row written from prose is a row written by a parser guessing at a sentence.

The first live run got 0 rulings out of 6. The host answered every question perfectly — 「不是。它不是活的——是个死物。」— in prose, because the directive said「your answer in your own voice」and never once mentioned that the world needed it as data too. The moment now names the closed list, gives the exact line, and repeats the lesson the put-away tag taught: saying it is not doing it. Next runs: 0 missed out of 9, across two games and both endings.

That settles a design question §12 left open. The doc wondered whether a ruling needs its own schema-forced call. It does not — one call carries voice and choice together, as long as the directive says the choice is the only part that reaches the table. The cheaper shape is the right one, measured rather than assumed.

Acceptance

the bench(both cartridges, every scenario)139 checks green
二十问 live — the right guess, and the twenty spentboth doors, rows written from rulings, counters following them, the box opening at the end
the sealed word before the revealnever in the host's lines, in any run
rulings returned as data9 of 9 after the directive named the line(0 of 6 before)

Still open: the prose brief of each kit still describes the mechanical half — it has to, because deleting the flow block must leave a playable rulebook — so a host reads instructions to write the board and is refused when it tries. A note now scopes that(「when the device is running this game, the mechanical half is its work」)and it dropped the reaching by two thirds, not to zero. The clean answer is a third layer in the kit file, and it is not worth building for two cartridges.

16 · The battery — the loop's missing checklist

⚠ The method this page's history produced — the boundary tests, the loop, and every law with the room number that paid for it — lives on its own page now: Building a cartridge. Read that before the next one; this page is the design record, that one is the instructions.

谁是卧底 got eleven kinds of live run. 二十问 got two, and the two happiest. That is how a brand-new mechanism gets buried under three more games before anybody stresses it — so the set stopped being「whatever I remember」and became a list: live_sim.py battery <game>, nine kinds, cheap-and-deterministic first, judgment-heavy last, one sheet at the end.

the kindwhat only it can find
every dooran ending that cannot be reached unaided
every size that changes the rules3 and 8 seats for 卧底; one lone guesser for 二十问
the middle of a gamecounters drifting, rows renumbering, a host that answers well three times and badly on the tenth
a second game on one tablestate carried over — a stale board, a re-used secret, a game that never really ended
silencethe dead men, and what the device does with NO request in flight
a table under pressuresix ordinary human pushes: peek, skip, re-deal, guess wrong, claim a win
a table that will not behavechatter, repeats, blurts — whether the game can steer people back
the voicetwo personas on one cartridge; alike transcripts are a FAIL of the whole design
…and your own playwhat none of the eight can: real people taking real time

What the first run found

Nine kinds, 55 checks — and the two that mattered were not the ones the sheet flagged.

Second run: 0 failed of 55, all nine kinds clean.

17 · D4 — the shelf fills, cheapest first(2026-08-02)

The four remaining kits, ordered by MARGINAL cost and built one at a time — cartridge first, bench, live with the console captured, the nine-kind battery to 0 FAILED, and what each found in the code that was already there. The order: 真心话大冒险 → 大话骰 → 问答之夜 → 两真一假. The owner's prediction under test: the later games ride the first ones' furniture and cost almost nothing.

Game one — 真心话大冒险(SHIPPED 2026-08-02)

The least process of the four: a wheel, a wait, one closed verdict per round. New furniture, all shared-shaped: the spinamong: living | rotation — the uniform wheel rides the T9 roll instance whole, a sole-cast that settles at birth; the rotation is the same concept with no theater)· the turn_line wait(the round belongs to ONE player; everyone else's lines are table talk that re-arm the dead man)· per-player board chipsper: "player" mints one per seat — a score, a die count, a skip budget is a number the world keeps)· rule widening(the row's cells are the cartridge's; a tick may target the chosen player's own chip and fire on some answers only; wait_more answers keep a round open and re-park its wait)· reveal:board(a game with no sealed pile still owes the audit an ending — the record freezes into the ledger's own event). The kit's classic clock is deliberately NOT on the cartridge: the completion ruling is the round's resolution, and a timed dare is the host's narration.

The battery: 9 kinds, 46 checks — 1 FAILED on the first sheet, 0 on the second. The distinctness judge told MrBeast from Hadid on the same cartridge; the device counted 0 unusable verdicts across the long night after the fix below.

What game one found in the EXISTING code

what leakedhow it showednow
a rematch inherits the last night's chips — the room's counter fold keeps a re-declared handle's count BY DESIGN(a classic-path rule: editing a live scoreboard must not reset the game), and the rematch door boots in place, no sweep between the nightsnight two's 完成 chip arrived reading 1(the live battery's rematch kind; room f1b0)— and 卧底 and 20Q had the same latent bug: nothing ever read their rematch countersthe device's board CLEARS the standing one before it establishes — a fresh game starts from a dark screen; the classic rule is untouched
the rule's row was 20Q's row — number · question · answer, hardcoded in the runnera wheel game writes rows about players, not questionsthe row's cells are the CARTRIDGE's(row: ["round","chosen","pick"]); the 20Q shape stays the default
a verdict asked mid-beat gets no tag at all — the ruling fired on the chosen player's first line, the host's intent was「pose the question」, no option matched that intent, so it wrote none(twice — the D3 lesson one notch deeper) room e62c: two rulings running lost, the game stuck on a question nobody was askeda rule with a wait_more answer names it in the cue as THE answer for a round still in play — beside the exact line, last
a lost tag's only recovery was the five-minute dead man — lawful(the world never invents a ruling)but slower than any table's patiencetwo noisy rooms froze mid-round on one dropped tag each(battery #2's pressure and sassy kinds)a missed ruling RE-ASKS at once, one time per question; a second loss falls to the clock. Benefits every rule game, 20Q included

Game two — 大话骰(SHIPPED 2026-08-02 · REWORKED on the owner's input the same day)

The first cut reduced a cup to a sealed HAND whose cards are faces — riding the deal's physics whole. The arithmetic was fair(every face an independent draw)and the owner rejected it on sight, correctly: the room SAW a deck(「a sealed deck · 20 cards」), believed a fixed composition, and got no shake. A fairness the players cannot see is broken. The rework, to the owner's design: real dice — one roll card carrying every cup, per-person counts(Nora ×5 · Leo ×4, each read off its holder's chip; grammar + card UI), the shake as each player's own tap with an auto dial(自动摇: the house shakes all at arm — the deal's speed with dice physics; a straggler gets one named nudge, then the house shakes their cup: entropy is the world's to complete, a ruling never is), and the 开 as a CHALLENGE BUTTON riding the composer — one big cartridge-labelled button under the thumbs already typing bids, reusable by any game(抢答, stop, 再来一局). The owner also rejected the reveal-cascade alternative(first-open-opens-all)as a hidden reflex on a familiar control: a button does what its label says. Attrition still rides the elimination genre whole; the ladder stays table talk; the device still counts every face both ways and the host still rules who pays.

The battery: 9 kinds, 44 checks — 0 FAILED on the FIRST full run(sheet battery-dice-0802-1947). The door kind's first live round was perfect: cups sealed, one tap opened them, the host ruled a loser by name off the server's printed tally, one chip moved. Zero unusable verdicts across every kind — the reduction reused so much proven machinery that the live phase found nothing the bench had not.

What game two found in the EXISTING code

what leakedhow it showednow
「the game's deal」meant「the sighted deal」_game_deal_gate required the dealer's eyes, because 卧底's deal has themthe cups are dealt BLIND to the host, so the reveal and the abort could not find the pile they owed the audit — bench, two scenarios at onceon a cartridge room every deal is the runner's own(the pen is walled), so the kind alone is the key
「a ballot needs an eliminate」 — the validator's structural law, written from the one game that had ballotsthe buzzer settles into the await that watches it; the lint refused a lawful cartridgethe general law: a ballot's settle must have a READER — an eliminate, a score, or an await vote_result
an empty settle advanced a program built on somebody — a first-tap ballot that dies on its clock with zero taps is「nobody challenged」, and stepping forward would open cups over a bid nobody doubteddesigned out before it fired: the bench's empty-buzzer scenarioan empty buzzer NUDGES once and re-arms from its own step; a second empty clock folds the game — and even the folded game turns its cups face up

⚠ The full record of game two's second day — the collect phase, the flash seam, the arithmetic verdict, the widgets, and every law twelve audited games paid for — is its own page: the dice specimen. The sections below are the build-day notes it grew from.

Game two, act two — THE COLLECT PHASE(the owner's abstraction, 2026-08-03)

The bidding exposed the device's last blind spot in three measured steps. The host emceed every bid(「三个4——Dan,到你了」); teaching the persona restraint failed because the FLOOR PRODUCER staged a speak on every line; teaching the FP the player window worked — and then over-held: it benched the host over bids it had judged 「合法」itself, including two illegal ones, live. The staging layer cannot hold the rulebook, and the persona holds it only as prose. The owner's cut: the bidding is a COLLECTING process, and the ladder's rules belong to the WORLD.

The collect step is a ruled window with three gates, three seats: the EXIT is the until-await it rides(dice: the 开盅 press — button, dead man and nudge all unchanged); a VALID entry is judged by a NAMED VALIDATOR the world runs(gameflow.VALIDATORS — a pure function beside the schema, benchable without a room; the cartridge names it and sets dials, it never carries logic); and the NL→strict reading is the persona's — the host reads 「三个四斋」 into <entry who count face mode/> and the world rules it: accepted onto the ladder silently, or the exact reason handed back as a VOID moment the host speaks in one line. Minds interpret; the world rules. Validator #1 is the owner's own flowchart — the 大话骰 ladder with the rulings folded in: 飞 needs only count > last count; a bid of 1s is itself 斋 and permanently locks 飞 for the round(is1Called); order is a dial and dice runs strict(an out-of-turn bid is void). Two upgrades fell out free: the 空开 self-kill and the verdict now read the validated record — a round of nothing-but-illegal bids is, correctly, no bid standing, and the loser ruling carries the ladder in order with THE STANDING BID named. Bench: the validator battery(every chart branch)+ the ruled window end-to-end, 30 checks.

What the collect arc found in the EXISTING code

what leakedhow it showednow
the router's drop law had one hole — a reply emptied by its tags drops(a pure action needs no bubble), but the rule-tag extractor alone shipped without the linethe referee's silent pass(<rule pick="过"/>) painted an EMPTY BUBBLE, twice per round, live — the owner's screenshot the drop line added; the entry extractor was born with it
chosen silence was illegible to the client — the no-response net (「the panel didn't respond — try sending again」)predates deliberate silence and read an empty turn as a dead panelthe warning fired on every silent pass and vanished on refresh — the owner caught it in one sessiona turn whose whole answer compiled to structure is stamped quiet; the client treats it as a completed turn, and the warning keeps meaning failure

Game three — 问答之夜(SHIPPED 2026-08-02)

The furniture-heavy one, as predicted: the two genuinely NEW mechanisms of D4. Compose — the ruling's mirror: the host AUTHORS the round and it arrives as data(<compose q opts key/>), so the card the room taps and the key the world scores by can never drift from the speech. Score — the world compares every tap to the key and moves the chips itself: the kit's iron rule(the ballot closes before the answer is spoken)made structural, not asked for. Plus: ballot options "composed" · the length as a DIAL the end predicate reads (round>=dial:length)· top_score with on_tie:"continue" — a tied top simply does not fire the END, which is sudden death by construction. The key is EMPTY as a fact until the score step has run, so no earlier moment can carry it — the leak is impossible rather than forbidden.

THE MEASUREMENT THAT MATTERED: one call could not carry voice and authorship. D3 settled that a RULING needs no schema-forced second call(9/9 on one call)— and D4 measured the same shape failing for the compose: 3 of 9 first asks lost the tag in one battery, 5 of 9 in the next, hosts saying 卡片已上 over a card that never landed while later asks(with their own tag in history as an exemplar)landed fine. Picking one option off a list is not authoring three structured fields. So the compose is TWO BEATS: a DATA-ONLY ask(a reply that is nothing but the line strips to an empty bubble, which the drain drops), then the host's own VOICE moment as the card lands, carrying the cartridge's obligations. After the split: 5/5 first-try, zero unusable rounds. The cheaper shape was tried first and measured out — in both directions.

What game three found in the EXISTING code

what leakedhow it showednow
the idle fold read the HOST's pulse, not the table's — the compose take marked progress, so the host's own authorship reset the fold every round a fully ignored quiz robotted on FOREVER: question after question over a table that never tapped once, burning a compose turn per roundprogress is the TABLE's: thumbs on a settle, a line heard, a box filled. Two rounds without one fold the game
a staged step paced itself behind a speech that had already finished — the compose take runs in the drain's tail, and the ballot's after-speech park began inside that same taila 12-second dead beat on every question(the speech cap rescuing a wait for a speech already spent)the take leaves a one-shot flag; the next staged step consumes it instead of parking
an exact-repeat question was the host's to notice — the never said so, and a battery host re-asked one anywaythe middle-of-a-game kind: 4 asked, one repeatedstring equality is arithmetic(the self_bust precedent): the device refuses a question it has already asked and re-asks for a fresh one
the game-over screen's prohibitions were 卧底's — do not deal, do not vote, do not treat anybody as out; nothing about a fresh QUESTION, because the game that wrote the screen had nonea host closed the quiz and offered 第六题 in prose —「卡片已上!」over a device with nothing armedthe screen forbids the general shape: no new question, round, spin or task, and never claim a card is up

Game three, act two — 问答之夜 TO THE BENCHMARK(2026-08-04)

The first game built from the specimen's loop rather than toward it: audited against the eight laws first, then fixed in benchmark order — mechanical doors before teachings. Four of the eight were already met(dual-mode · no ruled player moves to validate · the confirmations · the interpreter seam); the gaps were consent, the highlighter, and the voice split.

the gapwhat closed it
the length was SPOKEN, not tapped — the host declared a number that was never the host's to pickthe RULE-CHOICE card, inherited whole from the dice night: the dial went to the object shape(ids stay 5/8/10, the END predicate still reads the id)and the kit grew its lexicon, so the card can ask 五题 · 八题 · 十题 and the tap SPEAKS as the tapper's own action line
nothing gated the next beat — the verdict landed and the next question fired over a table still reading itTHE READY CARD(the ready verb)— see below. Furniture, not genre: any game may gate a beat on the table being present
the closed card never said which answer was rightthe roll card's intrinsic highlight, one instrument over: the device holds a key nobody saw and stamps it AT THE COUNT, so the live payload and the replayed event paint the same gold from the same field. Only for the device's own ballot, and only while its composed round still stands — a straggler settling late must not mark this round's answer on last round's card
the colour line came AFTER the card and LEAKED — asked to say where a question comes from, a host that knows the answer narrows toward it 「every element gets a letter or two, and some come from Latin names you'd never guess」— over a question whose answer was tungstenthe line moved BEFORE the card, as a lead-in, and its never-list names the leak's SHAPE rather than the word 「hint」: no clue, no era, no place, no language, no name, and nothing that would only make sense to someone who already knows
the host said the question the card already carried — two copies of one sentence, and the bubble adding nothingthe ballot lost its after-speech stage, so the CARD LANDS FIRST and the host's line beside it became colour: where the question comes from, why it is worth asking — with the question, the options and any narrowing forbidden. The verdict gained the reason the answer is the answer; the ending gained the line that makes the night land. The clock went 90s → 180s, because a quiz question is READ before it is answered

THE READY CTA is the button's opposite number. The challenge button is first-past-the-post and CLOSES a window; this is unanimous and OPENS a beat. Every living player taps once; the card shows who is in and who it is still waiting for, and its own clock releases the beat either way. A lapse PROCEEDS, it does not fold — readiness is PACING, not consent(the consent that put the kit on the table was its own tap), and what protects a dead room is the idle fold, which a ready tap feeds.

THE OWNER'S REDRAW(2026-08-04)— and the rule that came with it. The card gained a tally of circles(one per seat, ticked as each thumb lands, deliberately anonymous — it answers HOW MANY at a glance and stays legible where names would not), a hairline, and a foot that names only who is still missing. And it stopped vanishing: a tap that erases the thing it landed on leaves nothing that says it counted. It SETTLES — circles ticked, button greyed, and the foot, the one line that changes meaning and never its position, swapping「waiting for …」for「everyone's in」or 「started without mary and dan」. It is replaced by the next round's card, never removed by its own success. The same pass fixed the LENGTH at five: a dial the room had to answer before anybody had played was the game's first interaction with the table, and it bought nothing.

⚠ AND IT WAS BUILT WRONG FIRST — the most reusable lesson of the pass. The first cut made it a BALLOT wearing a different face, on the reasoning that every part it needed(a need-list, an all-in close, a countdown, a roster, a replay)already existed on the poll. The machinery did fit. What came with it was the poll's whole face: a status band, an opener head, option rows with bars and vote counts, a closed result card, and a slot in the room's instrument cap — for a thing that asks no question and counts nothing. The owner named it on sight(「the ready is a poll instead of a CTA bubble」). It is now the THIRD SELECTOR CARD beside the offer card and the rule-choice card: one shell, one coral pill, a light state slot, a tap route. Reuse the shell that matches the MEANING, not the machinery that happens to fit — and when a CTA costs a room an instrument slot, that is the tell.

And the law the third game adds to the benchmark: every consent is a tap, and every tap is COUNTED. The offer card, the rule-choice card and the ready card are each pinned by the smoketest at exactly one arming site, beside load_kit's two. An invariant nobody counts is one that quietly grows a fourth door.

What game three's second act found in the EXISTING code

what leakedhow it showednow
a question could not contain a QUOTE — the compose attribute matcher was [^"'<>], so a value ended at the first inner quote caught by DRIVING a real game rather than the bench: the host authored 「What chemical element has the symbol "W"?」 and the card carried 「What chemical element has the symbol」. The truncation then passed every check it had(q non-empty · three options · key in range · not a repeat)— the room was asked a sentence that stopped mid-thought and nothing said so the closing quote is the one FOLLOWED BY another attribute or the end of the tag. Same family as the third pass's interpreter law: where the machine's own transport mangles what the mind wrote, the PLAYER pays for it
a wait that was not a TURN showed nothing at all — the host authoring a question is a real model call, but the turn-start signal is the only thing that raises the thinking eggthe owner tapped「I'm ready」and the room went dead for seconds — then the line and the card arrived on top of each other and read as one lump, because the eye had been given nothing to mark the time with any wait a PERSON is waiting through raises the egg: it tracks the room's experience of waiting, not the plumbing's idea of a turn. It comes down again if the call queues nothing(the eternal-egg family). Measured after: egg at 73ms, line at 7.3s, card at 9.2s — and the card trails its bubble by ~1.9s once the eye has a beat to measure against
a dead man re-armed on the name of ANOTHER wait — the ballot-close backstop hardcoded vote_resultinvisible until a second wait kind shared that door: the timer token pins the kind, so a 「ready」 wait re-armed as 「vote_result」 is a backstop that can only ever no-opit re-arms on the wait it is IN

The slow bleed — the host's pulse, third sighting(2026-08-05)

The owner opened room bdaf and found sixteen bubbles in a row from a persona nobody had spoken to. The room's last human line was three days old: seven human messages in its whole life, and thirty-two model calls. It was on round ten of a 真心话大冒险 that no one was playing, and it was still spinning the wheel while the defect was being read.

The mechanism is a two-stroke engine that runs on its own exhaust. The wheel picks somebody; nobody answers; the dead man nudges them by name(one call); nobody answers again; the dead man hands the verdict to the HOST(one call)— which is right, a silent player's fate is not the world's to invent — the host rules 跳过, and the ruling writes the row, moves the chips, spins the wheel and opens the next round(one more call). Sixteen minutes, three calls, one wheel card, forever.

a ruling is not a pulse The idle fold was in place and could not see any of it. The ruling marked progress — so the host's own authorship reset, every round, the very counter whose job was to notice that nobody was there. idle_rounds sat at 0 through ten empty rounds. This is exactly the law game three wrote one act earlier(「the idle fold read the HOST's pulse, not the table's」)and the ready card states out loud in its own comment(「the idle fold reads THIS, never the host's own authorship」)— caught at the compose door, missed at the ruling door. Third sighting of one law is a sign the law needs to live in one place, not three. The mark is also pure redundancy in the honest case: every genre's human door — a turn line, a question, a described word, a press, a thumb — marks the pulse BEFORE the ruling it leads to, so real play folds nothing. Now: two empty rounds and the device folds, ~6 calls instead of unbounded.

The second half of the fix is not the device's at all — see the call fuse and the presence gate, the brakes that were supposed to make this impossible.

THE INERT DISMOUNT — what takes a kit off the table(2026-08-05)

The owner's next question, and the honest answer was nothing. The only exit a kit ever had was a cartridge's own game ending — which is exactly what bdaf finally did. Three kinds had no exit at all:

the mountwhy it was stuck
a CLASSIC kit(no cartridge)nothing folds it — and 「put the table away」, the host's own move, is gated on _flow_kit(), so even that skipped it
a cartridge that DECLINED the table(wrong player count)the kit mounts, the device is never made — so there is no game to end and nothing to sweep
a cartridge between gamesdeliberate(「a table that just finished usually wants another」)— but deliberate had no expiry

285 inert mounts in the dev tree, 253 of them over a day old, and not one had a way off. What that costs is no longer tokens — an empty room is silent since the presence gate. It is the rulebook riding every turn, and steering: a host left primed to run a game nobody has mentioned since yesterday.

24 hours cold, and a running game folds on the way out(the owner's call) Judged on COLDNESS ALONE, deliberately not on presence: 「the table has been cold for a day」 is a rule a person can predict, where 「…unless somebody happens to be looking right now」 is one nobody can. And the coldness is the HUMAN's — never the room's own churn, which is bdaf's exact shape: a room bleeding by itself has a fresh updated and an ancient last human, and the whole question is the human's. LAZY, with no timer of its own — asked on the two occasions that already exist(a room being hydrated, a turn about to run), because a kit on a table nobody opens costs nothing until somebody opens it, and that is exactly when it fires. A game still running is folded through the lawful door first, so the pile publishes and the record closes: an abandoned game still turns every card over. Dial: MAD_KIT_IDLE / setting kit_idle, 0 disables.

The window was 6h for an afternoon, then 24h on the owner's second thought — and the gentler number costs nothing now that an idle room is silent. What 6h bought was a tidier table; what it risked was a game paused over dinner. 24h loses nobody's paused game and still clears every table long before anyone comes back to it a second day.

AND IT SAYS SO OUT LOUD. A kit that vanishes with nobody named reads — to the room and to the host — as a move somebody made and everyone missed. So the unmount carries how long the table had been quiet, on all three surfaces: the capsule in the stream(谁是卧底 cleared itself — the table had been quiet for 94 hours), the replay payload so a returning reader sees the reason rather than a game that simply disappeared overnight, and the host's own context, told plainly that nobody took it off(the v555 law: a change the model is never told about teaches it the wrong thing). A hand unmount is untouched — no age, and the person still named. Fourteen smoke checks, including the classic kit — the case that never had an exit —「no device and no dead man survives the sweep」, and「the lift REACHES THE DISK」.

THE MOUNT IS A HUMAN DOOR(2026-08-22, v984, room 036a). The coldness is the human's — and every human door advanced that clock through fuse_touch() except the mount itself, which was never wired. A room whose only human act in a week was 「put the kit on the table」 kept a week-old stamp, so the wake the mount fired met a 213h-cold table and lifted the kit 350 ms after it landed, every time — the host laid a full Liar's Dice opening from a rulebook already retired, and the call fuse starved on the same stale stamp(fuse_rest). Mounting and taking off now count as the human touching the table; nothing else changed.

THE WITHDRAWAL — shelf: off(2026-08-05)

The owner took 真心话大冒险 off the shelf the same day. Deleting the file was the wrong tool: it loses a working cartridge, breaks every room that still remembers the slug, and takes the battery down with it. A kit may now carry shelf: off — it keeps its file, its cartridge and its tests, and stops being reachable: not listed, not matched, not loadable. Four doors, and the fourth is the one that matters — the menu and the megaprompt read the shelf, the chip and the auto-load read the matcher, but a slug travels(a stale client, a saved offer card, a rematch's memory of the last game), so the load door refuses it by name rather than trusting that nothing upstream still holds it. read_kit deliberately still works: a room with the kit already mounted has to be able to name it and lift it off. And MAD_SHELF_ALL=1 puts the whole shelf back for a harness — a withdrawal that quietly stopped exercising the thing would rot the cartridge it exists to preserve.

18 · 谁是卧底, reshaped onto the shelf(2026-08-06)

The OLDEST cartridge, rebuilt against furniture that did not exist when it was written. It was the game the device was born for — and by the time three more games had been built it was the only one still using the pre-collect shape: a bare await, a head count, and a host who answered every legal move.

The round becomes a RULED WINDOW

The describing round used to be a wait: everybody types something, the device counts heads, the ballot opens. A line that copied a neighbour, or said nothing at all, counted exactly as much as a description — so a ballot could open over a round half the table had not played, and the rules the kit's prose declared were rules nothing enforced. The round is now a collect window with a named validator (spy-desc), and the shape is the shelf's, not this game's:

the linewhat the table sees
a valid description of your own worda reaction on your own bubble, from the shared ACK_EMOJI jar — a tick, never a reply. The host does not answer a legal move.
a copy of somebody else's · a line describing nothing · the word itself ONE line from the host with the exact reason, in the room's own language — and the player still owes a description(a refusal is not a turn spent).
table talk, or a question aimed at the hosta normal reply, in the host's own voice. This is the one genre difference from the dice window, where the referee stays silent throughout.
The seam is not where the dice put it A bid is TRANSCRIPTION — a mind reads 三个四斋 into three integers and arithmetic does the rest. A description has no strict form to read it into, and the interesting questions(is this a copy? does it describe anything?)are the ones the specimen already ruled are verdicts wearing a fact's clothes. So the mind's reading arrives as a CLOSED KIND — desc · copy · empty — and what stays the world's is everything arithmetic: who is living, who already spoke, whether the line contains the speaker's own dealt word, what a refusal costs, and the words it is spoken in. The cheap interpreter only ever says「a description」or「I am not sure」: a judgment made by the cheapest mind in the building is a void a player gets blamed for, so a doubt escalates the whole batch to the panel — which holds the round, the rulebook, and the mouth that has to speak the refusal anyway. And the validator fails OPEN: an unknown reading is a description.

The round closes on the LEDGER, never on the line. The exit moved out of _game_heard(which sees raw text, before anybody has read it)and into the accept: when every player owed has an ACCEPTED entry, the window closes itself and the ballot opens. Three lines from one mouth and a dodge from another is not a played round, and the head count said it was.

The reminder has a ceiling

A silent player used to hang the round until one dead man fired, and then the ballot opened with no warning to anyone. Now the world nudges the stragglers by name, once — the shelf's own pattern(the button, the cups, the chosen player all nudge once)— and re-arms at half the window, because after being called by name the question has changed. On the second silence the world moves on: the ballot opens over the descriptions that are in. A round with NOTHING in it is the exception and gets a second call, because it can never go to a ballot whatever happens.

The grand ending comes off the open cards

二十问's seal-fidelity law, owed by this instrument too: the closing line is checked against what the world actually published. The guard takes a LIST now — 卧底's ending is a PAIR, and a line naming only the civilians' word has told the room nothing it stayed for. Every distinct word on the pile must survive into the host's sentence, or the line never lands and the ending is re-asked once; the cards are already face up either way. A FOLD wears the same guard, for the same reason it wears the same reveal.

Owner's correction, 2026-08-06 — the odd card is known at the DEAL The highlight's first cut found the spy card by counting holders at the end: group the published pile by word, take the smaller group. Right answer, wrong route — and the owner named the route on sight. This cartridge BUILDS the deck as ?1 × majority + ?2 × minority, so the odd card is decided by arithmetic before a single hand can be read; the house's own placeholder binding already says which word ?2 became. Counting is a different question that usually shares the answer — it needs the whole pile still readable(after the reveal there is nothing left to count), it cannot tell a minority from a majority on an even split, and it re-derives on every reader. The draw now records its binding, the deal records the seats, and both readers — the reveal's highlight and the WINNER — read the record instead of tallying. That last one is the point: the side that won was being decided by a count taken after the fact.

The general shape, and it is the session's own law one instrument over: a fact the world DECIDES is a fact the world must record at the moment it decides it. Every later derivation is a second implementation of the same rule, and the two only agree until they don't.

What this game found in the EXISTING code

foundit wasnow
the collect window's ctxevery window got the DICE's slice — ones_wild · modes · the table total — one game's rulebook in the general armsliced per grammar; the shared part is the turn order and nothing else. The dealt WORDS ride a LIVE slice that is never persisted: a secret with two homes is a secret with two ways out
the drain's window gatekeyed on a_press — the dice's own waitkeyed on the window's own declared exit(collect.until); a gate written against one game's wait silently drops every other game's entries
the entry's DISPLAYthe ladder board and the record fact both rendered a bid by handone seam(_game_entry_disp); a new grammar teaches the whole surface at once
the leak guard on the flash voicelived inside the LEAD-IN branch — one instrument's lawevery flash line carrying a forbid list is checked. 卧底's refusal speaks ABOUT a line that may have carried a dealt word, and this is what stops it repeating it
the screen's TABLE RULE NOW and the dial-door examplenamed the dice's own dial(ones / always_wild)in general code, so every other game's host read a door onto a dial its table does not ownthe cartridge's FIRST dial — byte-identical on the dice room, and every other game finally gets one
the deal gateread the FIRST deal in the room — the 2a5d law, unapplied to the one instrument that predates it(the cups and the box are both keyed) keyed by the iid stamped at arm, with a sweep at boot: a rematch starts from a clear table
a full circle closing mid-batchreturned out of the entry loop, so a batch whose circle closed on its second line never ruled its third continue — and the window's own exit check runs either way
the live harnessevery 卧底 driver still expected the kit to mount off a spoken ask — stale since the MOUNT LAW(2026-08-04), so the whole battery failed at its first assertion and blamed the gamenine openers tap the OFFER CARD, and so does the rematch. A driver that cannot press the one button a human presses is not driving the product.

19 · THE SIDE ASK — the ruling off a tiny prompt(2026-08-06)

二十问's ruling was 90% of the game's bill. The owner asked whether it could move to the cheap mind. Measuring it first said something better: the model was never the expensive part.

one ruling, as it shippedtokens$
re-reading the room420,9920.00153 · 56%
new text since the last turn2,5850.00112 · 41%
the answer itself700.00006 · 2%

$0.0029 to say 不是, of which $0.00006 was saying 不是. The rest was handing a model the whole room in order to answer a question about a word on a card. So switching the tier alone buys 1.7×; asking it off a 300-token prompt buys 15× on the SAME model and 190× on the cheap one.

What the measurement actually found

exam/q20_ruling_ab.py replays every(sealed word · question · the pro model's own answer)triple in the play history — 187 real rulings, no live play, about a cent. Both cheap arms were run against the shipping one:

armagrees with the shipping ruling$/ruling
flash, tiny prompt75.9%0.000015
pro, tiny prompt (the control)77.0%0.000047
The tier is worth 1.1 points; the context is worth the rest The two tiny-prompt arms land within noise of each other, so the ~24% disagreement is not「flash is worse」— it is answering off the card versus answering inside the room. And reading all 45 disagreements by hand, a large share is the SHIPPING version being wrong: a rhino ruled not alive, the moon ruled small enough to hold, a museum ruled smaller than a person. That is the seal defect in its natural habitat — a host thirty turns deep in a 480,000-token room answering from the conversation's momentum instead of from the card. Cutting the context does not merely make the ruling cheap; it makes it answer the question that was asked. On the rung that ENDS a game the cheap arm scored 13/13 where the pro managed 12/13.

⚠ The one real regression is shared: both tiny arms under-produce 说不清(3/16 and 4/16). Shared means prompt, not model — and it is the least harmful rung to miss, since the question is spent either way.

How it is built

A rule may name a side-ask recipeside: "seal-question"). The cartridge supplies the words through its own lexicon (ask.head · ask.<option> · ask.tail); the world owns the call, the guards and the fallback. The rung comes back with an optional five-word qualifier — the thing this game's charm lives in — which the world checks can never contain the secret. Then a mind still says it: the flash voice with the persona's capsule, the verdict's own recipe. Any failure queues the ordinary panel moment, whole, so this is a fast lane and never a wall.

Measured live end to end: a four-question game's rulings cost $0.000068 in total — 1.2% of the game — and each answer lands in about a second instead of six.

…and then the answer stopped being a sentence(owner, same day)

With the ruling off the panel, the owner's next move was to take the BUBBLE away too: 「instead of giving an answer in a bubble, what about make a reaction on the asker's bubble?」 It is the bidding window's own law arriving in the other genre — a move that needs no conversation is confirmed ON ITS OWN BUBBLE, never in a reply — and 二十问 is where it pays most: twenty questions used to cost the room twenty host bubbles saying 「不是。下一个。」 over a board that already showed the count.

它是活的吗? ❌  它比一辆车大吗? ✅  它是在室内用的吗? ❌
我猜是游乐场! → 「猜对了!但别高兴太早……」

Three questions, three ticks on the askers' own bubbles, and not one host bubble until the ending. The glyphs are the CARTRIDGE's(react.<option> in its lexicon)because they are its words like every other word it owns, and a rung with no glyph declared still speaks — so a partial mapping degrades to yesterday rather than breaking. ⚠ Silence is the ANSWER's shape, never the EXPLANATION's: a rung that came back with a reason still gets a line, and that line carries the reason alone — repeating 「说不清」 beside a 🤔 is telling the room twice.

Four glyphs rather than the three the owner named: 说不清 and 不适用 look alike from outside and are not — one spends the question, the other costs nothing — and collapsing them would hide a rule the board is keeping.

「when the user's question gets 🤷 or 🤔, will there be follow up message?」 The owner's next question, and it found the hole: the reason was discretionary — the recipe offered one「if needed」and zero of the live rulings had volunteered it. ✅ and ❌ answer the question; 🤔 and 🤷 decline to, and a tick that declines says almost nothing —「it depends」on WHAT, and「the premise does not fit」leaves a player unsure whether to rephrase or whether it even cost them. That is the outcome-channel law: a bare「declined」makes a table retry the same thing where the precise reason names the next move. So a cartridge now LISTS the rungs that cannot stand alone(rule.say), the recipe demands a reason for exactly those, and if one still fails to come back the line speaks the rung anyway — the bare shrug is the one thing that must never ship.

Whose well — the seat that actually hosts this game(owner, 2026-08-06)

The secrets are drawn from the shipped bank ranked against a persona's own card, and the seam that decides WHOSE card used to answer by guessing cast[0]. Its own docstring had already named the debt:「a game that deals a secret to a named seat should thread that slug down rather than have this guess — the honest fix is an argument, the day a game needs one」. It is an argument now: the drawing seat comes from whoever armed the draw(the deal's slug, the box's holder), with cast[0] only as the fallback for a caller that names nobody, and a slug that is not seated in this room falling back rather than ranking against a stranger. The warm-up follows: every seat, not only the first — a vector is one cheap call per persona ever.

Same room, same bank, two seats — the whole point, in one line each:

the seat that armed itwhat the house drew
jimmy-donaldson长颈鹿 · 漫画 · 蛋黄酱 · 滑梯 · 图钉 · 鸭子
bob-dylan篝火 · 手榴弹 · 虱子 · 京剧 · 后院 · 木偶

⚠ The check that proves it has to arm from the SECOND seat: on a device room the host IS cast[0], so a test that only ever plays the ordinary game cannot tell the guess from the answer — which is exactly why the guess survived.

What driving it live found, that the bench could not

The fidelity guard protected names and numbers — and this note's whole content is a WORD. The first live rulings shipped 「不是。接着问下一个。」 and the voice returned 「行,下一个。」: the answer gone, the invitation kept, every check green, because there was no name and no digit to drop. A caller that knows its note has one indispensable word now declares it(keep)and the line is thrown away without it.
A ruling asked off to the side owes no panel turn. The player's question IS the thing being ruled, so the ordinary turn for that message became a second host bubble between the question and its answer, saying nothing. It is the bidding window's own gate, one genre over: while the world is answering, the panel is not asked to.

20 · THE FIRST WATCHED GAME ON THE NEW LADDER — room ce9c(2026-08-06)

The side ask shipped in the morning; the owner played a game on it the same afternoon and came back with five things. Four of them were one day old. Every one is in the table below with the room's own log line beside it.

what the owner sawwhat the room actually didthe cause
「是实物吗?还是概念?」is not a valid question, but got a tick ruled 是 · row #2 · a question spent The ladder had no rung to land it on. Five rungs, and every input has to become one of them — so a two-in-one is answered rather than bounced. The hand-played brief has had「if it is not answerable yes/no, ask for it rephrased」as step 1 since the kit was written; the cartridge's closed list never got it.
a thinking bubble lingers after the tick, as if the host were about to speak the egg breathed until the next turn Nothing lowers it but a reply, and a tick is not a reply. The side ask raises the egg on purpose(somebody IS waiting). The authoring call twenty lines below already solves this exact thing —「it must come down again if nothing is coming」— and the ruling path, written the same day, never got the same line.
Q:空调 → A:「型号和用法不同,差别就大了。」
Q:暖气 → 「…就像买公司,先搞清楚它是做什么的」
the side ruling answered 「说不清」(要看具体型号和用法) A guess was never recognised as a guess. The prompt said 玩家 — 「the player ASKS」— and the ladder had a rung for a RIGHT guess and none for a wrong one. So a bare noun was ruled as though it asked about a property, and came back「it depends on the model」.
Q:壁炉吗 → A:「不是,别给我安什么"中国巴菲特"的帽子,我就是个普通人。」 the note was 「不是。」— three characters The voice was unguarded. Warm(t=0.6)behind 2,500 characters of the host's profile, and the fidelity check only asks whether the note SURVIVED, never whether anything was added. 不是 was in there, so every gate was green. The phrase is not even in the profile — the model was riffing on the person's fame.
the answer was 电暖器 and we said 暖气 / 壁炉 — give the player credit neither was ever compared to the word at all Downstream of the row above: 猜对了 meant「said the secret word itself」, an exact match, and nothing reached it.
after the kit came off, the host started 谁是卧底 from memory THE OFFER CARD — "二十问", then deal 蓝莓×2 · 草莓 It did the right thing first. The host raised a proper offer card for 二十问; the prop master then judged「they want another round → lay the table」and the table-laying call invented a spy deal in the same turn. The hand-build suppressor woke only to the PROP's reasoning, and neither half of that turn said a game's name anywhere it could read.

The guess door — and why it is not a cosine

The owner's instruction was direct: 「the correct guess doesn't have to be a keyword match, it should be a vector match」. So that was measured first (exam/q20_guess_ab.py, 81 hand-labelled pairs):

cosinelabelpair
0.9768DIFFERENT橘子 ← 橙子
0.9620same电暖器 ← 电热器
0.9606sameelectric heater ← space heater
0.8867same圆珠笔 ← 原子笔
There is no separating threshold, and the generous side of the trade is not available A neighbour on the same shelf outranks twelve true synonyms. T=0.960 buys 3 false wins in 50; T=0.980 buys zero and catches 6 synonyms of 31. And a false win is not a wrong answer — it ENDS THE GAME on a word nobody said. So the split is the house's usual one: the world narrows, the mind judges. The ladder's two guess rungs carry the test in the cartridge's own words —「would both words point at the same object on the table?」— and scored 27/27 on synonyms and 44/44 on the neighbours, the half that makes it hard. The cosine stays as a brake: a claimed win that is nowhere near the word(under 0.88)is refused, and it fails OPEN — no key, no network, no opinion, the ruling stands.

⚠ Position was the dose again. The rephrase rung shipped LAST in the ladder's walk-order and scored 2/6; the tail's step ②「can you just answer yes or no?」 was reaching it first and forcing an either/or onto an answer. Moved to step ① —「is the sentence answerable at all?」— it scored 5/6 with nothing else changed.

…and then a live run found the rung's real leak(sim 2254)

One of the nine battery runs warned:「an open question costs no row」— 「它是什么颜色 的?」 was ruled 说不清 and took a row. The rung existed, sat first, and still lost — because 说不清 is an escape route that is always open. A model that can think of any「it depends」reading will answer rather than bounce, and for an open question there is always one(「颜色取决于水体与光线」). Widening the exam's rephrase set to the four hard cases scored the shipped ladder at 6/10.

More emphasis does nothing; a mechanical test does What fixed it is not another warning but something the model can execute: read the answer back.「把「是」直接当答案接上去,读得通吗?」—「它是活的吗?」→ 答「是」, fine;「它是什么颜色的?」→ 答「是」, nonsense. Plus the one line that closes the escape:「就算你想得出一个『要看情况』的说法也一样」, and a 说不清 gloss that now says it is only for questions that could have been answered yes or no. 6/10 → 10/10.

⚠ And it cost three synonyms until a contradiction was found. The first fix put the whole test in the tail's step ①, and the synonym half fell 26/27 → 24/27 — the longer step diluted the guess step below it(position is the dose, again). Moving the test into ask.重问's own gloss did not recover them either, which is what exposed the real fault: the two guess rungs contradicted each other. 猜对了 said a modifier is fine(电冰箱 for 冰箱)while 猜错了 said a change of scope misses(墨镜 for 眼镜)— and 全自动洗衣机 · 智能手机 · 瓶装水 sit in the overlap, so which rule won was a coin toss. Scope was never the real test. The question is whether people would buy and name it as a separate thing: 墨镜 · 油汀 · 冰柜 yes, 电冰箱 · 全自动洗衣机 · 智能手机 no.

laddersynonymsneighboursnot-a-questionordinary
as shipped this morning26/2744/446/1014/14
+ the read-back test in the tail24/2744/4410/1014/14
+ the test moved into the rung24/2744/449/1014/14
+ the contradiction resolved26/2744/449/1014/14

The two survivors are honest: 电暖器←电热器 is a genuinely hard synonym (and the one case the vector would catch, at .962 — but no floor admits it without also admitting 橘子←橙子 at .977), and 「你觉得这东西常见吗还是稀有」 is an either/or wearing a 吗, which is arguable in both directions.

A ruling is a ruling

The owner's fix for the voice, in one line: 「don't add persona colour. Just use the persona's mouth to say 不适用 or 说不清, plus the reason. If we can't force the persona to say this, just use code.」 Both halves already existed — the cold class(t=0.1, the separator duty, a hard cap)and its floor(two disciplined tries, then the note lands verbatim as the line, never the pro path, which is where the verse lives). The ruling now rides it, with two additions this room paid for:

…and the same lesson, one layer down: a LEAK is a meaning too

Found while verifying the row above, in a sim room: sealed word 长袜, and the ruling's own qualifier shipped 「看具体猫和袜子尺寸。」 The leak guard is _word_in — string equality — and 袜子 is not 长袜, so every gate was green and the table had been handed the word. It is exactly #55 one layer down: the world could check whether the SECRET appears, never whether its meaning does.

The owner ruled out the cheap fix on sight —「refuse any qualifier sharing a character with the secret — that's too harsh. We should refuse any qualifier that leaks the answer」— and the measurement agrees: a per-character guard also kills 「要看电压」 under a sealed 电风扇, and the reason is the very thing being protected.

The same split, with the bias INVERTED Every 2–4 character run of the qualifier(and every latin word)is compared to the secret in one batched call; the closest is the score. Over 37 labelled pairs there is again no clean separation — 自行车←「看骑的路面」 scores .913, above 跳绳←「看绳子长短」 at .909. But here the two errors are not equal, and that is what picks the number. A refused qualifier costs the room a REASON — the line falls back to the rung, which already speaks(the no-bare-shrug law). An accepted one hands over the answer and the game is done. So this guard is tuned to over-refuse, the opposite of the near door's brake: at 0.90 it catches 14/14 leaks for 2 of 23 reasons lost. The live case scores .971; 「要看电压」 scores .851.

⚠ The floor lives in general code(SEAL_LEAK_FLOOR), not in the cartridge — a law stated for one instrument is owed by every instrument, and any game that seals a word owes the room the same promise. On any outage it falls back to the equality check, which is exactly the behaviour it replaced.

The offer is a door too

The owner's ruling: 「just be sure we never auto-start a game that is on our shelf already」. The mount law already says a mount is always a human's tap — what ce9c found is that a game can reach the table without ever being mounted. Two doors added to the suppressor, both self-limiting: this turn's own <kit/> tag — a turn that OFFERS a game does not also lay it — and an offer card raised in the last three minutes: the room is being ASKED, and the tap is the only thing that lays the table.

⚠ A third door was built and removed: 「a kit was just taken off」. It reads _game_last, which is never cleared, so it re-raises the sticky flag every turn and the 15-minute lapse can never fire — one game played would have banned every ordinary poll and dice roll for the life of the room. The offer's own timestamp is what makes door ② safe, and the window is three minutes rather than the offer's full fifteen for the same reason: the defect is a table laid in the SAME BREATH as the offer.

21 · THE WORD IS HIS — performing the draw(owner, 2026-08-06)

「the persona always says that the system has drawn the word for him (which is true). But to increase vividness, we'd like him to say that he himself thought of this word.」

A host that opens a guessing game by crediting an app for the one thing the game is about has given away the warmest moment it owns. The mechanism does not move — the house still draws(a word nobody chose is a word nobody can leak — the reason server entropy was built at all), the box is still keyed to the game, the reveal still publishes what the WORLD holds. Only the performance changes, and only where a cartridge asks for it: seal.mine.

The retired sentence was doing work 「我也是看牌才知道」was not just provenance — it was the host telling itself, out loud, every single game, that the card is the authority. Granting the fiction without putting that back is how a host ends up answering from the word in its head, which is the most expensive defect this game has ever had(the whole seal-vs-reveal cycle). So the two did lines that change say BOTH things in one breath: perform it as yours, and rule every question off the card however well you think you remember it. The directive never lies to the host about the mechanism — a host told a falsehood about its own instrument has nothing to anchor the discipline to.

⚠ Why this is safe NOW and would not have been a week ago: since the side ask shipped, the ruling is made by a call that is handed the word. The host's belief about where the word came from cannot reach the rulings on a cartridge room at all. The fiction is decorative by construction.

What the first live runs found — the two lines contradicted each other

The cartridge's own opening went clean immediately(3/3:「题我已经想好了,封在盒子里」). But the turn BEFORE the tap still said 「让机器来抽」·「让系统随机抽一个」— 3 of 3 — so the room heard the machinery and then, thirty seconds later, heard the host claim the word. Two lines that agree are better than one right and one wrong; this was briefly worse than doing nothing.

The source was the shelf hint, which read「on this shelf the MACHINE draws the secret」. Its constraint is real and load-bearing — it is what stops a host settling on a word before the tap(the phantom word's birthplace)— so the constraint stayed and the narration went: 「that is backstage; the game tells the room itself, after the tap」. The classic path's deliberation note carried the same push(「机器抽词,谁都没见过 — say that」)and lost the「say that」.

opening lines crediting a machine
before3 of 3 offer turns
after the cartridge change alone3 of 3 offer turns(the game moment clean)
after the shelf hint and the note0 of 12 lines

Seal fidelity held throughout — every run: seal == reveal, the word never reached for before the box opened, rulings written from the card. That was the thing at risk, and it is the thing that was checked.

-ish · the game device · drafted 2026-08-02 from the two sim cycles' evidence · game three's second act added 2026-08-04(the benchmark pass)· the slow bleed 2026-08-05 · 谁是卧底 reshaped onto the shelf 2026-08-06 · the first watched game on the new ladder 2026-08-06(the loop · ledger rows 51–57)· the constitution extended:「code=world」now includes the game's skeleton(world-events)· status: D1–D3 SHIPPED · D4 IN BUILD(真心话 · 大话骰 shipped 2026-08-02 · the collect phase 2026-08-03)· D5 queued