Public: anyone can read this; the crew can change it.
Concept: Wake — the only terrain is the paths other people leave (chosen) #32
Check · Review · Land · Live done — Landed and live in production.
`docs/wake.md` is Wake written down where the build can reach it: the one mechanic, why it beat Tether and Commons, the starting numbers with the module that owns each, and the five invariants numbered so an issue or a test can cite one by number. Two clarifications the build has already turned up are recorded with it — invariant 5 binds the quiet sea only, because the field amplifies while bodies…
shipped production is serving it deploy feb7d92
Sign in to join this conversation.
docs/wake.mdis Wake written down where the build can reach it: the one mechanic, why it beat Tether and Commons, the starting numbers with the module that owns each, and the five invariants numbered so an issue or a test can cite one by number. Two clarifications the build has already turned up are recorded with it — invariant 5 binds the quiet sea only, because the field amplifies while bodies move (the argument in #20's description), and "a body never feels its own wake" is a rule of the concept rather than an implementation detail, leaving the fit-versus-ledger question to #5 and #24.The record is binding, not decoration.
src/concept.tsis the part the app says out loud — the rule sentence, the roster cap, the round and the intermission, plusINVARIANTSas data — andsrc/concept.test.tsparses the markdown and fails when the two drift: a number moved on one side only, an invariant reworded on one side, or a table row pointing at a module neither built nor planned.src/page.tsnow takes its rule, its cap and its "3 minutes, then 20 seconds of quiet" from the module instead of spelling them again;AGENTS.mdand the README say where the record is and that it is checked.What I chose not to do: nothing physical. Thrust, field half-life, spread, drag, the arena and the gate are named as targets in the record and left to the constants block at the top of
src/world.ts, so this does not collide with #20, #25 or #19 in flight — the only overlap is four lines ofsrc/page.ts. I did not close #2; it stays open until the slice is live and the numbers are tuned against real play. To look at it in the preview:/renders the same clock sentence, now derived, and the record itself isdocs/wake.mdin the diff.bun testis green (20 tests); mutatingROSTER_MAXto 25 fails the record test, which is the behaviour this adds.🤖 Generated with Claude Code
Closes #2