Abstract
Two games, two simulation models, zero hidden math
Every result either game shows a player — a company valuation, a CO₂e figure, an end-of-run verdict — is computed from a numeric model. This paper documents those models in full: the state variables, the per-industry parameters, the yearly update equations, the scoring formulas, and the rationale behind every coefficient.
Built to Last is a deterministic, equation-driven business simulation: a company makes one durable product over 10, 20, or 30 years, and the thesis under test is that longevity is a financial strategy that compounds. LOOP is a 90-second arcade round whose every point value encodes the waste hierarchy, and whose end-screen impact figures are calibrated against published life-cycle-assessment literature. We treat the two differently on purpose, and we say which is which.
These are games, not oracles
Neither model is a predictive economic forecast, and we are not asking you to believe otherwise. They are built to be directionally realistic and internally consistent: the relationships point the right way, the magnitudes are plausible, and the same inputs always produce the same outputs. That is enough to make a strategy argument playable — it is not enough to value your company.
So here is the deal this document makes with you. For Built to Last we invent no external citations, because the numbers are design choices tuned for a fair, legible game; instead we show you exactly what each one is and the reasoning we used to pick it. For LOOP, the per-product environmental figures are anchored to real LCA sources, and we reproduce those anchors here — including honest provisional flags on the rows that never passed source verification. Your job, as a researcher, is the fun part: compare our numbers with reality and tell us where we are wrong.
Provenance Every formula and constant below is transcribed directly from the games' shipping simulation code.
Part I — The deep dive
Built to Last
A boardroom strategy game disguised as a spreadsheet, and a spreadsheet disguised as a thesis: that patient, repairable, well-served products are not a moral luxury but a compounding financial machine — given enough runway.
1 · What the model is
You run a company that makes one durable product — washing machines, smartphones, or backpacks — for 10, 20, or 30 years. Each year you see one news event and a small hand of decision cards; you pick one card; the model advances one year and shows you the consequences. At the end it scores your company's Sustainable Enterprise Value and names the kind of company you built.
Three properties matter for reading the rest of this paper:
- Deterministic. The yearly economic step is a pure function of state. There is no randomness in the game loop. Given an industry, a scenario length, a seed, and your sequence of decisions, the entire run is reproducible to the last euro.
- The seed only permutes event order. The seed is consumed exactly once, at construction, to pick a swap permutation over the authored timeline. It never injects noise into a calculation — it just changes which year a given event lands.
- Equation-driven. Everything below — durability, demand, share, service, financials, trust, the slow drift of the world — is a closed-form update applied once per year. No agent-based simulation, no Monte Carlo. That is what makes it legible enough to document exhaustively.
Units convention
Money is in M€ (millions of euros). Units are in k-units (thousands). Footprint is in kt (kilotonnes). The six player levers and trust are normalized to [0, 1]. Price is carried as a multiple of the inflation-indexed reference price.
The three scenarios
The Sprint — 10 years. Prove it fast.
The Classic — 20 years. The full thesis.
The Marathon — 30 years. Outlive your critics. Longer scenarios give the compounding mechanics more time to express themselves, which is the entire point of the longevity argument.
2 · State variables
Everything the model knows about your company at the start of a year fits in three groups: the six levers you steer, the market and economic state, and five hidden world forces you can nudge but never set directly.
| Lever | Symbol | What it is | Pulls on |
|---|---|---|---|
| Quality | q | How well the product is engineered. | Lifespan, trust, unit cost. |
| Repairability | r | How openable / fixable the design is. | Lifespan, repaired share, service, footprint, trust. |
| Parts price | pp | How hard you gouge on spare parts. | Repair volume (−), service €/unit (+), trust (−). |
| Service network | sn | Reach of your repair/service org. | Repaired share, service attach, trust, opex. |
| Reach | reach | Marketing presence. Decays ×0.6/yr. | Attractiveness → market share. |
| Price multiplier | priceMult | Sticker price ÷ reference price, ∈ [0.5, 2.5]. | Price competitiveness, trust (overprice), revenue. |
| Variable | Meaning |
|---|---|
| trust | Brand trust ∈ [0, 1] — a slow, asymmetric hysteresis variable (§5). |
| installedBase | Live units in the field, k. The asset the whole compounding thesis rests on. |
| share | Share of annual demand, moved toward a sigmoid target with inertia. |
| cash | War chest, M€. Below the credit line → bankruptcy. |
| footprintCum | Cumulative embodied footprint, kt (seeded with the inherited fleet's carbon). |
| unitCost · price | Derived each year from levers, scale, and resource costs. |
| Force | Symbol | Start | Behaviour |
|---|---|---|---|
| Longevity preference | L | 0.30 | Secular taste for things that last; drifts up +0.015/yr. |
| Resource cost index | RC | 1.0 | Input-cost weather; compounds ×1.015/yr, capped at 2.5. |
| Regulation stringency | REG | 0.05 | Right-to-repair pressure; drifts up with L. |
| Regulatory heat | H | 0 | Hidden; throwaway play raises it and invites regulators. |
| Competitor pressure | C | 0.5 | Mean-reverts to 0.5; your success attracts imitators. |
3 · The three industries
Each industry is a full parameter set, and the differences are the whole game's texture. Phones are a knife-fight: short lives, huge market, brutal margins, everyone sealing everything shut. Machines are heavy and beloved, with a service market hiding in plain sight. Backpacks are cheap, sturdy, and eminently repairable — lifetime-repair legends and landfill mountains are both made here. The table is transcribed verbatim from the model's industry definitions.
| Parameter | Washing machines | Smartphones | Backpacks | Meaning |
|---|---|---|---|---|
| P0 | 899 | 699 | 149 | Starting sticker price, € |
| BASE_COST | 620 | 460 | 72 | Mfg cost at q=r=0.5, RC=1, € |
| MARKET_UNITS | 400 | 6000 | 2500 | Total annual market, k units |
| share0 | 0.10 | 0.05 | 0.06 | Starting share of demand |
| IB0 | 280 | 800 | 700 | Starting installed base, k |
| LIFE_BASE | 8.0 | 3.2 | 6.0 | Product life at q=0.5, years |
| cash0 | 40 | 110 | 10 | Starting war chest, M€ |
| OPEX_FIXED | 13 | 70 | 7.5 | Fixed yearly opex, M€ |
| SERVICE_REV_BASE | 80 | 55 | 9 | Service €/unit/yr at attach=1, pp=0 |
| CREDIT_LINE | −20 | −70 | −6 | Bankruptcy floor, M€ |
| q0 | 0.55 | 0.50 | 0.60 | Starting quality |
| r0 | 0.40 | 0.25 | 0.50 | Starting repairability |
| sn0 | 0.35 | 0.25 | 0.30 | Starting service network |
| pp0 | 0.45 | 0.60 | 0.35 | Starting parts price |
| trust0 | 0.55 | 0.50 | 0.62 | Starting brand trust |
| FP_UNIT | 0.45 | 0.06 | 0.012 | Footprint per unit, t |
| ELASTICITY ★ | 1.1 | 1.6 | 1.25 | Price sensitivity |
| CAPEX_SCALE | 1.0 | 2.5 | 0.7 | Scales all decision capex/costs |
| UV | 60 | 25 | 6 | Installed-base unit value for SEV, € |
| EFF_REF | 13 | 45 | 470 | Reference IB-years per kt footprint |
The parameters encode the archetypes directly. Smartphones: a 3.2-year base life, a 6-million-unit market with a thin 5% start, a high 1.6 elasticity, and a 60% starting parts-price habit — short-lived, high-churn, gouge-prone. Their CAPEX_SCALE of 2.5 means every project costs 2.5× the machines-denominated sticker on the card; their footprint per unit is tiny (0.06 t) but they ship in enormous volume. Washing machines: an 8-year life, an 80 €/unit service base — the richest service market — and a heavy 0.45 t footprint per unit. Backpacks: cheap to build (72 €), highly repairable from the start (r0=0.50), almost weightless to make (0.012 t), but with a tiny 10 M€ cash cushion and a punishing −6 M€ credit line — there is no room for error. The lopsided EFF_REF values (13 vs 45 vs 470 IB-years/kt) simply normalize the efficiency term of the score to each industry's physical reality.
4 · The yearly tick
One click advances one year. Internally that is a fixed pipeline, run once, in this order. The numbering follows the model's own internal step labels (which group the event/decision steps as 1–3 and skip a vestigial 4). Crucially, the event resolution order depends on what the event is: judgments of the past — scandals, exposés, virality — resolve on pre-decision state (you cannot un-scandal yourself by picking the quality card the same year), while tests of the present — audits, labels, teardowns, trends — resolve after your decision, so answering the news can actually change the verdict.
5 · Core formulas
One formula card per system. Each equation is the model's actual yearly update; each coefficient is a named constant — every one listed, with its meaning, in the appendix — quoted with the intent recorded beside it in the source. mod(key) denotes the product (for mult) or sum (for add) of any active timed modifiers from cards and events; clamp01 clamps to [0, 1].
Durability & churn
life = LIFE_BASE · (0.6 + 0.9·q) · (1 + 0.35·r) · mod(life) failures = installedBase / max(0.5, life) repairedShare = clamp( r · (0.2 + 0.8·sn) · (1 − 0.45·pp), 0, 0.95 ) exits = failures · (1 − repairedShare)
Quality stretches life multiplicatively: a q=0 product still lasts 0.6× the industry base, a q=1 product 1.5×. Repairability adds up to a further +35% (LIFE_R_COEF 0.35). Each year a fixed slice of the fleet fails (1/life); of those, repairedShare are rescued — but only if a service network exists (REPAIR_SN 0.2 + 0.8·sn) and you don't gouge on parts (REPAIR_PP_PENALTY 0.45). Repaired share is capped at 0.95: nothing is perfectly repairable. The 0.5-year floor on life prevents a divide-by-zero blow-up.
Demand & share
rcPass = (RC · mod(rc)) ^ 0.6
price = priceMult · P0 · rcPass
marketAvg = P0 · rcPass · (1 − 0.2·(C − 0.5)) · mod(avgPrice)
priceComp = clamp01( 0.5 − ELASTICITY·(price − marketAvg)/marketAvg )
attract = 0.40·priceComp + 0.25·trust + 0.25·L·(q+r)/2
+ 0.15·reach − 0.20·(C − 0.5)
attract += clamp( 0.5·(trust − 0.5)·min(1.5, IB/IB0), −0.08, 0.25 ) // WOM
sig = 1 / (1 + e^(−3.5·(attract − 0.5)))
shareTarget = clamp( share0·(0.18 + 2.0·sig), 0.3·share0, 3.5·share0 )
share += (shareTarget − share) · 0.35
loyalty = min(0.7, 0.25 + 0.35·trust)
conquest = MARKET_UNITS · share · mod(market) · mod(conquest)
unitsSold = max(0, exits·loyalty + conquest)·mod(sales) + extraUnits
Resource costs pass to price only partially (RC^0.6) so real margins erode slowly over decades while service revenue does not. Attractiveness is a weighted blend — price (0.40), trust (0.25), longevity appeal scaled by the world's taste L (0.25), reach (0.15), minus competitor pressure (0.20). The word-of-mouth flywheel (WOM_COEF 0.5) adds a trust-driven bonus scaled by installed base, capped at +0.25; the downside saturates at −0.08 — people still buy junk from brands they distrust, which is the throwaway business model. The sigmoid (k=3.5) maps attractiveness to a share signal, calibrated so an untouched company holds ≈ share0. Inertia 0.35 lets strategies surface over a few years. Demand splits into loyal repeat buyers (the units that just exited × loyalty) and conquest of the fresh market.
Service revenue
attach = repairedShare if r ≥ 0.5: attach ·= (1 + 0.2·REG) // right-to-repair expands the market attach = min(1, attach) serviceRev = installedBase · attach · SERVICE_REV_BASE · (1 + 0.8·pp) / 1000 · mod
You earn service € on the share of the fleet that actually returns for repair (attach = repairedShare). Build a genuinely repairable product (r ≥ 0.5) and right-to-repair regulation expands that market by up to +20%·REG (REG_SERVICE_BONUS 0.2) — the prepared profit from the rules that punish the unprepared. Parts pricing lifts € per unit (PARTS_UPLIFT 0.8), but the same pp suppresses repaired share upstream and bleeds trust, so gouging self-limits. Attach is physically capped at 1: a fleet cannot more-than-fully attach.
Financials
units0 = MARKET_UNITS · share0
scaleEcon = clamp( (unitsSold/units0)^(−0.07), 0.75, 1.25 )
unitCost = BASE_COST · baseCostFactor
· (1 + 0.55·(q−0.5) + 0.18·(r−0.5)) · (RC·mod) · mod · scaleEcon
productGross = unitsSold · (price − unitCost) / 1000
serviceGross = serviceRev · 0.55
compliance = max(0, REG·0.7 − r) · 25 · REG · unitsSold / 1000
footprint = unitsSold · FP_UNIT · (1 − 0.15·r)
carbon = carbonTax ? footprint · 90 / 1000 : 0
snCost = 2.5 · sn · CAPEX_SCALE
interest = cash < 0 ? 0.08 · (−cash) : 0
profit = productGross + serviceGross − opex − snCost
− compliance − carbon − interest
Virtue is expensive — COST_Q 0.55 is the deliberate main brake on longevity dominance; a top-quality build adds ~28% to the bill of materials, repairability another ~9% (COST_R 0.18). Mild scale economies (±25%, exponent −0.07) reward volume slightly. Service carries a fat 55% margin — the compounding engine. Then four levies bite the throwaway player specifically: compliance 25 €/unit when regulation outruns your repairability; carbon 90 €/t once a carbon tax fires; interest 8% while in the red; and the service-network running cost (2.5 M€ per full sn).
Trust hysteresis
target = 0.50 + 0.35·(q−0.5) + 0.25·(r−0.5) + 0.15·(0.5−pp)
+ 0.15·sn·min(1, IB/IB0) − 0.20·max(0, priceMult − 1 − 0.6·q)
target = clamp01( target + mod(trustTarget) )
rate = (target > trust) ? 0.12 /* earning */ : 0.55 /* losing */
trust += (target − trust) · rate
Trust's equilibrium is a weighted read on whether you deserve it: quality (0.35), repairability (0.25), fair parts pricing (0.15), and a real service network (0.15) — minus a penalty for charging more than your quality justifies. You may price up to 0.6·q above reference for free; past that, trust bleeds (TRUST_OVERPRICE_W 0.2). The asymmetry is the whole point: you climb toward a higher target at 0.12/yr but fall toward a lower one at 0.55/yr — about 5 years to earn a level, 1.5 to lose it.
World dynamics
L += 0.015 // longevity taste drifts up RC = min(2.5, RC · 1.015) // resource costs compound REG += 0.008 · L // unless a lobby froze it this year reach ·= 0.6 // campaigns fade H = clamp01( 0.9·H + 0.06·max(0, 0.5 − (q+r)/2) ) // regulatory heat C = clamp01( C + (0.5 − C)·0.10 + (shareGrowth > 0.15 ? 0.04 : 0) )
The world slowly turns toward longevity (L +0.015/yr) and gets costlier to extract from (RC ×1.015/yr) — both quietly favour durability over a long run, which is the thesis embedded in the environment itself. Regulation ratchets with public taste. Reach is a flow, not a stock: it decays 40%/yr (REACH_DECAY 0.6), so marketing-led plays must keep paying. Hidden regulatory heat accumulates when your product sits below median (q+r < 1), decaying at 0.9 — it is the fuse on several scandal events. Competitor pressure mean-reverts to 0.5 but spikes +0.04 whenever your share jumps >15% in a year: win too fast and you summon imitators.
6 · Decisions & events
The model's inputs reach it through two channels: the decision card you choose each year, and the event the year hands you. Both are just structured bundles of the same numeric deltas the equations above consume.
How a choice becomes numbers
step(d) = clamp(d, −0.20, +0.20) // no lever teleports in one year q,r,pp,sn += clamp01( lever + step(Δ) ) cash += cashCapex · CAPEX_SCALE // card costs are machines-M€ priceMult = clamp(priceMult · Δ, 0.5, 2.5) baseCostFactor = clamp(baseCostFactor · Δ, 0.65, 1.15) modifiers.push(...) // timed mult/add effects, tick yearly
Every lever move is clamped to ±0.20/yr (LEVER_MAX_STEP) — strategy is a multi-year project, never a single pivot. Card costs are authored in machines-denominated M€ and multiplied by the industry's CAPEX_SCALE, so the same "build a service network" card costs 2.5× as much for a phone maker. Price and cost factors live inside hard clamps. Timed modifiers (e.g. "sales ×1.22 for 2 years") are pushed onto a list and decremented at year end.
Gates & the once-per-run deal memory
Two mechanisms keep the hand honest. Gates (eligible) only deal a card while its full advertised effect actually fits the state — you cannot seal an already-sealed design, pledge fair prices when your prices are already fair, or promise a ten-year warranty without the quality to back it. Permanent deal memory means any card put in a hand — chosen or not — is barred for the rest of the run. The sole exemptions are the two structural fixtures (STEADY_HAND, EMERGENCY_LOAN) and the two price dials (designed-repeatable). When a slot's authored chain is exhausted, a deterministic pool fallback deals a fresh card; only if the entire non-dial pool is spent does a dial valve fire. A pool-arithmetic test proves the 66 non-dial cards available per industry cover the worst case (a 30-year Marathon deals 58 distinct cards) — so a player never sees the same project twice.
| Tag | Count | Role & how the model reads it |
|---|---|---|
| longevity | 23 | Quality, repairability, service, fair parts — the compounding plays. |
| cheap | 22 | Stripping, sealing, gouging, fast cycles — the throwaway plays. |
| neutral | 24 | Reach, pricing, exports, cost structure — tactically agnostic. |
Of which: 2 industry-restricted, 2 structural one-shots (once), 2 cooldown-0 price dials (the only repeatable cards). Plus 2 fixtures (Steady Hand, Emergency Loan) and the forced Right-to-Repair pair, outside the pool. | ||
Four representative cards
| Card | Tag | Effects (exact) | Gate |
|---|---|---|---|
| Reinforce Quality | long | q +0.12 · cash −6·CAPEX_SCALE M€ | q ≤ 0.92 |
| Seal It Shut | cheap | r −0.20 · unitCost ×0.89 · heat +0.05 | r ≥ 0.40 |
| Modular Platform | long | r +0.18 · q +0.04 · cash −12·CAPEX_SCALE M€ | r ≤ 0.88 |
| Software for Life (phones) | long | life ×1.6 (4 yr) · trust target +0.10 · cash −1·CAPEX_SCALE M€ | smartphones |
Notice the symmetry the model enforces: Seal It Shut buys an 11% unit-cost cut by destroying 0.20 of repairability and raising regulatory heat — exactly the levers that, three years later, feed a worse teardown verdict, a thinner service market, and a compliance bill. The card is a loan against the future, and the equations are the lender.
The 37-event system
Events are authored copy plus an outcome() function. 9 of the 37 resolve after your decision (audits, labels, teardowns, trends — so your answer can change the verdict); the rest resolve before it (scandals, exposés, virality — judgments of a past you can't retroactively fix). Many branch on state, so the same headline rewards a prepared company and punishes an exposed one.
| Event | Resolves | Outcome (exact) |
|---|---|---|
| Right-to-Repair Act | pre | REG +0.35; forces a choice — Embrace (r +0.15, cash −14·scale) vs Lobby (cash −4·scale, heat +0.15, REG −0.15, freeze REG drift 2 yr) |
| Warranty Scandal | pre | trust −0.20; recall cash = −0.5·OPEX_FIXED·(1 − 0.5·q) |
| Eco Label | post | if q+r ≥ 1.1 → trust +0.05, conquest ×1.15 (2 yr); else a quiet dud |
| Influencer Teardown | post | if r ≥ 0.55 → trust +0.08; else trust −0.10 |
| Supply Shock | pre | resource cost RC ×1.25 for 2 years |
The scandal's recall cost shrinking with quality (·(1 − 0.5·q)) is a representative detail: a well-built fleet is cheaper to recall. The model rarely lands a flat penalty — it asks the state what you deserve.
7 · Scoring — Sustainable Enterprise Value
A run's final number is its Sustainable Enterprise Value (SEV), in M€. It is four value terms summed, then scaled by two multipliers that reward the things the game is actually about — earned trust and material efficiency.
runRate = 6.0 · avg(profit over last 3 years) // SEV_PROFIT_W cash = 1.0 · finalCash // SEV_CASH_W service = 2.5 · finalServiceGross // SEV_SERVICE_W base = installedBase · UV / 1000 // book value of the fleet trustMult = 0.75 + 0.5 · trust // → 0.75 … 1.25 eff = Σ installedBase / footprintCum // IB-years per kt emitted effMult = clamp( 0.85 + 0.5·(eff − EFF_REF)/EFF_REF, 0.8, 1.2 ) SEV = max(0, (runRate + cash + service + base) · trustMult · effMult)
The sum is what the company is worth: a multiple of its recent profit run-rate (6×), its cash, a generous multiple of its service business (2.5× — because recurring service revenue deserves a richer multiple than one-off sales), and the book value of the installed base still in the field. Then the character of the company scales that value: a trusted brand is worth up to 1.25×, a distrusted one as little as 0.75×; and a company that squeezed more service-years out of each tonne it emitted than its industry reference earns up to 1.2×, while a wasteful one is docked to 0.8×. The efficiency term is where the environmental thesis enters the money.
| Industry | Sprint (10y) | Classic (20y) | Marathon (30y) |
|---|---|---|---|
| Washing machines | 180 | 330 | 850 |
| Smartphones | 840 | 1420 | 3900 |
| Backpacks | 134 | 370 | 860 |
These baselines are not arbitrary — they are calibrated (§9), set at roughly 80% of the strongest reference-strategy median for each cell. sevPct = SEV / BASELINE_SEV is what the archetype classifier reads, so "beating the reference" means clearing ≈1.0.
8 · Archetypes
Every finished run is labelled as exactly one of 11 archetypes (ordered rules, first match wins). The 2026 rework made every lever judgment industry-relative: measured against the industry's own starting habit long0 = (q0+r0)/2, because industries begin with very different defaults (phones 0.375, machines 0.475, backpacks 0.55). The headline metrics: longRel = your average product virtue minus that habit; sevPct = SEV ÷ baseline; offender = a deeds test (≥ max(4, 25% of years) on cheap-tag cards, with longevity picks ≤ 34% of them).
| # | Archetype | Epigram | Triggers when… |
|---|---|---|---|
| 1 | The Fast Burner | Lit up the sky. Briefly. | bankrupt & (longRel < −0.05 or offender) |
| 2 | The Icarus | Right strategy, wrong runway. | bankrupt (otherwise) |
| 3 | The Compounder | Boring for a decade. Then unstoppable. | longRel ≥ 0.12 & trust ≥ 0.65 & (serviceShare ≥ 0.3 or sevPct ≥ 1.0) & sevPct ≥ 0.7 |
| 4 | The Circular Champion | Sells products. Keeps them alive. Paid twice. | r ≥ r0+0.28 & pp ≤ 0.35 & effPct ≥ 0.75 |
| 5 | The Pivot Artist | Changed its mind. In time. | early cheap-dominant, late longevity-dominant, ends above habit, trust recovered ≥ 0.08 |
| 6 | The Volume Machine | Fast, cheap, and — annoyingly — correct. | (longRel ≤ −0.07 or offender) & sevPct ≥ 1.0 |
| 7 | The Premium Fortress | Small kingdom. Thick walls. | q ≥ q0+0.18 & priceMult ≥ 1.25 & share ≤ share0 |
| 8 | The Greenwasher | The brochure was sustainable. | ≥3 campaign picks & longRel < −0.05 & trust < 0.45 |
| 9 | The Throwaway | Built for the bin. The bin remembers. | longRel < −0.07 or offender or (pp ≥ pp0+0.12 & trust < 0.45) |
| 10 | The Trust Bank | Beloved. Broke-ish. | trust ≥ 0.75 & sevPct < 0.4 |
| 11 | The Steady Hand | Showed up. Years passed. Nobody complained. | default — none of the above |
The ordering encodes a moral hierarchy the designers will defend: a genuine turnaround (Pivot Artist) outranks the offender verdicts, so a redeemed company isn't averaged back down into its worst years; and cheap play only earns the grudging Volume Machine when it actually beats the reference — otherwise it is The Throwaway, score or no score.
The bankruptcy post-mortem
A run that hits the credit line gets a gentle, named cause of death — diagnosed from the record, never mocking:
- The Scandal Spiral — a trust shock landed within 4 years of the end.
- The Price War — you sold below unit cost for ≥ 2 years (
PM_PRICEWAR_YEARS). - The Overreach — capex in the final 3 years exceeded 1.5× your starting cash (
PM_OVERREACH_SPEND). - The Slow Bleed — no single mistake; margins quietly went somewhere else (the default).
9 · Calibration methodology
This is the honest answer to "where do the numbers come from?" — and it is the part most unlike a citation. Built to Last is tuned the way a game is tuned: against itself, by robots, until it is fair.
- Deterministic robot playtest. Two reference strategies — a cheap bot that never borrows and a longevity bot that bridges a red year rather than abandon the build — play every industry × scenario × seed. Because the economy is a pure function of state, these runs are exactly reproducible, and the very same bots draw the dashed comparison lines on the end screen. The dashed lines are not illustrations; they are the certified reference.
- Baselines at ≈80% of the strongest robot median. The
BASELINE_SEVtable is set just below what the best reference strategy typically achieves in each cell (the test harness prints the medians on demand). A human who plays well clears it; a human who plays carelessly does not. Score targets are earned, not gifted. - The goal is "no single strategy dominates." The hot dials — elasticity, the word-of-mouth flywheel, the cost of quality, the share inertia, the trust hysteresis — are tuned so that cheap play wins on short clocks, longevity wins on long ones, and several distinct paths can clear the baseline. If one strategy swept every cell, the game would have no argument to make.
In plain terms The Built to Last numbers are design decisions calibrated for a fair, legible game, not empirical estimates of real washing-machine economics. They are internally consistent and directionally sensible — quality really does cost money, trust really is slow to earn — but they are ours, chosen, and open to your critique.
Part II — The shorter round
LOOP
A 90-second one-thumb arcade game where the circular-economy message lives entirely in the mechanic. You flick falling products into the right loop; the points you earn and the impact you save are both numbers with a story.
1 · What the model is
A fixed-timestep arcade round on a logical 390×844 portrait canvas. Products fall; you flick each into one of four rings. There is no lose-state and no tuning fragility: hard caps bound the worst case by construction, and a daily seed makes every player's track identical, so the leaderboard is a pure skill comparison. Two number systems matter — the scoring (which encodes the waste hierarchy) and the impact (which is the genuinely sourced part).
2 · The mechanic model
The four rings are the EU waste hierarchy, fixed left-to-right forever: Repair · Reuse · Refurbish · Recycle. A product's condition state determines its correct ring — the player never adjudicates a fuzzy classification, they read a badge:
| State | Correct ring | Base points | Hierarchy logic |
|---|---|---|---|
| Broken | Repair | 120 | It's broken → fix it. The most value kept. |
| Unwanted | Reuse | 110 | Works fine, owner's done → pass it on. |
| Outdated | Refurbish | 100 | Functional but behind → restore professionally. |
| Worn out | Recycle | 80 | End of life → recover the materials. The least kept. |
Scoring formula
points = round( base(ring) · comboMult · goldenMult )
comboMult = 1 + 0.1 · min(comboBefore, 10) // caps at ×2.0; resets on miss
goldenMult = golden ? 5 : 1 // "Designed to Matter"
base = Repair 120 · Reuse 110 · Refurbish 100 · Recycle 80
(during the 8 s Right-to-Repair window, Repair base = 240)
end bonus = CLOSED LOOP +1000 (no losses, no wrong rings — subsumes Zero Waste)
= ZERO WASTE +500 (no landfill losses)
The combo multiplier rewards a clean streak (up to ×2.0 at 10 consecutive correct loops) and resets the moment you miss a ring or lose a product to landfill. Golden products pay 5×. The Right-to-Repair power-up briefly doubles Repair to 240 and lets everything be repaired — a power fantasy that says, mechanically, "repair rules make more things repairable." The two end bonuses reward whole-round perfection. A daily seed gives an exact, computable score ceiling, so the conference leaderboard is a fight for perfection, not a grind.
Determinism & anti-cheat
The day's seed is HMAC(secret, gameId + Europe/Berlin date). Both client and server expand it with the same pure PRNG (cyrb128 string-hash → sfc32) into the full 90-second script — spawn times, positions, product/state sequence, golden and power-up placements. The client applies score events one at a time as you play; the server re-folds the submitted event log through the identical reducer and rejects any score that doesn't reproduce. Plausibility caps back it up: a product can't resolve faster than 150 ms after spawning, at most 8 wrong bounces per product, at most 400 events per round.
3 · The impact model — the genuinely sourced part
Unlike Built to Last, LOOP's environmental numbers are calibrated against published life-cycle-assessment literature, named below. The end screen turns your round into kept materials, avoided CO₂e and retained value with one formula:
impact = Σ ( product.footprint × ring_retention ) over every product you looped
ringRetention: Repair 0.9 · Reuse 0.9 · Refurbish 0.7 · Recycle 0.25
carKmEquivalent = co2Kg / 0.15 // 0.15 kg CO₂e per car-km, EU fleet tailpipe
Each looped product retains a fraction of its embodied production footprint according to the ring it went through. CO₂e here is cradle-to-gate production only — the use phase is excluded on purpose, because what staying in the loop avoids is the production of a new unit. The retention factors are the hierarchy taught in numbers: players see recycling "save" far less than repair, which is exactly the conference's point — and the literature backs it.
The retention values are not invented. WRAP/ERM's washing-machine LCA finds refurbishment "effectively postpones the need to produce a new machine" at near-negligible impact (consistent with the 0.7–0.9 range), while Öko-Institut's end-of-life recycling credit recovers only ~18% of production GWP even for a steel-rich appliance — the favourable case; electronics and textiles recover less. Recycle is defensible anywhere in 0.2–0.25; we use 0.25.
| Product | Material kg | CO₂e kg | Value € | Source anchor (production / cradle-to-gate) |
|---|---|---|---|---|
| TV / monitor | 12 | 350 | 500 | Samsung 75″ QLED PER (Carbon Trust cert.), prod. 70.4% of 982 kg, area-scaled to 55″ → ~310–450 |
| Washing machine | 75 | 250 | 450 | Öko-Institut prod. 314 kg; WRAP/ERM ~213–226 kg; EEB ~250 kg/unit |
| Laptop | 2 | 250 | 800 | Dell Inspiron/XPS + Lenovo IdeaPad PCFs: prod.-only ~222–272 kg |
| Bicycle | 14 | 150 | 350 | provisional order-of-magnitude only |
| Smartphone | 0.2 | 50 | 300 | Apple iPhone 16 PER: 80% of 56 kg lifecycle ≈ 45–47 kg prod.; EEB ~48 |
| Coffee machine | 4 | 40 | 120 | provisional order-of-magnitude only |
| Vacuum cleaner | 6 | 25 | 150 | EEB / Gallego-Schmid: corded ~21–24 kg/unit |
| Power drill | 2 | 25 | 90 | provisional order-of-magnitude only |
| Denim jacket | 0.8 | 15 | 80 | Levi's 501 LCA: cradle-to-gate 16.2 kg; newer denim LCA 12.6 kg |
| Headphones | 0.3 | 15 | 100 | provisional order-of-magnitude only |
| Backpack | 1 | 15 | 90 | provisional order-of-magnitude only |
| Sneakers | 0.7 | 14 | 70 | MIT running-shoe LCA: 13.6 kg, ~97% cradle-to-gate; Carbonfact median 12.1 kg |
| Electric kettle | 1 | 10 | 30 | Gallego-Schmid 2018 BoM ~4–7 kg; ADEME Base Carbone 9.9 kg |
Honest flags Five rows are provisional — bicycle, coffee machine, power drill, headphones, backpack carry order-of-magnitude sanity only, no verified LCA anchor. They are flagged in the source data itself and would benefit from a dedicated source pass (Trek / Shift Cycling Culture for bicycles; ADEME Base Empreinte or brand PCFs for the small appliances and accessories). The car-km factor is 0.15 kg CO₂e/km = EU fleet-average real-world tailpipe (EEA: new cars ~128 g/km real-world 2024, older fleet ~150–180). Tailpipe basis on purpose: the product side is production-only CO₂e, so a lifecycle car factor (~0.19–0.25) would mix scopes and overstate the equivalence. The end screen carries a one-line methodology note — "illustrative magnitudes based on published lifecycle data" — because honesty is the anti-preachiness insurance with a research audience.
Sources (multi-source adversarial verification): Apple iPhone 16 PER (Sept 2024) · Dell & Lenovo product carbon footprints · Samsung QLED 75Q60C environmental report (Carbon Trust certified) · Öko-Institut eco-efficiency analysis of washing machines (2005) · WRAP/ERM washing-machine replacement & refurbishment LCA (2010, ISO-reviewed) · EEB "Coolproducts don't cost the Earth" (2019) · Levi's 501 LCA (2015) · MIT footwear LCA (J. Cleaner Production 2013) · Gallego-Schmid et al. (STOTEN 2018) · ADEME Base Carbone.
4 · Physics constants (brief)
The rest of LOOP's numbers are "feel" constants — they make the flick satisfying and the round soothing. They are explicitly not claims about reality; we list them for completeness, not for scrutiny.
| Constant | Value | What it tunes |
|---|---|---|
| GRAB_RADIUS | 96 px | Touch-to-grab forgiveness (visual target ~64). |
| MIN_FLICK_SPEED | 500 px/s | Below this a release is a harmless nudge, not a throw. |
| SNAP_CONE_DEG | 28° | Angular tolerance for snapping a flick to a ring. |
| MAX_FLICK_SPEED | 1600 px/s | Ballistic velocity clamp. |
| HOMING_MIN / MAX | 260 / 600 ms | Flight time of a snapped product to its ring. |
| SLOWMO_SCALE / MAX / cooldown | 0.4× / 1200 / 1000 ms | Bullet-time on hold — calm aiming, capped so it can't freeze play. |
| SWAY_AMPLITUDE / FREQ | 20 px / 0.0011 rad·ms⁻¹ | Gentle sinusoidal fall sway. |
| BALLISTIC_GRAVITY | 0.0026 px·ms⁻² | Gravity for missed flicks that arc back into play. |
| MAX_CONCURRENT / MIN_SPAWN_GAP | 5 / 280 ms | Hard caps that bound the worst case — a struggling player never faces a swarm. |
| ROUND_MS / WORLD_HEALTH_MAX | 90 000 / 5 | Round length; saturation steps the world greys through on losses. |
Closing
On realism & honesty
A game is not an oracle. We will say it once more, plainly, because it is the most important sentence in this document: neither model predicts the future, and neither is meant to.
What they are built to be is internally consistent and directionally realistic. Inside Built to Last, quality genuinely costs money, trust is genuinely slow to earn and fast to lose, a service business genuinely compounds, and a world genuinely drifts toward repair — and every one of those relationships is a number you can see above and argue with. Inside LOOP, the points genuinely encode the waste hierarchy, and the impact figures are genuinely anchored to published LCA work, with the unverified rows genuinely flagged.
The two games earn your trust differently, and we have been careful not to blur them. Built to Last's constants are calibrated design choices — honest about being ours. LOOP's impact constants are sourced estimates — honest about their anchors and their gaps. We manufactured no citations for the former and invented no numbers for the latter.
Tell us where we're wrong
You are a research audience, and this is the part we actually want from you. Every coefficient above is a hypothesis about how the world leans. If your read on elasticity, on the cost of repairability, on the value of a service-year-per-tonne, or on the embodied footprint of a denim jacket differs from ours — that disagreement is the most useful thing that can come out of these games. Compare our numbers with your reality, and bring us the deltas.
AI Research & Technology Lab · for the Nuremberg Institute for Market Decisions · MDD26
Appendix
Full constant reference
The complete promise delivered: every constant in both models, grouped by system, with its value and one-line meaning. Built to Last contributes ~250 values; LOOP its scoring, schedule, catalog and impact constants. Magnitudes are exact.
A · Built to Last — the global economy
| Constant | Value | Meaning |
|---|---|---|
| L_TREND | 0.015 | Longevity-preference drift per year (↑) |
| L0 | 0.30 | Starting longevity preference |
| RC_TREND | 1.015 | Resource-cost index multiplier per year |
| RC0 / RC_MAX | 1.0 / 2.5 | Starting resource-cost index / cap |
| PRICE_RC_PASS | 0.6 | Exponent — partial pass-through of RC to price |
| REG_DRIFT / REG0 | 0.008 / 0.05 | Regulation drift/yr (×L) / starting stringency |
| LEVER_MAX_STEP | 0.20 | Max lever movement per year |
| PRICE_MIN / MAX | 0.5 / 2.5 | Price clamp as a multiple of P0 |
| REACH_DECAY | 0.6 | Reach retained each year (campaigns fade) |
| Constant | Value | Meaning |
|---|---|---|
| LIFE_Q_BASE / LIFE_Q_COEF | 0.6 / 0.9 | Life floor factor / quality slope |
| LIFE_R_COEF | 0.35 | Repairability life bonus (×) |
| REPAIR_SN_BASE / COEF | 0.2 / 0.8 | Repaired-share base / service-network slope |
| REPAIR_PP_PENALTY | 0.45 | Parts gouging suppresses repair volume |
| REPAIRED_SHARE_MAX | 0.95 | Cap on the rescued fraction |
| ATTRACT_PRICE_W | 0.40 | Weight: price competitiveness |
| ATTRACT_TRUST_W | 0.25 | Weight: trust |
| ATTRACT_LONGEVITY_W | 0.25 | Weight: longevity appeal (×L) |
| ATTRACT_REACH_W | 0.15 | Weight: marketing reach |
| ATTRACT_COMP_W | 0.20 | Weight: competitor pressure (−) |
| WOM_COEF | 0.5 | Word-of-mouth flywheel strength |
| WOM_IB_CAP | 1.5 | Installed-base cap on WOM |
| WOM_MIN / MAX | −0.08 / 0.25 | WOM clamp (downside saturates, upside keeps headroom) |
| SHARE_SIGMOID_K | 3.5 | Sigmoid steepness |
| SHARE_MULT_BASE / COEF | 0.18 / 2.0 | Share-target base / sigmoid coefficient |
| SHARE_FLOOR / CEIL_MULT | 0.3 / 3.5 | Share-target clamp (× share0) |
| SHARE_INERTIA | 0.35 | Fraction of the gap to target closed per year |
| LOYALTY_BASE / TRUST_COEF / MAX | 0.25 / 0.35 / 0.7 | Repeat-buyer rate base / trust slope / cap |
| Constant | Value | Meaning |
|---|---|---|
| SERVICE_MARGIN | 0.55 | Gross margin on service revenue |
| PARTS_UPLIFT | 0.8 | Parts pricing lift on service €/unit |
| REG_SERVICE_BONUS / R_MIN | 0.2 / 0.5 | RtR service-market expansion / repairability gate |
| COST_Q / COST_R | 0.55 / 0.18 | Unit-cost slope for quality / repairability |
| SCALE_EXP / SCALE_CLAMP | 0.07 / 0.25 | Scale-economy exponent / ±clamp |
| COMPLIANCE_RATE | 25 | €/unit compliance for under-repairable designs |
| CARBON_EUR_PER_T | 90 | €/t once a carbon tax fires |
| INTEREST_RATE | 0.08 | Annual interest while cash is negative |
| SN_COST | 2.5 | M€ per full service network (× CAPEX_SCALE) |
| TRUST_UP / TRUST_DOWN | 0.12 / 0.55 | Hysteresis rate — earning / losing |
| TRUST_BASE | 0.50 | Trust-target intercept |
| TRUST_Q/R/PP/SN_W | 0.35 / 0.25 / 0.15 / 0.15 | Trust-target weights |
| TRUST_OVERPRICE_W | 0.2 | Penalty for pricing above quality justification |
| HEAT_DECAY / HEAT_GAIN | 0.9 / 0.06 | Regulatory-heat decay / gain |
| C0 / C_REVERT | 0.5 / 0.10 | Competitor-pressure mean / reversion rate |
| C_SHARE_GAIN_TRIGGER / GAIN | 0.15 / 0.04 | Share-jump threshold / pressure spike |
| FP_R_DISCOUNT | 0.15 | Per-unit footprint cut from repairability |
| Constant | Value | Meaning |
|---|---|---|
| SEV_PROFIT_W / YEARS | 6.0 / 3 | Profit run-rate multiple / averaging window |
| SEV_CASH_W / SERVICE_W | 1.0 / 2.5 | Cash weight / service-business multiple |
| SEV_TRUST_BASE / COEF | 0.75 / 0.5 | Trust multiplier 0.75…1.25 |
| SEV_EFF_BASE / COEF | 0.85 / 0.5 | Efficiency multiplier intercept / slope |
| SEV_EFF_MIN / MAX | 0.8 / 1.2 | Efficiency multiplier clamp |
| ARCH_COMPOUNDER_LONG_REL | 0.12 | Compounder: product above habit |
| ARCH_COMPOUNDER_TRUST_MIN | 0.65 | Compounder: trust floor |
| ARCH_COMPOUNDER_SERVICE/SEV_ALT/SEV_MIN | 0.3 / 1.0 / 0.7 | Compounder: service share / score gates |
| ARCH_CIRCULAR_R_REL / PP_MAX / EFF_MIN | 0.28 / 0.35 / 0.75 | Circular Champion gates |
| ARCH_VOLUME_LONG_REL / SEV_MIN | −0.07 / 1.0 | Volume Machine gates |
| ARCH_FORTRESS_Q_REL / PRICE_MIN | 0.18 / 1.25 | Premium Fortress gates |
| ARCH_GREENWASH_* (campaigns/dreach/long/trust) | 3 / 0.1 / −0.05 / 0.45 | Greenwasher gates |
| ARCH_THROWAWAY_LONG / PP_REL / TRUST | −0.07 / 0.12 / 0.45 | Throwaway gates |
| ARCH_FAST_BURNER_LONG_REL | −0.05 | Fast Burner: stripped below habit |
| ARCH_OFFENDER_CHEAP_SHARE / MIN_PICKS / TOKEN | 0.25 / 4 / 0.34 | Behavioural-offender deeds gate |
| ARCH_PIVOT_* (cheap/long/end/trust) | 2 / 3 / 0.02 / 0.08 | Pivot Artist gates |
| ARCH_TRUSTBANK_TRUST / SEV | 0.75 / 0.4 | Trust Bank gates |
| PM_PRICEWAR / OVERREACH / SLOWBLEED | 2 / 1.5 / 4 | Post-mortem thresholds (yrs / ×cash0 / yrs) |
B · Built to Last — decision cards
Card capex is in machines-M€ (× the industry's CAPEX_SCALE); years are modifier durations; drifts are per-year lever deltas. Every value is the game's named balance constant.
| Constant | Value | Meaning |
|---|---|---|
| Q_STEP / Q_CAPEX | 0.12 / 6 | Reinforce Quality: q step / capex |
| VE_Q_DROP / COST_FACTOR / CASH | 0.10 / 0.82 / 3 | Value Engineering: q drop / cost× / cash in |
| COST_FACTOR_FLOOR | 0.65 | Hard floor on engineered base-cost cuts |
| MOD_R_STEP / Q_STEP / CAPEX / COOLDOWN | 0.18 / 0.04 / 12 / 3 | Modular Platform: r, q, capex, cooldown |
| SEAL_R_MIN / R_DROP / COST_FACTOR / HEAT | 0.40 / 0.20 / 0.89 / 0.05 | Seal It Shut: gate / r drop / cost× / heat |
| FAIR_PP_MIN / DROP / TRUST_BONUS / YEARS | 0.35 / 0.20 / 0.04 / 2 | Fair Parts Pledge |
| PREMIUM_PP_STEP / HEAT | 0.20 / 0.03 | Parts Premium: pp step / heat |
| SN_STEP | 0.20 | Service Expansion: sn step |
| MKT_REACH / MKT_COST | 0.25 / 5 | Brand Campaign: reach / cost |
| PRICE_STEP | 0.10 | Price dial ±10% (cooldown 0, repeatable) |
| FAST_SALES / LIFE_MULT / YEARS / HEAT / COST | 1.22 / 0.92 / 2 / 0.04 / 3 | Fast-Cycle Launch |
| RESTR_OPEX_FACTOR / MIN / FLOOR | 0.85 / 0.65 / 0.55 | Cost Restructure: opex× / gate / floor |
| RESTR_Q_DRIFT / TRUST_MALUS / YEARS | −0.03 / −0.02 / 2 | Cost Restructure: rot |
| STEADY_DRIFT | 0.02 | Steady Hand: drift toward industry norm |
| LOAN_FACTOR | 0.7 | Emergency Loan: × OPEX_FIXED |
| Constant | Value | Meaning |
|---|---|---|
| WARRANTY_Q_MIN / TRUST / YEARS / COST / COOLDOWN | 0.62 / 0.05 / 3 / 8 / 4 | Ten-Year Promise |
| REFURB_R_MIN / CONQUEST / TRUST / YEARS / COST / CD | 0.58 / 1.14 / 0.02 / 2 / 7 / 3 | Refurb Program |
| SKUNK_Q / COST_FACTOR / COST / CD | 0.03 / 0.96 / 45 / 4 | Skunkworks |
| OUTSRC_COST_FACTOR / Q_DROP / HEAT | 0.90 / 0.05 / 0.02 | Outsource (once) |
| POACH_Q / C / COST / CD | 0.04 / 0.08 / 13 / 3 | Poach Talent |
| ASSET_SALE_FACTOR / CASH_MAX | 0.45 / 0.75 | Asset Sale (once): × opex / cash gate ×cash0 |
| CAFE_SN_STEP / TRUST / YEARS / COST | 0.08 / 0.01 / 2 / 24 | Repair Café (machines, backpacks) |
| SWLIFE_LIFE_MULT / TRUST / YEARS / COST | 1.6 / 0.1 / 4 / 1 | Software for Life (phones) |
| OPENLIC_PP_DROP / HEAT_RELIEF / SR_MULT / YEARS | 0.10 / −0.08 / 0.92 / 2 | Open Parts License |
| TAKEBACK_CONQUEST / TRUST / YEARS / COST / R_MIN | 1.05 / 0.02 / 2 / 6 / 0.45 | Take-Back Program |
| DURALAB_Q_DRIFT / YEARS / COST | 0.015 / 3 / 6 | Durability Lab |
| STDLOBBY_REG / HEAT_RELIEF / COST / R_MIN | 0.13 / −0.05 / 4 / 0.50 | Lobby for Standards |
| SHRINKW_CASH / TRUST / YEARS / HEAT | 0.32 / −0.03 / 2 / 0.03 | Shrink the Warranty |
| DISCSUP_COST_MULT / Q_DRIFT / YEARS | 0.93 / −0.015 / 2 | Discount Supplier |
| HOTLINE_SN_DROP / CASH / TRUST / YEARS | 0.12 / 0.25 / −0.02 / 2 | Kill the Hotline |
| DMGPLAN_SR_MULT / YEARS / TRUST / HEAT | 1.15 / 2 / −0.01 / 0.02 | Damage Plans |
| SHORTC_SALES / LIFE_MULT / YEARS / HEAT | 1.15 / 0.95 / 2 / 0.03 | Shorter Cycles |
| AUTO_COST_FACTOR / COST | 0.94 / 36 | Automation Line |
| EXPORT_CONQUEST / YEARS / COST | 1.12 / 2 / 10 | Export Push |
| PREMED_PRICE_MULT / Q / COST | 1.08 / 0.03 / 8 | Premium Edition |
| SUPJV_RC_MULT / YEARS / COST | 0.92 / 3 / 7 | Supplier JV |
| PATENT_C_DROP / HEAT / COST | −0.06 / 0.03 / 5 | Patent Skirmish |
| COUNCIL_TRUST / YEARS / REACH / COST | 0.02 / 2 / 0.05 / 1.5 | Customer Council |
| DESIGNER_REACH / Q / COST | 0.12 / 0.03 / 9 | Star Designer |
| Constant | Value | Meaning |
|---|---|---|
| OVERBUILD_Q / COST | 0.1 / 5 | Overbuild the Weak Point |
| TELEM_Q_DRIFT / YEARS / COST | 0.012 / 3 / 4 | Failure Telemetry |
| VAULT_R_STEP / PP_DROP / COST | 0.08 / 0.04 / 4 | 20-Year Parts Vault |
| PUBTD_R_STEP / TRUST / YEARS | 0.05 / 0.04 / 2 | Publish the Teardown |
| CAREPLAN_SR_MULT / SN_STEP / YEARS | 1.12 / 0.05 / 2 | Lifetime Care Plan |
| THIN_Q_DROP / COST_FACTOR / CASH | 0.08 / 0.88 / 2 | Material Thinning |
| QSPEC_COST_MULT / Q_DRIFT / YEARS / HEAT | 0.93 / −0.012 / 2 / 0.04 | Quiet Spec Downgrade |
| FLASH_SALES_MULT / TRUST / YEARS | 1.12 / −0.02 / 2 | Flash-Sale Channel |
| CLAIMS_CASH / TRUST / YEARS / HEAT | 0.06 / −0.04 / 2 / 0.04 | Claims-Denial Desk |
| RETAILALL_CONQUEST / YEARS / COST | 1.1 / 2 / 4 | Retail Alliance |
| COBRAND_REACH / COST | 0.18 / 3 | Co-Brand Collab |
| FAIR_CIRCUIT_REACH / CONQUEST / COST | 0.1 / 1.05 / 1.5 | Trade-Fair Circuit |
| LEANAUDIT_COST_MULT / YEARS / COST | 0.97 / 2 / 2 | Lean Audit |
| LEASEPILOT_SR / CONQUEST / YEARS / COST | 1.1 / 1.06 / 2 / 8 | Leasing Pilot |
| PRORECALL_Q / TRUST / YEARS / HEAT / COST | 0.05 / 0.04 / 2 / −0.06 / 7 | Proactive Recall |
| SECONDLIFE_R / CONQUEST / TRUST / YEARS / COST | 0.05 / 1.08 / 0.02 / 2 / 5 | Second-Life Dealers |
| SPARES_PP_DROP / MIN / TRUST / YEARS | 0.1 / 0.3 / 0.02 / 2 | Spares at Cost |
| ACADEMY_SN / R_STEP / TRUST / YEARS / COST | 0.1 / 0.06 / 0.02 / 2 / 5 | Repair Academy |
| DFREEZE_LIFE / Q / TRUST / YEARS / COST | 1.15 / 0.06 / 0.02 / 3 / 2 | Design Freeze |
| SEEDING_SALES / TRUST / YEARS / COST | 1.1 / −0.01 / 2 / 3 | Influencer Seeding |
| TARIFFENG_COST_MULT / YEARS / HEAT | 0.94 / 2 / 0.05 | Tariff Engineering |
| LOCKIN_SR_MULT / TRUST / YEARS / HEAT | 1.1 / −0.01 / 2 / 0.03 | Accessory Lock-In |
| PAPERGREEN_REACH / HEAT / TRUST / YEARS / COST | 0.15 / 0.04 / −0.01 / 2 / 2 | Paper Green |
| SKELETON_SN_DROP / MIN / CASH / TRUST / YEARS | 0.08 / 0.2 / 0.15 / −0.01 / 2 | Skeleton Crew |
| PALLET_CONQUEST / TRUST / YEARS | 1.08 / −0.01 / 2 | Pallet Deals |
| DATAMON_CASH / TRUST / YEARS / HEAT | 0.12 / −0.02 / 2 / 0.04 | Data Monetization |
| DUALSRC_RC_MULT / YEARS / COST | 0.95 / 2 / 4 | Dual Sourcing |
| RETROFIT_COST_MULT / YEARS / COST | 0.95 / 3 / 12 | Energy Retrofit |
| HERITAGE_REACH / CONQUEST / YEARS / COST | 0.12 / 1.06 / 2 / 4 | Heritage Reissue |
| CRISISPR_TRUST / YEARS / COST | 0.02 / 2 / 2 | Crisis-PR Retainer |
| WHITELABEL_CASH / CONQUEST / YEARS | 0.2 / 0.97 / 2 | White-Label Contract |
| STDSEAT_HEAT_RELIEF / TRUST / YEARS / COST | −0.05 / 0.01 / 2 / 2 | Standards Seat |
| APPRENTICE_Q_DRIFT / YEARS / COST | 0.01 / 3 / 3 | Apprentice Program |
C · Built to Last — events
| Constant | Value | Meaning |
|---|---|---|
| RTR_REG_STEP | 0.35 | Right-to-Repair Act: REG jump |
| RTR_EMBRACE_R / COST | 0.15 / 14 | Embrace branch: r step / capex |
| RTR_LOBBY_COST / HEAT / FREEZE / ROLLBACK | 4 / 0.15 / 2 / 0.15 | Lobby branch: capex / heat / freeze yrs / REG rollback |
| RIVAL_PRICE_MULT / YEARS / C | 0.85 / 3 / 0.15 | Throwaway Rival |
| VIRAL_TRUST / REACH | 0.12 / 0.2 | Viral Durability |
| SUPPLY_RC_MULT / YEARS | 1.25 / 2 | Supply Shock |
| RECESSION_MARKET / YEARS / ELASTICITY / L | 0.8 / 2 / 1.3 / 0.03 | Recession |
| TEARDOWN_R_MIN / TRUST_GOOD / BAD | 0.55 / 0.08 / −0.10 | Influencer Teardown |
| SCANDAL_TRUST / RECALL | −0.20 / 0.5 | Warranty Scandal |
| EXPOSE_TRUST / HEAT | −0.15 / 0.1 | Parts-Profiteering Exposé |
| COPYCAT_C / L | 0.1 / 0.04 | Competitor Copies Longevity |
| ECO_QR_MIN / CONQUEST / YEARS / TRUST | 1.1 / 1.15 / 2 / 0.05 | Eco Label (post-decision) |
| BOOM_MARKET | 1.15 | Boom Year |
| HAUL_CONQUEST / PRICE_MAX | 1.2 / 0.95 | Haul Trend (post-decision) |
| SECONDHAND_LONG_MIN / TRUST_COEF / YEARS / PENALTY | 0.55 / 0.1 / 3 / 0.95 | Second-Hand Platform |
| BREAKTHROUGH_RC | 0.9 | Material Breakthrough (RC ×) |
| TARIFF_COST_MULT / YEARS | 1.08 / 3 | Trade Tariff |
| OUTAGE_SR_MULT | 0.7 | Service Outage |
| ANCHOR_Q_MIN / UNITS_FACTOR | 0.6 / 0.25 | Anchor Client (× market×share0) |
| NOSTALGIA_TRUST / REACH | 0.08 / 0.15 | Nostalgia Revival |
| PRICEWAR_PRICE_MULT / YEARS / C | 0.9 / 2 / 0.08 | Price War |
| CURRENCY_RC_MULT / YEARS | 1.15 / 2 | Currency Crisis |
| SUPPLIER_BK_COST_MULT / CASH | 1.1 / 0.15 | Supplier Bankruptcy |
| LOGISTICS_SALES_MULT | 0.92 | Logistics Crunch |
| MINIMALISM_L / MARKET / YEARS | 0.04 / 0.95 / 2 | Minimalism Wave |
| REVIEW_Q_MIN / TRUST_GOOD / CONQUEST / YEARS / BAD | 0.55 / 0.04 / 1.08 / 2 / −0.06 | Review Aggregator |
| COLLAB_TRUST_MIN / REACH | 0.55 / 0.15 | Creator Collab |
| RETAIL_SHARE_MULT / PRICE_MULT / YEARS | 0.95 / 0.96 / 2 | Retail Consolidation |
| CLASSACTION_Q_MAX / CASH / TRUST / HEAT | 0.5 / 0.4 / −0.1 / 0.08 | Class Action |
| RECALL_CASH / R_MIN / TRUST_BAD / GOOD | 0.35 / 0.5 / −0.06 / 0.03 | Component Recall |
| EXODUS_TRUST_MAX / Q_DRIFT / YEARS | 0.45 / −0.02 / 2 | Talent Exodus |
| STANDARDS_R_MIN / REG / TRUST / C | 0.5 / 0.06 / 0.04 / 0.05 | Standards Body |
| EPR_REG / L / CASH | 0.08 / 0.03 / 0.2 | EPR Law |
| SUBSIDY_R_MIN / CASH | 0.5 / 0.3 | Green Subsidy |
| MUSEUM_TRUST / REACH | 0.06 / 0.12 | Museum Retrospective |
| LEASING_R_MIN / SR_MULT / YEARS | 0.5 / 1.15 / 2 | Leasing Trend |
| COUNTERFEIT_TRUST_MIN / TRUST / C | 0.55 / −0.04 / 0.05 | Counterfeit Wave |
| DIY_R_MIN / TRUST / REACH / L / C | 0.45 / 0.05 / 0.08 / 0.03 / 0.05 | Repair Movement |
D · LOOP — scoring, schedule & impact
| Constant | Value | Meaning |
|---|---|---|
| BASE_POINTS | 120 / 110 / 100 / 80 | Repair / Reuse / Refurbish / Recycle |
| RTR_REPAIR_BASE | 240 | Repair base during the Right-to-Repair window |
| GOLDEN_MULT | 5 | "Designed to Matter" golden multiplier |
| COMBO_STEP / CAP_N | 0.1 / 10 | Combo step / cap (→ ×2.0 max) |
| BONUS_ZERO_WASTE / CLOSED_LOOP | 500 / 1000 | End bonuses (Closed Loop subsumes Zero Waste) |
| MIN_RESOLVE_MS | 150 | Earliest a product can resolve after spawn |
| MAX_WRONGS_PER_PID / MAX_EVENTS | 8 / 400 | Anti-cheat caps |
| Constant | Value | Meaning |
|---|---|---|
| ROUND_MS | 90 000 | Round length |
| RTR_COMET_MS / WINDOW_MS | 2 500 / 8 000 | Comet tappable window / RtR window length |
| MAX_CONCURRENT / MIN_SPAWN_GAP_MS | 5 / 280 | Hard caps on the conveyor |
| BURST_GAP_MS / LANES | 320 / [80,195,310] | Within-burst gap / drop lanes |
| rtrAtMs | 52 000–70 000 | Power-up appearance (per-seed) |
| golden windows | 12–42k · 42–79.5k · 80–90k | Three seed-random golden placements |
| PHASE Groove | 7.5–13k · int 2000 · fall 4800 | On-ramp, friendly subset |
| PHASE Flow / Peak / Rush | 13–32k · 32–62k · 62–79k | fall 4000 / 3400 / 3000; pace tightens |
| FINALE bursts | 80 300 & 83 600 | Two tight 3-product bursts (fall 3000) |
| TEACHING spawns | 1000 / 3400 / 5800 | Scripted onboarding (identical every seed) |
| Constant | Value | Meaning |
|---|---|---|
| RING_RETENTION | 0.9 / 0.9 / 0.7 / 0.25 | Repair / Reuse / Refurbish / Recycle |
| CO2_PER_CAR_KM | 0.15 | kg CO₂e/km, EU fleet-average real-world tailpipe |
| Ring centers | (50,195)(140,130)(250,130)(340,195) | Repair / Reuse / Refurbish / Recycle, logical px |
| Ring r / capture | 44 / 58 | Visual radius / homing capture radius |
| LOGICAL_W / H | 390 / 844 | Logical portrait canvas |
| CONVEYOR_Y / DROP_Y / LANDFILL_Y | 40 / 70 / 754 | Conveyor / drop start / landfill line |
| GRAB_RADIUS / DROP_RADIUS | 96 / 85 | Grab forgiveness / drag-drop target |
| HOLD_SPRING | 0.018 | Hold-spring stiffness ("glassy weight") |
| MIN / MAX_FLICK_SPEED | 500 / 1600 | Nudge threshold / ballistic clamp, px/s |
| SNAP_CONE_DEG | 28 | Flick snap cone |
| HOMING_MIN / MAX_MS | 260 / 600 | Homing flight bounds |
| SLOWMO_SCALE / MAX / COOLDOWN / EASE | 0.4 / 1200 / 1000 / 90 | Bullet-time scale / budget / cooldown / ease (ms) |
| SWAY_AMPLITUDE / FREQ | 20 / 0.0011 | Fall sway px / rad·ms⁻¹ |
| BALLISTIC_GRAVITY | 0.0026 | Missed-flick gravity, px·ms⁻² |
| BOUNCE_SLOW_FACTOR / GRACE_MS | 0.6 / 1500 | Wrong-ring bounce slow / grace window |
| WRONG_FLASH_MS | 600 | Badge-enlarge corrective teaching |
| WORLD_HEALTH_MAX | 5 | Saturation steps the world greys through |
| COMET_Y / TAP_RADIUS | 430 / 70 | RtR comet altitude / tap radius |
End of reference If a number here doesn't match the live game, the live game wins — this document mirrors the model the game runs, but the game itself is the source of truth. Every value above was transcribed on the 2026 build; corrections and disagreements are welcome.