Round 5 (MEGA) per lanes/LANE-SIM.md.
- THE RELIC: one optical fossil per world, position a pure function of the
seed, 18-28 tiles out, never on a seam, never under the demo. excavate
within a tile uncovers it; it stays found through save/load forever.
Folds into DATA's relicReserve when the seam map supplies one
- wildlife v1: piles grow from dust a machine is BACKED UP on, not dust
merely present -- belt your dust away and nothing ever hatches. First
cut grew from raw held and the tidy factory still bred 56 swarms; the
asymmetry is the whole mechanic. Swarms drift to production machinery
and slow it; traps are recognised by recipe shape (no inputs, cans a
swarm) so DATA's real trap needs no code. SWARM_MAX caps a plague at 8
-- a permanently jammed machine bred 29 in one demo run
- seams: extractors idle with 'no seam' off-ore. Consumes DATA's real
seams.json shape, defensively -- GameData.seams still needs wiring
- research takes time: RESEARCH_TICKS_PER_PACK, stepped whole packs; two
labs measurably halve the wait (200 ticks vs 260)
- grantResearch: idempotent, save/load safe, verified through the live bus
- reference v5: a second works on the eastern seam that researches a tech
at tick 1235. Separate from the melt line by choice -- the western
floorplan has no columns left and threading three ingredients through it
would make the melt regression hostage to the science
Melt still first at 1247, still shipping at 20k, zero brownout ticks,
179/179 placements legal, zero extractors off-seam once seams are wired.
99 sim tests, 446 across the repo. 63x realtime at 3,500 entities.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Round 4 per lanes/LANE-SIM.md.
- research v1: kind:'lab', setResearch, snapshot.research, 'researched'.
Gating: any id a tech unlocks is refused until that tech lands; ids no
tech names are free forever. Labs take only what the active tech still
needs; several labs feed one total; research survives save/load as a
RULE, so a restored save can still build what it unlocked
- realtech.test.ts: a cold-start research run on DATA's own tree -- ore ->
packs -> archaeology lab -> tech -> a refused recipe now accepted. Also
the tripwire if the tech bootstrap ever closes over again; it was
circular and unenterable at the start of this round
- spatial cooling: coolRadius, chebyshev from the footprint, auras sum,
total capped at HEAT_COOL_MAX (0.05 -- past that a stack buys nothing
but still costs bandwidth and floor). Proven by measuring shed rate
- src/sim/constants.ts: 12 constants so DATA imports truth instead of
hand-copying numbers that go stale in silence
- reference v4: anchor-slab overflow tap, so the demo ships slabs (18 per
20k). Needed TWO melt lanes: with one, melt spills onto the slab lane
and the splitter phase-locks with the reactor's push order -- slab to
the assembler, melt to the uplink, forever, and no slab ever sold. It
passed 20k ticks looking perfect. referenceFactoryTech() derives the
techs the layout needs, from the commands
- also wired: bandwidth.capacity, EntityState.scrammed, commissionQueue
65 sim tests, 318 across the repo. Melt still tick 1248, zero brownouts
over 20k.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>