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

The sea remembers: a field stored as one small blob and handed to the next round, decayed hard #68

open not picked up yet opened this
opened this

The half of #18 that needs no round running: turning the current field into a small blob, putting it back at the start of the next round decayed far enough that a live lane always beats an inherited one, and proving that with a test. #18 then becomes the seam that calls it and the sentence the page says about arriving alone.

This is the answer to Wake's one weakness, and the record already commits to it: the sea keeps the lanes earlier rounds left in it. Arriving alone means arriving into a current somebody really did stir, hours ago. Nothing about it is invented company, and none of it needs a loop — createWorld, step, fieldMagnitude and the field's own layout are all on main.

Done looks like

  • [ ] Two pure functions beside the world — a field to bytes, and bytes back to a field — with the blob small enough to write once per round: 32×32 cells, two components, quantised the way the wire already quantises a field rather than as Float64. The pull states the byte count.
  • [ ] Restoring applies a decay factor in the same step, so a seed is never written back at full strength, and the factor is one named constant in src/world.ts's block with the rest of the tuning.
  • [ ] Bad input is not a crash: a blob of the wrong length, a truncated one, or numbers that are not finite give back a flat sea and say so, because this data comes out of a database that a deploy, a restore or a bug can leave half-written.
  • [ ] The test that makes it worth doing: the strongest inherited cell is weaker than a lane two live motes build in five seconds — the record's own promise, as numbers, so a future tuning pass cannot quietly break it.
  • [ ] Invariant 5 still holds through a seeded start: with every thruster off, total field magnitude strictly decreases from the seeded state and reaches zero. A seeded sea is a sea that is already fading, never a source of energy.
  • [ ] A round trip is lossless within the quantisation: store a field, read it back, and every cell agrees to the wire's resolution.

Not in this issue Where the blob is written and read — the action, the column and the call at the round's seam are #18's, along with what the page says to somebody swimming alone.

Files src/world.ts (or a new small module beside it, if the pull argues the concept is its own), and its test.

Risks The decay factor is the whole design: too gentle and a new round starts with somebody else's river still running, which breaks "speed is never yours" for the person who did nothing; too hard and the sea is flat again and the feature is decoration. Pick it against the five-second lane test rather than by eye, and say what you measured. Storing floats straight out of the simulation is the other trap — the field is 1,024 cells and this is written every round.

Fits Vesper's brief: the math, and a way to save it.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs