GOL-036 · technical companion

Nested Drift

Cells absorb isolated neighbors, then resolve stalled ingestion toward neighbors with greater nested contents. Remaining clusters move and unfold; optional aging adds births and trapped-cell expiration.

At a glance

geometry
Square lattice
neighborhood
Eight immediate Moore neighbors
states
Visible entities + ordered nested trees + headings + permanent rotation senses
update
Leaf and strict-content ingestion waves, rigid cluster movement, recursive deployment, optional aging births/deaths and compass rotation
renderer
Canvas 2D

What to explore

Repeatedly absorb isolated neighbors, then move connected clusters as rigid bodies and unfold carriers’ nested contents. Ordinary leaf candidates have one visible neighbor and hosts need at least two by default. When leaf intake stalls, a uniquely strongest adjacent host with more nested contents can absorb a smaller cell. Exact ties wait. Try Peripheral clusters to see leaf intake unlock further absorption in a three-cell core. Try Nested chains: five cells fold inward over two ingestion waves, leaving a center carrying two children, each with a child of its own. Compare limited ingestion waves, restricted deployment and oldest/newest release. Enable Use topmost parent’s compass to seed spiral unfolding from the outermost parent’s heading and CW/CCW sense. Fresh visits pause on 10% Random Life. Empty-handed cells move too. Raise Host minimum neighbors to six on Peripheral clusters to see the remaining groups translate intact. Each group uses the rounded sum of its visible members’ unit compass vectors. Opposing headings can cancel; those groups wait while their compasses rotate. Set compass stride to zero for fixed travel headings, or one for a 45° turn each Step. Restricted deployment can retain nested contents between turns. Enable Aging births and deaths to add turnover: cells still trapped inside another cell expire after more than X turns without release, and visible cells not ingested for Y turns attempt compass-directed births. Defaults are X = 8, Y = 8, switch off.

Rules, update order and replay

  1. Resolve ordinary leaf-ingestion waves first: a one-neighbor candidate enters its sole host if the host meets the minimum degree and has capacity/intake room. When no leaf transfers are possible, attempt a content wave. Count every nested descendant, excluding the root itself. Each cell chooses its uniquely largest adjacent host with strictly more contents and available direct-child capacity. Equal contents or tied strongest hosts wait. The host-neighbor minimum does not apply to content comparison. Both rules use the same intake, capacity and combined wave limit; zero capacity/wave limit means unlimited. Hosts accept offered children in compass order following their permanent sense. Freeze comparisons before each wave. A host may accept children while entering a larger host: strict size increases prevent cycles and the complete resulting tree travels intact. Recount and return to leaf intake after every content wave. Stop when neither rule can transfer or the limit is reached. Clusters can exceed four cells, and ties or limits can leave multiple visible cells. Hidden contents do not count as visible neighbors.
  2. Rebuild Moore-connected components after ingestion, including diagonal and wrapped contacts. Every component, including a singleton, is one rigid movement body. Sum equal unit compass vectors from visible members only; hidden descendants travel without voting. Round the aggregate to the nearest of eight directions, with exact halves clockwise. Exactly cancelled vectors wait while personal compasses keep rotating later. Membership and heading stay fixed through all unit substeps. Default distance one. A body can enter its own vacated sites. A boundary or another body's frozen occupancy blocks the entire body; among valid proposals, any shared destination stops every claiming body. No swaps, following another body's simultaneous departure or tunneling. Earlier successful substeps remain. Clear successful sources before placing their translated trees. Touching bodies become one component only next turn. This uses component-wide heading aggregation; temporary group IDs never select winners. A fully packed torus can translate its own footprint, moving entity state even when occupancy looks unchanged.
  3. Every carrier attempts deployment, even after blocked movement. Release oldest/newest direct children in sibling rounds, searching from the host heading in its sense. Search length is 1–8. With Use topmost parent’s compass enabled, capture each visible root’s heading and CW/CCW sense after ingestion/movement, before rotation. Each releasing cell searches from its temporary preferred heading in that inherited sense. After success, advance 45° from the direction actually used, including blocked or contested detours. Pass that heading to the child and use it for the next sibling. Branches keep independent copies; failures do not advance the preferred heading. This one-position turn applies even at compass stride zero. Separate trees have separate guides. Personal compasses are preserved; released carriers become independent roots next turn unless ingested again. The toggle defaults off. Tied claims retry synchronously. Released carriers unfold their own contents in the next wave, recursively. The per-host limit applies once per phase, including to newly released hosts; zero means release everything that fits. Blocked contents remain inside.
  4. After recursive deployment, visible roots reset their trapped-time clocks to zero. Every still-contained cell, at any depth, increments its own trapped time once. A new ingestion retained this turn counts one. Actual release resets that cell; releasing a container does not reset descendants still inside it. With Enable aging births and deaths on, a cell whose trapped time exceeds X expires inside its parent. X = 0 expires on the first retained turn; X = 8 expires on nine. Release on the deadline saves it. The outer host survives; the expired cell's own retained descendants are removed with it, counted once, while surviving siblings retain their order. Pruning does not free visible sites or retry deployment this turn. Then visible cells with at least Y turns since birth or direct ingestion claim their own exact pre-rotation compass neighbor. All cells, including hidden ones, age once per Step; direct ingestion resets the candidate root's birth clock. Occupied/bounded targets block, and all competing birth claims fail. Birth does not reset the parent's clock; eligible parents retry each turn. Newborns start empty with age zero and fresh seeded destination-stream compass/sense, and act next Step. Both clocks track while the rule is off; enabling applies existing history. Counters saturate at 65+, above every possible threshold.
  5. Every surviving existing compass, including hidden and empty-handed cells, rotates once by the configured stride. Only zero or one: default one turns 45 degrees, zero holds travel heading. Sense never changes. Newborns start rotating next turn.

Thirteen settings control host minimum, per-wave intake, direct-child capacity, ingestion waves, movement distance, deployment search, release limit, release order, compass stride, topmost-parent guidance, aging enablement, X (0–64) and Y (1–64). Aging defaults off with both thresholds eight. Scoped and combined randomizers cover all twelve rule values; every scope preserves aging enablement. Randomize aging thresholds changes only X and Y. Movement randomization chooses 1–4; zero movement distance is a manual choice. Compass stride zero holds direction, not position: fixed headings can remain blocked indefinitely. Exact cancellation can persist even with rotation; external collisions and boundaries can also leave bodies stationary. With aging off, stepping conserves total visible plus stored cells; enabled steps add births and subtract expired trapped cells and their retained descendants. Reset reconstructs the opening and every hidden entity from independent field and compass seeds. Randomizers preserve compass seed; Everything changes field seed/density and selects Random Life. Shares save openings, not evolved snapshots.

Version three moves all visible cells and limits compass stride to zero or one. Older openings adopt all-cell movement and strides above one become one. Version-one saves also adopt repeated leaf ingestion and retain their deployment search. Initial conditions remain intact; trajectories change. Version four adds topmost-parent guidance; all older versions restore with it off, preserving version-three trajectories. Version five retains version-four toggles but replaces enabled fixed guidance with spiral inheritance, changing those trajectories. Version eight rolls back both Life revisions and restores the version-five model with no Life phase or controls. Version-five openings replay unchanged; versions six/seven retain their other settings while discarding Life settings. Version nine retains the ten settings but adds strict-content ingestion to stalled pairs/clusters. All older openings adopt it and may change trajectories; Life remains absent. Version ten replaces individual movement with rigid cluster movement. Existing settings and openings are retained, but trajectories change. Version eleven adds aging; older openings restore it off with X/Y eight. Version twelve corrects death to expire trapped contents, preserving visible hosts. Version-eleven saves retain their switch and thresholds but adopt the corrected death behavior; enabled trajectories change. Version fourteen rolls back version-thirteen wave-by-wave timing: every Step again completes all ingestion waves, cluster movement, recursive deployment, aging and rotation. Version-thirteen saves retain every rule and opening setting while adopting the restored faster schedule.

Reading the simulation

Gold marks carrying cells, cyan other deployed arrivals, violet newborns, lime other visible cells. Color off shows occupancy. Pause and enable Inspect cell to read the nested tree with depth and sibling order, starting neighbor count, intake count, absorption parent/wave, leaf-versus-content reason, frozen neighbor and nested-content counts, content-wave count, movement cluster size, aggregate heading, east/south vector sum, cancellation, movement distance and whole-body block, ordered deployment targets, deployment wave and guiding root, initial heading/sense and each release’s preferred, used and child-inherited directions. Inspection also reports aging clocks, expired branch depth, child slot, trapped age and removed-tree size, birth eligibility and blocked or successful targets. Forecast uses the same engine without mutating the live forest. The final board alone can hide the intermediate nesting; inspect cascade evidence to see the folds before deployment.

Reproduce an opening

Download the example above, open the simulation, expand the controls, then use Share & reproduce → Import JSON. The example uses authored rules and a fixed seeded starting field; it is independent of the site’s editable default composition. Import starts paused at Step zero.

Share links and JSON reproduce the configured starting conditions, including hidden layers rebuilt by Reset. They do not save an evolved board, hand-painted cells, speed or display preferences. Determinism applies to the same rule version and Step sequence; real-time playback rates vary by device.

Large fields, dense populations and large interaction radii increase the work per Step. Start with a small field and radius, then increase them while paused. Read the configuration format and automated-access guide for compatibility details.