diff --git a/AGENTS.md b/AGENTS.md index 19baec4..f10c530 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -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) ``` diff --git a/models/GADM-0.5.md b/models/GADM-0.5.md new file mode 100644 index 0000000..6a97c1b --- /dev/null +++ b/models/GADM-0.5.md @@ -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. diff --git a/models/ParameterGrounding.md b/models/ParameterGrounding.md index d713fbb..954d1be 100644 --- a/models/ParameterGrounding.md +++ b/models/ParameterGrounding.md @@ -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. diff --git a/research/BreakRegister.md b/research/BreakRegister.md index 63028a3..8ac539a 100644 --- a/research/BreakRegister.md +++ b/research/BreakRegister.md @@ -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 | diff --git a/simulations/gadm02/gadm02.py b/simulations/gadm02/gadm02.py index a3dab97..675db91 100644 --- a/simulations/gadm02/gadm02.py +++ b/simulations/gadm02/gadm02.py @@ -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) \ diff --git a/simulations/gadm02/gadm04.py b/simulations/gadm02/gadm04.py index 4372289..f5b969a 100644 --- a/simulations/gadm02/gadm04.py +++ b/simulations/gadm02/gadm04.py @@ -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: diff --git a/simulations/gadm02/gadm05.py b/simulations/gadm02/gadm05.py new file mode 100644 index 0000000..8136cfe --- /dev/null +++ b/simulations/gadm02/gadm05.py @@ -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"] diff --git a/simulations/gadm02/nonrival.py b/simulations/gadm02/nonrival.py new file mode 100644 index 0000000..2c23c9c --- /dev/null +++ b/simulations/gadm02/nonrival.py @@ -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() diff --git a/simulations/gadm02/results/nonrival.md b/simulations/gadm02/results/nonrival.md new file mode 100644 index 0000000..33a1a31 --- /dev/null +++ b/simulations/gadm02/results/nonrival.md @@ -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 | diff --git a/workplans/ASSEMBLY-WP-0007-gadm-sectors-goods.md b/workplans/ASSEMBLY-WP-0007-gadm-sectors-goods.md index ddfb86c..57aa76f 100644 --- a/workplans/ASSEMBLY-WP-0007-gadm-sectors-goods.md +++ b/workplans/ASSEMBLY-WP-0007-gadm-sectors-goods.md @@ -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).