Public: anyone can read this; the crew can change it.
The shared danger has no teeth: decide what the rim costs, in the record and in the world #52
Check · Review · Land · Live done — Landed and live in production.
Decided what the rim costs and made the world deliver it. Measured first: with the shipped constants (`SCATTER_KEEP` 0.5, `STUN_TICKS` 30) the rim did not cost anything — against a control of the same lane, same tick, same place, one arrival just over `SCATTER_SPEED` and one just under, the fast arrival came out **ten units of ground ahead**. The shared danger was a shortcut. The rim is now a spon…
shipped production is serving it deploy feb7d92
Sign in to join this conversation.
Decided what the rim costs and made the world deliver it. Measured first: with the shipped constants (
SCATTER_KEEP0.5,STUN_TICKS30) the rim did not cost anything — against a control of the same lane, same tick, same place, one arrival just overSCATTER_SPEEDand one just under, the fast arrival came out ten units of ground ahead. The shared danger was a shortcut. The rim is now a sponge:SCATTER_KEEP0.1 so you always leave the wall slower than you arrived and the nudge back inward (≈8 u/s off a lane) is below a mote's own cruising speed (15.6), andSTUN_TICKS60 — three seconds of thrust, the numberdocs/wake.md, the numbers table and invariant 6 all say out loud. The sea still drags a stunned body, and that is stated rather than incidental: the rim spits you back into the traffic and the lane decides where those three seconds are spent. One arrival is one scatter — a body already paying is beached instead of scattered again, so a lane somebody else keeps building cannot pin a mote in the dark for a round.Invariant 6 is appended to
INVARIANTS(never reordered;src/concept.test.tsnow also pins 1–5 to their opening words so an index cited by a test keeps its meaning) and proven by two tests insrc/world.test.ts:invariant 6: the rim costs a fast arrival seconds and ground, and never the roundmeasures the cost as a difference — 3 s of thrust and 43 units, better than a field cell, steady from +10 s to +25 s — andinvariant 6: one arrival is one scatter…proves the bound. Both fail on the old rim.the sea still drags a stunned motepins the drag rule so it cannot be removed by accident.Invariants 1, 2 and 5 still hold, unchanged:
invariant 1: a lone mote at full thrust cannot cross the arena inside 45 seconds(never touches the rim),invariant 2: a mote in a lane two others built crosses the arena in under 10 seconds(its builders steer out before the wall), andinvariant 5: with nothing moving in it the sea strictly empties, and reaches zero(the rim writes nothing to the field).bun run test: 71 pass,tsc --noEmitclean;/answers in 2.8 ms.The three attacks. Park at the rim and let other people's lanes carry you through the gate for free: the gate is the bloom's door only and the rim keeps every mote in, and the wall strips the outward component of your velocity every tick — parking against it is where speed goes to die, so a lane pouring into the rim banks a parked mote exactly nothing. Ride a fast lane into the rim on purpose to be flung back across the arena: measured, that is now a loss on both counts — what comes off the wall is a tenth of what went in and less than you could swim, and you spend three seconds unable to steer it, which is what the ground measurement in invariant 6 is. Build a lane that scatters a rival at no cost to yourself: this one stays possible and is meant to — but the lane is public water that carries whoever is in it including you on the way back, aiming it at the rim is precisely not aiming it at the gate, and the take is bounded at three seconds per arrival with no way to compound, so the griefer spends the round's only currency, the bloom's progress, to buy seconds.
Not done here: no tuning pass against real play (#11 owns that) and no drawing or teaching of the rim (#10, #11) — this decides the cost and the words, and leaves the constants sitting under an invariant that will fail if they drift.
🤖 Generated with Claude Code
Closes #42