ASSEMBLY-WP-0009-T01/T02: adoption band B1-B4 and probe across it

- gadm04: optional self-enhancement loop (selfenh, default off)
- grounding.py: band anchors slow/central/fast/aggressive (B4 selfenh 3.0)
- band_probe.py: 36 readings across the band - 22 robust, 7 quantitative
  shifts, 7 qualitative breaks; core claims robust; moderate reforms suffice
  only under conservative adoption; under B4 lineage control dominates even
  in the generative regime (structural candidate)
- models/AdoptionBand.md, research/BreakRegister.md (BR-001..004)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 1494246@bnt-lap001
Assistant-Session: caf6de6f-f9e4-47ce-a584-49baa271fa4b
This commit is contained in:
tegwick 2026-10-12 10:58:47 +02:00
parent f21be21919
commit 1b0a28361e
12 changed files with 349 additions and 5 deletions

View file

@ -29,6 +29,7 @@ cd simulations/gadm02 && python3 -B life_cycle.py --model gadm04 # GADM-0.4 du
cd simulations/gadm02 && python3 -B robustness.py # GADM-0.4 robustness of key readings
cd simulations/gadm02 && python3 -B agency.py # GADM-0.4 cohort agency
cd simulations/gadm02 && python3 -B grounded_readings.py # readings under grounded parameters
cd simulations/gadm02 && python3 -B band_probe.py # scenarios across the adoption band B1–B4
```
Use `python3 -B` after quick edits; a stale bytecode cache once masked a change.

91
models/AdoptionBand.md Normal file
View file

@ -0,0 +1,91 @@
<!--
Created 2026-10-12 under ASSEMBLY-WP-0009-T01/T02. Implements
research/ScenarioBandMethod.md §§ 2 and 5 for GADM-0.4.
-->
# Adoption Band — Anchors and Probe Results
**Status:** v0.1. GADM-0.4 with grounded power, care and attention
parameters (`grounding.py`). The band anchors differ only in adoption
parameters. Each starts at its own equilibrium, with recalibrated channels.
## 1. Anchors (T01)
| Anchor | Adoption parameters | K_Ω at t 5 / 10 / 25 / 100 | Basis |
|---|---|---|---|
| **B1 conservative** | `aO` 0.10, `ell` 0.166 | 0.09 / 0.10 / 0.12 / 0.07 | Acemoglu (2024) |
| **B2 central** | `aO` 0.25, `ell` 0.415 | 0.20 / 0.27 / 0.28 / 0.16 | between LLM exposure and the tooling ceiling (Eloundou et al. 2023) |
| **B3 fast** | `aO` 0.50, `ell` 0.83 | 0.39 / 0.49 / 0.46 / 0.34 | tooling ceiling reached within a decade |
| **B4 aggressive** | B3 + self-enhancement `selfenh` 3.0 | 0.70 / 0.80 / 0.72 / 0.64 | AI accelerating its own development (Trammell & Korinek; Davidson et al.) |
**Self-enhancement loop (new in GADM-0.4, default off):** organism investment
and learning are scaled by \((1 + selfenh \cdot K_\Omega)\), so the more
capable organisms are, the faster they improve. `selfenh` = 3.0 is tuned so
B4 reaches about 0.8 within ten years. At `selfenh` ≥ 6, K_Ω saturates instead
of declining, which is a different trajectory regime. That variant is not an
anchor yet.
All anchors show a peak-and-decline path for K_Ω under baseline governance:
rising domination and eroding demand slow organism investment after the
first decade or two. This is a model property, to be checked against data
(ASSEMBLY-WP-0010).
## 2. Probe results (T02)
Full tables: `simulations/gadm02/results/band_probe.md`. 36 readings:
**22 robust, 7 quantitative shifts, 7 qualitative breaks.**
### 2.1 Robust across the whole band
- Generative regime best, automated capitalism worst, generative regime
lowest domination.
- Generative regime gain over baseline: +0.29 to +0.34 VFAC.
- Commons-rich economy gain over baseline: +0.10 to +0.12.
- Organism lever order lineage > membrane > attention.
- P3: a wealth tax alone barely moves domination.
- Dominant domination channel in all non-generative regimes: lineage
(membrane in the attention oligopoly).
### 2.2 Quantitative shifts
| Reading | B1 → B4 | Reading |
|---|---|---|
| Dividend abundance gain over baseline | +0.038 → +0.013 | dividends matter less as adoption accelerates |
| Automated capitalism loss vs. baseline | −0.099 → −0.047 | largest at B1, where the baseline itself does best |
| Lineage lever effect | +0.164 → +0.098 | the lever weakens as learning with use accelerates (P2: the critical lineage diffusion rises above the tested L = 0.8) |
| Membrane lever effect | +0.109 → +0.066 | as above |
| P3 effect size | −0.018 … −0.055 | small throughout |
### 2.3 Qualitative breaks
Recorded in `research/BreakRegister.md`.
1. **Regimes that bound domination only under conservative adoption.**
Dividend abundance and the commons-rich economy keep P under its 0.7
ceiling at B1, and breach it from B2 onward.
2. **Thresholds crossed with faster adoption.** Concentrated lineages breach
the domination ceiling from B3. Attention extraction breaches the attention
floor from B3, and the attention oligopoly breaches it at B4.
3. **Aggressive self-enhancement changes the structure of domination.** At
B4, lineage control becomes the dominant domination channel even in the
generative regime and its attention-extraction variant (B1–B3: market,
or discovery).
### 2.4 Readings
1. **The program's core claims hold across the band.** What changes is
*which policies are sufficient*: under conservative adoption, moderate
reforms (dividends, commons) keep domination bounded. Under central to
aggressive adoption, only the full generative package does.
2. **This bears directly on the "Europe lags" hypothesis.** A jurisdiction
that adopts slowly (B1-like) can get by with moderate reforms. A fast
adopter needs organism-specific governance early. Whether lagging is
worse or better then depends on whether the slow adopter later imports
B3/B4-speed organisms through foreign lineages. That needs open-economy
structure the model does not have (ASSEMBLY-WP-0009-T04 / later).
3. **B4 needs lineage governance beyond the current lever range.** Under
self-enhancement, even L = 0.8 and m = 0.8 leave lineage control dominant.
Candidate mechanisms that GADM does not yet represent: public or commons
lineages, compute commons, mandated lineage interoperability. This is a
structural question, and the first candidate for "qualitatively different
model" (break register entry BR-003).

View file

@ -14,6 +14,7 @@ exploratory: they generate hypotheses and are not established results.
| [GADM-0.3.md](GADM-0.3.md) | GADM-0.3 | power channels (P1/P2) wealth separated from power (P3), attention recalibration, organism grid, life-cycle cohorts (ASSEMBLY-WP-0005) |
| [GADM-0.4.md](GADM-0.4.md) | GADM-0.4 | durable capability, grounded organism depreciation, global sensitivity, equilibrium start, cohort agency (ASSEMBLY-WP-0006) |
| [GADM-Sectors-Scope.md](GADM-Sectors-Scope.md) | scoping | rival/non-rival goods, ecological classes, sectors, selection mechanisms (ASSEMBLY-WP-0006-T06 → ASSEMBLY-WP-0007) |
| [AdoptionBand.md](AdoptionBand.md) | v0.1 | adoption band B1–B4 and probe of all scenarios across it (ASSEMBLY-WP-0009) |
| [ParameterGrounding.md](ParameterGrounding.md) | v0.2 | which parameters are grounded, bracketed, assumed or calibrated |
| [GADM-0.3-Candidates.md](GADM-0.3-Candidates.md) | outline | life-cycle and power extensions, deferred items (ASSEMBLY-WP-0004-T08) |

19
research/BreakRegister.md Normal file
View file

@ -0,0 +1,19 @@
<!--
Living register of qualitative breaks found when probing scenarios across the
adoption band (research/ScenarioBandMethod.md § 5). Entries are append-only;
resolution status is updated in place.
-->
# Break Register
A **qualitative break** means a reading changes sign, ranking or regime
within the adoption band. Each entry records where the break occurs, what it
suggests, and whether the model needs a qualitatively different structure in
that part of the band.
| ID | Found | Reading | Where | Interpretation | Model consequence | Status |
|---|---|---|---|---|---|---|
| BR-001 | 2026-10-12 (WP-0009-T02) | Dividend abundance and commons-rich economy keep P ≤ 0.7 | holds at B1, breaks from B2 | moderate reforms suffice only under conservative adoption | none structural; policy sufficiency is band-dependent | open: report per anchor |
| BR-002 | 2026-10-12 (WP-0009-T02) | Floors under concentrated lineages (P) and attention extraction (A) | breach from B3; attention oligopoly breaches A at B4 | threshold crossings scale with adoption speed | none structural; checkpoints should watch these floors first | open: report per anchor |
| BR-003 | 2026-10-12 (WP-0009-T02) | Dominant domination channel in the generative regime | market at B1–B3 → lineage at B4 | under self-enhancement, the available lineage levers (L, m ≤ 0.8) no longer bound lineage control | **structural candidate:** public/commons lineages, compute commons, mandated lineage interoperability; possibly open-economy lineage import | open: candidate for a qualitatively different model |
| BR-004 | 2026-10-12 (WP-0009-T01) | K_Ω trajectory shape | peak-and-decline for selfenh ≤ 3; saturation at selfenh ≥ 6 | a stronger inner loop escapes the demand/domination brake | check the shape against data (WP-0010); the saturating regime may need different demand dynamics | open |

View file

@ -9,7 +9,7 @@ model version it implements.
| `gadm02/gadm03.py` | GADM-0.3: power channels, wealth, attention (`models/GADM-0.3.md`) | `power_channels.py`, `wealth.py`, `organism_grid.py`, `test_gadm03.py` |
| `gadm02/gadm03c.py` | GADM-0.3 with life-cycle cohorts (`models/GADM-0.3.md` § 5) | `life_cycle.py`, `test_gadm03c.py` |
| `gadm02/gadm04.py` | GADM-0.4: durable capability, grounded dO, equilibrium start, cohort agency (`models/GADM-0.4.md`) | `life_cycle.py --model gadm04`, `robustness.py`, `agency.py`, `grounded_readings.py`, `test_gadm04.py` |
| `gadm02/grounding.py` | evidence-grounded parameter sets for GADM-0.4 (`models/ParameterGrounding.md`) | `variant("central" \| "slow")` |
| `gadm02/grounding.py` | evidence-grounded parameter sets and adoption band B1–B4 (`models/ParameterGrounding.md`, `models/AdoptionBand.md`) | `variant("slow" \| "central" \| "fast" \| "aggressive")`, `band_probe.py` |
Python 3.10+, standard library only. Use `python3 -B` after quick edits: a stale
bytecode cache can mask same-size changes made within the same second.

View file

@ -0,0 +1,139 @@
"""Probe scenarios across the adoption band B1-B4 (ASSEMBLY-WP-0009-T02).
For every scenario and band anchor, compute key readings and classify each as
robust, quantitative shift or qualitative break (research/ScenarioBandMethod.md
§ 5).
Usage: python3 -B simulations/gadm02/band_probe.py
"""
from __future__ import annotations
import itertools
import sys
from pathlib import Path
sys.dont_write_bytecode = True
import gadm03 as g3 # noqa: E402
import gadm04 as g # noqa: E402
import grounding as gr # noqa: E402
from scenarios import load_all # noqa: E402
OUT = Path(__file__).resolve().parent / "results"
ANCHORS = list(gr.BAND) # B1..B4
FLOORS = {"G": (">=", 0.2), "E": (">=", 0.2), "P": ("<=", 0.7), "A": (">=", 0.2)}
GRID = {"lineage": ({"L": 0.1, "lin_open": 0.1}, {"L": 0.8, "lin_open": 0.8}),
"membrane": ({"m": 0.2}, {"m": 0.8}),
"attention": ({"x_att": 0.9}, {"x_att": 0.2})}
def classify(values: list, kind: str) -> str:
"""kind: 'sign' (numbers), 'label' (categorical), 'bool'."""
if kind == "label" or kind == "bool":
return "robust" if len(set(values)) == 1 else "QUALITATIVE BREAK"
signs = {(v > 0) - (v < 0) for v in values}
if len(signs) > 1:
return "QUALITATIVE BREAK"
lo, hi = min(abs(v) for v in values), max(abs(v) for v in values)
return "quantitative shift" if lo > 0 and hi / lo > 1.5 else "robust"
def shape(traj: list[float]) -> str:
peak = max(traj)
if traj[-1] >= 0.9 * peak:
return "saturating"
return "peak-and-decline"
def main() -> None:
OUT.mkdir(exist_ok=True)
scs = load_all()
names = list(scs)
var = {a: gr.variant(gr.BAND[a]) for a in ANCHORS}
runs = {a: {n: g.simulate({**scs[n]["params"], **var[a][0]}, {**scs[n]["init"], **var[a][1]})
for n in names} for a in ANCHORS}
fin = {a: {n: runs[a][n][-1] for n in names} for a in ANCHORS}
lines = [f"# {g.MODEL_VERSION}: scenarios across the adoption band", "",
"Generated by `simulations/gadm02/band_probe.py`. Anchors B1–B4 from",
"`grounding.py` (`research/ScenarioBandMethod.md` § 2). t = 100 years unless noted.", "",
"## K_Ω path per anchor (baseline)", "", "| Anchor | t 5 | t 10 | t 25 | t 50 | t 100 | shape |",
"|---|---|---|---|---|---|---|"]
shapes = []
for a in ANCHORS:
tr = [r["Ko"] for r in runs[a]["baseline"]]
shapes.append(shape(tr))
lines.append(f"| {a} ({gr.BAND[a]}) | " + " | ".join(f"{tr[t]:.2f}" for t in (5, 10, 25, 50, 100))
+ f" | {shapes[-1]} |")
lines += ["", "## Scenario VFAC / P per anchor", "",
"| Scenario | " + " | ".join(ANCHORS) + " |", "|---|" + "---|" * len(ANCHORS)]
for n in names:
lines.append(f"| {scs[n]['title']} | " + " | ".join(
f"{fin[a][n]['VFAC']:.3f} / {fin[a][n]['P']:.2f}" for a in ANCHORS) + " |")
readings = []
def add(name, values, kind, fmt=lambda v: f"{v:+.3f}" if isinstance(v, float) else str(v)):
readings.append((name, [fmt(v) for v in values], classify(values, kind)))
order = {a: sorted(names, key=lambda n: -fin[a][n]["VFAC"]) for a in ANCHORS}
add("best scenario", [scs[order[a][0]]["title"] for a in ANCHORS], "label")
add("worst scenario", [scs[order[a][-1]]["title"] for a in ANCHORS], "label")
add("lowest domination", [scs[min(names, key=lambda n: fin[a][n]["P"])]["title"] for a in ANCHORS], "label")
for n in names:
if n != "baseline":
add(f"VFAC {scs[n]['title']} − baseline",
[fin[a][n]["VFAC"] - fin[a]["baseline"]["VFAC"] for a in ANCHORS], "sign")
for n in names:
dom = []
for a in ANCHORS:
ch = max(g3.CHANNELS, key=lambda k: fin[a][n][k])
dom.append(g3.CHANNEL_NAMES[ch])
add(f"dominant domination channel: {scs[n]['title']}", dom, "label")
for n in names:
viol = []
for a in ANCHORS:
v = [k for k, (op, lim) in FLOORS.items()
if (fin[a][n][k] < lim if op == ">=" else fin[a][n][k] > lim)]
viol.append(",".join(v) or "none")
add(f"floor violations at t 100: {scs[n]['title']}", viol, "label")
eff = {a: [] for a in ANCHORS}
for a in ANCHORS:
out = {}
for lv in itertools.product((0, 1), repeat=3):
ex = {}
for ax, l in zip(GRID, lv):
ex.update(GRID[ax][l])
out[lv] = g.simulate({**scs["baseline"]["params"], **var[a][0], **ex},
{**scs["baseline"]["init"], **var[a][1]})[-1]["VFAC"]
eff[a] = [sum((1 if lv[i] else -1) * v for lv, v in out.items()) / 4 for i in range(3)]
for i, ax in enumerate(GRID):
add(f"organism lever effect: {ax}", [eff[a][i] for a in ANCHORS], "sign")
add("lever order lineage > membrane > attention",
[eff[a][0] > eff[a][1] > eff[a][2] > 0 for a in ANCHORS], "bool")
mem = scs["generative_concentrated_lineages"]
p3 = []
for a in ANCHORS:
lo = g.simulate({**mem["params"], **var[a][0], "wtax": 0.0}, {**mem["init"], **var[a][1]})[-1]["P"]
hi = g.simulate({**mem["params"], **var[a][0], "wtax": 1.0}, {**mem["init"], **var[a][1]})[-1]["P"]
p3.append(hi - lo)
add("P3: wealth tax ΔP (membrane-dominated)", p3, "sign")
add("P3 holds (|ΔP| < 0.06)", [abs(x) < 0.06 for x in p3], "bool")
add("K_Ω trajectory shape (baseline)", shapes, "label")
lines += ["", "## Readings and robustness class", "",
"| Reading | " + " | ".join(ANCHORS) + " | class |", "|---|" + "---|" * (len(ANCHORS) + 1)]
for name, vals, cls in readings:
lines.append(f"| {name} | " + " | ".join(vals) + f" | {cls} |")
n_break = sum(1 for _n, _v, c in readings if c == "QUALITATIVE BREAK")
n_shift = sum(1 for _n, _v, c in readings if c == "quantitative shift")
lines += ["", f"{len(readings)} readings: {len(readings) - n_break - n_shift} robust, "
f"{n_shift} quantitative shifts, {n_break} qualitative breaks.", ""]
(OUT / "band_probe.md").write_text("\n".join(lines))
print("\n".join(lines))
if __name__ == "__main__":
main()

View file

@ -62,6 +62,10 @@ PARAMS.update({
"g3s": 0.5, # seniors' restartability weight (relative to working age)
"b2s": 1.5, # seniors' exposure to operator lock-in (digital exclusion)
"gcare": 0.02, # care support (relief from participation claims) raising senior agency
# WP-0009: self-enhancement of organism capability (AI accelerating its own
# development); scales organism investment and learning by (1 + selfenh * K_Omega).
# 0 = off (default); used by the aggressive band anchor B4.
"selfenh": 0.0,
})
@ -109,6 +113,10 @@ def derivatives(s: dict, p: dict) -> tuple[dict, dict]:
# macro feedback must see effective capability: recompute non-capability flows
d_eff, a = c.derivatives(sc, p)
d = {k: v for k, v in d_eff.items() if not (k.startswith("H") and k[1:] in COHORTS)}
if p["selfenh"]:
Ko = s["Ko"]
grow = (p["aO"] * a["Vsel"] * a["dem"] + p["ell"] * Ko * a["dem"] * s["Q"]) * (1 - Ko)
d["Ko"] += p["selfenh"] * Ko * grow
n = c.shares(s)
flow = {"ch": c.AGE_RATE["ch"] * s["Nch"], "w": c.AGE_RATE["w"] * s["Nw"], "s": c.AGE_RATE["s"] * s["Ns"]}

View file

@ -22,10 +22,17 @@ import gadm04 as g # noqa: E402
# T01: organism adoption. The default reaches K_Omega = 0.50 by year 10, faster
# than even the LLM+tooling exposure ceiling (47-56 % of tasks, Eloundou et al.
# 2023) could plausibly be adopted. Central path: ~0.27 at year 10, ~0.29 at 25.
SELFENH = 3.0 # B4: tuned so K_Omega reaches ~0.8 within about 10 years
ADOPTION = {
"central": {"aO": 0.25, "ell": 0.415, "oseed": 0.0165}, # x0.5 of default
"slow": {"aO": 0.10, "ell": 0.166, "oseed": 0.0066}, # x0.2, towards Acemoglu (2024)
# adoption band (research/ScenarioBandMethod.md § 2): B3 fast = GADM-0.4
# adoption defaults; B4 aggressive = B3 plus the self-enhancement loop
"fast": {"aO": 0.50, "ell": 0.83, "oseed": 0.033},
"aggressive": {"aO": 0.50, "ell": 0.83, "oseed": 0.033, "selfenh": SELFENH},
}
BAND = {"B1": "slow", "B2": "central", "B3": "fast", "B4": "aggressive"}
# T03: leader persistence rose since 2000 with proprietary software and
# intangibles (Bessen et al.); learning-by-doing superstars (Ma, Pugsley,
# Zimmermann): digital channels self-reinforce more strongly than the market.
@ -43,7 +50,7 @@ EQ_KEYS = ("W", "Aw", "As", "Gw", "Gs")
def variant(name: str = "central") -> tuple[dict, dict]:
"""(params, init) for a grounded variant: 'central' or 'slow' adoption."""
"""(params, init) for a grounded variant: 'slow', 'central', 'fast' or 'aggressive'."""
params = {**ADOPTION[name], **POWER, **CARE, **ATTENTION}
init = g.equilibrium_init(EQ_KEYS, steps=4000, h=0.25, params=params)
params.update(g.calibrate(params, init))

View file

@ -0,0 +1,70 @@
# GADM-0.4: scenarios across the adoption band
Generated by `simulations/gadm02/band_probe.py`. Anchors B1–B4 from
`grounding.py` (`research/ScenarioBandMethod.md` § 2). t = 100 years unless noted.
## K_Ω path per anchor (baseline)
| Anchor | t 5 | t 10 | t 25 | t 50 | t 100 | shape |
|---|---|---|---|---|---|---|
| B1 (slow) | 0.09 | 0.10 | 0.12 | 0.12 | 0.07 | peak-and-decline |
| B2 (central) | 0.20 | 0.27 | 0.28 | 0.20 | 0.16 | peak-and-decline |
| B3 (fast) | 0.39 | 0.49 | 0.46 | 0.36 | 0.34 | peak-and-decline |
| B4 (aggressive) | 0.70 | 0.80 | 0.72 | 0.65 | 0.64 | peak-and-decline |
## Scenario VFAC / P per anchor
| Scenario | B1 | B2 | B3 | B4 |
|---|---|---|---|---|
| Baseline (current trends) | 0.396 / 0.73 | 0.328 / 0.79 | 0.298 / 0.81 | 0.263 / 0.84 |
| Automated capitalism | 0.297 / 0.86 | 0.278 / 0.87 | 0.250 / 0.88 | 0.216 / 0.90 |
| Dividend abundance | 0.434 / 0.64 | 0.346 / 0.77 | 0.311 / 0.80 | 0.275 / 0.83 |
| Universal venture access | 0.407 / 0.73 | 0.349 / 0.79 | 0.316 / 0.81 | 0.278 / 0.83 |
| Commons-rich economy | 0.513 / 0.60 | 0.446 / 0.70 | 0.404 / 0.74 | 0.358 / 0.77 |
| Attention oligopoly | 0.329 / 0.79 | 0.281 / 0.86 | 0.255 / 0.87 | 0.222 / 0.89 |
| Generative regime | 0.684 / 0.06 | 0.658 / 0.09 | 0.637 / 0.13 | 0.570 / 0.36 |
| Generative regime, concentrated lineages | 0.527 / 0.59 | 0.472 / 0.66 | 0.421 / 0.72 | 0.382 / 0.75 |
| Generative regime, attention extraction | 0.587 / 0.27 | 0.554 / 0.29 | 0.527 / 0.32 | 0.452 / 0.54 |
## Readings and robustness class
| Reading | B1 | B2 | B3 | B4 | class |
|---|---|---|---|---|---|
| best scenario | Generative regime | Generative regime | Generative regime | Generative regime | robust |
| worst scenario | Automated capitalism | Automated capitalism | Automated capitalism | Automated capitalism | robust |
| lowest domination | Generative regime | Generative regime | Generative regime | Generative regime | robust |
| VFAC Automated capitalism − baseline | -0.099 | -0.050 | -0.048 | -0.047 | quantitative shift |
| VFAC Dividend abundance − baseline | +0.038 | +0.019 | +0.013 | +0.013 | quantitative shift |
| VFAC Universal venture access − baseline | +0.011 | +0.021 | +0.018 | +0.016 | quantitative shift |
| VFAC Commons-rich economy − baseline | +0.117 | +0.118 | +0.106 | +0.096 | robust |
| VFAC Attention oligopoly − baseline | -0.067 | -0.047 | -0.043 | -0.040 | quantitative shift |
| VFAC Generative regime − baseline | +0.288 | +0.330 | +0.339 | +0.308 | robust |
| VFAC Generative regime, concentrated lineages − baseline | +0.131 | +0.144 | +0.123 | +0.119 | robust |
| VFAC Generative regime, attention extraction − baseline | +0.191 | +0.226 | +0.229 | +0.190 | robust |
| dominant domination channel: Baseline (current trends) | lineage | lineage | lineage | lineage | robust |
| dominant domination channel: Automated capitalism | lineage | lineage | lineage | lineage | robust |
| dominant domination channel: Dividend abundance | lineage | lineage | lineage | lineage | robust |
| dominant domination channel: Universal venture access | lineage | lineage | lineage | lineage | robust |
| dominant domination channel: Commons-rich economy | lineage | lineage | lineage | lineage | robust |
| dominant domination channel: Attention oligopoly | membrane | membrane | membrane | membrane | robust |
| dominant domination channel: Generative regime | market | market | market | lineage | QUALITATIVE BREAK |
| dominant domination channel: Generative regime, concentrated lineages | lineage | lineage | lineage | lineage | robust |
| dominant domination channel: Generative regime, attention extraction | discovery/attention | discovery/attention | discovery/attention | lineage | QUALITATIVE BREAK |
| floor violations at t 100: Baseline (current trends) | P | P | P | P | robust |
| floor violations at t 100: Automated capitalism | P | P | P | P | robust |
| floor violations at t 100: Dividend abundance | none | P | P | P | QUALITATIVE BREAK |
| floor violations at t 100: Universal venture access | P | P | P | P | robust |
| floor violations at t 100: Commons-rich economy | none | P | P | P | QUALITATIVE BREAK |
| floor violations at t 100: Attention oligopoly | P | P | P | P,A | QUALITATIVE BREAK |
| floor violations at t 100: Generative regime | none | none | none | none | robust |
| floor violations at t 100: Generative regime, concentrated lineages | none | none | P | P | QUALITATIVE BREAK |
| floor violations at t 100: Generative regime, attention extraction | none | none | A | A | QUALITATIVE BREAK |
| organism lever effect: lineage | +0.164 | +0.122 | +0.105 | +0.098 | quantitative shift |
| organism lever effect: membrane | +0.109 | +0.094 | +0.076 | +0.066 | quantitative shift |
| organism lever effect: attention | +0.039 | +0.045 | +0.047 | +0.047 | robust |
| lever order lineage > membrane > attention | True | True | True | True | robust |
| P3: wealth tax ΔP (membrane-dominated) | -0.018 | -0.055 | -0.013 | -0.007 | quantitative shift |
| P3 holds (|ΔP| < 0.06) | True | True | True | True | robust |
| K_Ω trajectory shape (baseline) | peak-and-decline | peak-and-decline | peak-and-decline | peak-and-decline | robust |
36 readings: 22 robust, 7 quantitative shifts, 7 qualitative breaks.

View file

@ -1,4 +1,4 @@
# GADM-0.4-dev: readings under grounded parameters
# GADM-0.4: readings under grounded parameters
Generated by `simulations/gadm02/grounded_readings.py`. t = 100 years.
Grounded sets: `simulations/gadm02/grounding.py`; justification in

View file

@ -60,6 +60,14 @@ class TestGrounding(unittest.TestCase):
for k in gr.EQ_KEYS + ("Pm", "Pi", "Pd", "Pmem", "Plin", "Ppol"):
self.assertLess(abs(d[k]), 1e-3, (name, k))
def test_band_is_ordered_by_adoption_speed(self):
import grounding as gr
ko = [g.simulate(*gr.variant(gr.BAND[a]))[10]["Ko"] for a in ("B1", "B2", "B3", "B4")]
self.assertEqual(ko, sorted(ko))
def test_self_enhancement_off_by_default(self):
self.assertEqual(g.PARAMS["selfenh"], 0.0)
def test_grounded_adoption_is_slower_than_default(self):
import grounding as gr
p, i = gr.variant("central")

View file

@ -25,7 +25,7 @@ jurisdiction archetypes.
```task
id: ASSEMBLY-WP-0009-T01
status: todo
status: done
priority: high
state_hub_task_id: "f0e01f88-cfc3-59a4-aab0-b958eb18f68b"
```
@ -39,7 +39,7 @@ recalibrated channels.
```task
id: ASSEMBLY-WP-0009-T02
status: todo
status: done
priority: high
state_hub_task_id: "48054e06-70f6-5d2f-b679-8aeb613ccab7"
```