ASSEMBLY-WP-0007 active, T01 done: GADM-0.5-dev rival/non-rival output (phi_r, xn); commons feed carries the non-rival effect, no genuine decoupling (BR-010)

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:
tegwick 2026-10-13 23:07:39 +02:00
parent 824187da3b
commit e05c8f100f
10 changed files with 285 additions and 8 deletions

View file

@ -39,6 +39,7 @@ cd simulations/gadm02 && for j in US EU; do python3 -B gsa.py --model gadm04 --j
cd simulations/gadm02 && python3 -B cross_border.py # coupled world US/EU/AR from the calibrated start (models/CrossBorder.md)
cd simulations/gadm02 && python3 -B world_scenarios.py # contexts X1–X4, hypothesis re-test, local vs. global
cd simulations/gadm02 && python3 -B exports.py # export channel and the "Argentina may thrive" hypothesis
cd simulations/gadm02 && python3 -B nonrival.py # GADM-0.5-dev rival vs. non-rival output across the band
cd simulations/gadm02 && python3 -B matching.py && python3 -B matching.py --imm # model matching; IMM flip-detection acceptance test (~6 min)
```

60
models/GADM-0.5.md Normal file
View file

@ -0,0 +1,60 @@
# GADM-0.5 (in development)
**Status:** dev (2026-10-13), ASSEMBLY-WP-0007. Scope:
`models/GADM-Sectors-Scope.md`. Module: `simulations/gadm02/gadm05.py`
(gadm04 plus base-model parameters with defaults that reproduce GADM-0.4).
## 1. Rival and non-rival output (T01)
### 1.1 Structure
K_r = 1 − (1 − K_phys)(1 − φ_r K_Ω) rival capacity (physical goods)
Y_r = K_r √E rival output, limited by ecological headroom
Y_n = (1 − φ_r) K_Ω (1 − K_phys) non-rival output (information, organism services)
Y* = Y_r + Y_n equals K at E = 1 for every φ_r
Non-rival output flows into commons X as far as it is openly inheritable:
`dX += xn · Y_n · lin_open · (1 − X)`. The ecological draw is unchanged
(physical capital `e1 K_phys dem thr` plus compute energy `e2 K_Ω`).
φ_r = 1 and xn = 0 reproduce GADM-0.4 exactly.
Priors: φ_r = 0.2 (organism use is dominated by information tasks, Anthropic
Economic Index); xn = 0.3 (about the commons formation rate aX).
### 1.2 Results across the band (`nonrival.py`, `results/nonrival.md`)
| Reading | B1 | B2 | B3 | B4 | class |
|---|---|---|---|---|---|
| ΔVFAC, GADM-0.5 vs. 0.4, baseline | +0.015 | +0.026 | +0.039 | +0.049 | quantitative shift |
| of which from the commons feed alone | +0.016 | +0.026 | +0.039 | +0.049 | quantitative shift |
| ΔE, baseline | −0.011 | −0.020 | −0.026 | −0.025 | quantitative shift |
| ΔVFAC, generative regime | +0.002 | +0.003 | +0.003 | +0.007 | quantitative shift |
| ΔE, generative regime | 0.000 | 0.000 | 0.000 | −0.002 | — |
| generative − baseline VFAC (GADM-0.5) | +0.274 | +0.308 | +0.303 | +0.266 | robust |
Non-rival share of output at t 100: baseline 0.12 (B1) to 0.66 (B4);
generative regime 0.08 to 0.31.
### 1.3 Readings
1. **The non-rival effect works through the commons, not through the output
split.** The whole VFAC gain comes from non-rival output feeding X. Calling
output non-rival does not change VFAC, because VFAC measures stocks, not
output.
2. **The generative regime's ecological cost does not shrink** (scope test 2:
no). Its low ecological headroom (E 0.48 against 0.68–0.82 in the baseline)
comes from the physical-capital and compute-energy draw, which a non-rival
output share does not reduce. In the baseline, the commons feed even
lowers E slightly, because more commons raise activity and throughput.
3. **No genuine throughput decoupling** (scope test 1: no). VFAC rises while
throughput falls only in the baseline at B3–B4 (20–40 % of five-year
windows), and there only because organism capability peaks and declines,
taking its compute draw with it. The generative regime shows no decoupling.
4. **What genuine decoupling would need:** non-rival output that *replaces*
rival consumption (dematerialization of demand), so that demand for physical
throughput falls as Y_n grows. GADM has no demand composition. This is the
question for the ecological classes (T02) and, if needed, sectors (T04).
It is recorded as BR-010.
5. **The generative regime's advantage is robust across the band** (+0.27 to
+0.31), slightly smaller than in GADM-0.4 (+0.29 to +0.34), because the
baseline also gains from the commons feed.

View file

@ -101,6 +101,14 @@ or could fail:
| T03 endogenous selection weights | leader displacement declined since 2000 (Bessen et al.); lobbying shifts enactment probability only marginally but with high returns (Kang 2016) | Selection capture should be slow and incremental, not abrupt. A model where domination flips selection weights within a few years would contradict the evidence. |
| all | adoption-speed band (grounded central vs. slow) | Every WP-0007 reading should be reported under both adoption variants (reading 3). |
**T01 result (2026-10-13, `models/GADM-0.5.md` § 1):** test passed. With
the split, the commons effect is carried by non-rival output (`xn`): it
accounts for the whole VFAC gain (+0.015 to +0.049 in the baseline across
B1–B4). The split did not produce throughput decoupling (BR-010). New priors
`phi_r` 0.2 (organism output mostly information tasks; Anthropic Economic
Index) and `xn` 0.3 (about aX) need grounding: φ from task-level usage data
(L4), xn from open-licensing shares of AI-generated output.
## 4. Remaining open grounding needs
1. Commons investment `IX`: needs a mapping concept, not just data.

View file

@ -22,3 +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 |

View file

@ -42,6 +42,10 @@ PARAMS = {
# ASSEMBLY-WP-0016-T04: foreign demand for organism-enabled output (exports), dem += xport * K_Omega.
# 0 = closed economy (default; all earlier results unchanged).
"xport": 0.0,
# ASSEMBLY-WP-0007-T01: rival / non-rival output. phi_r = share of organism output that is rival
# (physical, limited by ecological headroom); 1 = GADM up to 0.4 (all output scaled by sqrt(E)).
# xn = rate at which non-rival output, as far as it is openly inheritable, flows into commons X.
"phi_r": 1.0, "xn": 0.0,
# commons (§ 7)
"aX": 0.30, "rho0": 0.30, "rhoO": 0.40, "IX": 0.02, "dX": 0.04,
"lX": 0.06, "lXo": 0.06,
@ -85,7 +89,10 @@ def auxiliaries(s: dict, p: dict) -> dict:
"""Flows and auxiliaries for state s under parameters p."""
H, X, Kp, Ko, F, G, N, Q, P, E, S, A = (s[k] for k in STOCKS)
K = 1 - (1 - Kp) * (1 - Ko)
ystar = K * math.sqrt(E)
phi = p.get("phi_r", 1.0)
y_r = (1 - (1 - Kp) * (1 - phi * Ko)) * math.sqrt(E) # rival output, limited by ecology
y_n = (1 - phi) * Ko * (1 - Kp) # non-rival output (sum = K at E = 1)
ystar = y_r + y_n
wl = p["wL0"] * (1 - p["auto"] * Ko)
cap = 1 - wl
@ -104,7 +111,7 @@ def auxiliaries(s: dict, p: dict) -> dict:
sigma = sum(a * b for a, b in zip(w, q)) / sum(w)
vsel = V * sigma
rho = min(1.0, p["rho0"] + p["rhoO"] * Ko * p["lin_open"])
return {"K": K, "Ystar": ystar, "B": B, "dem": dem, "V": V, "sigma": sigma,
return {"K": K, "Ystar": ystar, "Yr": y_r, "Yn": y_n, "B": B, "dem": dem, "V": V, "sigma": sigma,
"Vsel": vsel, "rho": rho, "wl": wl}
@ -115,7 +122,7 @@ def derivatives(s: dict, p: dict) -> tuple[dict, dict]:
m, L, lo, std = p["m"], p["L"], p["lin_open"], p["std"]
d = {}
d["X"] = (p["aX"] * rho * vsel + p["IX"]) * (1 - X) \
d["X"] = (p["aX"] * rho * vsel + p["IX"] + p.get("xn", 0.0) * a["Yn"] * lo) * (1 - X) \
- (p["dX"] + p["lX"] * P + p["lXo"] * Ko * (1 - lo)) * X
d["Kp"] = p["aK"] * vsel * dem * (1 - Kp) - p["dK"] * Kp
d["Ko"] = (p["aO"] * vsel * dem + p["ell"] * Ko * dem * Q + p["oseed"]) * (1 - Ko) \

View file

@ -234,7 +234,7 @@ def simulate(params: dict | None = None, init: dict | None = None,
if i % record_every == 0:
row = {"t": round(i * dt, 6), **s, "P": g3.total_p(s), "G": a["Gagg"],
**{k: a[k] for k in ("H", "A", "n_ch", "n_w", "n_s", "n_d", "care_need",
"Ystar", "B", "V", "Vsel", "Hch", "Hw", "Hs", "Hd")}}
"Ystar", "Yr", "Yn", "dem", "B", "V", "Vsel", "Hch", "Hw", "Hs", "Hd")}}
row["VFAC"] = g2.vfac(row)
rows.append(row)
if i < steps:

View file

@ -0,0 +1,36 @@
"""GADM-0.5 (in development): rival and non-rival output (ASSEMBLY-WP-0007-T01).
Extends gadm04 through two base-model parameters (gadm02):
phi_r share of organism output that is rival (physical, limited by ecological
headroom). Rival output Y_r = (1 - (1 - Kp)(1 - phi_r K_Omega)) sqrt(E);
non-rival output Y_n = (1 - phi_r) K_Omega (1 - Kp); Y* = Y_r + Y_n,
which equals K at E = 1 for every phi_r (phi_r = 1 is GADM-0.4).
xn non-rival output, as far as it is openly inheritable (lin_open), flows
into commons X.
The ecological draw was already physical (e1 K_phys) plus compute energy
(e2 K_Omega) in GADM-0.2 to 0.4; it is unchanged. Scope: models/GADM-Sectors-Scope.md § 1.
Priors: phi_r = 0.2 (organism use is dominated by information tasks: code,
writing, analysis; Anthropic Economic Index), xn = 0.3 (about aX).
"""
from __future__ import annotations
import gadm04 as g4
MODEL_VERSION = "GADM-0.5-dev"
STOCKS = g4.STOCKS
INIT = g4.INIT
PARAMS = {**g4.PARAMS, "phi_r": 0.2, "xn": 0.3}
def simulate(params: dict | None = None, init: dict | None = None, **kw) -> list[dict]:
return g4.simulate({**PARAMS, **(params or {})}, init, **kw)
def throughput(row: dict, p: dict | None = None) -> float:
"""Physical throughput (ecological draw rate per unit of E): e1 K_phys dem thr + e2 K_Omega."""
p = {**PARAMS, **(p or {})}
return p["e1"] * row["Kp"] * row["dem"] * p["thr"] + p["e2"] * row["Ko"]

View file

@ -0,0 +1,95 @@
"""Rival vs. non-rival output across the adoption band (ASSEMBLY-WP-0007-T01).
Tests (models/GADM-Sectors-Scope.md § 1):
1. Throughput decoupling: can VFAC rise while physical throughput falls?
2. Does the generative regime's ecological cost shrink when its growth is mostly
non-rival?
Variants: GADM-0.4 (phi_r 1), phi_r 0.5 and 0.2 with commons feed xn 0.3, and phi_r 0.2
without commons feed (xn 0), at band anchors B1-B4, baseline and generative regime.
Usage: python3 -B simulations/gadm02/nonrival.py
"""
from __future__ import annotations
import sys
from pathlib import Path
sys.dont_write_bytecode = True
import band_probe as bp # noqa: E402
import gadm04 as g # 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)
VARIANTS = {"GADM-0.4 (φ 1)": {"phi_r": 1.0, "xn": 0.0}, "φ 0.5, xn 0.3": {"phi_r": 0.5, "xn": 0.3},
"φ 0.2, xn 0.3": {"phi_r": 0.2, "xn": 0.3}, "φ 0.2, xn 0": {"phi_r": 0.2, "xn": 0.0}}
def decoupling(rows: list[dict], p: dict, step: int = 5) -> float:
"""Share of 5-year windows in which VFAC rises while physical throughput falls."""
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 g5.throughput(b, p) < g5.throughput(a, p)
return hits / n
def main() -> None:
OUT.mkdir(exist_ok=True)
scs = load_all()
var = {a: gr.variant(gr.BAND[a]) for a in ANCHORS}
res = {}
for a in ANCHORS:
for sc in ("baseline", "generative_regime"):
for vn, vp in VARIANTS.items():
p = {**scs[sc]["params"], **var[a][0], **vp}
rows = g.simulate(p, {**scs[sc]["init"], **var[a][1]})
f = rows[-1]
res[(a, sc, vn)] = {"V": f["VFAC"], "E": f["E"], "X": f["X"], "Y": f["Ystar"],
"yn": f["Yn"] / f["Ystar"] if f["Ystar"] else 0.0,
"thr": g5.throughput(f, p), "dec": decoupling(rows, p)}
lines = ["# GADM-0.5-dev: rival vs. non-rival output across the band", "",
"Generated by `simulations/gadm02/nonrival.py` (ASSEMBLY-WP-0007-T01). t = 100. Y_n share =",
"non-rival share of output. Decoupling = share of 5-year windows with VFAC rising while physical",
"throughput (e1 K_phys dem thr + e2 K_Ω) falls.", ""]
for sc in ("baseline", "generative_regime"):
lines += [f"## {scs[sc]['title']}", "",
"| Anchor | Variant | VFAC | E | X | Y* | Y_n share | throughput | decoupling |",
"|---|---|---|---|---|---|---|---|---|"]
for a in ANCHORS:
for vn in VARIANTS:
r = res[(a, sc, vn)]
lines.append(f"| {a} | {vn} | {r['V']:.3f} | {r['E']:.2f} | {r['X']:.2f} | {r['Y']:.3f} | "
f"{r['yn']:.2f} | {r['thr']:.4f} | {r['dec']:.2f} |")
lines.append("")
readings = []
for sc in ("baseline", "generative_regime"):
title = scs[sc]["title"]
readings.append((f"ΔVFAC φ 0.2/xn 0.3 vs. GADM-0.4: {title}",
[res[(a, sc, "φ 0.2, xn 0.3")]["V"] - res[(a, sc, "GADM-0.4 (φ 1)")]["V"] for a in ANCHORS]))
readings.append((f"ΔE φ 0.2/xn 0.3 vs. GADM-0.4: {title}",
[res[(a, sc, "φ 0.2, xn 0.3")]["E"] - res[(a, sc, "GADM-0.4 (φ 1)")]["E"] for a in ANCHORS]))
readings.append((f"ΔVFAC from commons feed alone (xn 0.3 vs. 0 at φ 0.2): {title}",
[res[(a, sc, "φ 0.2, xn 0.3")]["V"] - res[(a, sc, "φ 0.2, xn 0")]["V"] for a in ANCHORS]))
gen_vs_base = [res[(a, "generative_regime", "φ 0.2, xn 0.3")]["V"] - res[(a, "baseline", "φ 0.2, xn 0.3")]["V"]
for a in ANCHORS]
old_gap = [res[(a, "generative_regime", "GADM-0.4 (φ 1)")]["V"] - res[(a, "baseline", "GADM-0.4 (φ 1)")]["V"]
for a in ANCHORS]
readings.append(("generative − baseline VFAC, GADM-0.5 (φ 0.2, xn 0.3)", gen_vs_base))
readings.append(("generative − baseline VFAC, GADM-0.4", old_gap))
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 / "nonrival.md").write_text("\n".join(lines))
print("\n".join(lines))
if __name__ == "__main__":
main()

View file

@ -0,0 +1,60 @@
# GADM-0.5-dev: rival vs. non-rival output across the band
Generated by `simulations/gadm02/nonrival.py` (ASSEMBLY-WP-0007-T01). t = 100. Y_n share =
non-rival share of output. Decoupling = share of 5-year windows with VFAC rising while physical
throughput (e1 K_phys dem thr + e2 K_Ω) falls.
## Baseline (current trends)
| Anchor | Variant | VFAC | E | X | Y* | Y_n share | throughput | decoupling |
|---|---|---|---|---|---|---|---|---|
| B1 | GADM-0.4 (φ 1) | 0.396 | 0.75 | 0.25 | 0.293 | 0.00 | 0.0131 | 0.00 |
| B1 | φ 0.5, xn 0.3 | 0.405 | 0.74 | 0.27 | 0.307 | 0.08 | 0.0137 | 0.00 |
| B1 | φ 0.2, xn 0.3 | 0.411 | 0.74 | 0.28 | 0.316 | 0.12 | 0.0141 | 0.00 |
| B1 | φ 0.2, xn 0 | 0.396 | 0.75 | 0.25 | 0.298 | 0.13 | 0.0130 | 0.00 |
| B2 | GADM-0.4 (φ 1) | 0.328 | 0.82 | 0.20 | 0.251 | 0.00 | 0.0099 | 0.00 |
| B2 | φ 0.5, xn 0.3 | 0.344 | 0.80 | 0.24 | 0.278 | 0.25 | 0.0109 | 0.00 |
| B2 | φ 0.2, xn 0.3 | 0.353 | 0.80 | 0.27 | 0.295 | 0.38 | 0.0115 | 0.00 |
| B2 | φ 0.2, xn 0 | 0.328 | 0.82 | 0.20 | 0.262 | 0.41 | 0.0099 | 0.00 |
| B3 | GADM-0.4 (φ 1) | 0.298 | 0.76 | 0.19 | 0.376 | 0.00 | 0.0148 | 0.00 |
| B3 | φ 0.5, xn 0.3 | 0.325 | 0.75 | 0.27 | 0.424 | 0.36 | 0.0164 | 0.15 |
| B3 | φ 0.2, xn 0.3 | 0.337 | 0.74 | 0.31 | 0.451 | 0.54 | 0.0173 | 0.20 |
| B3 | φ 0.2, xn 0 | 0.298 | 0.76 | 0.19 | 0.406 | 0.59 | 0.0148 | 0.00 |
| B4 | GADM-0.4 (φ 1) | 0.263 | 0.68 | 0.17 | 0.569 | 0.00 | 0.0234 | 0.05 |
| B4 | φ 0.5, xn 0.3 | 0.298 | 0.66 | 0.30 | 0.647 | 0.44 | 0.0254 | 0.35 |
| B4 | φ 0.2, xn 0.3 | 0.311 | 0.65 | 0.36 | 0.691 | 0.66 | 0.0263 | 0.40 |
| B4 | φ 0.2, xn 0 | 0.263 | 0.68 | 0.17 | 0.648 | 0.69 | 0.0234 | 0.05 |
## Generative regime
| Anchor | Variant | VFAC | E | X | Y* | Y_n share | throughput | decoupling |
|---|---|---|---|---|---|---|---|---|
| B1 | GADM-0.4 (φ 1) | 0.684 | 0.52 | 0.78 | 0.610 | 0.00 | 0.0466 | 0.00 |
| B1 | φ 0.5, xn 0.3 | 0.685 | 0.52 | 0.79 | 0.619 | 0.05 | 0.0466 | 0.00 |
| B1 | φ 0.2, xn 0.3 | 0.685 | 0.52 | 0.79 | 0.624 | 0.08 | 0.0466 | 0.00 |
| B1 | φ 0.2, xn 0 | 0.684 | 0.52 | 0.78 | 0.624 | 0.08 | 0.0466 | 0.00 |
| B2 | GADM-0.4 (φ 1) | 0.658 | 0.50 | 0.77 | 0.626 | 0.00 | 0.0510 | 0.00 |
| B2 | φ 0.5, xn 0.3 | 0.660 | 0.49 | 0.78 | 0.644 | 0.10 | 0.0510 | 0.00 |
| B2 | φ 0.2, xn 0.3 | 0.661 | 0.49 | 0.79 | 0.655 | 0.15 | 0.0511 | 0.00 |
| B2 | φ 0.2, xn 0 | 0.658 | 0.50 | 0.77 | 0.655 | 0.15 | 0.0510 | 0.00 |
| B3 | GADM-0.4 (φ 1) | 0.637 | 0.48 | 0.76 | 0.641 | 0.00 | 0.0543 | 0.00 |
| B3 | φ 0.5, xn 0.3 | 0.639 | 0.48 | 0.78 | 0.669 | 0.13 | 0.0543 | 0.00 |
| B3 | φ 0.2, xn 0.3 | 0.641 | 0.48 | 0.79 | 0.685 | 0.21 | 0.0543 | 0.00 |
| B3 | φ 0.2, xn 0 | 0.637 | 0.48 | 0.76 | 0.685 | 0.21 | 0.0542 | 0.00 |
| B4 | GADM-0.4 (φ 1) | 0.570 | 0.48 | 0.68 | 0.667 | 0.00 | 0.0542 | 0.00 |
| B4 | φ 0.5, xn 0.3 | 0.575 | 0.48 | 0.72 | 0.711 | 0.20 | 0.0544 | 0.00 |
| B4 | φ 0.2, xn 0.3 | 0.577 | 0.48 | 0.74 | 0.737 | 0.31 | 0.0546 | 0.00 |
| B4 | φ 0.2, xn 0 | 0.570 | 0.48 | 0.67 | 0.739 | 0.32 | 0.0541 | 0.00 |
## Readings and robustness class
| Reading | B1 | B2 | B3 | B4 | class |
|---|---|---|---|---|---|
| ΔVFAC φ 0.2/xn 0.3 vs. GADM-0.4: Baseline (current trends) | +0.015 | +0.026 | +0.039 | +0.049 | quantitative shift |
| ΔE φ 0.2/xn 0.3 vs. GADM-0.4: Baseline (current trends) | -0.011 | -0.020 | -0.026 | -0.025 | quantitative shift |
| ΔVFAC from commons feed alone (xn 0.3 vs. 0 at φ 0.2): Baseline (current trends) | +0.016 | +0.026 | +0.039 | +0.049 | quantitative shift |
| ΔVFAC φ 0.2/xn 0.3 vs. GADM-0.4: Generative regime | +0.002 | +0.003 | +0.003 | +0.007 | quantitative shift |
| ΔE φ 0.2/xn 0.3 vs. GADM-0.4: Generative regime | -0.000 | -0.000 | -0.000 | -0.002 | quantitative shift |
| ΔVFAC from commons feed alone (xn 0.3 vs. 0 at φ 0.2): Generative regime | +0.002 | +0.003 | +0.004 | +0.007 | quantitative shift |
| generative − baseline VFAC, GADM-0.5 (φ 0.2, xn 0.3) | +0.274 | +0.308 | +0.303 | +0.266 | robust |
| generative − baseline VFAC, GADM-0.4 | +0.288 | +0.330 | +0.339 | +0.308 | robust |

View file

@ -4,20 +4,23 @@ type: workplan
title: "GADM: rival/non-rival goods, ecological classes, selection mechanisms"
domain: communication
repo: assembly-economics
status: proposed
status: active
flavor: implementation
depends_on: [ASSEMBLY-WP-0006, ASSEMBLY-WP-0009]
owner: claude-code
topic_slug: coulomb-social
created: "2026-10-12"
updated: "2026-10-12"
updated: "2026-10-13"
state_hub_workstream_id: "8e45d434-3684-589a-b0a8-2dcdd4d39616"
---
# GADM: rival/non-rival goods, ecological classes, selection mechanisms
Implements the scope fixed in `models/GADM-Sectors-Scope.md`
(ASSEMBLY-WP-0006-T06). Not to be started until it is promoted to `ready`.
(ASSEMBLY-WP-0006-T06). Promoted and started by the owner on 2026-10-13. The
scope was reviewed against the current state: still valid. Measured ecological
headroom near its floor (E 0.235, Calibration v0.5) makes T01 and T02 more
relevant.
Every reading is reported across the adoption band (B1–B4) with its
robustness class (`research/ScenarioBandMethod.md` § 5). The validation and
@ -27,11 +30,17 @@ falsification tests in `models/ParameterGrounding.md` § 3 apply.
```task
id: ASSEMBLY-WP-0007-T01
status: todo
status: done
priority: high
state_hub_task_id: "7b7f6246-aade-59ea-86e9-2f029f486550"
```
**Done 2026-10-13:** `gadm05.py` (GADM-0.5-dev), base parameters `phi_r`, `xn`
(defaults reproduce GADM-0.4), `nonrival.py`, `models/GADM-0.5.md` § 1. The
non-rival effect works only through the commons feed. There is no genuine
decoupling, and the generative regime's ecological cost is unchanged.
BR-010: demand substitution is needed (T02/T04).
Split Y* into rival Y_r (draws on E) and non-rival Y_n (feeds X). Test
throughput decoupling and the generative regime's ecological cost (scoping
note § 1).