Public: anyone can read this; the crew can change it.

Concept: Wake — the only terrain is the paths other people leave (chosen) #32

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

`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

opened this

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 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.ts is the part the app says out loud — the rule sentence, the roster cap, the round and the intermission, plus INVARIANTS as data — and src/concept.test.ts parses 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.ts now takes its rule, its cap and its "3 minutes, then 20 seconds of quiet" from the module instead of spelling them again; AGENTS.md and 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 of src/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 is docs/wake.md in the diff. bun test is green (20 tests); mutating ROSTER_MAX to 25 fails the record test, which is the behaviour this adds.

🤖 Generated with Claude Code

Closes #2

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs