Somebody rewrote what the cabinet tells you.

what changed

The board says whether nobody has flown or nobody has built the book, which are different evenings.

ui

XXXIchapterv31David Friedrich09 August 2026 · 15:44

painted for this chapter

what happened

The splash screen learned the difference between nobody having flown yet and nobody having run the book, which turns out to be the difference between two quite different evenings.

landed as “The board panel stops saying "empty" when it means "never built"”

the numbers

the commit, drawn

1 sector on the scan, drawn as the thing it is; nothing moved but numbers, and the sights are on src/ui/board.js.

meanwhile

While v31 was on the cabinet, David Friedrich changed the rules.

landed as “The strip fills itself in, and the labels are the book's own buckets” — 09 August 2026

The rules themselves were altered: a pull request arrives knowing three things about itself that nobody should have to type - who is flying it, who has been asked to look, and what it is about - so .github/workflows/strip.yml now assigns the author, requests a review from the owner, and puts the labels on. The labels come out of tools/labels.sh, which reads the same buckets the book's kindof() draws with, so the tags on a pull request and the glyphs on its chapter cannot disagree. The first draft of that file spelled the game's paths out and tools/lockstep.sh refused it on the spot, which is the check doing exactly what it was built for; it asks tools/chronicle.sh now. The strip runs on pull_request_target because it needs a token that can write a label from a fork, and it is safe there for the reason the referee is not: it never checks out or runs a line of the branch's code.

While v31 was on the cabinet, David Friedrich changed the rules.

landed as “main takes pull requests now, and so does the ground crew” — 09 August 2026

The rules themselves were altered: GR7 already said the history is not editable. It now also says main is not pushable - work happens on a branch and arrives as a pull request, merge commit only, for everybody including whoever owns the cabinet. Two readings as usual: the pre-push hook refuses every push to main with the branch-and-pull-request commands in the refusal, and the remote's "main is the scoreboard" ruleset requires a pull request with no bypass actors at all. Github would not sell a bypass for the Actions app on a user-owned repository, which turned out to be the better design - the book's workflow now branches, files, opens its own pull request and merges it, so the rule has no door in it for the machines either. The pull request template ends the way a turn at the keyboard ends, a fresh ship and all, because these are public and somebody who has never pressed ENTER here will read one first.

While v31 was on the cabinet, David Friedrich changed the rules.

landed as “The turn learns what a refusal is, and who else is in the room” — 09 August 2026

The rules themselves were altered: the blocks print when a turn settles rather than only when it commits, since a refusal is as finished as a landing and is the turn where the move matters most. Adds a fifth block for what the work does to the other pilots, which is GR8 with nowhere else to appear at the moment it becomes true.

While v31 was on the cabinet, David Friedrich changed the rules.

landed as “A tape you did not fly is not a tape, and the sixteenth rule says so” — 09 August 2026

The rules themselves were altered: the seal has only ever proved that a tape was not edited after the ship went down - never that there was a ship. Everything downstream of it assumes a person flew: the GR14 meter, the board, the flight log, the ambush reel that credits somebody's trap with a kill. That assumption rested on nobody having thought to ask for a tape rather than earn one. GR16 writes it down as a red line: the game writes tapes and nothing else does, no override, with the honest way out named in the same breath - a GR14 override costs one on the tally and is true, which a manufactured tape is not.

While v31 was on the cabinet, David Friedrich changed the rules.

landed as “The turn ends by telling you what to do about it” — 09 August 2026

The rules themselves were altered: how a turn ends - what changed, what the pilot gained, what the field is charging them, and the move. Only on a turn that landed something, only the blocks that have something to say, headings rather than bold so they survive a wall of output, and a ship flies over first.

While v31 was on the cabinet, David Friedrich changed the rules.

landed as “The collection rebuilds before it seals, because the referee reads a merge too” — 09 August 2026

The rules themselves were altered: no rule moved - the order of two steps that were already both happening, and a line of advice corrected to match what CONTRIBUTING and the referee now both say.

While v31 was on the cabinet, David Friedrich changed the rules.

landed as “The ground crew's errand stops being handed to the pilot” — 09 August 2026

The rules themselves were altered: what may happen without asking, narrowed to the case where there is provably nothing to ask about - a commit the book does not call a person's, on a clean tree. Everything that needed a pilot before still gets one, and the collection says so afterwards rather than going quietly.

Drop a coin in this one: git checkout d839684c