spikes
A reach-field CA grown onto frozen substrate cells. Each box is its own group; neighbours block but never seed each other.
Substrate card
This box is a region of immutable cells. The spikes take root on its perimeter and grow outward, stopping at the next box.
Crevice partner
The gap between these two boxes is a constrained channel — spikes from both sides meet in the middle.
Self-resizing group
One group whose own rect changes. Opening a row below grows this box, so the runtime re-rasterizes and re-grows the spikes around the new perimeter — the faq counter ticks. Neighbours below only translate.
Why does a resize rebuild?
The substrate grid was rasterized at the old height; every cell must keep its coordinate, so the field is invalid until it is rebuilt. Growth is deterministic, so the regrow is faithful.
Why doesn't a resize just translate?
A pure translation keeps every cell aligned, so a frozen frame can slide as one piece. A height change moves the perimeter relative to the cells, so the seed band itself changes.
group-relative reflow
Every box here is its own group. Opening this panel grows the gap and slides the toggle below down as one piece. Once a group has settled, moving it just translates the finished shape — a jigsaw piece — instead of re-growing it. Closing this panel moves the toggle back toward the shapes above; with regrow on close ticked the toggle is rebuilt so its spikes re-fit the new layout instead of sliding over the group above (its counter then ticks).