This is the test script my household runs against its own mission control: six checks, each naming who acts, what to do and what PASS looks like. O is Oleg. R is Roman. Every family test runs from a phone, because the phone is the device the family actually holds. The laptop appears once, at the very bottom, fenced off for the operator. The people the system serves are the ones testing it, which is the only QA that counts.
The system under test was built between 2026-08-01 and 2026-08-03, three days old when this script was written on 2026-08-03, before its first run, so nothing below is a result. It was rewritten the same day, and the reason stays on the page: the first draft handed O terminal commands as if they were family tests. The house rule that forced the rewrite: a family app is tested from the family's own device, the phone. Whatever needs a terminal is operator work and now sits in a fence at the bottom. Every failure the run finds is a deliverable, not an embarrassment. When the first run happens, its outcome will be published here.
One value is deliberately not printed on this page. A notification topic name is a bearer key: whoever holds it can read the stream and post into it, so the script points at the private setup note instead. Everything else is here in full.
The old step three, a laptop paste that turns on the recurring pushes, was operator work wearing a family costume. It now lives in the operator fence at the bottom, and on the morning of 2026-08-04 the operator landed its turn-push half: installed and loaded, though not yet watched through a single quiet interval. T3 starts after that first watched interval, not before.
Run them in order, every one from a phone. The tick under each test saves only in this browser, so a stranger reading this page always sees an unticked list. The record that matters goes to the assistant in chat, per the reporting section.
R opens cases.senku.im on his phone. O still has no move here, but the reason changed on 2026-08-04, and the old sentence stays because corrections live on this page: it used to say his phone turn view does not exist yet. It exists, inside his own Decisions app, and that morning it was proven end to end: the board sealed his turn into an encrypted feed and the operator decrypted it back independently, one card on his turn, three running on stated defaults, R present only as a count, and the count was zero. What his phone shows is still nothing, honestly labelled: the deployed app holds no decryption key, so the live view answers not yet connected. One command places the key, a one-line environment grant into the deployed app; the assistant's own tooling refuses to run it for an agent, and both ends of that key are set by O's hand. Until then his turn reaches him as Compass pushes only, and the stand-in command stays in the operator fence, not with him as a player.
R picks one of his six questions and posts his answer to his own topic from his phone. That topic is deliberately not on O's phone, so O never reads R's stream directly; he tells the assistant in chat, also from the phone, and the board recompiles. What O then confirms is the board speaking: the turn change landing on his phone as a Compass push. Whether the question actually moved on the board is confirmed in the operator fence afterwards, by the operator, not by the players.
With the operator's unlock step done (see the fence below), both do nothing. The notifier speaks only when the set of things-on-your-turn changes, never on a timer. Then O answers or changes something real.
Both open board.senku.im on their phones. R hunts for any trace of himself: name, his questions, when he was last active, anything at all. O hunts for the family.
The public board claims a reader gets the state of the operation in about ten seconds. Test the claim: both open board.senku.im together, and each says out loud, with no help, where the bottleneck is and what is waiting. This test replaced a laptop ritual, which was tooling, not family; the ritual lives on in the fence.
Both read the mission page with one question each: does it claim anything we have not actually seen work today?
Every FAIL, every oddity, every "this felt wrong" goes to the assistant in chat, one line each, from the phone like everything else. That channel is the bug tracker; the board's current round of fixes all started as exactly such one-liners. After the first full run, this page gets its results section: what passed, what failed, what got fixed.
Why a family checklist is public at all: the house rule is that everything built here gets a public page, and a QA script is a thing that was built. The three redactions on this page are pointers, not holes. A household that wants to test its own board can copy the shape whole: two players, six phone tests, a named PASS for each, an honest list of what cannot be tested yet, and a fence that keeps operator tooling out of the players' hands.
Everything below needs the laptop, and none of it is the family's job. The assistant runs these, or Oleg wearing the operator hat, never Oleg as a player. If a family member is ever asked to type anything in this list, that is a bug in the process, and it gets reported like any other FAIL.
node bin/whose-turn.js oleg in the project repo. Expected, as sealed and measured on 2026-08-04: exactly one card on his turn and three more running on a stated default. Which card it is stays off this page; he will know it when he sees it.node bin/standup.js should show R's answered question moved. Then node bin/standup.js --mark sets the new baseline, and node bin/groom.js should propose nothing to kill. If it proposes something, it goes to the family in chat as a question, never as a done deed.