feat(samples): add "Success to the successful" competitive-exclusion trap

Two equal researchers and one conserved prize (the field's attention):
a single gap-driven Flow tilts it to whoever is a hair ahead, so a 51-49
near-tie locks in to ~100-0. Escalation's zero-sum twin -- the same
two-Stock all-Reinforcing structure, concentrating instead of exploding.
This commit is contained in:
Julien Calixte
2026-06-22 23:33:06 +02:00
parent 34bc8fa70b
commit fe17bc8fae

View File

@@ -21,27 +21,31 @@
* 6. Predator and prey — two coupled Stocks whose interlocking loops oscillate.
* 7. Epidemic — a chain of Stocks joined by Stock→Stock Flows: no clouds.
*
* Last, four of Donella Meadows' system *traps* — structures that reliably misbehave
* Last, five of Donella Meadows' system *traps* — structures that reliably misbehave
* (Thinking in Systems, ch. 5), to contrast the healthy dynamics above — and, paired
* with the first, the cure that escapes it:
*
* 8. Tragedy of the commons — two Reinforcing herds overgraze a *renewable* shared
* Stock to bare dirt, then starve with it: all ruined.
* 9. …commons, fixed — the same renewable commons, but stocking is regulated
* against an agreed reserve: it holds, and the herds end
* *larger* than the trap's boom leaves alive.
* 10. Escalation — a single Reinforcing loop spanning two Stocks, with
* no brake in the structure: an arms race.
* 11. Fixes that fail — a fix drains the symptom Stock (B) while its side
* effect refills it (R): the cure feeds the disease.
* 12. Drift to low performance — a goal that erodes toward actual performance, so the
* effort it drives never overcomes a steady decay: a
* Reinforcing loop ratchets both downward.
* 8. Tragedy of the commons — two Reinforcing herds overgraze a *renewable* shared
* Stock to bare dirt, then starve with it: all ruined.
* 9. …commons, fixed — the same renewable commons, but stocking is regulated
* against an agreed reserve: it holds, and the herds end
* *larger* than the trap's boom leaves alive.
* 10. Escalation — a single Reinforcing loop spanning two Stocks, with
* no brake in the structure: an arms race.
* 11. Success to the successful — two equal rivals split one conserved prize (the field's
* attention); a gap-driven Flow tilts it to whoever leads,
* so a 5149 near-tie locks in to ~1000. Escalation's
* zero-sum twin — it concentrates instead of exploding.
* 12. Fixes that fail — a fix drains the symptom Stock (B) while its side
* effect refills it (R): the cure feeds the disease.
* 13. Drift to low performance — a goal that erodes toward actual performance, so the
* effort it drives never overcomes a steady decay: a
* Reinforcing loop ratchets both downward.
*
* Next, the dynamic the book is named for, and the one the gallery has saved until a
* reader knows every piece it needs:
*
* 13. Overshoot and collapse — a Reinforcing harvester on a *renewable* Resource with
* 14. Overshoot and collapse — a Reinforcing harvester on a *renewable* Resource with
* an extinction threshold (an Allee floor): a fleet
* overshoots the renewal rate and pushes the fishery past
* the point of no return. The dark twin of "Limits to
@@ -50,14 +54,14 @@
* Last, the language pointed at a live debate — a classic trap (Shifting the burden to
* the intervenor, ch. 5) wearing today's clothes:
*
* 14. AI deskilling spiral — handing the burden of code quality to AI atrophies the
* 15. AI deskilling spiral — handing the burden of code quality to AI atrophies the
* Expertise that holds quality up, so the team leans on AI
* harder and Technical debt spirals: addiction, not a fix.
*
* And a mechanical coda — the gallery's one *hard* ceiling, to contrast the emergent
* ones (above all "Limits to growth"):
*
* 15. Bathtub with an overflow — the tap runs flat out (a Constant inflow that never
* 16. Bathtub with an overflow — the tap runs flat out (a Constant inflow that never
* reads the level) and a spillway carries whatever rises
* past the brim into a second Stock, the floor. The only
* model on the `overflow` rule — a one-sided Gap, the
@@ -67,7 +71,7 @@
* Then one last trap, held back until the overflow rule existed to carry it — the
* language pointed at the most-told cautionary tale in systems thinking:
*
* 16. The cobra effect — a bounty on dead cobras (a Balancing fix) quietly funds a
* 17. The cobra effect — a bounty on dead cobras (a Balancing fix) quietly funds a
* cobra *farm* (a Reinforcing engine); breeding outruns what
* the bounty can absorb, the farm gluts, and its now-worthless
* surplus spills through an `overflow` gate into the wild —
@@ -77,7 +81,7 @@
*
* And the capstone — every piece at once, at the scale the whole gallery points toward:
*
* 17. World on a warming planet — the Club of Rome's World3 (Meadows et al., *The Limits
* 18. World on a warming planet — the Club of Rome's World3 (Meadows et al., *The Limits
* to Growth*) in miniature, its pollution sector reframed
* as a climate channel: four coupled Stocks where two
* Reinforcing engines (capital, population) overshoot a
@@ -943,6 +947,82 @@ function escalation(): Model {
)
}
/**
* Success to the successful — Donella Meadows' competitive-exclusion trap (Thinking
* in Systems, ch. 5), known in the sociology of science as the *Matthew effect*
* (Robert Merton, after Matthew 25:29: "unto every one that hath shall be given").
* Two researchers of equal ability compete for one finite thing — the field's
* attention — and the only difference between them is that A begins a single point
* ahead (Renown 51 vs 49 of a fixed 100).
*
* The community's attention is a *conserved* budget: a citation, an invitation, a
* grant that goes to one does not go to the other, so Renown A + Renown B never
* leaves 100. The marginal piece of it drifts to whoever is already better known —
* `attention = factor × (Renown A Renown B)`, a single Stock→Stock Flow draining
* the lesser name into the greater. There are no clouds: nothing enters or leaves
* the system, it only *redistributes*. That one valve carries *two* Reinforcing
* loops — Renown A → [+] → attention → (fills A) → Renown A (more renown wins more
* attention), and Renown B → [] → attention → (drains B) → Renown B (the falling
* name is forgotten ever faster). Neither loop has a surviving ``, so both are
* Reinforcing: nothing brakes the gap, and it can only widen.
*
* A tie is therefore an *unstable* equilibrium — the knife-edge this trap balances
* on. A's one-point lead is enough: attention tilts to A, the gap grows, attention
* tilts harder, and the field locks in. Renown A climbs 51 → 100 and Renown B fades
* 49 → 0 by t≈42 — a near-total monopoly of acclaim, though the two were equally
* able. The cruel lesson Meadows draws: where the prize for winning is more power to
* win, it is *initial conditions*, not merit, that decide the outcome.
*
* Contrast "Escalation", the gallery's other two-Stock all-Reinforcing trap: there
* the cross-loop has no minus and *both* arsenals blow up together (positive-sum,
* unbounded); here the single loop is zero-sum — A rises only as fast as B is drained
* — so the same Reinforcing structure *concentrates* instead of exploding. (The cure
* Meadows prescribes is to break the coupling — level the field, diversify the prize,
* or handicap the leader — none of which the structure here contains: that is the trap.)
*/
function successToTheSuccessful(): Model {
// Two Stocks on one line, the lone attention valve nudged above their midpoint so
// the pipe (Renown B → attention → Renown A) and the two info links (each Stock
// into the valve) read apart instead of overlapping. Hand-placed, not at midpoint.
const renownB = makeStock({ x: -260, y: 80 }, "Renown B")
renownB.initialValue = 49
renownB.description =
"Researcher B's standing — equal in ability to A, and a single point behind at the start. The lesser name the attention drains away from, fading to nothing though B never did anything wrong."
const renownA = makeStock({ x: 260, y: 80 }, "Renown A")
renownA.initialValue = 51
renownA.description =
"Researcher A's standing — one point ahead at the start, and that hair's lead is all it takes. Attention concentrates here until A holds nearly the whole field's acclaim."
// attention = factor × (Renown A Renown B): a Gap whose `+` level is A and ``
// target is B. Source B, target A, so a positive rate drains the lesser name into
// the greater — and since draining B only widens the gap, the rate never reverses.
const attention = makeFlow({ x: 0, y: -120 }, "attention", renownB.id, renownA.id)
attention.rule = { kind: "gap", factor: 0.05 }
attention.description =
"The field's finite attention drifting to the better-known name, ∝ the lead (Renown A Renown B). A conserved transfer: what A gains, B loses — the one valve through which both Reinforcing loops run."
return model(
"Success to the successful",
[renownB, renownA, attention],
[
link(
renownA,
attention,
"+",
"Renown A is the level in the gap: the further ahead A is, the faster attention flows its way. With the inflow it fills, this closes A's Reinforcing loop — the rich getting richer.",
),
link(
renownB,
attention,
"-",
"Renown B is the target the gap is measured against (the input). As B fades the gap only widens, so it is drained faster still — a second Reinforcing loop, the same minus on both the link and the outflow.",
),
],
// From a 5149 near-tie the gap runs away: Renown A climbs 51 → ~100 and Renown B
// fades 49 → ~0 by t≈42, then both hold — a near-total monopoly of acclaim won on a
// one-point head start. The unstable 5050 knife-edge a hair's difference tips.
{ start: 0, stop: 50, dt: 1 },
)
}
/**
* Fixes that fail — the archetype where a quick fix relieves a symptom but feeds it
* through a side effect, so the symptom returns and the fix is reapplied for ever.
@@ -1908,6 +1988,12 @@ export const SAMPLES: Sample[] = [
blurb: "An arms race: one Reinforcing loop spanning two Stocks.",
build: escalation,
},
{
title: "Success to the successful",
blurb:
"Two equal researchers, one a hair ahead: the field's attention locks onto the leader and the rival fades — a winner-take-all trap.",
build: successToTheSuccessful,
},
{
title: "Fixes that fail",
blurb: "Road building eases congestion (B) but induces the traffic that refills it (R).",