The owner's move 4, 2026-07-31: 「introduce "play kit" (stored in "kit shelf") … so users don't need to hand prompt the persona for a game and forget to mention some rules … same idea of "skill".」 A kit is a game's RESEARCHED rulebook as a file — prototype/kits/*.md, repo-authored like personas, read live. Loading one is a room fact: everyone sees the capsule, every later turn holds the rules.
| section | who reads it | how it travels |
|---|---|---|
| HOST BRIEF — the game as prose: phases, win conditions, the standing rulings, and every genuine variant marked as a DIAL the host declares out loud | the PANEL(the speech call) | appended ONCE to the dialog as its own block — append-only, §8 cache-safe, in every later turn's prefix |
| TABLE SPEC — the recommended card settings per phase, in the act call's own vocabulary(kind=deal · draw="pair" · deck=["?1","?1","?2"] · deck_seen="dealer" …) | the ACT calls(phase 2 + the verify tail) | rides the act context only while the kit is active — paid on prop turns only, never on conversation |
#kitScrim, the same object as the board's, the pad's and the timer's: .modal-scrim.poll-scrim + .modal.poll-modal, so it is a centred 560px dialog on wide and a full-screen page on a phone, with the ‹ / × pair, the foot and the back-gesture entry every other tool sheet carries. The tile on the tool drawer is its door(a rulebook, deliberately not an instrument). It was a list SWAPPED INTO the drawer with its own back arrow and its own 52vh scroller nested inside the drawer's — two scrollports for one list, so a flick moved whichever one the finger landed on. ⚠ It carries no header commit verb, and that is its one real difference from its siblings: this sheet commits PER ROW, so a header verb would have to mean「the one I have highlighted」— a selection model a shelf does not have.DELETE /api/rooms/{id}/kit, the same door policy as putting one on(any member; the capsule names who). The brief cannot be un-said — the dialog is append-only and §8-cached — so the take-off is another append-only block that RETIRES it, and self.kit going empty is what actually stops the TABLE SPEC riding the act call. Whatever the kit already put on the table stays: those are the room's objects now, and a rulebook leaving is not a reason to sweep the table.rep.kit and is reconciled exactly like the board and the clock, cleared by resetRoomTools() at the moment the room identity changes. It had been a bare client variable written only by a kit_load turn and the live event, so it had no way to become EMPTY: leave a room with a kit for one without, and the shelf still said「已上桌」. Same shape as v660's wandering top bar, one subsystem later — clearing state as a side effect of new data arriving only covers the rooms that HAVE data.#tsPanel, showing the kit that is on THIS table(name · blurb · players)and the one verb that takes it off. v662 had it jump straight to the whole shelf, borrowing the pad's reasoning(「there is nothing to glance at」), and the correction is that there is: which kit is in front of you. A menu is something you go looking for; a chip tells you what is already there. The drawer's tile remains the door to the shelf..kit-row the shelf draws(it had been one line of prose with a button under it: one object in two shapes, and the shape you could act on was the thinner). Under a rule, the list is what you could put on instead — the running kit is not printed a second time, and while one is on the table every other row's 上桌 is greyed, with a line saying why. The silent swap-on-tap is gone: you take one off, then you put one on. The verb also moved onto the name's line, because three lines of blurb between「which kit」and「the thing you press」put the button for the row you were reading below the fold on a phone.kit_unload).These six are the games. Since 2026-08-07 the shelf also carries a seventh kit that is not a game — 诘问, the interrogation — which declares kind: utility in its header and boots its own engine instead of the game device. The header field is what lets the sheet split the two without opening a kit.
| kit | tools | the rule work worth naming |
|---|---|---|
| 谁是卧底 | deal · vote · board | canonical: 4–7 players → 1 spy, 8–9 → 2; the end is a three-way check after every elimination — all spies out(civilians win)· all civilians out(spies win — no spy bloc exists, the spies don't know each other)· two players left with a spy among them(spy wins; 1v1 can only tie)— the owner's partition, 2026-08-01; tie = next round; while any spy lives the voted-out player reveals NOTHING. |
| 大话骰 | roll · board | canonical: 1s are WILD by default; 斋 turns wildness off, 飞 cancels 斋 at 2× the count(the profile had this inverted — the research caught it); attrition vs fixed-rounds is a DIAL. |
| 二十问 | deposit · board | the answer is the house's draw, sealed before question one; 是·不是·说不清; the box opens publicly either way — a win nobody can verify is not one. |
| 问答之夜 | vote · board | the iron rule: the ballot CLOSES before the answer is spoken; length declared before question one; a tie gets one sudden-death question. |
| 两真一假 | deposit · vote · board | the storyteller SEALS the lie's number BEFORE guessing opens — the proof the original broken 2T1F room lacked; the box outranks anyone's memory at the reveal. |
| 真心话大冒险 | spinner · clock · board | the wheel picks, never the host; limited skips are a declared DIAL; the safety line is said up front and a stop always just moves the wheel on. |
isaac-newton — a persona with zero GM training — hosted 谁是卧底 twice, same script. With the kit: the house-drawn pair dealt sealed, a real ballot, the whole pile turned over mechanically at the end, the spy named — by the book. Without it: reveals PANTOMIMED in speech(「翻牌。灯笼。」), the game state contradicted mid-bubble, an unusable hand-written ballot refused by the parser. Same persona, same lines — the kit is the difference between a host and an improviser.