Activate when: user says "we keep overshooting/undershooting", "the cure is causing the disease", "we're stuck in a loop", "why does this keep happening?", "...
--- name: feedback-loops description: > Activate when: user says "we keep overshooting/undershooting", "the cure is causing the disease", "we're stuck in a loop", "why does this keep happening?", "the system keeps fighting back", "bullwhip effect", "death spiral", "growth flywheel"; system shows oscillation or sudden collapse; user is planning an intervention in an org/market/supply chain and wants to predict how it will respond. Do NOT activate when: the decision is a one-shot linear choice with no feedback to future decisions, or an exogenous shock so large it dominates all internal dynamics is the obvious explanation. --- # Feedback Loops ## Overview A system has a **feedback loop** when its output circles back as input to the next cycle. **Reinforcing loops** amplify (compound interest, viral growth, bank runs, death spirals). **Balancing loops** self-correct (thermostats, price discovery, immune response). The critical complication is **delay**: when delay is long relative to response time, even well-designed balancing loops produce oscillation and overshoot — and operators systematically mismanage the system (Sterman 1989: supply-line underweight = 0.34 on a 0–1 scale). Composes with: [`second-order-thinking`](../second-order-thinking/SKILL.md) · [`s-curve-technology-adoption`](../s-curve-technology-adoption/SKILL.md) · [`prisoners-dilemma`](../prisoners-dilemma/SKILL.md) · [`probabilistic-thinking`](../probabilistic-thinking/SKILL.md) ## When to Use Apply when: system shows non-linear surprise (collapse, oscillation, death spiral, growth flywheel); you are intervening in a complex system and success depends on how it responds; trends are not extrapolating well; bullwhip or oscillation in any quantity that should be steady. **When NOT to use:** one-shot linear decision with no feedback; insufficient data to map loops (hand-waving without structure); decision too time-bounded for delays to matter; exogenous shock dominates internal dynamics. ## Coaching Novices (Adaptive Front Door) - **Engine mode:** concrete case → run The Process directly. - **Coach mode:** unfamiliar or no concrete case → guide, don't lecture. In Coach mode, respond one step at a time. Each [WAIT] is a hard stop — output only that step's question, then stop. 1. One-line what-it-is: when a system's output circles back as input, you have a feedback loop — it self-amplifies (reinforcing) or self-corrects (balancing), and delays make behavior far worse than expected. 2. Check fit against When to Use / When NOT to use. If it's a one-shot linear decision, redirect. 3. Elicit their real case: a specific behavior or dynamic they face right now — not a hypothetical. > **[WAIT — do not advance until user responds]** 4. Run The Process one step at a time with their input — map the loop, classify it, locate the delay. > **[WAIT — do not advance until user responds]** 5. Close by naming the leverage point uncovered and why it is higher than a parameter fix. > **[WAIT — do not advance until user responds]** ## The Process Run the **Feedback-Loop Diagnosis** — map structure, find dominant loop, predict behavior, find leverage. 1. **Name system + variable of interest.** Without a specific variable, analysis becomes vague narrative. 2. **List drivers and outputs.** What inputs change your variable? What does it change in turn? Stay concrete. 3. **Identify loops.** Trace chains where a variable feeds back to itself. Most systems have several. 4. **Classify each loop (R or B).** Count negative signs around the loop — even = reinforcing; odd = balancing. 5. **Locate delays.** Where does a cause take significant time to produce its effect? Delays are where intuition fails. 6. **Identify dominant loop.** Growth phase = R dominant; maturity = B catching up; crisis = suppressed R taking over. 7. **Map stocks and flows.** Stocks = accumulations; flows = rates. A positive flow can still leave a stock dangerously low. 8. **Predict behavior pattern.** Pure R → exponential growth/collapse. Pure B → equilibrium. R+delay → overshoot/oscillation. R+B competing → S-curve. Mismatch with observed behavior = missed loop. 9. **Find leverage (Meadows hierarchy).** Parameters → buffers → structures → delays → balancing loops → reinforcing loops → goals → paradigm. Most failed interventions push parameters; move up. 10. **Stress-test against system response.** Balancing loops fight back; reinforcing loops restore trajectory. Intervention must change structure, not just symptom. ### Output: Feedback-Loop Diagnosis ``` System / variable: <…> Loops: R1 <chain>; B1 <chain> Delays: <where; rough magnitude> Dominant loop: <…> — matches observed behavior because <…> Stocks: <…> Flows: <…> Predicted behavior without intervention: <pattern + timeframe> Leverage (Meadows): lowest <param>; higher <structural>; highest <goal/paradigm> Intervention: <move> | System response: <…> | Backfire risk: <…> Falsifier: <observable that would prove the diagnosis wrong> ``` *→ Method in Action: [Forrester's Beer Distribution Game & Sterman's 1989 Measurement](examples/forresters-beer-distribution-game-stermans-1989-measurement.md)* ## Pack: Loop Patterns - **R growth:** network effects, viral k>1, compounding learning curves. Risk: hits a balancing limit you don't control. - **R collapse:** death spirals, bank runs, adverse selection cascades. Defense: structural circuit breakers, fast intervention. - **B working:** market price discovery, wages, thermostats. Don't suppress healthy balancing loops. - **B + long delay → oscillation:** bullwhip, cobweb cycles, capacity build-out. Defense: shorten delays, damp response, share end-demand data. - **R + B → S-curve:** technology adoption. See [`s-curve-technology-adoption`](../s-curve-technology-adoption/SKILL.md). To extend growth, kick off a second R loop before the first saturates. ## Common Rationalizations **[D] = designed upfront | [O] = observed in real use. [O] entries are more valuable.** | Fake move | Reality | |---|---| | [D] "Just be more careful / disciplined" | Identical structures produce similar dysfunction regardless of who operates them (Sterman 1989). Exhortation = marginal; structural redesign = real. | | [D] Treating delay as friction to reduce rather than a structural feature to model | Many delays are irreducible. For those, model them explicitly — don't pretend to reduce them. | | [D] Extrapolating recent trends in a feedback system | Feedback systems switch regime when dominant loop changes; recent observations are loop outputs, not reliable baselines. | | [D] Confusing stocks and flows | "Higher hiring rate" ≠ "enough people." Flow ≠ stock. Check both. | | [D] "It's the market / external event" | Often the operators created the variability themselves (Sterman's subjects blamed constant demand). Check internal generators first. | | [D] Parameter adjustment when structure is the problem | "Raise the bonus / add a metric" = noise in a structurally-driven system. Move up the Meadows hierarchy. | | [D] "Death spiral = inevitable doom" | Death spirals are loops with modifiable structural components. Find the most modifiable arrow. | | [D] "Let's push harder on the growth loop" | Leverage is in understanding what balancing loop catches up, and when — not in pushing parameters harder. | | *→ Add [O] entries here after each real use — paste the actual failure pattern* | *What went wrong and why* | ## Red Flags - Trends extrapolated in a feedback-driven system · Oscillation blamed on external variability without checking internal loop generators · Intervention at parameter level when loop structure is the source · "Be more careful" proposed in a Forrester-adversarial structure · Stocks and flows confused · Death spiral or growth narrative with no loop/nodes/delays specified · All interventions at lowest (parameter) leverage level ## Verification - [ ] System and variable named · At least one R and B loop identified with causal chain · Each loop classified by sign-counting - [ ] Delays identified with rough magnitudes · Dominant loop identified; observed behavior consistent with it - [ ] Stocks and flows distinguished · Predicted behavior matches actual (if not, re-classify) - [ ] Leverage points ranked; recommendation not at lowest level if higher leverage is accessible - [ ] System response to intervention considered · Observable falsifier named *→ Primary sources: [references/sources.md](references/sources.md)* --- *Part of **deciqAI Knowledge Skills** — open-source thinking skills that make rigor executable for AI agents. Built by deciqAI · https://deciqai.com · Contributions welcome — see the template at the repo root.*
don't have the plugin yet? install it then click "run inline in claude" again.
added explicit inputs section with edge cases, broke procedure into 10 discrete steps with input/output for each, extracted decision points logic from original "when not to use" into decision tree, formalized output contract with template, clarified outcome signal as validation against falsifier and hierarchy-level checks.
A feedback loop occurs when a system's output circles back as input to the next cycle. reinforcing loops amplify (compound interest, viral growth, bank runs, death spirals). balancing loops self-correct (thermostats, price discovery, immune response). the critical complication is delay: when delay is long relative to response time, even well-designed balancing loops produce oscillation and overshoot. operators systematically mismanage these systems because they can't intuit multi-step delayed causation. use this skill when you observe non-linear surprise (collapse, oscillation, death spiral, growth flywheel), you're intervening in a complex system and success depends on how it responds, or trends aren't extrapolating well. do not use when the decision is a one-shot linear choice with no feedback to future decisions, or when an exogenous shock so large it dominates all internal dynamics is the obvious explanation.
composes with: second-order-thinking · s-curve-technology-adoption · prisoners-dilemma · probabilistic-thinking.
context required:
external connections:
edge cases:
Feedback-Loop Diagnosis process:
name system and variable of interest. write down the system (e.g., "inventory management in our 3-tier supply chain") and the specific variable you're tracking (e.g., "warehouse stock level in units"). without a named variable, analysis becomes vague narrative.
list drivers and outputs. what inputs change your variable? what does your variable change in turn? trace one full cycle. stay concrete (not "management decisions" but "hiring rate in response to queue depth").
identify loops. trace chains where a variable feeds back to itself. most systems have 2-4 dominant loops. draw or write out the full cycle for each.
classify each loop (R or B). count the number of negative causal links in each loop. if even (including zero), it's reinforcing (R). if odd, it's balancing (B). sign-counting is mechanical and removes debate.
locate delays. where does a cause take significant time to produce its effect? list the approximate magnitude (hours, weeks, months, years). delays are where human intuition fails and where oscillation is born.
identify dominant loop. in growth phase, reinforcing loops dominate. in maturity, balancing loops catch up. in crisis, suppressed reinforcing loops take over. which loop's behavior matches what you observe?
map stocks and flows. stocks are accumulations (headcount, inventory, cash, customer base). flows are rates (hiring rate, production rate, spend rate, churn rate). a positive flow can leave a stock dangerously low. distinguish them.
predict behavior pattern without intervention. pure reinforcing loop alone → exponential growth or collapse. pure balancing loop → equilibrium. reinforcing loop plus significant delay → overshoot then oscillation. reinforcing plus balancing competing → s-curve. if prediction mismatches observed behavior, you've missed a loop or misclassified one.
find leverage using Meadows hierarchy. from lowest to highest: parameters (numbers), buffers (capacity), structures (who talks to whom, feedback paths), delays (can they be shortened?), balancing loops (can you weaken one?), reinforcing loops (can you amplify or suppress one?), goals (what are you actually optimizing?), paradigm (what worldview makes this system inevitable?). most failed interventions push parameters; move up.
stress-test intervention against system response. balancing loops fight back; reinforcing loops restore trajectory. does your proposed move change structure, or just symptom? what will the system do in response? what's the backfire risk?
if user describes a one-shot linear choice with no feedback to future decisions:
if user observes oscillation or collapse but blames external variability (market shock, competitor move, macro event):
if user has concrete case and wants to run diagnosis immediately (engine mode):
if user is unfamiliar with feedback loops or has no concrete case yet (coach mode):
if user identifies a balancing loop that is currently being suppressed (e.g., "we ignore customer complaints to hit short-term targets"):
if user's proposed intervention is purely parametric (raise bonus, add metric, hire faster):
deliver a Feedback-Loop Diagnosis document with these sections:
System / variable: <name of system and the specific variable tracked>
Loops identified:
R1: <causal chain with signs counted>
B1: <causal chain with signs counted>
[repeat for each loop]
Delays:
<location>: <rough magnitude> (e.g., "hiring-to-productivity: 3 months")
[repeat for each significant delay]
Stocks and flows:
Stocks: <accumulations in the system>
Flows: <rates driving those stocks>
Dominant loop: <R or B loop name> , matches observed behavior because <explanation>
Predicted behavior without intervention: <pattern and timeframe>
Leverage points (ranked low to high):
1. parameter: <example>
2. buffer: <example>
3. structure: <recommended move>
4. delay: <if modifiable>
5. balancing loop: <if can be weakened>
6. reinforcing loop: <if can be amplified/suppressed>
Proposed intervention: <move the system is considering or you recommend>
System response: <what the system will do in reaction>
Backfire risk: <where intervention could make things worse>
Falsifier: <observable fact that would prove this diagnosis wrong>
output as markdown. include worked example reference: Forrester's Beer Distribution Game & Sterman's 1989 measurement.
you know the skill worked when:
if you're still treating the system as linear, extrapolating recent trends, or proposing parameter-only fixes, the skill has not succeeded.
r growth: network effects, viral k>1, compounding learning curves. risk: hits a balancing limit you don't control. defense: identify the limit before you hit it (saturation, regulation, cost structure).
r collapse: death spirals, bank runs, adverse selection cascades. defense: structural circuit breakers, fast intervention, restore balancing signal.
b working: market price discovery, wages, thermostats. don't suppress healthy balancing loops. exhortation ("be more careful") is noise in well-functioning balancing loops.
b + long delay → oscillation: bullwhip in supply chains, cobweb cycles in agriculture, capacity build-out in data centers. defense: shorten delays, damp response, share end-demand data upstream.
r + b → s-curve: technology adoption. see s-curve-technology-adoption. to extend growth, kick off a second reinforcing loop before the first saturates.
| fake move | reality |
|---|---|
| [D] "just be more careful / disciplined" | identical structures produce similar dysfunction regardless of who operates them (sterman 1989). exhortation = marginal; structural redesign = real. |
| [D] treating delay as friction to reduce rather than a structural feature to model | many delays are irreducible (shipping time, gestation, regulatory approval). for those, model them explicitly. don't pretend to reduce them. |
| [D] extrapolating recent trends in a feedback system | feedback systems switch regime when dominant loop changes. recent observations are loop outputs, not reliable baselines for projection. |
| [D] confusing stocks and flows | "higher hiring rate" ≠ "enough people." flow ≠ stock. check both. flow can be positive while stock is collapsing. |
| [D] "it's the market / external event" | operators often create the variability themselves (sterman's subjects blamed constant demand). check internal generators first. |
| [D] parameter adjustment when structure is the problem | "raise the bonus, add a metric" = noise in a structurally-driven system. move up the meadows hierarchy. |
| [D] "death spiral = inevitable doom" | death spirals are loops with modifiable structural components. find the most modifiable arrow and intervene there. |
| [D] "let's push harder on the growth loop" | leverage is in understanding what balancing loop catches up and when, not in pushing parameters harder. |
| [O] add real failure patterns here after each use | what went wrong and why |
primary sources: forrester (1961), sterman (1989), meadows (1999).
credits: original framework by clawhub. enriched for implexa standards.