Ecosystem candidate attractor · can three layers hold one basin?

Tri-Trophic Stack

Plants, grazers, and predators sharing one landscape. Change how hard the predators hunt, and watch what happens three levels down.

What you are looking at

A landscape seen from above, divided into patches. Each square is one patch of ground, not one organism. At any moment a patch is in one of four states:

The rules

Every patch looks at its neighbours and updates. That is the whole model:

  1. Bare ground can be colonised by plants from a neighbouring patch.
  2. A plant next to a grazer can be eaten. The grazer takes over that patch.
  3. A grazer next to a predator can be eaten. The predator takes over that patch.
  4. Anything with no food beside it starves, and the patch goes back to bare ground. Grazers need a plant nearby, predators need a grazer nearby.
  5. Plants also die on their own now and then, which is what stops them from covering the whole landscape.

There are no equations underneath this. Everything you are about to see, including the oscillations, comes from those five rules applied to every patch at once.

Tri-Trophic Stack

producer → herbivore → predator
producer cells
herbivore cells
predator cells
neighborhood anisotropy 𝒜
synchrony α
basin holding
Synchronous substrate (α = 1). This panel updates every cell in lockstep, so part of its temporal order is supplied by the clock, not produced by the structure. It shows a real basin and honest recovery/rupture — but it is not a sovereignty verdict. Space is kept honest: the lattice runs on Duncan(√5), whose anisotropy 𝒜 is shown above (admissible ≤ 0.02).

Read the counts as cells, not organisms. This is an occupancy model: a predator that eats a herbivore becomes a predator in that cell, so the upper layers accumulate area rather than paying a biomass cost. The readout is not a pyramid of numbers and should not be read as one.

What to notice first

The landscape does not mix. It separates into large single-colour regions: plant country on one side, predator country on the other, bare ground between them.

The grazers are almost never a population. They survive as a thin band along the boundary between the plants and the predators, and that band moves. Watch the gold for a while and you are watching a front, not a population.

That is the biggest difference between what you are seeing here and the standard predator-prey model, and it is worth sitting with before you touch a slider.

Three things to try

1. Push the predators up and watch the plants

Raise predation from 0.20 to 0.55. Leave everything else alone.

What happens: the grazers are cut back hard, and the plants roughly double. Predators up, grazers down, plants up.

A trophic cascade is an effect that travels down through a food web: a change at the top changes the level below it, which changes the level below that.

The predators never touch a plant. They control how much plant there is by controlling the thing that eats it. This is the effect behind the claim that wolves changed the rivers in Yellowstone.

2. Take the predators away

Now drag predation down instead: 0.15, then 0.12, then 0.10.

What happens: the grazers irrupt and become the largest group on the landscape. The plants are eaten faster than they can regrow, and crash. Below about 0.09 the whole system dies: no plants, no grazers, no predators.

A keystone predator is one whose presence holds a whole community together, so that removing it changes far more than just its own numbers.

Removing the plants and watching everything die would surprise nobody. The surprise is that removing the predator does it too.

3. Sit on the edge and run it again

Set predation to 0.085 and press Reset basin several times.

What happens: sometimes it survives and sometimes it collapses. Same settings, different outcome. The longer you leave a run going, the more often it ends in collapse, because a population this small only has to get unlucky once.

Near the threshold the predator population gets very small, and a very small population can be wiped out by bad luck alone, even when the average conditions would let it persist. That is one of the main reasons conservation biologists care about population size and not only about habitat quality.

It is also a lesson about doing science. At this setting a single run tells you nothing. You have to run it several times before you know anything at all.

How this differs from the model in your textbook

Lotka-Volterra assumes everything is mixed together. One number for predators, one for prey, and everyone can meet everyone. Here nothing is mixed, and what matters is who is next to whom. The oscillations in the strip are fronts sweeping across the landscape, not a well-mixed cycle.

There is no energy budget. In a real food web roughly ninety percent of the energy is lost at each step up, which is why there is far less predator than plant. This model has none of that: holding a patch costs nothing. That is why the three numbers come out closer together than a real pyramid of biomass would, and why the predator count can look surprisingly high.

And the counts are patches, not animals. A predator that eats a grazer becomes a predator in that patch, so the upper levels accumulate area rather than paying for it.

For readers following the framework

Everything below is written for readers working through Principia Attractum. If you came for the ecology, you have already had it.

This panel is a candidate attractor: a three-layer stack meant to sustain itself through its own internal recursion, not through order handed in from outside. The live populations are the basin — the region the system returns to when nudged. The sliders are bounded perturbations of that basin. What you read off is the run's own answer: did the basin recover, or did a layer rupture and not come back?

What the runs actually showed

Measured against this exact rule set, the panel's behaviour is consistent with attractor behaviour and shows three distinct phases. None of this is a sovereignty result; it is what the run observables report.

Ignition. A run does not begin in its basin, it arrives there. From a seeded start the layers overshoot hard and ring: herbivores peak near 2.9× their eventual level within the first ten steps, producers near 1.8× by step 25, and the transient is about twice the amplitude of anything that happens afterwards. It is a single event per reset, not something that recurs.

Bootstrapping interval. The ringing decays over roughly the next sixty to a hundred steps — the stretch between entering the basin and settling in it. Readings taken inside that window are not readings of the basin, and the scrolling plot's vertical scale is still settling with it.

Return to basin. Once settled, the structure holds its position against being pushed. Culling 60 to 80% of the predators, twenty-four times across three starting worlds, the run returned to the same state every time, within about 1%. That return, not mere survival, is the part that earns the word attractor.

Rupture. The same structure can fail, and the panel says so when it does. A layer that stays at zero long enough is reported as ruptured rather than recovering, and at the panel's default rates it happens. Recovery and rupture are the same observable read in two directions.

What this is not: it is not an attractlet, which by definition produces none of its own order and does not come back when perturbed. It is also not a sandbox sovereign, which is reserved for a structure clearing all four conditions against a declared economy. This panel exercises two of the four; conditions 3 and 4 are out of scope and supplied respectively, as the card below records. An attractor, and not a sovereign one.

Kernel role Population · ecological — a candidate attractor (STACK §5.2 · BPP §10.8.1). An authored design claim, not a measurement.
Stack Yes. producer → herbivore → predator (STACK §5.2). A vertical layering, not a metaphor: the predator layer's persistence rides on the herbivore layer, and that on the producer layer.
Substrate Synchronous (α = 1). Temporal order is partly supplied by the clock rather than produced by the system. That is the default, and this panel also exposes α as a control; below 1 the update is partially asynchronous and the run is no longer the declared substrate. Steps are normalised so a frame is one expected update per cell whatever α is, which is what keeps a change of clock from reading as a change of biology.
The four sovereignty conditions (SOV §7.2) — what this panel supplies, not how it scored
  • exercised 1 · Recursion lock. The three-layer loop either closes (producers recolonize, herbivores graze, predators crop herbivores) or it does not, and you can watch it fail to close.
  • exercised 2 · Internal recurcline persistence. The Perturb control culls about 80% of predators and the run reports recovered or ruptured, which is a basin-recovery capacity in the AC₄/AC₅ sense. Caveat: The recovery runs on temporal order supplied by the global clock at α=1, so it is not shown to be self-produced.
  • out of scope 3 · Boundary retention. No boundary is modeled. Cell states are trophic roles, not a membrane, and the lattice wraps.
  • supplied 4 · Maintenance-bearing continuation. Nothing pays to persist. Producers colonize empty cells at an authored growth rate with no modeled inflow, so the bottom of the stack is replenished for free.

No sovereignty verdict is claimed here or anywhere in this gallery. The Sovereign column is empty, and that emptiness is the honest reading: no panel here has been shown to produce its own order.

← Back to Living Structures