Wake's own weakness, named in #2 and again in #11's risk: with nobody else in the round the sea is
flat, the bloom ends where it started, and the first visitor — the common case for a new app — has
nothing to do. Answer it without ever faking another player.
The rule this issue must not break. The map is made of other people. So the answer is other
people displaced in time, not other people invented: the sea keeps the lanes earlier rounds left in it.
Arriving alone means arriving into a current somebody really did stir, hours ago.
Done looks like
[ ] A round opens with its field seeded from what earlier rounds left: the last round's field, decayed
hard, written back as the opening state. Stored as one small blob through an action from #6 at
round end and read once at round start — never at 20 Hz, never a row per tick.
[ ] The seed is decayed far enough that a live lane always beats an inherited one: a test asserts the
strongest inherited cell is weaker than a lane two live motes built in five seconds.
[ ] Nothing is invented. No bot mote, no simulated name, no roster entry that is not a connected
person. A test asserts the roster length equals the number of connected players, and the pull says
plainly that no fake player was added.
[ ] A lone round is honest about being one: the page says how many people are in the sea and says
"just you" without it reading as a failure. The pull decides and writes down whether a lone player
can reach the gate at all, or whether the round ends on the clock with the bloom short of it and
the score measuring the distance moved.
[ ] Inherited current is visibly distinct from live current on the canvas — older, dimmer, whatever
#10's language allows — so nobody mistakes a ghost lane for a person who is there.
[ ] Tests: a cold boot with no stored field starts flat and throws nothing; a stored field is loaded,
decayed and bounded, so #2's fifth invariant (no energy from nowhere) still holds across the seam;
a corrupt, oversized or wrong-shaped blob is refused by validation and the round starts flat
rather than crashing the loop.
Risks This is the issue most likely to drift into faking company, which is why the acceptance
forbids it in so many words. The seam between a stored field and a live one is where the conservation
invariant is easiest to break — test the seam, not only the steady state. The stored blob is untrusted
input the moment anything but this process can reach the file, so validate its shape and its size
before it becomes world state. Wait for #5 and #8 to settle their constants before tuning the decay.
Fits Vesper's brief for the field and the seam, with Quill on how the page says "you are alone here"
so that it sounds like an invitation.
Wake's own weakness, named in #2 and again in #11's risk: with nobody else in the round the sea is flat, the bloom ends where it started, and the first visitor — the common case for a new app — has nothing to do. Answer it without ever faking another player.
The rule this issue must not break. The map is made of other people. So the answer is other people displaced in time, not other people invented: the sea keeps the lanes earlier rounds left in it. Arriving alone means arriving into a current somebody really did stir, hours ago.
Done looks like
hard, written back as the opening state. Stored as one small blob through an action from #6 at round end and read once at round start — never at 20 Hz, never a row per tick.
strongest inherited cell is weaker than a lane two live motes built in five seconds.
person. A test asserts the roster length equals the number of connected players, and the pull says plainly that no fake player was added.
"just you" without it reading as a failure. The pull decides and writes down whether a lone player can reach the gate at all, or whether the round ends on the clock with the bloom short of it and the score measuring the distance moved.
#10's language allows — so nobody mistakes a ghost lane for a person who is there.
decayed and bounded, so #2's fifth invariant (no energy from nowhere) still holds across the seam; a corrupt, oversized or wrong-shaped blob is refused by validation and the round starts flat rather than crashing the loop.
Files
src/round.ts,src/world.ts,src/db.ts,src/actions.ts,src/round.test.ts,src/page.ts.Risks This is the issue most likely to drift into faking company, which is why the acceptance forbids it in so many words. The seam between a stored field and a live one is where the conservation invariant is easiest to break — test the seam, not only the steady state. The stored blob is untrusted input the moment anything but this process can reach the file, so validate its shape and its size before it becomes world state. Wait for #5 and #8 to settle their constants before tuning the decay.
Fits Vesper's brief for the field and the seam, with Quill on how the page says "you are alone here" so that it sounds like an invitation.