ASSEMBLY-WP-0007 finished: T04 two-good demand split (genuine decoupling in the generative regime, sinks breach postponed; BR-010 resolved); residuals to WP-0018
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 14913@bnt-lap001 Assistant-Session: add7ef69-b901-4756-9a67-34cf1125d96f
This commit is contained in:
parent
80055bc700
commit
509a50eb04
8 changed files with 316 additions and 13 deletions
|
|
@ -42,6 +42,7 @@ cd simulations/gadm02 && python3 -B exports.py # export channel and the "Argen
|
|||
cd simulations/gadm02 && python3 -B nonrival.py # GADM-0.5-dev rival vs. non-rival output across the band
|
||||
cd simulations/gadm02 && python3 -B eco_classes.py # GADM-0.5-dev ecological resource classes
|
||||
cd simulations/gadm02 && python3 -B selection.py # GADM-0.5-dev endogenous selection weights
|
||||
cd simulations/gadm02 && python3 -B demand.py # GADM-0.5-dev two-good demand split (dematerialization)
|
||||
cd simulations/gadm02 && python3 -B matching.py && python3 -B matching.py --imm # model matching; IMM flip-detection acceptance test (~6 min)
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -157,11 +157,52 @@ Readings:
|
|||
candidate change. It is recorded here and not implemented, because no
|
||||
reading depends on it yet.
|
||||
|
||||
## 4. Open: demand composition (T04, refined)
|
||||
## 4. Two-good demand split: dematerialization (T04)
|
||||
|
||||
T01 found no genuine decoupling, because non-rival output only adds to rival
|
||||
consumption (BR-010). T02 locates the generative regime's ecological cost in
|
||||
the sinks. Both point to the same missing structure: a **two-good demand
|
||||
split**, rival and non-rival consumption, with substitution between them
|
||||
(dematerialization). This is narrower than the four-sector option in the scope
|
||||
note, and it is the question that opens T04.
|
||||
### 4.1 Structure
|
||||
|
||||
`gadm05.simulate_eco(..., demand=...)` adds a slow state Cr, the rival share
|
||||
of demand relative to its start (Cr0 = 1). Cr relaxes (rate `dm_lam`) toward
|
||||
`1 − dm_eps · (qn − qn0)`, where `qn = (Y_n / Y*) · √(X Q)` is the
|
||||
quality-weighted non-rival offer. Physical throughput intensity `thr` and
|
||||
physical investment `aK` scale with Cr. The same capital then serves
|
||||
dematerialized demand with less physical load. `dm_lam = 0` switches it off.
|
||||
Priors: λ 0.05 per year, ε 2; strong case λ 0.1, ε 4.
|
||||
|
||||
### 4.2 Results (`demand.py`, `results/demand.md`; material replenishment at rest)
|
||||
|
||||
| Generative regime | B1 | B2 | B3 | B4 |
|
||||
|---|---|---|---|---|
|
||||
| decoupled decades, no split → split → strong | 0 → 0 → 0 | 0 → 0.45 → 0.89 | 0 → 0.71 → 0.75 | 0 → 0.22 → 0.34 |
|
||||
| sinks breach, no split → split → strong | t 83 → none → none | t 49 → 98 → none | t 37 → 61 → none | t 29 → 40 → none |
|
||||
| VFAC t 100, no split → split | 0.607 → 0.613 | 0.583 → 0.598 | 0.564 → 0.585 | 0.509 → 0.533 |
|
||||
|
||||
A *decoupled decade* has VFAC rising, physical throughput falling and K_Ω not
|
||||
falling, which excludes the artifact of § 1.3. Baseline: decoupled decades
|
||||
0–0.09, and no sinks breach with or without the split.
|
||||
|
||||
Calibration check: throughput per unit of output falls by 0.1–0.5 % per year
|
||||
in the first decade (split cases included). Observed EU dematerialization is
|
||||
about 1.6 % per year (resource productivity, 2000–2022). The observed trend
|
||||
includes efficiency gains that GADM does not model.
|
||||
|
||||
### 4.3 Readings
|
||||
|
||||
1. **Genuine decoupling needs demand composition.** With the split, the
|
||||
generative regime decouples welfare from throughput in most decades at
|
||||
B2–B3, while organism capability keeps growing. BR-010 is resolved
|
||||
structurally: non-rival output must replace rival consumption, not only add
|
||||
to it.
|
||||
2. **Decoupling is band-dependent (qualitative break).** It needs a non-rival
|
||||
offer of sufficient quality, which B1 adoption does not build. At B4,
|
||||
physical and compute growth outpace substitution, and decoupling is rarer
|
||||
(22 %).
|
||||
3. **The generative regime's sinks breach becomes avoidable.** The default
|
||||
split moves it 15–50 years later. The strong split removes it within the
|
||||
horizon at every anchor. Together with low-carbon electricity (§ 2.3), this
|
||||
is the second lever on the regime's ecological cost.
|
||||
4. **The readings are conservative against data.** Observed
|
||||
dematerialization (−1.6 % per year) is three to sixteen times the modeled
|
||||
intensity decline, because GADM has no autonomous efficiency trend.
|
||||
Calibrating ε, λ and an efficiency trend to the observed series is the next
|
||||
step (ASSEMBLY-WP-0018).
|
||||
|
|
|
|||
|
|
@ -22,4 +22,4 @@ that part of the band.
|
|||
| BR-007 | 2026-10-13 (WP-0013-T04) | Rights-first levers bound domination | holds when switching to J1 levers (US: P 0.64 → 0.54) → fails for a jurisdiction already at J1 levers (EU: P 0.65 → 0.77) | calibrated domination comes from levels set abroad that local levers cannot reach | **structural:** cross-border coupling (ASSEMBLY-WP-0011) | open |
|
||||
| BR-008 | 2026-10-13 (WP-0011-T05) | Which levers bound domination (BR-007 follow-up) | closed model: host rights levers → coupled model: only host access rules on foreign operators and the home's levers reach the foreign-run channels | measured channels (Pd, Pmem, Plin, Pi) are operated from the US for EU and AR hosts | **structural, implemented:** cross-border coupling (`world.py`); observed DMA effect on search ≈ 0 (at most a 0.006/yr) | update 2026-10-13 (WP-0016-T01): a host lineage access rule does reach imported-lineage concentration (EU Plin 0.91 → 0.19 at a 0.15); portability needs the domestic lineage market's concentration (CB3) |
|
||||
| BR-009 | 2026-10-13 (WP-0012) | Sentiment dynamics of the legitimacy loop | Σ relaxes toward 0.5 + gain × Δ(perceived benefit), so from the measured US Σ 0.285 it rises → measured US sentiment fell 2021–2026 (0.405 → 0.285) while adoption grew fast | the neutral reference 0.5 is an assumption; US adoption also shows no braking by low sentiment (all loop-on candidates fail the US match) | **resolved 2026-10-13 (WP-0017-T01):** parameter `sig_ref`; calibrated runs anchor Σ at its measured level, and adoption and legislation respond to changes relative to it. Default (None = 0.5) keeps earlier results. R1–R4 and H1/H2 verdicts unchanged; the matching loop weights become ≈ 0.5 | resolved; `sig_adopt` not yet identified |
|
||||
| BR-010 | 2026-10-13 (WP-0007-T01) | Non-rival growth decouples welfare from throughput (core hypothesis, GADM-0.1 § 14) | output split rival / non-rival (GADM-0.5-dev): no genuine decoupling in any anchor; the generative regime's ecological cost unchanged | GADM has no demand composition: non-rival output adds to, but never replaces, rival consumption | **structural candidate:** demand substitution (dematerialization) and ecological classes (WP-0007-T02, T04) | open |
|
||||
| BR-010 | 2026-10-13 (WP-0007-T01) | Non-rival growth decouples welfare from throughput (core hypothesis, GADM-0.1 § 14) | output split rival / non-rival (GADM-0.5-dev): no genuine decoupling in any anchor; the generative regime's ecological cost unchanged | GADM has no demand composition: non-rival output adds to, but never replaces, rival consumption | **resolved 2026-10-13 (WP-0007-T04):** two-good demand split; the generative regime decouples in 45–71 % of decades at B2–B3, and its sinks breach moves 15–50 years later; band-dependent (none at B1) | resolved; calibration to observed dematerialization open (WP-0018) |
|
||||
|
|
|
|||
93
simulations/gadm02/demand.py
Normal file
93
simulations/gadm02/demand.py
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
"""Two-good demand split: dematerialization and decoupling (ASSEMBLY-WP-0007-T04).
|
||||
|
||||
Tests (workplan T04):
|
||||
1. Can VFAC rise while physical throughput falls, for reasons other than organism decline?
|
||||
2. Does the generative regime's sink breach move out of the 100-year horizon?
|
||||
Calibration check: throughput intensity per unit of output should fall by roughly the observed
|
||||
dematerialization (EU resource productivity +1.6 %/year, 2000-2022, Eurostat).
|
||||
|
||||
Usage: python3 -B simulations/gadm02/demand.py
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
sys.dont_write_bytecode = True
|
||||
|
||||
import band_probe as bp # noqa: E402
|
||||
import gadm05 as g5 # 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)
|
||||
CASES = {"no demand split": {"dm_lam": 0.0}, "split (λ 0.05, ε 2)": {"dm_lam": 0.05, "dm_eps": 2.0},
|
||||
"split, strong (λ 0.1, ε 4)": {"dm_lam": 0.1, "dm_eps": 4.0}}
|
||||
|
||||
|
||||
def decoupled_windows(rows: list[dict], step: int = 1) -> float:
|
||||
"""Share of 10-year windows with VFAC up, throughput down and K_Omega not falling."""
|
||||
hits = n = 0
|
||||
for i in range(0, len(rows) - step, step):
|
||||
a, b = rows[i], rows[i + step]
|
||||
n += 1
|
||||
hits += b["VFAC"] > a["VFAC"] and b["thru"] < a["thru"] and b["Ko"] >= a["Ko"] - 1e-6
|
||||
return hits / n
|
||||
|
||||
|
||||
def intensity_trend(rows: list[dict], years: int = 10) -> float:
|
||||
"""Average yearly change of throughput per unit of output over the first `years`."""
|
||||
a, b = rows[0], rows[years // 10]
|
||||
ia, ib = a["thru"] / a["Ystar"], b["thru"] / b["Ystar"]
|
||||
return (ib / ia) ** (1 / years) - 1
|
||||
|
||||
|
||||
def main() -> None:
|
||||
OUT.mkdir(exist_ok=True)
|
||||
scs = load_all()
|
||||
var = {a: gr.variant(gr.BAND[a]) for a in ANCHORS}
|
||||
res = {}
|
||||
for sc in ("baseline", "generative_regime"):
|
||||
for a in ANCHORS:
|
||||
for cn, cd in CASES.items():
|
||||
rows = g5.simulate_eco({**scs[sc]["params"], **var[a][0]}, {**scs[sc]["init"], **var[a][1]},
|
||||
eco={"rm": "rest"}, demand=cd)
|
||||
sink = next((r["t"] for r in rows if r["Es"] < g5.ECO_PARAMS["eco_floor"]), None)
|
||||
res[(sc, a, cn)] = {"V": rows[-1]["VFAC"], "Cr": rows[-1]["Cr"], "dec": decoupled_windows(rows),
|
||||
"sink": sink, "Es": rows[-1]["Es"], "it": intensity_trend(rows),
|
||||
"thru": rows[-1]["thru"]}
|
||||
lines = ["# GADM-0.5-dev: two-good demand split (dematerialization)", "",
|
||||
"Generated by `simulations/gadm02/demand.py` (ASSEMBLY-WP-0007-T04). Ecological classes with",
|
||||
"material replenishment at rest. Decoupled windows: 10-year windows with VFAC rising, throughput",
|
||||
"falling and K_Ω not falling. Intensity trend: yearly change of throughput per unit of output,",
|
||||
"years 0–10 (observed EU dematerialization ≈ −1.6 %/year).", "",
|
||||
"| Scenario | Anchor | Case | VFAC t100 | rival demand share Cr t100 | intensity trend | decoupled windows | sinks breach | Es t100 |",
|
||||
"|---|---|---|---|---|---|---|---|---|"]
|
||||
for sc in ("baseline", "generative_regime"):
|
||||
for a in ANCHORS:
|
||||
for cn in CASES:
|
||||
r = res[(sc, a, cn)]
|
||||
lines.append(f"| {scs[sc]['title']} | {a} | {cn} | {r['V']:.3f} | {r['Cr']:.2f} | {100 * r['it']:+.1f} % | "
|
||||
f"{r['dec']:.2f} | {('t ' + format(r['sink'], '.0f')) if r['sink'] is not None else '—'} | {r['Es']:.2f} |")
|
||||
readings = []
|
||||
for sc in ("baseline", "generative_regime"):
|
||||
t = scs[sc]["title"]
|
||||
readings.append((f"decoupled windows, split − none: {t}",
|
||||
[res[(sc, a, 'split (λ 0.05, ε 2)')]["dec"] - res[(sc, a, 'no demand split')]["dec"] for a in ANCHORS]))
|
||||
readings.append((f"ΔVFAC split − none: {t}",
|
||||
[res[(sc, a, 'split (λ 0.05, ε 2)')]["V"] - res[(sc, a, 'no demand split')]["V"] for a in ANCHORS]))
|
||||
readings.append((f"ΔEs t100 split − none: {t}",
|
||||
[res[(sc, a, 'split (λ 0.05, ε 2)')]["Es"] - res[(sc, a, 'no demand split')]["Es"] for a in ANCHORS]))
|
||||
lines += ["", "## Readings and robustness class", "", "| Reading | " + " | ".join(ANCHORS) + " | class |",
|
||||
"|---|" + "---|" * (len(ANCHORS) + 1)]
|
||||
for name, vals in readings:
|
||||
lines.append(f"| {name} | " + " | ".join(f"{v:+.3f}" for v in vals) + f" | {bp.classify(vals, 'sign')} |")
|
||||
lines.append("")
|
||||
(OUT / "demand.md").write_text("\n".join(lines))
|
||||
print("\n".join(lines))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
@ -79,9 +79,21 @@ def _draws(s: dict, a: dict, p: dict, q: dict) -> tuple[float, float, float]:
|
|||
return dr, dm, ds
|
||||
|
||||
|
||||
# --- ASSEMBLY-WP-0007-T04: two-good demand split (dematerialization) -------------------------------
|
||||
# Cr = rival share of demand, relative to its start (Cr0 = 1). It relaxes at dm_lam toward
|
||||
# 1 - dm_eps * (qn - qn0), where qn = (Y_n / Y*) * sqrt(X * Q) is the quality-weighted non-rival
|
||||
# offer. Physical throughput intensity thr and physical investment aK scale with Cr: the same
|
||||
# capital stock serves dematerialized demand with less physical load. dm_lam = 0 switches it off.
|
||||
DEM_PARAMS = {"dm_lam": 0.0, "dm_eps": 2.0}
|
||||
|
||||
|
||||
def nonrival_quality(s: dict, a: dict) -> float:
|
||||
return (a["Yn"] / a["Ystar"] if a["Ystar"] else 0.0) * (max(0.0, s["X"]) * max(0.0, s["Q"])) ** 0.5
|
||||
|
||||
|
||||
def simulate_eco(params: dict | None = None, init: dict | None = None, eco: dict | None = None,
|
||||
T: float = 100.0, dt: float = 0.1, record_every: int = 10) -> list[dict]:
|
||||
"""GADM-0.5 with ecological classes. Same loop as gadm04.simulate; E follows the classes."""
|
||||
T: float = 100.0, dt: float = 0.1, record_every: int = 10, demand: dict | None = None) -> list[dict]:
|
||||
"""GADM-0.5 with ecological classes (and optionally the demand split). E follows the classes."""
|
||||
q = {**ECO_PARAMS, **(eco or {})}
|
||||
p = {**PARAMS, **(params or {})}
|
||||
s = {**g4.INIT, **(init or {})}
|
||||
|
|
@ -95,9 +107,14 @@ def simulate_eco(params: dict | None = None, init: dict | None = None, eco: dict
|
|||
rr = q["rr"] if q["rr"] is not None else dr0 * s["Er"] / (1 - s["Er"])
|
||||
rs = q["rs"] if q["rs"] is not None else ds0 * s["Es"] / (1 - s["Es"])
|
||||
rm = _dm0 * s["Ed"] / (1 - s["Ed"]) if q["rm"] == "rest" else q["rm"]
|
||||
qd = {**DEM_PARAMS, **(demand or {})}
|
||||
thr0, aK0, cr = p["thr"], p["aK"], 1.0
|
||||
qn0 = nonrival_quality(s, a0)
|
||||
rows = []
|
||||
steps = int(round(T / dt))
|
||||
for i in range(steps + 1):
|
||||
if qd["dm_lam"]:
|
||||
p = {**p, "thr": thr0 * cr, "aK": aK0 * cr}
|
||||
d, a = g4.derivatives(s, p)
|
||||
dr, dm, ds = _draws(s, a, p, q)
|
||||
d["Er"] = rr * (1 - s["Er"]) - dr * s["Er"]
|
||||
|
|
@ -106,10 +123,14 @@ def simulate_eco(params: dict | None = None, init: dict | None = None, eco: dict
|
|||
d["E"] = 0.0
|
||||
if i % record_every == 0:
|
||||
row = {"t": round(i * dt, 6), **s, "P": g4.g3.total_p(s), "G": a["Gagg"],
|
||||
**{k: a[k] for k in ("H", "A", "Ystar", "Yr", "Yn", "dem", "B", "V", "Vsel")}}
|
||||
**{k: a[k] for k in ("H", "A", "Ystar", "Yr", "Yn", "dem", "B", "V", "Vsel")}, "Cr": cr,
|
||||
"thru": p["e1"] * s["Kp"] * a["dem"] * p["thr"] + p["e2"] * s["Ko"]}
|
||||
row["VFAC"] = g4.g2.vfac(row)
|
||||
rows.append(row)
|
||||
if i < steps:
|
||||
if qd["dm_lam"]:
|
||||
target = max(0.05, 1 - qd["dm_eps"] * (nonrival_quality(s, a) - qn0))
|
||||
cr += dt * qd["dm_lam"] * (target - cr)
|
||||
s = {k: (max(0.0, s[k] + dt * d[k]) if k.startswith("N")
|
||||
else min(1.0, max(0.0, s[k] + dt * d[k]))) for k in STOCKS_ECO}
|
||||
s["E"] = eco_E(s)
|
||||
|
|
|
|||
44
simulations/gadm02/results/demand.md
Normal file
44
simulations/gadm02/results/demand.md
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
# GADM-0.5-dev: two-good demand split (dematerialization)
|
||||
|
||||
Generated by `simulations/gadm02/demand.py` (ASSEMBLY-WP-0007-T04). Ecological classes with
|
||||
material replenishment at rest. Decoupled windows: 10-year windows with VFAC rising, throughput
|
||||
falling and K_Ω not falling. Intensity trend: yearly change of throughput per unit of output,
|
||||
years 0–10 (observed EU dematerialization ≈ −1.6 %/year).
|
||||
|
||||
| Scenario | Anchor | Case | VFAC t100 | rival demand share Cr t100 | intensity trend | decoupled windows | sinks breach | Es t100 |
|
||||
|---|---|---|---|---|---|---|---|---|
|
||||
| Baseline (current trends) | B1 | no demand split | 0.377 | 1.00 | +0.0 % | 0.00 | — | 0.32 |
|
||||
| Baseline (current trends) | B1 | split (λ 0.05, ε 2) | 0.381 | 0.93 | +0.0 % | 0.28 | — | 0.34 |
|
||||
| Baseline (current trends) | B1 | split, strong (λ 0.1, ε 4) | 0.387 | 0.84 | +0.0 % | 0.44 | — | 0.36 |
|
||||
| Baseline (current trends) | B2 | no demand split | 0.321 | 1.00 | -0.1 % | 0.00 | — | 0.35 |
|
||||
| Baseline (current trends) | B2 | split (λ 0.05, ε 2) | 0.326 | 0.73 | -0.1 % | 0.00 | — | 0.37 |
|
||||
| Baseline (current trends) | B2 | split, strong (λ 0.1, ε 4) | 0.333 | 0.29 | -0.1 % | 0.00 | — | 0.41 |
|
||||
| Baseline (current trends) | B3 | no demand split | 0.305 | 1.00 | -0.2 % | 0.04 | — | 0.29 |
|
||||
| Baseline (current trends) | B3 | split (λ 0.05, ε 2) | 0.311 | 0.56 | -0.2 % | 0.09 | — | 0.31 |
|
||||
| Baseline (current trends) | B3 | split, strong (λ 0.1, ε 4) | 0.319 | 0.05 | -0.3 % | 0.08 | — | 0.34 |
|
||||
| Baseline (current trends) | B4 | no demand split | 0.278 | 1.00 | -0.3 % | 0.34 | — | 0.21 |
|
||||
| Baseline (current trends) | B4 | split (λ 0.05, ε 2) | 0.285 | 0.45 | -0.3 % | 0.37 | — | 0.23 |
|
||||
| Baseline (current trends) | B4 | split, strong (λ 0.1, ε 4) | 0.290 | 0.05 | -0.3 % | 0.17 | — | 0.24 |
|
||||
| Generative regime | B1 | no demand split | 0.607 | 1.00 | +0.1 % | 0.00 | t 83 | 0.19 |
|
||||
| Generative regime | B1 | split (λ 0.05, ε 2) | 0.613 | 0.89 | +0.0 % | 0.00 | — | 0.21 |
|
||||
| Generative regime | B1 | split, strong (λ 0.1, ε 4) | 0.622 | 0.74 | +0.0 % | 0.00 | — | 0.23 |
|
||||
| Generative regime | B2 | no demand split | 0.583 | 1.00 | -0.1 % | 0.00 | t 49 | 0.17 |
|
||||
| Generative regime | B2 | split (λ 0.05, ε 2) | 0.598 | 0.70 | -0.1 % | 0.45 | t 98 | 0.20 |
|
||||
| Generative regime | B2 | split, strong (λ 0.1, ε 4) | 0.640 | 0.05 | -0.1 % | 0.89 | — | 0.30 |
|
||||
| Generative regime | B3 | no demand split | 0.564 | 1.00 | -0.3 % | 0.00 | t 37 | 0.15 |
|
||||
| Generative regime | B3 | split (λ 0.05, ε 2) | 0.585 | 0.53 | -0.3 % | 0.71 | t 61 | 0.19 |
|
||||
| Generative regime | B3 | split, strong (λ 0.1, ε 4) | 0.614 | 0.05 | -0.4 % | 0.75 | — | 0.25 |
|
||||
| Generative regime | B4 | no demand split | 0.509 | 1.00 | -0.4 % | 0.00 | t 29 | 0.14 |
|
||||
| Generative regime | B4 | split (λ 0.05, ε 2) | 0.533 | 0.31 | -0.4 % | 0.22 | t 40 | 0.19 |
|
||||
| Generative regime | B4 | split, strong (λ 0.1, ε 4) | 0.546 | 0.05 | -0.5 % | 0.34 | — | 0.21 |
|
||||
|
||||
## Readings and robustness class
|
||||
|
||||
| Reading | B1 | B2 | B3 | B4 | class |
|
||||
|---|---|---|---|---|---|
|
||||
| decoupled windows, split − none: Baseline (current trends) | +0.280 | +0.000 | +0.050 | +0.030 | QUALITATIVE BREAK |
|
||||
| ΔVFAC split − none: Baseline (current trends) | +0.004 | +0.005 | +0.006 | +0.006 | quantitative shift |
|
||||
| ΔEs t100 split − none: Baseline (current trends) | +0.014 | +0.026 | +0.025 | +0.017 | quantitative shift |
|
||||
| decoupled windows, split − none: Generative regime | +0.000 | +0.450 | +0.710 | +0.220 | QUALITATIVE BREAK |
|
||||
| ΔVFAC split − none: Generative regime | +0.006 | +0.015 | +0.021 | +0.024 | quantitative shift |
|
||||
| ΔEs t100 split − none: Generative regime | +0.015 | +0.032 | +0.041 | +0.045 | quantitative shift |
|
||||
|
|
@ -4,7 +4,7 @@ type: workplan
|
|||
title: "GADM: rival/non-rival goods, ecological classes, selection mechanisms"
|
||||
domain: communication
|
||||
repo: assembly-economics
|
||||
status: active
|
||||
status: finished
|
||||
flavor: implementation
|
||||
depends_on: [ASSEMBLY-WP-0006, ASSEMBLY-WP-0009]
|
||||
owner: claude-code
|
||||
|
|
@ -84,11 +84,17 @@ and governance levers. Test capture of selection (scoping note § 4).
|
|||
|
||||
```task
|
||||
id: ASSEMBLY-WP-0007-T04
|
||||
status: todo
|
||||
status: done
|
||||
priority: low
|
||||
state_hub_task_id: "c3dbbe24-4378-55cf-91c1-9e2788646728"
|
||||
```
|
||||
|
||||
**Done 2026-10-13:** two-good demand split (`gadm05`, `demand.py`,
|
||||
`models/GADM-0.5.md` § 4). The generative regime decouples in 45–71 % of
|
||||
decades at B2–B3, and its sinks breach moves 15–50 years later (strong case:
|
||||
none). BR-010 resolved. The readings are conservative against observed
|
||||
dematerialization, so calibration goes to WP-0018.
|
||||
|
||||
Only if T01–T03 raise a question that needs sector composition (scoping
|
||||
note § 3).
|
||||
|
||||
|
|
@ -106,3 +112,12 @@ implement the full four-sector model. Tests:
|
|||
|
||||
Ground the elasticity in dematerialization evidence, for example the material
|
||||
footprint per unit of GDP over time (Eurostat env_ac_rme, UNEP IRP).
|
||||
|
||||
## Close-out 2026-10-13
|
||||
|
||||
T01–T04 are done: GADM-0.5-dev (`gadm05.py`, `models/GADM-0.5.md`). All three
|
||||
grounding tests in `ParameterGrounding.md` § 3 passed. BR-010 was raised and
|
||||
resolved structurally. The residuals are handed off to ASSEMBLY-WP-0018:
|
||||
calibrating dematerialization and the efficiency trend, grounding the
|
||||
ecological classes, the non-rival parameters and the selection weights, and
|
||||
deciding whether GADM-0.5 becomes the reference model.
|
||||
|
|
|
|||
88
workplans/ASSEMBLY-WP-0018-gadm05-grounding.md
Normal file
88
workplans/ASSEMBLY-WP-0018-gadm05-grounding.md
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
---
|
||||
id: ASSEMBLY-WP-0018
|
||||
type: workplan
|
||||
title: "GADM-0.5 grounding: dematerialization, ecological classes, non-rival output"
|
||||
domain: communication
|
||||
repo: assembly-economics
|
||||
status: proposed
|
||||
flavor: residual
|
||||
depends_on: [ASSEMBLY-WP-0007]
|
||||
owner: claude-code
|
||||
topic_slug: coulomb-social
|
||||
created: "2026-10-13"
|
||||
updated: "2026-10-13"
|
||||
---
|
||||
|
||||
# GADM-0.5 grounding
|
||||
|
||||
Residuals of ASSEMBLY-WP-0007 (`models/GADM-0.5.md`). The structural
|
||||
extensions work and pass their grounding tests, but most of their parameters
|
||||
are priors. This workplan grounds them in data, and then decides whether
|
||||
GADM-0.5 replaces GADM-0.4 as the reference model.
|
||||
|
||||
## Dematerialization: demand split and efficiency trend
|
||||
|
||||
```task
|
||||
id: ASSEMBLY-WP-0018-T01
|
||||
status: todo
|
||||
priority: high
|
||||
```
|
||||
|
||||
Modeled throughput intensity falls 0.1–0.5 % per year; observed EU
|
||||
dematerialization is about 1.6 % per year (resource productivity, Eurostat
|
||||
env_ac_rp / env_ac_mfa, 2000–2022; UNEP IRP for US and AR). Add an autonomous
|
||||
efficiency trend for `thr`, and fit it with `dm_eps` and `dm_lam` to the
|
||||
observed intensity series per jurisdiction. Re-run `demand.py`. Do the
|
||||
decoupling and sinks-breach readings survive?
|
||||
|
||||
## Ecological classes: starting levels, loads, replenishment
|
||||
|
||||
```task
|
||||
id: ASSEMBLY-WP-0018-T02
|
||||
status: todo
|
||||
priority: high
|
||||
```
|
||||
|
||||
Ground the class starting levels (per-boundary control variables, Planetary
|
||||
Health Check), the load shares by class (energy, material and emission
|
||||
intensities of physical capital vs. compute; IEA for data centers), and
|
||||
material replenishment (reserve-to-production ratios over time, USGS). Which
|
||||
class binds next depends on the replenishment.
|
||||
|
||||
## Non-rival output parameters
|
||||
|
||||
```task
|
||||
id: ASSEMBLY-WP-0018-T03
|
||||
status: todo
|
||||
priority: medium
|
||||
```
|
||||
|
||||
Ground φ_r (rival share of organism output; task-level data from the
|
||||
Anthropic Economic Index, L4) and xn (commons feed; open-licensing shares of
|
||||
AI-generated output, for example code on public repositories).
|
||||
|
||||
## Selection weights: speed and links
|
||||
|
||||
```task
|
||||
id: ASSEMBLY-WP-0018-T04
|
||||
status: todo
|
||||
priority: low
|
||||
```
|
||||
|
||||
Ground the weight adjustment speed (0.05 per year) and the capture
|
||||
strengths. Test the candidate link `O = Q (1 − Pd)` (organism selection
|
||||
quality falls with discovery concentration). Only that would make capture of
|
||||
selection material for VFAC.
|
||||
|
||||
## GADM-0.5 as reference model
|
||||
|
||||
```task
|
||||
id: ASSEMBLY-WP-0018-T05
|
||||
status: todo
|
||||
priority: medium
|
||||
```
|
||||
|
||||
After T01–T03, decide whether GADM-0.5 (classes, demand split, non-rival
|
||||
output) becomes the reference model for the band probe, the calibration
|
||||
(WP-0013/0015) and the cross-border world (WP-0011/0016). Re-run the key
|
||||
readings and record what changes in the break register.
|
||||
Loading…
Add table
Add a link
Reference in a new issue