← Rhizome (the runs, the paper, the checks)
Lay the ground in pane 1 and lock it. Pane 2 draws the same ground, and you put life on it. Pick a preset to load a finding we've already checked, or start from blank.
Each step, every ramet tries each empty neighbour with chance grow (several tries on one square: it goes to one of them, weighted by grow), then survives with chance live. Both are formulas, clipped to 0–1. Names:
own this square is good (0/1) · share good fraction of the whole genet · piece good fraction of its connected piece · size ramets in the genet · good good fraction of its neighbours · crowd occupied fraction of its neighbours · t step · h, p, c=(h−0.1)/p · W(q)=min(0.1+c·q, 0.9), the paper's curve · and min max abs exp log sqrt pow floor, ? :, < > == && ||.
Written as W(share) twice it is the integrator, square for square (that's tested). Try crowd < 0.5 ? W(share) : 0.1 for one that won't grow into a crowd, or W(own) / W(share) for one that forages alone and lives on the genet.
The dashed line is M: of the neighbour pairs where both squares are occupied, the share that join two different kinds, divided by the share random labels would give. M = 1 means as mixed as chance; near 0, each kind keeps to its own ground. Where the kinds persist on the map we've run, M sits at 0.1–0.2: they split the field into territories. That's checked in research/rhizome/mixing.
Link to this exact set-up: copy me. It carries both panes and your formulas.
Ground is laid by the rhizome kit's own code (kit/clone.mjs): the field is cut into blocks of the given side, a fraction p of blocks is good, rocks fall on their own random stream. The life engine is life.js: the kit's model with the kinds pulled out, so any number of clones of any kind can share one field. For the splitter, the integrator and the piece sharer it gives the kit's digits exactly, square for square, on the square, Moore, hexagon and Voronoi grids, wrapped and walled, with rocks and with the linear curve. Our twin test checks that (research/rhizome/lab/twin.mjs, 20 of 20). "Yours" written as W(share) matches the integrator exactly, and a mutant formula is caught. A formula is checked before it runs. Only arithmetic on the names above gets through, so a link someone sends you can't run anything else.
The percolation line under pane 1 counts the good squares, not the blocks, and ignores the wrap: does one connected patch of good squares join the top row to the bottom row? On a torus that's a question about the ground, not about what the clone can reach.
Not here yet: earthworms, mycelium, 3-D, mazes you draw by hand. The maze preset is the kit's.
Modulo, 2026-10-14. Laid out the way the person asked: ground first and locked, life second.