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:
parent
f21be21919
commit
1b0a28361e
12 changed files with 349 additions and 5 deletions
|
|
@ -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
91
models/AdoptionBand.md
Normal 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).
|
||||
|
|
@ -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
19
research/BreakRegister.md
Normal 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 |
|
||||
|
|
@ -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.
|
||||
|
|
|
|||
139
simulations/gadm02/band_probe.py
Normal file
139
simulations/gadm02/band_probe.py
Normal 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()
|
||||
|
|
@ -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"]}
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
70
simulations/gadm02/results/band_probe.md
Normal file
70
simulations/gadm02/results/band_probe.md
Normal 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.
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
```
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue