← The world-event room — the constitution this loop serves

The sim → improve → sim loop — one game at a time

The owner's brief, 2026-08-01: 「Primary: improve our world to a level that every game on the shelf can be played by human users without obvious bugs. Secondary: make sure our harness is sound… and we are using the most cost-effective LLMs for each role. Greatly improve the kits first: search the web for authoritative rules → internalize → write the kit for the GM — the GM is the reader. Then simulate with 1..N LLM users, analyze from the user's POV and the transcripts, fix, loop until no more issues. One game at a time, starting with 20Q.」 This page is the plan, for review before execution, and will become the scoreboard as cycles run.

1 · The goals, ranked

primaryEvery game on the shelf is human-playable without obvious bugs. The judge of「obvious」is a player's eye, not a passing check: the game's logic runs correctly end to end, every tool the moment needs fires, and no unwanted tool intrudes. The owner's own four-user sessions are the gold standard the sim approximates.
secondaryThe instruments stay honest and cheap. ① Harness soundness — the troupe and the batteries work without leaning on exception-swallowing (every caught exception is counted per run; the budget is ~zero). ② Model economy — each role runs on the cheapest model that measures clean, in both dollars and wall time; every switch is A/B'd, never assumed (the flash-0731 act experiment is the precedent for how this goes wrong when skipped).

2 · The loop

0 · RULES Search the authoritative rules, internalize them 2–3 sources cross-checked · what makes the game work · house-rule forks become DIALS 1 · THE KIT Rewrite for its reader — the GM natural-language pseudocode · every check MECHANICAL(a look, not reasoning)· END exhaustive 2 · SIMULATE The troupe plays the real app 1..N sim users over HTTP · patient-watch human behavior · rooms console-reviewable, kept 3 · ANALYZE — TWO LENSES The player's eye, then the record logic correct? every needed tool fired, none unwanted? confusion in the host's words? ledger vs transcript: claims true · counts honest · settles read(judge flags, human verifies) 4 · FIX, AT THE RIGHT LAYER world → interface → kit → harness harness bugs first(they mask everything)· each fix's layer named on the defect ledger loop until clean EXIT Two consecutive clean runs at two seat counts all four tests green · zero harness exceptions → the scoreboard flips, the next game starts
exit criteriaA game is DONE when two consecutive troupe runs at two different seat counts (e.g. N=2 and N=4) come back clean on all four tests — invocation · tools · logic · UX — with zero harness exceptions and no human-verified judge flags. Then its status row below flips green and the next game starts. A later regression re-opens the row; the loop is a ratchet, not a rite.
The layer discipline is the constitution's: a defect fixed in the kit that belongs in the world will recur in the next game; a defect fixed in the world that belongs in the kit taxes every room. Each cycle's fixes are classified out loud (the ledger row names the layer), and the enumerated-list debts (firewall families · sweep exits · promise words) stay tracked in the maintenance routine.

3 · Known entering defects — the loop starts mid-story

defectevidencelayer · the designed fix
The silent board (ledger 41, OPEN)reproduced in sim-20Q (0 rows over 6 questions) AND sim-卧底 (board unmoved after an elimination) — a kit law cannot carry a silent omission; the promise check needs wordsworld · THE ROW-LAG CUE: the world holds both timestamps (counters/eliminations moved N times since the board's text last changed) and states the disagreement at the wake door. Mechanical, any tally game, no content sniffing
The deal-family speech doorroom 8f01: a speech-written <roll away/> tore up a live deal (the firewall's walled families never included deals)world · the firewall walls deal arms + aways from speech; the act call stays the lawful door. Gates: the legacy deal pins run bracketed, exp cells, controls
Setup-deal reliability1 of 3 sim setups armed no deal in the first beat (the others dealt cleanly)measure first — raise N before judging; may be the same silent-omission family

The 20Q cycle will meet the first of these immediately — the loop's first fix stage is expected to build the row-lag cue against a reproducing sim, which is the right order: the defect reproduces on demand before the fix is written, and the same sim proves the fix.

4 · The model economy — the secondary goal, made a table

rolemodel todaycost share (gameroom audit)candidate movegate
panel speechpro~42%stays — the voice is the product
act call (hands)pro (cache lever −38%)~45%stays — flash measured worse on composition (drift, bare-letter options, public run sheets)re-open only on a new flash generation
verify tailpro~10% of act spendflash — a mechanical does-the-table-match checkA/B on the verify's fix-rate + false-fix rate
floor producerpro (v1p)~12%flash (the recorded v1f re-test) + the cache-shape passhold/stage accuracy + controls
prop masterflash-0731~2%done
sim brains + UX judgeflash(harness side)done
promise confirmflash<1%done

Each cycle's report prints the room's per-role spend and wall time, so the economy is measured continuously rather than audited occasionally. The FP/prop cache-shape pass (the proven −38% playbook applied to the two remaining volatile-prefix calls) rides whichever cycle first touches those prompts.

5 · The games, in order — the scoreboard

#gamestatuscyclesnotes
1二十问 (20Q)PLAYABLE — cycle 1 closed 2026-08-01(classic)· cycle 2 closed 2026-08-05(cartridge)2cycle 1: every door a human can walk through exercised live: invoke · play at N=4 and N=1 · wrong guess(box stays sealed)· RIGHT guess(box opens on the spot)· 20-question exhaustion(run twice)— all clean under the full referee; 31 rooms, ~10 world fixes. Cycle 2(§8)took it onto the device and answered the owner's seal-vs-reveal report: the house draws before the rules speech, every exit opens the box, and an ending line that names a word the box never held never reaches the room
2谁是卧底RUNNING — auto-started per the owner's directivethe full-game referee drives BOTH mechanical END doors(A: the spy falls, faces same · B: two left, cards open)at N=4 + door A at N=3, with every check 20Q earned; exit = two consecutive clean sweeps
3问答之夜 (quiz)queuedthe frozen-tally residual lives here
4大话骰queuedper-player cups + the rename-and-land law get their workout
5两真一假queuedround-2 parity's remaining seam (the swapped teller's box)
6真心话大冒险queuedthe least instrumented; mostly social — the UX lens leads

6 · 20Q · cycle 1 — the concrete first execution

  1. Rules research. Authoritative sources for Twenty Questions (the classic parlor rules; the animal/vegetable/mineral opening taxonomy; the handling of ambiguous answers; multiplayer turn conventions; the guess-cost rule) — cross-checked, forks noted as DIALS.
  2. The kit rewrite, GM-as-reader. The current kit is a good outline; the rewrite makes every step mechanical and every obligation single-homed: the answer ladder (是/不是/说不清) with worked ambiguity examples; the board row as PART of the answer (kept), plus what to do when rows are found missing (backfill, from the record); the count as the board's business with the exact tick pairing; the endgame's two doors (right guess · the twentieth) each as a numbered sequence ending in the reveal; multiplayer turn order as a declared DIAL. Length is not the goal — reachability is: each rule sits in the section the GM reads at the moment it applies (the dilution law governs placement).
  3. Sim configs. N=1 (the solo guesser — the commonest real shape), N=2, N=4 (turn order + the free-for-all DIAL). The troupe's 20Q script grows: patient watch (done) · per-question board-row assertion (done) · a deliberate wrong guess mid-game (costs one question, game continues) · the twentieth-question exhaustion path in one config · the reveal-before-verdict order checked from the event ledger.
  4. Analysis. The four tests + 20Q-specific checks: count honesty (已问/剩余 vs the actual question count), answer consistency (rulings vs the sealed word — the referee reads the record), the row law, the reveal ritual. The flash judge's player-POV read on every run; flags human-verified.
  5. Expected first fixes. The row-lag cue (world) is the anticipated cycle-1 build — reproduced first, then built, then proven by the same sim. Harness soundness items as they surface (exception counts printed per run).
  6. Exit. Two consecutive clean runs at N=1 and N=4 → the scoreboard row flips green → 卧底.
Budget honesty: a troupe run is ~$0.10–0.20 and ~8–15 min wall; a cycle (sim + fixes + re-sim ×2–4) lands around $0.5–1 per game plus the fix work itself. Six games ≈ $5 of API across the whole program — the owner's manual four-seat session cost more in time than the entire loop costs in dollars. Measured in cycle 1: a full N=4 room costs $0.0135 (20 pro + 8 flash calls; cache reads 12× writes — the cache lever visible), ~3 min wall; the plan's estimate was 10× too cautious.

7 · 20Q · cycle 1 — RESULTS(closed 2026-08-01)

Sixteen sim runs. Exit first claimed on rooms 0d12–48fa — then the owner found wildcard artifacts in three of those「clean」rooms, the exit reopened, and three more defects fell(including a real spoken leak the widened referee caught on its first look). Exit re-met on rooms ba10 · 113d · c98b · fe80: two consecutive clean pairs at N=4 and N=1 under the full referee — rows in both table dialects, zero tagged artifacts, the sealed word nowhere public before the reveal, judges clean, zero harness exceptions. Every fix was reproduced by a sim before it was written and proven by a sim after — except the one a human had to find first. What went wrong, in plain words:

what went wrong(symptom)root causethe fix
The host answered six questions and the counters moved — but the whiteboard stayed empty. By the end she was miming writing the board in prose.Under the turn split, speech may move a counter but may not write the board. The one speaker who knows the Q&A had no legal way to put the row down.A row is now a small operation, like a counter tick: <board append>新行</board> adds a line from speech. Full rewrites still go through the hands.
When the server nudged「the rows are owed」, the hands once opened the sealed answer mid-game, and once ticked the counter again instead of writing rows.The act call doesn't hold the Q&A history — woken to write content it never saw, it guessed, and guessed wrong.Defanged by the fix above: rows travel with speech now, the debt never builds, the nudge stays quiet. Watched, not patched.
Rows appeared, then vanished(7 → 4 in one move).The act call sometimes rewrote the whole board from its short memory window — wiping rows it had never seen.While the rows are current, the act call is told plainly: do not rewrite the board this turn.
The same row printed twice on the board.The model sometimes repeats itself, and each repeat landed.A line already on the board is never added again; a write that adds nothing new is ignored entirely.
The harness cried「row law broke」over a correctly-played game.The test expected one row per scripted question — but a 不适用 answer writes no row and costs no question, by rule.Harness fix: compare rows against the room's own 已问 counter — the law itself — not the script.
已问 ran to 13 after five questions. The host's spoken count stayed right; the card drifted, and she hand-corrected it mid-game.One tag in the model's output could be read by two or three different collectors(the reply text · the raw-text salvage · the hands echoing the speech), each landing it again.Each tag counts once — a duplicate seen by a second collector is dropped. This likely ends the long-standing intermittent count drift, in every game.
Caught by the owner, not the referee: document bubbles full of raw tag code appeared in three rooms scored CLEAN — and inside two, a run-sheet showed the sealed answer in plain text, six bubbles deep in one room.The de-duplication fix above skipped those bubbles instead of deleting them, so they rendered unstripped — and the referee never read the document channel at all: 「clean」meant「clean where it looked」.A tag-source bubble is deleted outright, never rendered; a run-sheet inside a bubble routes to the host's private pad. And the referee now FAILS any run where a bubble carries tag code or the secret appears anywhere public before the reveal.
The widened referee's first look then caught a real slip: the host ruled「不适用。滑梯不会飞」— speaking the sealed answer mid-game.Explaining WHY a question doesn't apply pulls the word out of the model's mouth — the known hard-leak shape, now on camera in a live room.THE SEAL MASK: the sealed text cannot leave its creator's mouth while the box is closed — the room record shows ▢▢ and the host is told. A guesser saying the word is a guess and renders; the reveal turn renders whole. Plus one kit line: say 「它」, never the answer.
The referee cried 0/6 over two rooms whose boards were perfect.The model writes its table in two dialects(「| 1 | q | a |」and the bare-pipe「1 | q | a」); the referee only read one.Harness fix: both dialects count — which was the wrong call; see the next row.
The ship-readiness probe(the owner's question): the two endgame doors — a RIGHT guess and the 20-question exhaustion — had never been exercised by any sim. Both failed on first contact.Right guess: the box opened but the victory line rendered「就是▢▢」— the seal mask's reveal-skip only knew one of the two reveal doors. Exhaustion: 剩余 hit 0 and the room just sat — a chip reaching its floor was a world event nobody cued.The mask unveils BOTH reveal doors(content form + act-op). THE ZERO CUE: a dec landing a counter at 0 wakes the room with the fact, once per handle — the kit's rules say what zero means.
One exhaustion run went totally silent: 30 answered questions, zero ticks, zero rows — and no cue ever fired.The row-lag cue measures a DISAGREEMENT between chips and rows; when both stand still it reads as consistency.THE STILLNESS CUE, its blind-spot companion: N guest turns with nothing moved on the table, stated once per streak as a fact —「your own run sheet knows whether that is right」.
A finished-but-unrenderable board hid one more way: piped lines with no |---| separator printed literally(the owner's second screenshot).Markdown needs header + separator to see a table; the normalizer fixed edge pipes but never guaranteed the separator.A multi-line piped block missing its separator gets one inserted after the header; the referee requires pipes AND separator.
The owner's screenshot: the board rendered as literal text on the phone — pipes and dashes on screen — in four rooms, two of them scored clean.The bare-pipe dialect isn't a dialect to a markdown renderer: without leading/trailing pipes the table doesn't parse. Accepting it in the referee verified the intent, not what a user sees.The server keeps its panel renderable: every table-shaped line normalizes to proper piped form at write time(separator rebuilt, columns reconciled); non-table boards untouched. The referee now fails any board that would render broken.

Where the fixes live: everything above is a world or harness fix — every board game inherits them(the spy scoreboard's stale-board failure is row one of this table, pre-healed). The 20Q kit needed no edits after the cycle-0 rewrite, and nothing was fixed in a persona. Deep write-ups: defect ledger rows 41–44.

The run log — every room console-reviewable

runroomrows kept pacewhat it taught
1 · N=4f0cd0/6the row-lag cue fired and produced the first mid-game backfill — and exposed the structural half: counter ops pass from speech, board writes wall as arms. The woken hands, lacking the Q&A history, revealed the sealed answer at Q7
2 · N=401696/6THE ROW DOOR<board append> = rows are ops, the tick's sibling)works live; wrong guess correctly refused with board-based reasoning
3 · N=16d4e6/6the act call's full rewrites CLOBBER appends(rows 7→4 in one arm); the repeat wobble lands a row twice → the CURRENT clause + append dedup
4 · N=4e0a14/6**harness false-FAIL: two legitimate 不适用 answers write no row BY RULE — the referee now reads the LAW(rows vs 已问), not the script index
5–63217 · a84acounts ×2the law-referee exposed the double collection: three collectors could walk one span(artifact-slice · healer-absorbed tail · hands echo)— 已问 hit 13 by Q5 while the model wrote one clean pair per turn. Two merge laws close it: ONE SPAN ONE COLLECTION · ONE INTENT ONE EXECUTION
7–8 · exit ①0d12 · 2e0c6/6*scored clean at the time — the owner then found wildcard artifacts in 2e0c(and in 9–10): raw-tag document bubbles, one series showing the sealed answer inside a run-sheet. The referee had never read the document channel. Exit REOPENED
9–10 · exit ②d889 · 48fa6/6*same — both carried wildcard artifacts; d889's showed 谜底:章鱼 six bubbles deep. The three-defect unpack: the artifact drop law, the widened referee(artifact cleanliness + the secret nowhere public pre-reveal), and then—
11–12cf28 · 70190/6* · leak*referee dialect false-FAIL(both boards were perfect — the bare-pipe table)— and the widened referee's FIRST LOOK caught a real slip: 7019's host spoke the sealed word(滑梯)inside a ruling → THE SEAL MASK built
13–14 · exit ①ba10 · 113d6/6 · 6/6clean pair under the FULL widened referee: rows both dialects · zero tagged artifacts · the word nowhere public · boxes sealed on wrong guesses
15–16 · exit ②c98b · fe806/6 · 6/6second consecutive clean pair, judges 无 on both. EXIT RE-MET, 2026-08-01
17–18eadc · 72d86/6 · 6/6the renderable-table verification(the owner's screenshot had shown boards rendering as literal text): bare-pipe lines 0 in both rooms, every other check green — the normalizer proven live
19–26 · the endgame probea58d · c0a6 · 3d02 · b942 · ae27 · 5abf · cf28* · 7019*both doors failed firstthe ship-readiness question: the RIGHT-guess and EXHAUSTION doors, never sim-exercised, both failed on first contact(the veiled victory line · the unclosed zero)→ the unveiled doors + THE ZERO CUE + THE STILLNESS CUE + the separator law, each proven by its re-run(*two mid-probe rooms also carried the separator miss)
27–31 · THE CLOSING SWEEP6138 · 47e9 · cb6a · 51d4 · 925dall cleanall four doors on the final build — N=4 · N=1 · right guess · exhaustion(run twice, the thrice-broken door)— every check green. In 51d4 the judge's one lead was the machinery visibly working: the host caught its own missed row and backfilled unprompted. 20Q CLOSED ON EVIDENCE, 2026-08-01

8 · 20Q · cycle 2 — the CARTRIDGE, and the seal that stopped matching the reveal(2026-08-05)

Cycle 1 closed 二十问 on the classic path — the persona hosting by hand. The game then became a cartridge: the server deals, counts and opens, and the host is asked only for moments. This cycle is the first hard look at 20Q on the device, opened by an owner report with a very short description and a very long shadow: 「the persona seals one word and reveals a DIFFERENT word at the end, spoken from its running memory」.

Why nothing caught it. A leak check asks did the host SAY the secret. A fidelity check asks did the host USE it. The exam had both — and still passed this run, because the third question was never asked: did the world ever OPEN the box at all? On the door where it did not, every check downstream had nothing to compare against and reported success.

The three holes, and where the word actually came from

what went wrong(symptom)root causethe fix
The host's whole game answered a word the house never drew. Twenty perfectly consistent rulings, then a reveal that matched the rulings and not the card.The category was invented before the word existed. The seal step rode stage=after-speech, so the opening moment asked the host to name the word's broad kind「read off your own card once it lands」— off a card that had not landed. It invented one, and every ruling after it was anchored to the word it had imagined.The house draws FIRST. Setup is now seal → board → the rules speech. The host reads a real card before it says one word about it. Live proof: the same run that used to say「让我想一个东西——写下来,封好」now says「让系统自己抽一个秘密词,连我都不知道是什么」.
A table that walked away ended with the box still shut. Whatever the host said the answer was, stood.The fold never opened the box. _game_abort published the pile and the cups — the audit law, whose own docstring says it has no exceptions — and left the envelope sealed. The exam's seal_traced then read「nothing was opened this run」and passed.Every exit opens the box. _game_sweep_seals is the cups' sweep, one instrument later: the clean end, the fold, and the cartridge's own reveal step — pinned at three call sites in the smoketest, because the failure mode is subtractive. The fold's own directive now carries the word as a FACT.
Nothing anywhere compared what the host said at the end against what the world held.Three prose prohibitions would have lost, the way every prohibition in this codebase has lost: a directive can shape how something is said; it cannot stop something being said.THE ENDING'S FIDELITY GUARD — the seal mask's twin and its opposite. The mask stops the word leaving the box early; this stops a different word standing at the end. A closing line that does not name what the box held never reaches the room: void, one retry of the same moment, and the open card is the record either way.
Sibling: the box was resolved as「the first seal in the room」.Exactly the cups' 2a5d defect, one instrument later — a stale envelope at the front of the list gets the device stamp, the read and the opening.The box is KEYED by iid at arm, like the cups. And the secret fact is never shipped empty: a fact-shaped hole is precisely what a mind fills from the round.
Sibling: the host reached for the real word inside a qualifier — twice in one live room(the seal mask veiled both, so the table read ▢▢).The moment ruling FROM the card became real, the leak shape came back with it: explaining why an answer is 说不清 pulls the noun out of the model's mouth.One clause, in the ruling's last position: in a qualifier it is 它. Measured before/after on the same live scenario: 2 veiled lines → 0.

The loop, as the owner specified it — and as it now runs

the beatwho owns itproof
Invoked → the house seals the wordthe world(server entropy, before any speech)bench: the house sealed BEFORE anyone spoke — there is a card to read
The host explains the rules and asks for the FIRST question, one bubblethe persona's voice, the cartridge's must-listlive: 「…这东西属于物品…准备好了吗?第一问,来吧!
The user asks → the host ANSWERS AND INVITES THE NEXT QUESTION IN ONE BUBBLEone moment carries both — a second message to invite is in the never-listlive: 「不是。它不会呼吸也不会动…还剩十九次,继续。」
The board updates — one row per question, the count the world'sthe world(the row and the ticks are the ruling's own consequence)bench: 20 rows · 已问 20 · 剩余 0 at the ceiling
A grand ending: guessed right · twenty spent · a foldthe world's END check, or the fold doorbench: all three, each opening the box
The reveal, from the sealthe card opens; the record is the world'sbench: what it published IS what the house sealed · live: card 薯条, line 薯条

The word source — mounted 2026-08-06

The seam prepared above(Room._word_source, the only line in the runner that knows where secrets come from)now serves the persona's own well: the same shipped pool, ranked against the seat's card by a cached embedding(the word pool). Nothing above it moved — same CSPRNG, same apply time, same replace rule, same binding, same reveal. Live, on the same three personas the pool page ranks:

the seattwelve draws through the seam
MrBeast
stunts · spectacle
大锤 · 沙滩球 · 长袜 · 游乐园 · 沙堡 · 宝座 · 胶带座 · 毒液 · 大剪刀 · 红薯 · 水印 · 运动裤
Dieter Rams
industrial design
凹痕 · 凳子 · 烘干机 · 沙发 · 吧凳 · 保温杯 · 床头柜 · 调料瓶 · 注射器 · 脚凳 · 黑莓 · 台灯
Anthony Bourdain
English room
booze · spareribs · parmesan · steak · chicken · pepperoni · kebab · meatloaf · carcass · jambalaya · burger · skillet
⚠ RANKING IS NOT DRAWING — the whole care of the mount. pick() is deterministic: its top item is the same for every game in every room a persona ever sits in, and anyone can derive it from that persona's public card. Taking it would give away the exact property the draw exists to protect — the transcript never holds the secret, so it cannot leak it — by making the secret readable off the SEAT instead. So the seam takes a shortlist(the top 60 of ~2000, this seat's own world)and the CSPRNG still picks inside it, through the same wordpools.draw_from the generic bank uses. One draw, two sources: the entropy, the avoid filter and the without-replacement rule are the parts that carry the security property, and there is exactly one copy of them.

WHOSE WELL — the design call, and it is the ANSWERER's_word_seat → the host — threaded down from whoever armed the draw, with cast[0] only the fallback). Three readings were open and the host wins on three grounds, the first deciding it: ① what is being bought is the persona talking ABOUT the word, and in 二十问 exactly one seat does that for the whole game — a word from a guesser's world is a word the only speaker has nothing to say about; ② merging the cast walks back toward the centre — the build spends a whole stage subtracting the generic component because centre-words rank for everybody and are about nobody(家园 ×75 of 105 personas), and averaging N vectors moves the query straight back there; ③ 「whoever is speaking」 does not exist when it matters — the seal is drawn once, at setup, before anyone has spoken, and must not move afterwards.

Fall back, never fail. No embedding key, no card, no pool, an unknown pool name — every one lands on the house's generic pool, pinned four ways in the smoketest. ⚠ And the fallback is keyed on the vector, not on an empty shortlist: pick degrades to the pool's own FILE ORDER when it cannot embed, which is non-empty and would sail past an is-it-empty test while being the same arbitrary sixty words for every room in the product. A degraded ranking is not a ranking.

Latency is paid off the critical path: the one embedding(~1s, ~$0.00001, cached on disk forever)is warmed in a daemon thread at ROOM OPEN — before the resumed-room return, because a kit mounts on a resumed room far more often than a fresh one, and the mount is the beat the second would have shown in. A cold mount still works; it pays the second inline.

What this is NOT yet. Nothing has been played on it — the flavour above is eyeballing, not evidence. The ranking is unmeasured: nobody has shown that a persona's top-60 beats a random draw from the same pool at the table. If a mounted game feels no different from the generic bank, that is the first thing to suspect. Pairs are the least-reviewed surface and 二十问 draws none of them; that gap matters the day 谁是卧底 mounts.

Where the tests live. Fast loop first: python exam/device_dryrun.py — the bench gained a seal-finish door it never had(so every 20Q scenario had been running against a table where the reveal published nothing — the same blindness as the auditor's)plus two scenarios, q20fold and q20drift. The exam's seal_traced now fails a box that was armed and never opened, which is the shape it used to score green. And the live harness learned the MOUNT LAW: it had never tapped the offer card, so since 2026-08-04 every 二十问 run had been failing at the first assertion and blaming the game.

-ish · the sim loop · the owner's brief 2026-08-01 · 20Q closed on evidence; reopened 2026-08-05 as a CARTRIDGE — the seal, the fold and the ending guard · the 卧底 cycle(16 sweeps, ~10 world fixes)ended in the owner's course correction — the full-game auditor(exam/spy_audit.py)now judges whole ledgers, and the architecture answer is THE GAME DEVICE: process becomes a server-run flow, the persona keeps the voice · siblings: world-events · play-kits · the defect ledger · the exam