From dc4e3adc9986fcfbddf7853003136f9b5857cdd0 Mon Sep 17 00:00:00 2001 From: tegwick Date: Wed, 14 Oct 2026 02:31:02 +0200 Subject: [PATCH] Close loose ends: WP-0018 finished (T04 capture link tested, T05 reference-model decision), WP-0016 finished (J4 from China data), WP-0014 blocked (owner declaration + grant v2 confirmed; waits on rein-aharness publisher and 2027), WP-0015 blocked (EU Pm measured, noise calibrated; AR data and Q4 2026 data pending); Calibration v0.6 Co-Authored-By: Claude Opus 5.5 Assistant: claude-code Assistant-Model: opus Assistant-Process: 14913@bnt-lap001 Assistant-Session: add7ef69-b901-4756-9a67-34cf1125d96f --- .../assembly-checkpoint.declaration.yaml | 85 ++++++++ checkpoints/2026/2026-10-13-review.md | 11 ++ models/Calibration.md | 4 +- models/CrossBorder.md | 15 ++ models/GADM-0.5.md | 44 +++++ research/ModelMatching.md | 10 + simulations/gadm02/calibrate_data.py | 4 +- simulations/gadm02/calibration_targets.json | 56 ++++++ simulations/gadm02/cross_border.py | 2 +- simulations/gadm02/gadm02.py | 5 +- simulations/gadm02/gadm03.py | 1 + simulations/gadm02/matching.py | 53 +++++ .../gadm02/results/calibrated_readings.md | 16 +- .../gadm02/results/calibrated_starts.json | 181 ++++++++++++------ simulations/gadm02/results/calibration.md | 37 +++- simulations/gadm02/results/cross_border.md | 78 ++++---- simulations/gadm02/results/exports.md | 32 ++-- simulations/gadm02/results/matching.md | 56 ++++-- simulations/gadm02/results/world_scenarios.md | 58 +++--- simulations/gadm02/world_scenarios.py | 5 +- ...MBLY-WP-0014-checkpoint-operations-2027.md | 10 +- ...SSEMBLY-WP-0015-first-checkpoint-review.md | 10 +- ...SEMBLY-WP-0016-open-economy-refinements.md | 15 +- .../ASSEMBLY-WP-0018-gadm05-grounding.md | 17 +- 24 files changed, 606 insertions(+), 199 deletions(-) create mode 100644 activity-definitions/assembly-checkpoint.declaration.yaml diff --git a/activity-definitions/assembly-checkpoint.declaration.yaml b/activity-definitions/assembly-checkpoint.declaration.yaml new file mode 100644 index 0000000..728599c --- /dev/null +++ b/activity-definitions/assembly-checkpoint.declaration.yaml @@ -0,0 +1,85 @@ +# Owner declaration — assembly-checkpoint-* (ASSEMBLY-WP-0014-T01) +# +# Answers glas-harness GLAS-WP-0017-T02 (grant-shape confirmation) and rein-aharness +# REINAH-WP-0003-T04 / legacy-runtime-inventory step 2. Shape copied from the FI template +# (freedom-intelligence/activity-definitions/fi-daily-research-brief.declaration.yaml). +# This file is assembly-economics' authority over WHAT runs and under WHICH grant. It does not +# schedule (activity-core), pick a sandbox (glas-harness) or execute and publish (rein-aharness). +# Human-readable version and founder approval: checkpoints/EXECUTION_DECLARATION.md (approved +# 2026-10-13), addendum in docs/decisions/2026-10-12-checkpoint-origin-publication.md. +declaration_version: "1" +definition_ids: + - assembly-checkpoint-setup-daily # until 2026-12-31 + - assembly-checkpoint-monthly-2026 # until 2026-12-31 + - assembly-checkpoint-quarterly + - assembly-checkpoint-annual +owner: assembly-economics +approved_by: Bernd Worsch +approved_at: "2026-10-13" +status: proposed # -> active at cutover to the governed route (target: December monthly run) + +execution: + shape: blueprint # operator decision 2026-10-13, hub decision 0636c577: tenant-owned blueprint + harness_profile_ref: none # no Glas profile unless the assessment becomes an agent loop + steps: + - deterministic: python3 checkpoints/run_checkpoint.py --kind {kind} --date {date} + - bounded_model_call: one llm-connect request inside run_checkpoint.py (assessment); numbers + not present in the fetched data are rejected; --no-llm yields a valid record + selection: explicit definition id only. No label or approach_hint routing after cutover. + +inputs: + kind: {type: enum, values: [light, full], source: definition} + date: {type: date, tz: Europe/Berlin, source: activity-core due item (context.item.date)} + repositories: + - coulomb/assembly-economics at a verified Forgejo commit (main) + - coulomb/web-fetcher at a verified Forgejo commit (main) + code: checkpoints/run_checkpoint.py and web_fetcher (standard library only; no package install) + network: + egress_hosts: # from checkpoints/sources.json, plus the llm-connect endpoint + - www.census.gov + - ec.europa.eu + - fred.stlouisfed.org + - ghoapi.azureedge.net + - api.worldbank.org + - api.openalex.org + secrets: none for data sources (all public). llm-connect per its own route. The push credential + belongs to the publisher, never to the run. + +outputs: + artifacts: + - checkpoints/{yyyy}/{date}-{kind}.md + - checkpoints/data/{date}-{kind}.jsonl + out_of_window: successful no-op (JSON summary status "out-of-window"), no commit + +repository_grant: + version: "2" + allowed_paths: + - checkpoints/** + commit_count: {min: 0, max: 1} # 0 for out-of-window days + publication: + remote: origin + ref: main + mode: fast-forward-only + rebase_retries: 1 # only if every unpublished commit stays within allowed_paths + force: never + decision: docs/decisions/2026-10-12-checkpoint-origin-publication.md + commit_message: "Checkpoint {date} ({kind}) — activity-core" + +completion: + event: assembly_checkpoint + required_detail: + repo: assembly-economics + date: inputs.date + kind: inputs.kind + path: outputs.artifacts[0] + pushed: true (or status out-of-window) + on_failure: executor_run ok=false, no assembly_checkpoint event; the next scheduled run is + unaffected. Source failures are not run failures (recorded as not_found / error rows). + +rollback: + pins: + - this declaration and the four definitions, by git revision in this repo + procedure: revert the checkpoint commit (records are append-only by convention, so a revert is + visible), or set enabled false in the definition and sync activity-core definitions. + Until the legacy expiry (2026-12-31) the compatibility route (rein-aharness approach + assembly-checkpoint, 06bd08c) remains available. diff --git a/checkpoints/2026/2026-10-13-review.md b/checkpoints/2026/2026-10-13-review.md index d0bcc82..ad60b8a 100644 --- a/checkpoints/2026/2026-10-13-review.md +++ b/checkpoints/2026/2026-10-13-review.md @@ -63,6 +63,17 @@ the mean of DE, FR, IT and ES. Secondary-source figures are marked. They should be checked against the originals at the next review. +### Added 2026-10-14 + +| Indicator | Jurisdiction | Value | Source | +|---|---|---|---| +| Top-10 constituents' share of the STOXX Europe 600 | EU | about 21 % (Nestlé 3.0, ASML 2.7, Novo Nordisk 2.4, LVMH 2.3, AstraZeneca 2.1, Roche 2.0, Novartis 2.0, Shell 1.9, HSBC 1.5, TotalEnergies 1.3 %) | [STOXX components list](https://www.stoxx.com/document/Bookmarks/CurrentComponents/SXXP.pdf) (undated) | +| MERVAL concentration | AR | more than half of the index weight in energy firms; no top-firm share found | [El Cronista](https://www.cronista.com/finanzas-mercados/las-tres-mejores-y-las-tres-peores-acciones-del-sp-merval-en-2026-donde-hay-valor-todavia/), [iProfesional](https://www.iprofesional.com/finanzas/461395-crece-a-pasos-agigantados-la-brecha-entre-las-acciones-que-mas-suben-y-las-que-mas-bajan) | + +The MERVAL is a narrow index (about 20 stocks), so a top-firm share would not +be comparable with the US and EU operators. AR market concentration stays a +prior. + ## Operators applied - Discovery channel Pd = leading search share. diff --git a/models/Calibration.md b/models/Calibration.md index 4b42314..ffc8247 100644 --- a/models/Calibration.md +++ b/models/Calibration.md @@ -1,6 +1,8 @@ # Calibration of GADM-0.4 to measured data -**Status:** v0.5 (2026-10-13). ASSEMBLY-WP-0013, then the 2026-10-13 review +**Status:** v0.6 (2026-10-14): EU market concentration measured (STOXX +Europe 600 top-10 about 21 %), China (J4) added; 50 of 50 targets in range, +42 measured. Readings R1–R4 unchanged. Earlier: v0.5 (2026-10-13). ASSEMBLY-WP-0013, then the 2026-10-13 review (§ 3.1): 36 of 40 targets measured, all 40 inside their ranges after fitting. v0.5 adds Argentina's ecological headroom (global planetary-boundary measure), which fits AR's `ereg` (0.0058) instead of the default. Calibrates starting states diff --git a/models/CrossBorder.md b/models/CrossBorder.md index b9912c6..40634a6 100644 --- a/models/CrossBorder.md +++ b/models/CrossBorder.md @@ -372,3 +372,18 @@ Readings: Calibration note: runs without `d0` keep the original hook, so all earlier results are unchanged. + +## 9. J4 bloc from China data (WP-0016-T03) + +The J4 reference bloc now starts from its own calibrated state +(`calibrate_data`, jurisdiction "CN", J4 levers): + +- leading search share 0.53 (Baidu 46.9 % in StatCounter, which undercounts + China's domestic market, so the range is 0.40–0.65); +- mobile-OS HHI 0.56; +- sentiment 0.78 (Ipsos: 83 % see more benefits than drawbacks); +- adoption level and growth as priors. + +With it, J4 adopts slightly faster (K_Ω 0.43 at t 10) and keeps high sentiment +(0.77 at t 100, against 0.28 with the US start). The H1 and H2 verdicts are +unchanged (`results/world_scenarios.md`, `results/exports.md`). diff --git a/models/GADM-0.5.md b/models/GADM-0.5.md index 27f5eb7..06b52d6 100644 --- a/models/GADM-0.5.md +++ b/models/GADM-0.5.md @@ -356,3 +356,47 @@ future AI use shifts toward automating physical production. Decoupling holds at the task-data φ_r and becomes partial or disappears at the dematerialization fits. + +## 8. Selection weights grounded and the capture link tested (ASSEMBLY-WP-0018-T04) + +- **Speed.** Leader displacement has declined over decades since 2000 + (Bessen et al.), a time scale of roughly 20 years. The adjustment speed of + 0.05 per year matches that. Lobbying moves enactment probabilities only + marginally (Kang 2016), which fits the moderate capture strength. Both stay + as set. +- **Capture link.** `o_pd` (base parameter, default 0) makes organism + selection quality fall with discovery concentration, + `O = Q (1 − disc)(1 − o_pd · Pd)`. In GADM-0.3+ the channel stocks are + hidden from the base auxiliaries, so Pd is passed through explicitly + (`Pd_ch`). With `o_pd` = 1, endogenous capture changes VFAC by at most + 0.0003 (attention oligopoly, baseline, generative regime at B2–B3). +- **Reading.** Capture of selection is not a material channel for VFAC in + GADM, even when captured channels deliver worse quality. Selection quality + σ reaches the stocks only through value flows, with a small elasticity. + The governance concern about captured selection is therefore not supported + quantitatively by this model. + +## 9. Decision: GADM-0.5 is not yet the reference model (ASSEMBLY-WP-0018-T05) + +Decided 2026-10-14. **GADM-0.4 stays the reference model** for the band +probe, the calibration (`models/Calibration.md`), model matching and the +cross-border world. **GADM-0.5 is the module for ecological and demand +questions**: classes, demand split, non-rival output. + +Reasons: + +1. BR-011 is open. The central GADM-0.5 reading, genuine decoupling, holds at + the task-data φ_r but not at the dematerialization fits. Making GADM-0.5 the + reference now would build every downstream reading on an unresolved + parameter. +2. The structural gains are already usable where they matter (`gadm05`, + `simulate_eco`, `simulate_sel`) without changing the reference results. + +Known limitation of the reference model, recorded here: GADM-0.4 keeps +`e2` = 0.03. That overstates compute's ecological draw 10–20 times (§ 7.1). +This affects the ecological headroom readings of GADM-0.4 runs at high +K_Ω. + +Revisit when post-2024 values of E5 (material intensity) and L4 (task shares) +are in. Those decide φ_r and thus BR-011, which is the trigger in the break +register. diff --git a/research/ModelMatching.md b/research/ModelMatching.md index 35dce0c..90d26d4 100644 --- a/research/ModelMatching.md +++ b/research/ModelMatching.md @@ -228,3 +228,13 @@ Readings: `results/matching.md`, which is re-run at the review of each checkpoint. The unattended runner does not compute regimes, so the approved execution declaration stays unchanged. + +### 4.4 Observation noise from real residuals (WP-0015-T07, step 1) + +Residual standard deviations around the best static regime (US, B3/loop +off): adoption 0.026, investment (L5b) 0.078, discovery 0.009. With these +(never below the assumed noise), the filter result is unchanged: B3 for two +quarters, B4 at 1.00 in Q3 2026, no confirmed flip (`results/matching.md`). +The filter's sharpness therefore comes from model-structure uncertainty +(all candidates share the GADM structure), not from underestimated +measurement noise. The B3 → B4 check waits for Q4 2026 data. diff --git a/simulations/gadm02/calibrate_data.py b/simulations/gadm02/calibrate_data.py index d38658b..a4bf4f6 100644 --- a/simulations/gadm02/calibrate_data.py +++ b/simulations/gadm02/calibrate_data.py @@ -41,7 +41,7 @@ from jurisdictions import ARCHETYPES # noqa: E402 HERE = Path(__file__).resolve().parent OUT = HERE / "results" TARGETS = json.loads((HERE / "calibration_targets.json").read_text())["targets"] -NEAREST = {"US": "J3", "EU": "J1", "DE": "J1", "AR": "J2"} +NEAREST = {"US": "J3", "EU": "J1", "DE": "J1", "AR": "J2", "CN": "J4"} FALLBACK = {"DE": "EU"} # DE uses EU targets where it has none CHANNEL_KEYS = ("Pm", "Pi", "Pd", "Pmem", "Plin") ADOPT = ("aO", "ell", "oseed") @@ -181,7 +181,7 @@ def main() -> None: "| Jurisdiction | " + " | ".join(gr.BAND) + " |", "|---|" + "---|" * len(gr.BAND)] resid_lines = [] resid_all = {} - for jur in ("US", "EU", "DE", "AR"): + for jur in ("US", "EU", "DE", "AR", "CN"): t = targets(jur) p, s = start_state(jur, BASE_ANCHOR) if "Ko_ratio_1y" not in t: diff --git a/simulations/gadm02/calibration_targets.json b/simulations/gadm02/calibration_targets.json index 310c8db..6ca7b49 100644 --- a/simulations/gadm02/calibration_targets.json +++ b/simulations/gadm02/calibration_targets.json @@ -136,6 +136,12 @@ "hi": 0.62, "basis": "measured", "op": "Special Eurobarometer 554/557 (fieldwork 2024): 55 % expect AI to affect daily life positively, 35 % negatively; Sigma = 0.5 + (pos - neg)/200 = 0.60; different question from Pew, so the range is wide and skewed down (checkpoints/2026/2026-10-13-review.md)" + }, + "Pm": { + "lo": 0.17, + "hi": 0.3, + "basis": "measured", + "op": "top-10 constituents' share of the STOXX Europe 600, about 21 % (STOXX components list, undated; secondary search 2026-10-14); same operator family as the US (top-7 share of the S&P 500, 34 %) (checkpoints/2026/2026-10-13-review.md)" } }, "DE": { @@ -225,6 +231,56 @@ "basis": "measured", "op": "Planetary Health Check 2025 (Stockholm Resilience Centre / PIK): 7 of 9 boundaries breached; E = share still in the safe zone = 2/9 = 0.22 (global) (checkpoints/2026/2026-10-13-review.md)" } + }, + "CN": { + "Ko": { + "lo": 0.06, + "hi": 0.2, + "basis": "prior", + "op": "no all-firm share; 74.6 % of China's Fortune 500 deploy or use generative AI (Omdia 2025H1), 42 % of the population are generative-AI users (CNIC, end of 2025); range like the US" + }, + "Ko_ratio_1y": { + "lo": 1.3, + "hi": 1.8, + "basis": "prior", + "op": "no firm series; user numbers roughly doubled within a year (CNIC); range above the US/EU observed growth" + }, + "Pd": { + "lo": 0.4, + "hi": 0.65, + "basis": "measured", + "op": "leading search share Baidu 46.9 % (StatCounter Sept 2026); StatCounter undercounts China's domestic market (Bing 21.6 %, Yandex 15 % suggest foreign-browser bias), so the range is wide (checkpoints/2026/2026-10-13-review.md)" + }, + "Pmem": { + "lo": 0.46, + "hi": 0.66, + "basis": "measured", + "op": "mobile OS HHI (Android 67.5 %, iOS 31.9 %) = 0.56 (StatCounter Sept 2026) (checkpoints/2026/2026-10-13-review.md)" + }, + "Pi": { + "lo": 0.55, + "hi": 0.8, + "basis": "prior", + "op": "domestic cloud market led by Alibaba, Huawei, Tencent; top-3 share prior" + }, + "Plin": { + "lo": 0.5, + "hi": 0.85, + "basis": "prior", + "op": "domestic lineages (DeepSeek, Qwen, others); concentration prior" + }, + "Sig": { + "lo": 0.7, + "hi": 0.85, + "basis": "measured", + "op": "Ipsos (via Stanford AI Index 2025): 83 % of Chinese respondents see more benefits than drawbacks (US 39 %); Sigma = 0.5 + (benefit - drawback)/200 = 0.83, range widened downward for the different question (checkpoints/2026/2026-10-13-review.md)" + }, + "E": { + "lo": 0.15, + "hi": 0.32, + "basis": "measured", + "op": "Planetary Health Check 2025 (Stockholm Resilience Centre / PIK): 7 of 9 boundaries breached; E = share still in the safe zone = 2/9 = 0.22 (global) (checkpoints/2026/2026-10-13-review.md)" + } } } } diff --git a/simulations/gadm02/cross_border.py b/simulations/gadm02/cross_border.py index 7fd17ea..641191c 100644 --- a/simulations/gadm02/cross_border.py +++ b/simulations/gadm02/cross_border.py @@ -48,7 +48,7 @@ def base() -> dict: st = json.loads((OUT / "calibrated_starts.json").read_text()) def par(j): return {k: v for k, v in st[j]["params"].items() if k in g.PARAMS} - return {j: (par(j), dict(st[j]["init"])) for j in ("US", "EU", "AR")} + return {j: (par(j), dict(st[j]["init"])) for j in ("US", "EU", "AR", "CN") if j in st} def world(cal: dict, coupled: bool = True, us_lev: dict | None = None, eu_access: dict | None = None, diff --git a/simulations/gadm02/gadm02.py b/simulations/gadm02/gadm02.py index 675db91..ea0eb12 100644 --- a/simulations/gadm02/gadm02.py +++ b/simulations/gadm02/gadm02.py @@ -46,6 +46,9 @@ PARAMS = { # (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, + # ASSEMBLY-WP-0018-T04: organism selection quality falls with discovery concentration, + # O = Q (1 - disc) (1 - o_pd * Pd). 0 = GADM up to 0.5 (default). + "o_pd": 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, @@ -105,7 +108,7 @@ def auxiliaries(s: dict, p: dict) -> dict: V = min(1.0, v_h + p["vo"] * Ko * Q) M = math.sqrt(A * dem) - O = Q * (1 - p["disc"]) + O = Q * (1 - p["disc"]) * (1 - p.get("o_pd", 0.0) * s.get("Pd_ch", 0.0)) w = [p["wm"], p["ws"], p["wc"], p["wp"], p["wo"] * Ko] q = [M, Q, N * (1 - P), S, O] sigma = sum(a * b for a, b in zip(w, q)) / sum(w) diff --git a/simulations/gadm02/gadm03.py b/simulations/gadm02/gadm03.py index 34945c8..ea1145a 100644 --- a/simulations/gadm02/gadm03.py +++ b/simulations/gadm02/gadm03.py @@ -95,6 +95,7 @@ COEF = {"Pm": "c_m", "Pi": "c_i", "Pd": "c_d", "Pmem": "c_mem", "Plin": "c_lin", def derivatives(s: dict, p: dict) -> tuple[dict, dict]: s2 = {k: v for k, v in s.items() if k not in CHANNELS} s2["P"] = total_p(s) + s2["Pd_ch"] = s["Pd"] # discovery channel, visible to the base auxiliaries (o_pd link) d, a = g2.derivatives(s2, p) d.pop("P") for k, (drv, r, ctr) in _channel_terms(s, p, a).items(): diff --git a/simulations/gadm02/matching.py b/simulations/gadm02/matching.py index b50c623..b9b8b69 100644 --- a/simulations/gadm02/matching.py +++ b/simulations/gadm02/matching.py @@ -193,6 +193,7 @@ def main_observed() -> None: + ", ".join(f"{a} {w:.2f}" for a, w in anchors.items()) + f". Loop weights: off {loops['off']:.2f}, on {loops['on']:.2f}.", ""] lines += observed_imm_lines() + lines += calibrated_imm_lines() (OUT / "matching.md").write_text("\n".join(lines)) print("\n".join(lines)) @@ -556,6 +557,58 @@ def observed_imm_lines() -> list[str]: return lines +# --- WP-0015-T07: observation noise calibrated from real residuals ------------------------------ + +def residual_noise(jur: str = "US") -> dict: + """Residual standard deviation per indicator around the best static regime (model error included).""" + adop = SERIES["US_adoption"] + static = score(jur, path, adop, level=cd.targets(jur)["Ko"]) + b = best(static) + rb = path(jur, *b) + t_from = CAL["US_adoption"] + def mt(t): + return static[b]["t0"] + (t - t_from) + out = {} + for name, kind in KIND.items(): + pts = [(CAL[name] + tau, y) for tau, y in SERIES[name]["points"]] + pts = [(t, y) for t, y in pts if mt(t) >= STEP] + if kind == "pd": + r = [y - observe(rb, mt(t), kind) for t, y in pts] + r = [x - sum(r) / len(r) for x in r] # level offset is a measurement scale, not noise + else: + r = [math.log(y) - math.log(observe(rb, mt(t), kind)) for t, y in pts] + r = [x - sum(r) / len(r) for x in r] + n = len(r) + out[kind] = (sum(x * x for x in r) / max(1, n - 1)) ** 0.5 + return {"best": b, "sd": out} + + +def calibrated_imm_lines() -> list[str]: + global NOISE + info = residual_noise("US") + keep = dict(NOISE) + for kind, sd in info["sd"].items(): + mode, _old = NOISE[kind] + NOISE[kind] = (mode, max(sd, _old)) # never below the sampling noise assumed so far + ev, _i = observed_imm("US") + NOISE.clear(); NOISE.update(keep) + lines = ["", "## US: IMM filter with observation noise calibrated from residuals (WP-0015-T07)", "", + f"Residual standard deviations around the best static regime ({fmt(info['best'])}), model error included:", + "", "| Indicator | assumed noise | residual sd | used |", "|---|---|---|---|"] + for kind, sd in info["sd"].items(): + lines.append(f"| {kind} | {keep[kind][1]} | {sd:.4f} | {max(sd, keep[kind][1]):.4f} |") + lines += ["", "| Calendar t | B1 | B2 | B3 | B4 |", "|---|---|---|---|---|"] + for t, res in ev: + an = marginal(res, 0) + lines.append(f"| {t:.2f} | " + " | ".join(f"{an[(a,)]['w']:.2f}" for a in ("B1", "B2", "B3", "B4")) + " |") + an = marginal(ev[-1][1], 0) + top = max(an, key=lambda k: an[k]["w"]) + fl = flips(ev, by=0) + lines += ["", f"Last quarter: {top[0]} {an[top]['w']:.2f}. Confirmed flips: " + + ("; ".join(f"{t:.2f}: {a[0]} → {b_[0]}" for t, a, b_ in fl) if fl else "none") + ".", ""] + return lines + + if __name__ == "__main__": if "--imm" in sys.argv: main_imm() diff --git a/simulations/gadm02/results/calibrated_readings.md b/simulations/gadm02/results/calibrated_readings.md index a34f33b..ad7e55b 100644 --- a/simulations/gadm02/results/calibrated_readings.md +++ b/simulations/gadm02/results/calibrated_readings.md @@ -22,14 +22,14 @@ already contains today's permissiveness). | Regime | Loop | K_Ω t5 / t25 / peak | Ȳ 0–25 | VFAC t100 | G | A | P t0 → t100 | floors broken | |---|---|---|---|---|---|---|---|---| -| J1 | off | 0.25 / 0.30 / 0.31 | 0.261 | 0.289 | 0.41 | 0.41 | 0.72 → 0.82 | P | -| J1 | on | 0.24 / 0.18 / 0.26 | 0.242 | 0.306 | 0.41 | 0.47 | 0.72 → 0.80 | P | -| J2 | off | 0.55 / 0.52 / 0.59 | 0.318 | 0.193 | 0.33 | 0.18 | 0.72 → 0.91 | P,A | -| J2 | on | 0.43 / 0.14 / 0.43 | 0.233 | 0.246 | 0.38 | 0.31 | 0.72 → 0.88 | P | -| J3 | off | 0.49 / 0.49 / 0.54 | 0.308 | 0.186 | 0.32 | 0.17 | 0.72 → 0.92 | P,A | -| J3 | on | 0.38 / 0.11 / 0.38 | 0.223 | 0.237 | 0.38 | 0.30 | 0.72 → 0.90 | P | -| J4 | off | 0.50 / 0.51 / 0.55 | 0.313 | 0.207 | 0.33 | 0.24 | 0.72 → 0.90 | P | -| J4 | on | 0.47 / 0.35 / 0.50 | 0.287 | 0.228 | 0.36 | 0.29 | 0.72 → 0.89 | P | +| J1 | off | 0.25 / 0.31 / 0.32 | 0.265 | 0.288 | 0.41 | 0.41 | 0.70 → 0.82 | P | +| J1 | on | 0.24 / 0.19 / 0.27 | 0.245 | 0.306 | 0.41 | 0.48 | 0.70 → 0.80 | P | +| J2 | off | 0.55 / 0.53 / 0.59 | 0.320 | 0.192 | 0.33 | 0.18 | 0.70 → 0.91 | P,A | +| J2 | on | 0.44 / 0.14 / 0.44 | 0.234 | 0.246 | 0.38 | 0.31 | 0.70 → 0.88 | P | +| J3 | off | 0.49 / 0.50 / 0.55 | 0.310 | 0.186 | 0.32 | 0.17 | 0.70 → 0.92 | P,A | +| J3 | on | 0.38 / 0.11 / 0.38 | 0.224 | 0.237 | 0.38 | 0.30 | 0.70 → 0.90 | P | +| J4 | off | 0.50 / 0.51 / 0.56 | 0.315 | 0.206 | 0.33 | 0.24 | 0.70 → 0.90 | P | +| J4 | on | 0.48 / 0.35 / 0.50 | 0.289 | 0.228 | 0.36 | 0.29 | 0.70 → 0.89 | P | ## AR (current regime ≈ J2) diff --git a/simulations/gadm02/results/calibrated_starts.json b/simulations/gadm02/results/calibrated_starts.json index 31e5961..efaac1d 100644 --- a/simulations/gadm02/results/calibrated_starts.json +++ b/simulations/gadm02/results/calibrated_starts.json @@ -61,42 +61,103 @@ }, "t_star": 1.1 }, + "CN": { + "init": { + "As": 0.49300303196473755, + "Aw": 0.49791492955158234, + "Cch": 0.4302546754224776, + "Cd": 0.3622557560708628, + "Cs": 0.5266049749545682, + "Cw": 0.5568429588015028, + "Dch": 0.4362407628962177, + "Dd": 0.4019755119474779, + "Ds": 0.539234768802821, + "Dw": 0.5438975284092785, + "E": 0.23483345509982823, + "F": 0.40252055679926135, + "G": 0.47241433298399665, + "Gs": 0.45499599771736576, + "Gw": 0.47822150069277375, + "Ko": 0.12400013263270267, + "Kp": 0.4906170696505522, + "Lg": 0.7749999999999999, + "N": 0.4836863755546663, + "Nch": 0.22729946215662053, + "Nd": 0.09090387668390394, + "Ns": 0.17049784862648207, + "Nw": 0.5114005378433795, + "Pd": 0.5253629120311295, + "Pi": 0.6757309041042, + "Plin": 0.677657906631317, + "Pm": 0.5005796261214728, + "Pmem": 0.5607016992076187, + "Ppol": 0.500441943438186, + "Q": 0.4966583186115709, + "S": 0.49909615249141687, + "Sig": 0.7749999999999999, + "W": 0.13319776829790653, + "X": 0.3884559648900623 + }, + "k": 2.0, + "params": { + "L": 0.2, + "aext": 0.58, + "c_d": 0.4026, + "c_i": 0.3543, + "c_lin": 0.3494, + "c_m": 0.0693, + "c_mem": 0.3759, + "c_pol": 0.3874, + "care_load": 0.03, + "ereg": 0.006502027921568628, + "leg_lag": 10.0, + "lin_open": 0.2, + "m": 0.2, + "r_d": 0.6, + "r_i": 0.45, + "r_lin": 0.45, + "r_mem": 0.45, + "sig_gain": 0.5, + "sig_ref": 0.7749999999999999 + }, + "t_star": 1.0 + }, "DE": { "init": { - "As": 0.5599288424043934, - "Aw": 0.5595642615483107, - "Cch": 0.44606561637805564, - "Cd": 0.34624573024760946, - "Cs": 0.5194055619662479, - "Cw": 0.563580622192313, - "Dch": 0.4522600176030964, - "Dd": 0.4023715575613355, - "Ds": 0.5340519790596704, - "Dw": 0.5412211368980316, - "E": 0.23486643582643155, - "F": 0.40376104620616343, - "G": 0.44808171081056014, - "Gs": 0.4299840929679978, - "Gw": 0.45411530817377127, - "Ko": 0.11335989592626683, - "Kp": 0.48192186244043217, + "As": 0.5598041090399595, + "Aw": 0.5594406283690844, + "Cch": 0.4461157073944171, + "Cd": 0.346246380664374, + "Cs": 0.5194182228592499, + "Cw": 0.5636122720939143, + "Dch": 0.4523514525061948, + "Dd": 0.40237155808739855, + "Ds": 0.5340519980836524, + "Dw": 0.5412220665920002, + "E": 0.23484990520131996, + "F": 0.40377394583544624, + "G": 0.45311924160733974, + "Gs": 0.4353894545615529, + "Gw": 0.4590302071996272, + "Ko": 0.11485564105840863, + "Kp": 0.48273487422759537, "Lg": 0.535, - "N": 0.46214558382237997, + "N": 0.46458431790460164, "Nch": 0.227299207505914, "Nd": 0.0909055888190386, "Ns": 0.17049683002365584, "Nw": 0.5114007924940861, - "Pd": 0.8804855464849508, - "Pi": 0.6619591288561137, - "Plin": 0.8767697856588446, - "Pm": 0.5012800826351705, - "Pmem": 0.6002862986481262, - "Ppol": 0.502247695174575, - "Q": 0.49172382234185763, - "S": 0.48339721687145243, + "Pd": 0.8804417432960704, + "Pi": 0.661876305600853, + "Plin": 0.8768161282536577, + "Pm": 0.23554956571681512, + "Pmem": 0.6002937620843378, + "Ppol": 0.5019583275343558, + "Q": 0.49259417188036014, + "S": 0.4863702853040337, "Sig": 0.535, - "W": 0.12902620854069197, - "X": 0.3780888608429845 + "W": 0.12904547830757415, + "X": 0.37914891949767066 }, "k": 1.4142135623730951, "params": { @@ -106,9 +167,9 @@ "c_d": 0.1627, "c_i": 0.3161, "c_lin": 0.0741, - "c_m": 0.0679, + "c_m": 0.0641, "c_mem": 0.1358, - "c_pol": 0.4022, + "c_pol": 0.3996, "care_load": 0.03, "ell": 0.5868986283848344, "ereg": 0.0065505098039215694, @@ -129,40 +190,40 @@ }, "EU": { "init": { - "As": 0.547253539111859, - "Aw": 0.548224625767804, - "Cch": 0.4272032249357156, - "Cd": 0.3657481101191295, - "Cs": 0.5300003504494355, - "Cw": 0.5574458274764564, - "Dch": 0.43082056226817644, - "Dd": 0.40185192143119564, - "Ds": 0.5402872251399204, - "Dw": 0.544443167177392, - "E": 0.23494814917684614, - "F": 0.40163610217993473, - "G": 0.43280316908266564, - "Gs": 0.41316669929349137, - "Gw": 0.43934985809595245, - "Ko": 0.09150868360327788, - "Kp": 0.48813726708482263, + "As": 0.547208952633877, + "Aw": 0.5481801731864364, + "Cch": 0.4272214655833899, + "Cd": 0.36574823554100594, + "Cs": 0.5300047637492451, + "Cw": 0.5574576804433082, + "Dch": 0.43085482224420174, + "Dd": 0.4018519214548069, + "Ds": 0.5402872270108603, + "Dw": 0.5444433510945222, + "E": 0.2349426062734158, + "F": 0.40164020411821666, + "G": 0.4378733888117984, + "Gs": 0.41860910680062213, + "Gw": 0.44429599250510354, + "Ko": 0.09242910832258855, + "Kp": 0.48858757497583744, "Lg": 0.535, - "N": 0.4765639299171411, + "N": 0.47805006052205135, "Nch": 0.22729951420364686, "Nd": 0.09090351693347513, "Ns": 0.17049805681458743, "Nw": 0.5114004857963531, - "Pd": 0.8901863182693627, - "Pi": 0.6607094653142659, - "Plin": 0.875695868800961, - "Pm": 0.5003873745051807, - "Pmem": 0.5701365716974683, - "Ppol": 0.5009311028707848, - "Q": 0.49481882396446897, - "S": 0.4869511365194517, + "Pd": 0.8901708551489159, + "Pi": 0.6606801143118258, + "Plin": 0.8757129720606179, + "Pm": 0.23510926188591255, + "Pmem": 0.5701394197070061, + "Ppol": 0.5008252732712836, + "Q": 0.4953556298212024, + "S": 0.488790198860286, "Sig": 0.535, - "W": 0.1531825186893347, - "X": 0.386286326958335 + "W": 0.15318948181824038, + "X": 0.3869341435739321 }, "k": 1.5422108254079407, "params": { @@ -172,9 +233,9 @@ "c_d": 0.1507, "c_i": 0.3161, "c_lin": 0.0741, - "c_m": 0.073, + "c_m": 0.0718, "c_mem": 0.1387, - "c_pol": 0.4247, + "c_pol": 0.4215, "care_load": 0.03, "ell": 0.6400174925442954, "ereg": 0.006262980392156864, diff --git a/simulations/gadm02/results/calibration.md b/simulations/gadm02/results/calibration.md index b2f2fd1..3666e2c 100644 --- a/simulations/gadm02/results/calibration.md +++ b/simulations/gadm02/results/calibration.md @@ -10,19 +10,21 @@ range. Adoption scaled from anchor B2 by k; t* aligned by observed growth. |---|---|---|---|---|---|---|---|---| | US | J3 | 2.00 | 1.2 | 0.125 | 0.478 | 0.0062 | 0.387 | 0.26 | | EU | J1 | 1.54 | 0.9 | 0.092 | 0.523 | 0.0063 | 0.719 | 0.60 | -| DE | J1 | 1.41 | 1.5 | 0.113 | 0.616 | 0.0066 | 0.702 | 0.60 | +| DE | J1 | 1.41 | 1.5 | 0.115 | 0.616 | 0.0066 | 0.702 | 0.60 | | AR | J2 | 2.00 | 1.1 | 0.110 | 0.387 | 0.0058 | 0.580 | 0.60 | +| CN | J4 | 2.00 | 1.0 | 0.124 | 0.600 | 0.0065 | 0.580 | 0.60 | -**Fit summary:** 40 of 40 targets inside their range; measured targets 36 of 36. +**Fit summary:** 50 of 50 targets inside their range; measured targets 42 of 42. ## Fixed anchors aligned by growth: K_Ω level miss | Jurisdiction | B1 | B2 | B3 | B4 | |---|---|---|---|---| | US | cannot reach growth | K_Ω 0.055, z -0.9 | K_Ω 0.125, z +0.0 | K_Ω 0.220, z +1.3 | -| EU | cannot reach growth | K_Ω 0.055, z -0.7 | K_Ω 0.125, z +0.6 | K_Ω 0.203, z +2.0 | -| DE | cannot reach growth | K_Ω 0.075, z -0.6 | K_Ω 0.173, z +0.9 | K_Ω 0.353, z +3.7 | +| EU | cannot reach growth | K_Ω 0.056, z -0.7 | K_Ω 0.127, z +0.6 | K_Ω 0.216, z +2.2 | +| DE | cannot reach growth | K_Ω 0.078, z -0.6 | K_Ω 0.175, z +0.9 | K_Ω 0.362, z +3.8 | | AR | cannot reach growth | cannot reach growth | K_Ω 0.110, z +0.0 | K_Ω 0.162, z +0.9 | +| CN | cannot reach growth | K_Ω 0.057, z -1.0 | K_Ω 0.124, z -0.1 | K_Ω 0.213, z +1.2 | ## Residuals at the calibrated start @@ -47,31 +49,33 @@ range. Adoption scaled from anchor B2 by k; t* aligned by observed growth. | Target | Range | Model at t* | z | basis | |---|---|---|---|---| -| Ko | 0.04–0.15 | 0.092 | -0.06 | prior | -| Ko_ratio_1y | 1.35–1.6 | 1.452 | -0.18 | measured | +| Ko | 0.04–0.15 | 0.092 | -0.05 | prior | +| Ko_ratio_1y | 1.35–1.6 | 1.458 | -0.14 | measured | | Pd | 0.84–0.94 | 0.890 | +0.00 | measured | | Pi | 0.56–0.76 | 0.661 | +0.01 | measured | | Pmem | 0.47–0.67 | 0.570 | +0.00 | measured | | Plin | 0.8–0.95 | 0.876 | +0.01 | measured | -| B | 0.6–0.69 | 0.636 | -0.21 | measured | +| B | 0.6–0.69 | 0.635 | -0.21 | measured | | A | 0.45–0.65 | 0.548 | -0.02 | measured | | E | 0.15–0.32 | 0.235 | -0.00 | measured | | Sig | 0.45–0.62 | 0.535 | +0.00 | measured | +| Pm | 0.17–0.3 | 0.235 | +0.00 | measured | ### DE | Target | Range | Model at t* | z | basis | |---|---|---|---|---| -| Ko | 0.05–0.18 | 0.113 | -0.03 | prior | -| Ko_ratio_1y | 1.2–1.45 | 1.318 | -0.06 | measured | +| Ko | 0.05–0.18 | 0.115 | -0.00 | prior | +| Ko_ratio_1y | 1.2–1.45 | 1.322 | -0.03 | measured | | Pd | 0.83–0.93 | 0.880 | +0.01 | measured | | Pi | 0.56–0.76 | 0.662 | +0.02 | measured | | Pmem | 0.5–0.7 | 0.600 | +0.00 | measured | | Plin | 0.8–0.95 | 0.877 | +0.02 | measured | -| B | 0.66–0.76 | 0.693 | -0.34 | measured | +| B | 0.66–0.76 | 0.693 | -0.35 | measured | | A | 0.48–0.65 | 0.560 | -0.06 | measured | | E | 0.15–0.32 | 0.235 | -0.00 | measured | | Sig | 0.45–0.62 | 0.535 | +0.00 | measured | +| Pm | 0.17–0.3 | 0.236 | +0.01 | measured | ### AR @@ -85,3 +89,16 @@ range. Adoption scaled from anchor B2 by k; t* aligned by observed growth. | Pmem | 0.68–0.88 | 0.780 | +0.00 | measured | | Ko_ratio_1y | 1.25–1.65 | 1.443 | -0.04 | prior | | E | 0.15–0.32 | 0.235 | -0.00 | measured | + +### CN + +| Target | Range | Model at t* | z | basis | +|---|---|---|---|---| +| Ko | 0.06–0.2 | 0.124 | -0.09 | prior | +| Ko_ratio_1y | 1.3–1.8 | 1.546 | -0.02 | prior | +| Pd | 0.4–0.65 | 0.525 | +0.00 | measured | +| Pmem | 0.46–0.66 | 0.561 | +0.01 | measured | +| Pi | 0.55–0.8 | 0.676 | +0.01 | prior | +| Plin | 0.5–0.85 | 0.678 | +0.02 | prior | +| Sig | 0.7–0.85 | 0.775 | +0.00 | measured | +| E | 0.15–0.32 | 0.235 | -0.00 | measured | diff --git a/simulations/gadm02/results/cross_border.md b/simulations/gadm02/results/cross_border.md index 8afab1d..b226729 100644 --- a/simulations/gadm02/results/cross_border.md +++ b/simulations/gadm02/results/cross_border.md @@ -15,86 +15,86 @@ at most a ≈ 0.006. Counterfactual strong rule: a 0.15. | Case | Jurisdiction | P t0 → t25 → t100 | Pd / Pmem / Plin t100 | K_Ω t25 | VFAC t100 | G | A | floor | |---|---|---|---|---|---|---|---|---| | closed model, current levers | US | 0.68 → 0.79 → 0.82 | 0.88 / 0.63 / 0.90 | 0.36 | 0.253 | 0.36 | 0.32 | broken | -| closed model, current levers | EU | 0.72 → 0.80 → 0.82 | 0.91 / 0.60 / 0.90 | 0.30 | 0.289 | 0.41 | 0.41 | broken | +| closed model, current levers | EU | 0.70 → 0.77 → 0.82 | 0.91 / 0.60 / 0.90 | 0.31 | 0.288 | 0.41 | 0.41 | broken | | closed model, current levers | AR | 0.75 → 0.85 → 0.86 | 0.95 / 0.79 / 0.90 | 0.31 | 0.229 | 0.34 | 0.27 | broken | | coupled, current levers | US | 0.68 → 0.79 → 0.82 | 0.88 / 0.63 / 0.90 | 0.36 | 0.253 | 0.36 | 0.32 | broken | -| coupled, current levers | EU | 0.72 → 0.80 → 0.82 | 0.88 / 0.63 / 0.91 | 0.30 | 0.281 | 0.41 | 0.42 | broken | +| coupled, current levers | EU | 0.70 → 0.77 → 0.82 | 0.88 / 0.63 / 0.91 | 0.31 | 0.281 | 0.41 | 0.42 | broken | | coupled, current levers | AR | 0.75 → 0.81 → 0.83 | 0.88 / 0.63 / 0.90 | 0.32 | 0.241 | 0.35 | 0.27 | broken | | coupled, DMA as observed (a fitted) | US | 0.68 → 0.79 → 0.82 | 0.88 / 0.63 / 0.90 | 0.36 | 0.253 | 0.36 | 0.32 | broken | -| coupled, DMA as observed (a fitted) | EU | 0.72 → 0.80 → 0.82 | 0.88 / 0.63 / 0.91 | 0.30 | 0.281 | 0.41 | 0.42 | broken | +| coupled, DMA as observed (a fitted) | EU | 0.70 → 0.77 → 0.82 | 0.88 / 0.63 / 0.91 | 0.31 | 0.281 | 0.41 | 0.42 | broken | | coupled, DMA as observed (a fitted) | AR | 0.75 → 0.81 → 0.83 | 0.88 / 0.63 / 0.90 | 0.32 | 0.241 | 0.35 | 0.27 | broken | | coupled, strong access rule a 0.15 (σ 0) | US | 0.68 → 0.79 → 0.82 | 0.88 / 0.63 / 0.90 | 0.36 | 0.253 | 0.36 | 0.32 | broken | -| coupled, strong access rule a 0.15 (σ 0) | EU | 0.72 → 0.66 → 0.68 | 0.14 / 0.07 / 0.91 | 0.34 | 0.333 | 0.44 | 0.39 | ok | +| coupled, strong access rule a 0.15 (σ 0) | EU | 0.70 → 0.61 → 0.68 | 0.14 / 0.07 / 0.91 | 0.35 | 0.332 | 0.44 | 0.39 | ok | | coupled, strong access rule a 0.15 (σ 0) | AR | 0.75 → 0.81 → 0.83 | 0.88 / 0.63 / 0.90 | 0.32 | 0.241 | 0.35 | 0.27 | broken | | coupled, strong access rule, spillover σ 0.5 | US | 0.68 → 0.70 → 0.75 | 0.68 / 0.12 / 0.90 | 0.38 | 0.279 | 0.37 | 0.31 | broken | -| coupled, strong access rule, spillover σ 0.5 | EU | 0.72 → 0.66 → 0.68 | 0.14 / 0.07 / 0.91 | 0.34 | 0.332 | 0.44 | 0.39 | ok | +| coupled, strong access rule, spillover σ 0.5 | EU | 0.70 → 0.61 → 0.69 | 0.14 / 0.07 / 0.91 | 0.35 | 0.331 | 0.44 | 0.39 | ok | | coupled, strong access rule, spillover σ 0.5 | AR | 0.75 → 0.73 → 0.76 | 0.68 / 0.12 / 0.90 | 0.33 | 0.265 | 0.36 | 0.26 | broken | | coupled, US moves to J1 levers | US | 0.68 → 0.58 → 0.60 | 0.86 / 0.02 / 0.28 | 0.49 | 0.379 | 0.46 | 0.47 | ok | -| coupled, US moves to J1 levers | EU | 0.72 → 0.62 → 0.63 | 0.86 / 0.02 / 0.35 | 0.37 | 0.359 | 0.45 | 0.38 | ok | +| coupled, US moves to J1 levers | EU | 0.70 → 0.57 → 0.64 | 0.86 / 0.02 / 0.35 | 0.38 | 0.358 | 0.45 | 0.38 | ok | | coupled, US moves to J1 levers | AR | 0.75 → 0.63 → 0.66 | 0.86 / 0.02 / 0.28 | 0.37 | 0.303 | 0.37 | 0.25 | ok | | coupled, US J1 + DMA as observed | US | 0.68 → 0.58 → 0.60 | 0.86 / 0.02 / 0.28 | 0.49 | 0.379 | 0.46 | 0.47 | ok | -| coupled, US J1 + DMA as observed | EU | 0.72 → 0.62 → 0.63 | 0.86 / 0.02 / 0.35 | 0.37 | 0.359 | 0.45 | 0.38 | ok | +| coupled, US J1 + DMA as observed | EU | 0.70 → 0.57 → 0.64 | 0.86 / 0.02 / 0.35 | 0.38 | 0.358 | 0.45 | 0.38 | ok | | coupled, US J1 + DMA as observed | AR | 0.75 → 0.63 → 0.66 | 0.86 / 0.02 / 0.28 | 0.37 | 0.303 | 0.37 | 0.25 | ok | | coupled, US J1 + strong access rule | US | 0.68 → 0.58 → 0.60 | 0.86 / 0.02 / 0.28 | 0.49 | 0.379 | 0.46 | 0.47 | ok | -| coupled, US J1 + strong access rule | EU | 0.72 → 0.47 → 0.42 | 0.15 / 0.01 / 0.35 | 0.41 | 0.426 | 0.51 | 0.35 | ok | +| coupled, US J1 + strong access rule | EU | 0.70 → 0.41 → 0.42 | 0.15 / 0.01 / 0.35 | 0.43 | 0.427 | 0.51 | 0.35 | ok | | coupled, US J1 + strong access rule | AR | 0.75 → 0.63 → 0.66 | 0.86 / 0.02 / 0.28 | 0.37 | 0.303 | 0.37 | 0.25 | ok | | coupled, EU lineage access rule a 0.15 on Plin | US | 0.68 → 0.79 → 0.82 | 0.88 / 0.63 / 0.90 | 0.36 | 0.253 | 0.36 | 0.32 | broken | -| coupled, EU lineage access rule a 0.15 on Plin | EU | 0.72 → 0.71 → 0.73 | 0.88 / 0.63 / 0.19 | 0.33 | 0.317 | 0.43 | 0.40 | broken | +| coupled, EU lineage access rule a 0.15 on Plin | EU | 0.70 → 0.67 → 0.73 | 0.88 / 0.63 / 0.19 | 0.34 | 0.316 | 0.43 | 0.40 | broken | | coupled, EU lineage access rule a 0.15 on Plin | AR | 0.75 → 0.81 → 0.83 | 0.88 / 0.63 / 0.90 | 0.32 | 0.241 | 0.35 | 0.27 | broken | | coupled, EU lineage portability 0.5 | US | 0.68 → 0.79 → 0.82 | 0.88 / 0.63 / 0.90 | 0.36 | 0.253 | 0.36 | 0.32 | broken | -| coupled, EU lineage portability 0.5 | EU | 0.72 → 0.80 → 0.82 | 0.88 / 0.63 / 0.92 | 0.30 | 0.284 | 0.41 | 0.42 | broken | +| coupled, EU lineage portability 0.5 | EU | 0.70 → 0.77 → 0.83 | 0.88 / 0.63 / 0.92 | 0.31 | 0.283 | 0.41 | 0.42 | broken | | coupled, EU lineage portability 0.5 | AR | 0.75 → 0.81 → 0.83 | 0.88 / 0.63 / 0.90 | 0.32 | 0.241 | 0.35 | 0.27 | broken | | coupled, EU lineage access 0.15 + portability 0.5 | US | 0.68 → 0.79 → 0.82 | 0.88 / 0.63 / 0.90 | 0.36 | 0.253 | 0.36 | 0.32 | broken | -| coupled, EU lineage access 0.15 + portability 0.5 | EU | 0.72 → 0.74 → 0.76 | 0.88 / 0.63 / 0.56 | 0.32 | 0.311 | 0.42 | 0.41 | broken | +| coupled, EU lineage access 0.15 + portability 0.5 | EU | 0.70 → 0.70 → 0.76 | 0.88 / 0.63 / 0.56 | 0.33 | 0.310 | 0.42 | 0.40 | broken | | coupled, EU lineage access 0.15 + portability 0.5 | AR | 0.75 → 0.81 → 0.83 | 0.88 / 0.63 / 0.90 | 0.32 | 0.241 | 0.35 | 0.27 | broken | | coupled, EU cloud switching (Data Act) a 0.15 on Pi | US | 0.68 → 0.79 → 0.82 | 0.88 / 0.63 / 0.90 | 0.36 | 0.253 | 0.36 | 0.32 | broken | -| coupled, EU cloud switching (Data Act) a 0.15 on Pi | EU | 0.72 → 0.74 → 0.77 | 0.88 / 0.63 / 0.91 | 0.31 | 0.303 | 0.42 | 0.41 | broken | +| coupled, EU cloud switching (Data Act) a 0.15 on Pi | EU | 0.70 → 0.71 → 0.77 | 0.88 / 0.63 / 0.91 | 0.32 | 0.302 | 0.42 | 0.41 | broken | | coupled, EU cloud switching (Data Act) a 0.15 on Pi | AR | 0.75 → 0.81 → 0.83 | 0.88 / 0.63 / 0.90 | 0.32 | 0.241 | 0.35 | 0.27 | broken | | coupled, EU all host rules (Pd, Pmem, Plin, Pi 0.15; portability 0.5) | US | 0.68 → 0.79 → 0.82 | 0.88 / 0.63 / 0.90 | 0.36 | 0.253 | 0.36 | 0.32 | broken | -| coupled, EU all host rules (Pd, Pmem, Plin, Pi 0.15; portability 0.5) | EU | 0.72 → 0.43 → 0.35 | 0.14 / 0.07 / 0.57 | 0.41 | 0.438 | 0.53 | 0.34 | ok | +| coupled, EU all host rules (Pd, Pmem, Plin, Pi 0.15; portability 0.5) | EU | 0.70 → 0.36 → 0.35 | 0.14 / 0.07 / 0.57 | 0.43 | 0.438 | 0.53 | 0.34 | ok | | coupled, EU all host rules (Pd, Pmem, Plin, Pi 0.15; portability 0.5) | AR | 0.75 → 0.81 → 0.83 | 0.88 / 0.63 / 0.90 | 0.32 | 0.237 | 0.34 | 0.26 | broken | | coupled, endogenous foreign shares, current levers | US | 0.68 → 0.79 → 0.82 | 0.88 / 0.63 / 0.90 | 0.36 | 0.253 | 0.36 | 0.32 | broken | -| coupled, endogenous foreign shares, current levers | EU | 0.72 → 0.80 → 0.82 | 0.88 / 0.63 / 0.90 | 0.30 | 0.282 | 0.41 | 0.42 | broken | +| coupled, endogenous foreign shares, current levers | EU | 0.70 → 0.77 → 0.82 | 0.88 / 0.63 / 0.90 | 0.31 | 0.281 | 0.41 | 0.42 | broken | | coupled, endogenous foreign shares, current levers | AR | 0.75 → 0.81 → 0.83 | 0.88 / 0.63 / 0.90 | 0.32 | 0.241 | 0.35 | 0.27 | broken | | coupled, EU commons push (IX × 3), fixed shares | US | 0.68 → 0.79 → 0.82 | 0.88 / 0.63 / 0.90 | 0.36 | 0.253 | 0.36 | 0.32 | broken | -| coupled, EU commons push (IX × 3), fixed shares | EU | 0.72 → 0.79 → 0.81 | 0.88 / 0.63 / 0.91 | 0.33 | 0.328 | 0.42 | 0.40 | broken | +| coupled, EU commons push (IX × 3), fixed shares | EU | 0.70 → 0.76 → 0.81 | 0.88 / 0.63 / 0.91 | 0.34 | 0.327 | 0.42 | 0.40 | broken | | coupled, EU commons push (IX × 3), fixed shares | AR | 0.75 → 0.81 → 0.83 | 0.88 / 0.63 / 0.90 | 0.32 | 0.241 | 0.35 | 0.27 | broken | | coupled, EU commons push (IX × 3), endogenous shares | US | 0.68 → 0.79 → 0.82 | 0.88 / 0.63 / 0.90 | 0.36 | 0.253 | 0.36 | 0.32 | broken | -| coupled, EU commons push (IX × 3), endogenous shares | EU | 0.72 → 0.79 → 0.81 | 0.88 / 0.63 / 0.90 | 0.33 | 0.327 | 0.42 | 0.40 | broken | +| coupled, EU commons push (IX × 3), endogenous shares | EU | 0.70 → 0.76 → 0.81 | 0.88 / 0.63 / 0.90 | 0.34 | 0.326 | 0.42 | 0.40 | broken | | coupled, EU commons push (IX × 3), endogenous shares | AR | 0.75 → 0.81 → 0.83 | 0.88 / 0.63 / 0.90 | 0.32 | 0.241 | 0.35 | 0.27 | broken | | coupled, split hook (domestic segment measured), current levers | US | 0.68 → 0.79 → 0.82 | 0.88 / 0.63 / 0.90 | 0.36 | 0.253 | 0.36 | 0.32 | broken | -| coupled, split hook (domestic segment measured), current levers | EU | 0.72 → 0.79 → 0.82 | 0.88 / 0.63 / 0.90 | 0.30 | 0.283 | 0.41 | 0.42 | broken | +| coupled, split hook (domestic segment measured), current levers | EU | 0.70 → 0.76 → 0.82 | 0.88 / 0.63 / 0.90 | 0.31 | 0.282 | 0.41 | 0.42 | broken | | coupled, split hook (domestic segment measured), current levers | AR | 0.75 → 0.81 → 0.83 | 0.88 / 0.63 / 0.90 | 0.32 | 0.241 | 0.35 | 0.27 | broken | | coupled, split hook, endogenous shares | US | 0.68 → 0.79 → 0.82 | 0.88 / 0.63 / 0.90 | 0.36 | 0.253 | 0.36 | 0.32 | broken | -| coupled, split hook, endogenous shares | EU | 0.72 → 0.79 → 0.82 | 0.88 / 0.63 / 0.90 | 0.30 | 0.282 | 0.41 | 0.42 | broken | +| coupled, split hook, endogenous shares | EU | 0.70 → 0.76 → 0.82 | 0.88 / 0.63 / 0.90 | 0.31 | 0.281 | 0.41 | 0.42 | broken | | coupled, split hook, endogenous shares | AR | 0.75 → 0.81 → 0.83 | 0.88 / 0.63 / 0.90 | 0.32 | 0.241 | 0.35 | 0.27 | broken | | coupled, split hook, commons push, endogenous shares | US | 0.68 → 0.79 → 0.82 | 0.88 / 0.63 / 0.90 | 0.36 | 0.253 | 0.36 | 0.32 | broken | -| coupled, split hook, commons push, endogenous shares | EU | 0.72 → 0.78 → 0.79 | 0.88 / 0.63 / 0.90 | 0.33 | 0.332 | 0.42 | 0.40 | broken | +| coupled, split hook, commons push, endogenous shares | EU | 0.70 → 0.75 → 0.79 | 0.88 / 0.63 / 0.90 | 0.34 | 0.331 | 0.42 | 0.40 | broken | | coupled, split hook, commons push, endogenous shares | AR | 0.75 → 0.81 → 0.83 | 0.88 / 0.63 / 0.90 | 0.32 | 0.241 | 0.35 | 0.27 | broken | | coupled, split hook, lineage portability 0.5 | US | 0.68 → 0.79 → 0.82 | 0.88 / 0.63 / 0.90 | 0.36 | 0.253 | 0.36 | 0.32 | broken | -| coupled, split hook, lineage portability 0.5 | EU | 0.68 → 0.77 → 0.80 | 0.88 / 0.63 / 0.86 | 0.31 | 0.293 | 0.41 | 0.41 | broken | +| coupled, split hook, lineage portability 0.5 | EU | 0.66 → 0.73 → 0.80 | 0.88 / 0.63 / 0.86 | 0.32 | 0.292 | 0.41 | 0.41 | broken | | coupled, split hook, lineage portability 0.5 | AR | 0.75 → 0.81 → 0.83 | 0.88 / 0.63 / 0.90 | 0.32 | 0.241 | 0.35 | 0.27 | broken | ## EU domination at t 100: effect of each lever (coupled model) | Lever | EU P t100 | Δ vs. coupled current | |---|---|---| -| coupled, current levers | 0.821 | +0.000 | -| coupled, DMA as observed (a fitted) | 0.821 | -0.000 | -| coupled, strong access rule a 0.15 (σ 0) | 0.683 | -0.138 | -| coupled, strong access rule, spillover σ 0.5 | 0.684 | -0.137 | -| coupled, US moves to J1 levers | 0.635 | -0.186 | -| coupled, US J1 + DMA as observed | 0.635 | -0.186 | -| coupled, US J1 + strong access rule | 0.423 | -0.398 | -| coupled, EU lineage access rule a 0.15 on Plin | 0.727 | -0.094 | -| coupled, EU lineage portability 0.5 | 0.824 | +0.004 | -| coupled, EU lineage access 0.15 + portability 0.5 | 0.757 | -0.064 | -| coupled, EU cloud switching (Data Act) a 0.15 on Pi | 0.766 | -0.055 | -| coupled, EU all host rules (Pd, Pmem, Plin, Pi 0.15; portability 0.5) | 0.350 | -0.471 | -| coupled, endogenous foreign shares, current levers | 0.818 | -0.003 | -| coupled, EU commons push (IX × 3), fixed shares | 0.807 | -0.014 | -| coupled, EU commons push (IX × 3), endogenous shares | 0.807 | -0.014 | -| coupled, split hook (domestic segment measured), current levers | 0.817 | -0.004 | -| coupled, split hook, endogenous shares | 0.818 | -0.003 | -| coupled, split hook, commons push, endogenous shares | 0.793 | -0.027 | -| coupled, split hook, lineage portability 0.5 | 0.802 | -0.019 | +| coupled, current levers | 0.822 | +0.000 | +| coupled, DMA as observed (a fitted) | 0.822 | -0.000 | +| coupled, strong access rule a 0.15 (σ 0) | 0.685 | -0.137 | +| coupled, strong access rule, spillover σ 0.5 | 0.685 | -0.137 | +| coupled, US moves to J1 levers | 0.635 | -0.187 | +| coupled, US J1 + DMA as observed | 0.635 | -0.187 | +| coupled, US J1 + strong access rule | 0.417 | -0.405 | +| coupled, EU lineage access rule a 0.15 on Plin | 0.729 | -0.093 | +| coupled, EU lineage portability 0.5 | 0.825 | +0.003 | +| coupled, EU lineage access 0.15 + portability 0.5 | 0.758 | -0.064 | +| coupled, EU cloud switching (Data Act) a 0.15 on Pi | 0.767 | -0.055 | +| coupled, EU all host rules (Pd, Pmem, Plin, Pi 0.15; portability 0.5) | 0.347 | -0.475 | +| coupled, endogenous foreign shares, current levers | 0.819 | -0.002 | +| coupled, EU commons push (IX × 3), fixed shares | 0.808 | -0.013 | +| coupled, EU commons push (IX × 3), endogenous shares | 0.808 | -0.014 | +| coupled, split hook (domestic segment measured), current levers | 0.818 | -0.004 | +| coupled, split hook, endogenous shares | 0.819 | -0.003 | +| coupled, split hook, commons push, endogenous shares | 0.795 | -0.027 | +| coupled, split hook, lineage portability 0.5 | 0.803 | -0.019 | diff --git a/simulations/gadm02/results/exports.md b/simulations/gadm02/results/exports.md index d5b96d1..19268f9 100644 --- a/simulations/gadm02/results/exports.md +++ b/simulations/gadm02/results/exports.md @@ -7,19 +7,19 @@ own start. H2 holds if AR beats the EU on relative output (years 0–100) and on | Context | Loop | Export share | AR Ȳ 0–25 / 0–100 | EU Ȳ 0–25 / 0–100 | AR − EU VFAC t100 | AR P t100 | H2 | |---|---|---|---|---|---|---|---| -| X1 US-led concentrated frontier | off | closed (no exports) | 0.99 / 0.81 | 1.01 / 0.85 | -0.041 | 0.83 | no | -| X1 US-led concentrated frontier | off | today, upper bound (1.5 %) | 1.00 / 0.82 | 1.01 / 0.85 | -0.042 | 0.83 | no | -| X1 US-led concentrated frontier | off | sector goal (4.5 %) | 1.03 / 0.85 | 1.01 / 0.85 | -0.045 | 0.83 | no | -| X1 US-led concentrated frontier | off | export hub (10 %) | 1.07 / 0.90 | 1.02 / 0.85 | -0.052 | 0.83 | no | -| X1 US-led concentrated frontier | on | closed (no exports) | 0.90 / 0.68 | 0.95 / 0.76 | -0.036 | 0.78 | no | -| X1 US-led concentrated frontier | on | today, upper bound (1.5 %) | 0.91 / 0.69 | 0.95 / 0.76 | -0.037 | 0.78 | no | -| X1 US-led concentrated frontier | on | sector goal (4.5 %) | 0.92 / 0.70 | 0.95 / 0.76 | -0.038 | 0.78 | no | -| X1 US-led concentrated frontier | on | export hub (10 %) | 0.93 / 0.71 | 0.95 / 0.76 | -0.040 | 0.78 | no | -| X2 open-lineage world | off | closed (no exports) | 1.06 / 0.93 | 1.09 / 1.01 | -0.055 | 0.66 | no | -| X2 open-lineage world | off | today, upper bound (1.5 %) | 1.07 / 0.94 | 1.09 / 1.01 | -0.057 | 0.66 | no | -| X2 open-lineage world | off | sector goal (4.5 %) | 1.10 / 0.96 | 1.09 / 1.01 | -0.061 | 0.66 | no | -| X2 open-lineage world | off | export hub (10 %) | 1.14 / 1.00 | 1.09 / 1.01 | -0.071 | 0.66 | no | -| X2 open-lineage world | on | closed (no exports) | 0.99 / 0.84 | 1.05 / 0.96 | -0.048 | 0.62 | no | -| X2 open-lineage world | on | today, upper bound (1.5 %) | 1.00 / 0.85 | 1.05 / 0.96 | -0.049 | 0.62 | no | -| X2 open-lineage world | on | sector goal (4.5 %) | 1.01 / 0.86 | 1.05 / 0.96 | -0.051 | 0.62 | no | -| X2 open-lineage world | on | export hub (10 %) | 1.03 / 0.87 | 1.05 / 0.96 | -0.055 | 0.62 | no | +| X1 US-led concentrated frontier | off | closed (no exports) | 0.99 / 0.81 | 1.02 / 0.86 | -0.040 | 0.83 | no | +| X1 US-led concentrated frontier | off | today, upper bound (1.5 %) | 1.00 / 0.82 | 1.02 / 0.86 | -0.041 | 0.83 | no | +| X1 US-led concentrated frontier | off | sector goal (4.5 %) | 1.03 / 0.85 | 1.02 / 0.86 | -0.044 | 0.83 | no | +| X1 US-led concentrated frontier | off | export hub (10 %) | 1.07 / 0.90 | 1.03 / 0.86 | -0.051 | 0.83 | no | +| X1 US-led concentrated frontier | on | closed (no exports) | 0.90 / 0.68 | 0.96 / 0.76 | -0.036 | 0.78 | no | +| X1 US-led concentrated frontier | on | today, upper bound (1.5 %) | 0.91 / 0.68 | 0.96 / 0.76 | -0.036 | 0.78 | no | +| X1 US-led concentrated frontier | on | sector goal (4.5 %) | 0.92 / 0.69 | 0.96 / 0.76 | -0.037 | 0.78 | no | +| X1 US-led concentrated frontier | on | export hub (10 %) | 0.93 / 0.70 | 0.96 / 0.76 | -0.039 | 0.78 | no | +| X2 open-lineage world | off | closed (no exports) | 1.06 / 0.93 | 1.10 / 1.03 | -0.055 | 0.66 | no | +| X2 open-lineage world | off | today, upper bound (1.5 %) | 1.07 / 0.94 | 1.10 / 1.03 | -0.057 | 0.66 | no | +| X2 open-lineage world | off | sector goal (4.5 %) | 1.10 / 0.96 | 1.10 / 1.03 | -0.061 | 0.66 | no | +| X2 open-lineage world | off | export hub (10 %) | 1.14 / 1.00 | 1.10 / 1.03 | -0.071 | 0.66 | no | +| X2 open-lineage world | on | closed (no exports) | 0.99 / 0.84 | 1.07 / 0.98 | -0.049 | 0.62 | no | +| X2 open-lineage world | on | today, upper bound (1.5 %) | 1.00 / 0.85 | 1.07 / 0.98 | -0.050 | 0.62 | no | +| X2 open-lineage world | on | sector goal (4.5 %) | 1.01 / 0.86 | 1.07 / 0.98 | -0.052 | 0.62 | no | +| X2 open-lineage world | on | export hub (10 %) | 1.03 / 0.87 | 1.07 / 0.98 | -0.055 | 0.62 | no | diff --git a/simulations/gadm02/results/matching.md b/simulations/gadm02/results/matching.md index 4c23e5e..44df227 100644 --- a/simulations/gadm02/results/matching.md +++ b/simulations/gadm02/results/matching.md @@ -29,16 +29,16 @@ Series: Eurostat isoc_eb_ai, EU27_2020, reference years 2023-2025 (2021: 7.65, b | Candidate | log-likelihood | weight | t0 | K_Ω at window end | |---|---|---|---|---| -| B3/loop on | -2.1 | 0.501 | 0.45 | 0.193 | -| B3/loop off | -2.2 | 0.458 | 0.50 | 0.198 | -| B2/loop off | -5.6 | 0.016 | 0.00 | 0.098 | -| B2/loop on | -5.7 | 0.015 | 0.00 | 0.098 | -| B4/loop on | -6.4 | 0.007 | 0.90 | 0.290 | -| B4/loop off | -7.5 | 0.002 | 1.00 | 0.308 | -| B1/loop off | -58.0 | 0.000 | 0.00 | 0.058 | -| B1/loop on | -58.0 | 0.000 | 0.00 | 0.058 | +| B3/loop on | -2.3 | 0.484 | 0.45 | 0.196 | +| B3/loop off | -2.3 | 0.452 | 0.50 | 0.201 | +| B2/loop off | -5.0 | 0.031 | 0.00 | 0.099 | +| B2/loop on | -5.1 | 0.028 | 0.00 | 0.099 | +| B4/loop on | -7.1 | 0.004 | 0.95 | 0.302 | +| B4/loop off | -8.1 | 0.001 | 1.00 | 0.316 | +| B1/loop off | -56.7 | 0.000 | 0.00 | 0.058 | +| B1/loop on | -56.7 | 0.000 | 0.00 | 0.058 | -**Best:** B3/loop on (weight 0.50). Anchor weights: B1 0.00, B2 0.03, B3 0.96, B4 0.01. Loop weights: off 0.48, on 0.52. +**Best:** B3/loop on (weight 0.48). Anchor weights: B1 0.00, B2 0.06, B3 0.94, B4 0.01. Loop weights: off 0.48, on 0.52. ## DE @@ -46,16 +46,16 @@ Series: Eurostat isoc_eb_ai, DE, reference years 2023-2025 (2021: 10.56, exclude | Candidate | log-likelihood | weight | t0 | K_Ω at window end | |---|---|---|---|---| -| B3/loop on | -1.2 | 0.295 | 0.65 | 0.211 | -| B3/loop off | -1.3 | 0.263 | 0.65 | 0.214 | -| B2/loop off | -1.4 | 0.225 | 0.00 | 0.101 | -| B2/loop on | -1.5 | 0.216 | 0.00 | 0.101 | -| B4/loop on | -6.7 | 0.001 | 1.25 | 0.344 | -| B4/loop off | -8.3 | 0.000 | 1.35 | 0.370 | -| B1/loop off | -43.4 | 0.000 | 0.00 | 0.059 | -| B1/loop on | -43.5 | 0.000 | 0.00 | 0.059 | +| B2/loop off | -1.1 | 0.277 | 0.00 | 0.102 | +| B2/loop on | -1.2 | 0.267 | 0.00 | 0.102 | +| B3/loop on | -1.2 | 0.249 | 0.65 | 0.215 | +| B3/loop off | -1.4 | 0.205 | 0.70 | 0.221 | +| B4/loop on | -7.1 | 0.001 | 1.25 | 0.352 | +| B4/loop off | -9.3 | 0.000 | 1.40 | 0.385 | +| B1/loop off | -42.3 | 0.000 | 0.00 | 0.060 | +| B1/loop on | -42.3 | 0.000 | 0.00 | 0.060 | -**Best:** B3/loop on (weight 0.29). Anchor weights: B1 0.00, B2 0.44, B3 0.56, B4 0.00. Loop weights: off 0.49, on 0.51. +**Best:** B2/loop off (weight 0.28). Anchor weights: B1 0.00, B2 0.54, B3 0.45, B4 0.00. Loop weights: off 0.48, on 0.52. ## US: IMM regime filter on the observed series (WP-0017-T05) @@ -80,3 +80,23 @@ Robustness of the last evaluation (anchor weights): | without investment | 0.00 | 0.00 | 0.31 | 0.69 | **Last evaluation (US):** anchor B4 with weight 1.00; previous quarter B3 1.00. A flip needs the new anchor at ≥ 0.75 in two consecutive quarters; a change seen in one quarter is a **flip candidate** to check at the next review. Confirmed flips: none. + + +## US: IMM filter with observation noise calibrated from residuals (WP-0015-T07) + +Residual standard deviations around the best static regime (B3/loop off), model error included: + +| Indicator | assumed noise | residual sd | used | +|---|---|---|---| +| adopt | 0.03 | 0.0258 | 0.0300 | +| invest | 0.05 | 0.0784 | 0.0784 | +| pd | 0.01 | 0.0086 | 0.0100 | + +| Calendar t | B1 | B2 | B3 | B4 | +|---|---|---|---|---| +| 0.32 | 0.00 | 0.38 | 0.40 | 0.21 | +| 0.57 | 0.00 | 0.00 | 1.00 | 0.00 | +| 0.82 | 0.00 | 0.00 | 1.00 | 0.00 | +| 1.07 | 0.00 | 0.00 | 0.00 | 1.00 | + +Last quarter: B4 1.00. Confirmed flips: none. diff --git a/simulations/gadm02/results/world_scenarios.md b/simulations/gadm02/results/world_scenarios.md index 661e274..c88843f 100644 --- a/simulations/gadm02/results/world_scenarios.md +++ b/simulations/gadm02/results/world_scenarios.md @@ -10,65 +10,65 @@ output levels are normalized model units and not comparable across jurisdictions | Loop | Jurisdiction | K_Ω t10 | Ȳ 0–25 / 0–100 | VFAC t100 | P t100 | G | A | Σ end | |---|---|---|---|---|---|---|---|---| | off | US | 0.39 | 1.04 / 0.87 | 0.253 | 0.82 | 0.36 | 0.32 | 0.28 | -| off | EU | 0.31 | 1.01 / 0.85 | 0.281 | 0.82 | 0.41 | 0.41 | 0.54 | +| off | EU | 0.32 | 1.02 / 0.86 | 0.280 | 0.82 | 0.41 | 0.41 | 0.54 | | off | AR | 0.34 | 0.99 / 0.81 | 0.241 | 0.83 | 0.35 | 0.27 | 0.43 | -| off | J4 | 0.40 | 1.07 / 0.92 | 0.285 | 0.77 | 0.38 | 0.41 | 0.28 | +| off | J4 | 0.43 | 1.10 / 0.93 | 0.280 | 0.77 | 0.39 | 0.33 | 0.77 | | on | US | 0.27 | 0.90 / 0.69 | 0.293 | 0.77 | 0.39 | 0.39 | 0.16 | -| on | EU | 0.27 | 0.95 / 0.76 | 0.310 | 0.77 | 0.42 | 0.46 | 0.44 | -| on | AR | 0.27 | 0.90 / 0.68 | 0.274 | 0.78 | 0.37 | 0.31 | 0.31 | -| on | J4 | 0.38 | 1.03 / 0.85 | 0.296 | 0.76 | 0.39 | 0.43 | 0.24 | +| on | EU | 0.28 | 0.96 / 0.76 | 0.311 | 0.77 | 0.42 | 0.46 | 0.43 | +| on | AR | 0.27 | 0.90 / 0.68 | 0.275 | 0.78 | 0.37 | 0.32 | 0.31 | +| on | J4 | 0.39 | 1.05 / 0.85 | 0.305 | 0.73 | 0.41 | 0.36 | 0.70 | ## X2 open-lineage world | Loop | Jurisdiction | K_Ω t10 | Ȳ 0–25 / 0–100 | VFAC t100 | P t100 | G | A | Σ end | |---|---|---|---|---|---|---|---|---| | off | US | 0.45 | 1.16 / 1.10 | 0.379 | 0.60 | 0.46 | 0.47 | 0.28 | -| off | EU | 0.34 | 1.09 / 1.01 | 0.359 | 0.63 | 0.45 | 0.38 | 0.54 | +| off | EU | 0.35 | 1.10 / 1.03 | 0.358 | 0.64 | 0.45 | 0.38 | 0.54 | | off | AR | 0.37 | 1.06 / 0.93 | 0.303 | 0.66 | 0.37 | 0.25 | 0.43 | -| off | J4 | 0.40 | 1.07 / 0.92 | 0.285 | 0.77 | 0.38 | 0.41 | 0.28 | +| off | J4 | 0.43 | 1.10 / 0.93 | 0.280 | 0.77 | 0.39 | 0.33 | 0.77 | | on | US | 0.44 | 1.14 / 1.08 | 0.394 | 0.57 | 0.47 | 0.48 | 0.26 | -| on | EU | 0.32 | 1.05 / 0.96 | 0.378 | 0.60 | 0.46 | 0.40 | 0.46 | +| on | EU | 0.33 | 1.07 / 0.98 | 0.378 | 0.60 | 0.46 | 0.41 | 0.46 | | on | AR | 0.32 | 0.99 / 0.84 | 0.330 | 0.62 | 0.40 | 0.28 | 0.31 | -| on | J4 | 0.38 | 1.03 / 0.85 | 0.296 | 0.76 | 0.39 | 0.43 | 0.24 | +| on | J4 | 0.39 | 1.05 / 0.85 | 0.305 | 0.73 | 0.41 | 0.36 | 0.70 | ## X3 accelerating frontier | Loop | Jurisdiction | K_Ω t10 | Ȳ 0–25 / 0–100 | VFAC t100 | P t100 | G | A | Σ end | |---|---|---|---|---|---|---|---|---| | off | US | 0.73 | 1.32 / 1.20 | 0.218 | 0.84 | 0.33 | 0.23 | 0.28 | -| off | EU | 0.39 | 1.08 / 0.95 | 0.267 | 0.84 | 0.40 | 0.38 | 0.54 | -| off | AR | 0.41 | 1.06 / 0.89 | 0.226 | 0.85 | 0.34 | 0.24 | 0.43 | -| off | J4 | 0.74 | 1.33 / 1.23 | 0.246 | 0.80 | 0.35 | 0.31 | 0.28 | +| off | EU | 0.40 | 1.09 / 0.95 | 0.267 | 0.84 | 0.40 | 0.38 | 0.54 | +| off | AR | 0.42 | 1.06 / 0.89 | 0.226 | 0.85 | 0.34 | 0.24 | 0.43 | +| off | J4 | 0.75 | 1.34 / 1.23 | 0.238 | 0.80 | 0.34 | 0.23 | 0.77 | | on | US | 0.44 | 0.99 / 0.74 | 0.288 | 0.78 | 0.39 | 0.37 | 0.13 | -| on | EU | 0.34 | 1.01 / 0.82 | 0.305 | 0.78 | 0.42 | 0.43 | 0.41 | -| on | AR | 0.33 | 0.95 / 0.74 | 0.268 | 0.78 | 0.37 | 0.30 | 0.27 | -| on | J4 | 0.67 | 1.24 / 1.05 | 0.274 | 0.78 | 0.37 | 0.37 | 0.19 | +| on | EU | 0.35 | 1.01 / 0.81 | 0.306 | 0.78 | 0.42 | 0.44 | 0.41 | +| on | AR | 0.33 | 0.95 / 0.72 | 0.269 | 0.78 | 0.37 | 0.30 | 0.28 | +| on | J4 | 0.66 | 1.22 / 1.01 | 0.282 | 0.75 | 0.39 | 0.30 | 0.66 | ## X4 fragmented blocs | Loop | Jurisdiction | K_Ω t10 | Ȳ 0–25 / 0–100 | VFAC t100 | P t100 | G | A | Σ end | |---|---|---|---|---|---|---|---|---| | off | US | 0.39 | 1.04 / 0.87 | 0.253 | 0.82 | 0.36 | 0.32 | 0.28 | -| off | EU | 0.30 | 1.00 / 0.84 | 0.282 | 0.83 | 0.41 | 0.42 | 0.54 | +| off | EU | 0.31 | 1.01 / 0.85 | 0.282 | 0.83 | 0.41 | 0.42 | 0.54 | | off | AR | 0.34 | 0.99 / 0.80 | 0.235 | 0.85 | 0.34 | 0.27 | 0.43 | -| off | J4 | 0.40 | 1.07 / 0.92 | 0.285 | 0.77 | 0.38 | 0.41 | 0.28 | +| off | J4 | 0.43 | 1.10 / 0.93 | 0.280 | 0.77 | 0.39 | 0.33 | 0.77 | | on | US | 0.27 | 0.90 / 0.69 | 0.293 | 0.77 | 0.39 | 0.39 | 0.16 | -| on | EU | 0.26 | 0.93 / 0.71 | 0.307 | 0.79 | 0.42 | 0.47 | 0.44 | +| on | EU | 0.26 | 0.94 / 0.72 | 0.307 | 0.79 | 0.42 | 0.48 | 0.43 | | on | AR | 0.25 | 0.87 / 0.64 | 0.266 | 0.81 | 0.37 | 0.33 | 0.32 | -| on | J4 | 0.38 | 1.03 / 0.85 | 0.296 | 0.76 | 0.39 | 0.43 | 0.24 | +| on | J4 | 0.39 | 1.05 / 0.85 | 0.305 | 0.73 | 0.41 | 0.36 | 0.70 | ## Hypothesis re-test | Context | Loop | H1 EU adoption lags US and AR (K_Ω t10) | EU − US: ΔȲ 0–25 / ΔVFAC | H2 AR − EU: ΔȲ 0–25 / ΔȲ 0–100 / ΔVFAC | H2 holds? | |---|---|---|---|---|---| -| X1 US-led concentrated frontier | off | yes (0.31 vs 0.39, 0.34) | -0.031 / +0.028 | -0.016 / -0.040 / -0.041 | no | -| X1 US-led concentrated frontier | on | no (0.27 vs 0.27, 0.27) | +0.050 / +0.017 | -0.048 / -0.073 / -0.036 | no | -| X2 open-lineage world | off | yes (0.34 vs 0.45, 0.37) | -0.074 / -0.020 | -0.028 / -0.083 / -0.055 | no | -| X2 open-lineage world | on | no (0.32 vs 0.44, 0.32) | -0.093 / -0.017 | -0.060 / -0.117 / -0.048 | no | -| X3 accelerating frontier | off | yes (0.39 vs 0.73, 0.41) | -0.235 / +0.049 | -0.024 / -0.052 / -0.041 | no | -| X3 accelerating frontier | on | no (0.34 vs 0.44, 0.33) | +0.022 / +0.017 | -0.053 / -0.082 / -0.037 | no | -| X4 fragmented blocs | off | yes (0.30 vs 0.39, 0.34) | -0.038 / +0.029 | -0.016 / -0.044 / -0.047 | no | -| X4 fragmented blocs | on | no (0.26 vs 0.27, 0.25) | +0.027 / +0.013 | -0.055 / -0.073 / -0.040 | no | +| X1 US-led concentrated frontier | off | yes (0.32 vs 0.39, 0.34) | -0.015 / +0.027 | -0.031 / -0.050 / -0.040 | no | +| X1 US-led concentrated frontier | on | no (0.28 vs 0.27, 0.27) | +0.061 / +0.017 | -0.059 / -0.082 / -0.036 | no | +| X2 open-lineage world | off | yes (0.35 vs 0.45, 0.37) | -0.058 / -0.021 | -0.043 / -0.099 / -0.055 | no | +| X2 open-lineage world | on | no (0.33 vs 0.44, 0.32) | -0.076 / -0.016 | -0.077 / -0.138 / -0.049 | no | +| X3 accelerating frontier | off | yes (0.40 vs 0.73, 0.42) | -0.225 / +0.049 | -0.032 / -0.057 / -0.041 | no | +| X3 accelerating frontier | on | no (0.35 vs 0.44, 0.33) | +0.026 / +0.018 | -0.063 / -0.088 / -0.037 | no | +| X4 fragmented blocs | off | yes (0.31 vs 0.39, 0.34) | -0.027 / +0.028 | -0.027 / -0.054 / -0.047 | no | +| X4 fragmented blocs | on | no (0.26 vs 0.27, 0.25) | +0.038 / +0.013 | -0.066 / -0.083 / -0.040 | no | ## Local-in-context vs. global (EU, context X1, loop off) @@ -76,5 +76,5 @@ EU simulated alone against a US path from a US-only run, compared with the full | Setting | EU P t100 local | global | EU K_Ω t25 local | global | max |ΔP| over time | |---|---|---|---|---|---| -| no spillover | 0.821 | 0.821 | 0.303 | 0.303 | 0.000 | -| strong EU access rule, spillover σ 0.5 | 0.683 | 0.684 | 0.340 | 0.340 | 0.000 | +| no spillover | 0.822 | 0.822 | 0.312 | 0.312 | 0.000 | +| strong EU access rule, spillover σ 0.5 | 0.685 | 0.685 | 0.354 | 0.354 | 0.000 | diff --git a/simulations/gadm02/world_scenarios.py b/simulations/gadm02/world_scenarios.py index 926de64..1ec269e 100644 --- a/simulations/gadm02/world_scenarios.py +++ b/simulations/gadm02/world_scenarios.py @@ -57,7 +57,10 @@ def build(cal: dict, ctx: dict, sent: float) -> dict: "US": w.make({**us_p, **ctx.get("us", {}), "sent": sent}, us_s), "EU": w.make({**eu_p, "sent": sent}, eu_s, home="US", f=f_eu, kappa=kap), "AR": w.make({**ar_p, "sent": sent}, ar_s, home="US", f=f_ar, kappa=kap), - "J4": w.make({**us_p, **J4, **ctx.get("j4", {}), "sent": sent, "sig_gain": 0.5, "leg_lag": 10.0}, us_s), + # WP-0016-T03: the J4 bloc starts from its own calibrated state (China data, calibrate_data "CN") + "J4": w.make({**cal["CN"][0], **ctx.get("j4", {}), "sent": sent, "sig_gain": 0.5, "leg_lag": 10.0}, + cal["CN"][1]) if "CN" in cal else + w.make({**us_p, **J4, **ctx.get("j4", {}), "sent": sent, "sig_gain": 0.5, "leg_lag": 10.0}, us_s), } diff --git a/workplans/ASSEMBLY-WP-0014-checkpoint-operations-2027.md b/workplans/ASSEMBLY-WP-0014-checkpoint-operations-2027.md index 370d080..09fd62b 100644 --- a/workplans/ASSEMBLY-WP-0014-checkpoint-operations-2027.md +++ b/workplans/ASSEMBLY-WP-0014-checkpoint-operations-2027.md @@ -4,13 +4,13 @@ type: workplan title: "Checkpoint operations: governed execution and 2027 transition" domain: communication repo: assembly-economics -status: active +status: blocked flavor: residual depends_on: [ASSEMBLY-WP-0010] owner: claude-code topic_slug: coulomb-social created: "2026-10-13" -updated: "2026-10-13" +updated: "2026-10-14" state_hub_workstream_id: "e07ebc2e-2a59-5d7a-aebe-54d8622617a4" --- @@ -28,11 +28,13 @@ security close-down checklist row 20 ```task id: ASSEMBLY-WP-0014-T01 -status: progress +status: wait priority: high state_hub_task_id: "2d0f60c8-30c6-589f-ae7c-f26a01f03687" ``` +**2026-10-14, blocked on rein-aharness:** operator decisions 0636c577 (tenant-owned blueprint, no Glas profile) and c6f23433 (publisher owned by rein-aharness as a separately granted capability). Our side is done: owner declaration `activity-definitions/assembly-checkpoint.declaration.yaml` with the `repository_grant` v2 block, confirmed to glas-harness (GLAS-WP-0017-T02) and rein-aharness. Waiting for the publisher capability (REINAH-WP-0003-T04), then the canary run before 2026-12-15. + **2026-10-13:** step 2 of rein-aharness's migration sequence prepared: `checkpoints/EXECUTION_DECLARATION.md`, **approved by the founder 2026-10-13** (addendum to the 2026-10-12 decision record). @@ -94,6 +96,8 @@ priority: medium state_hub_task_id: "cc430881-dd0f-57c6-8092-0f884b0f8f6e" ``` +**2026-10-14:** local dry run `--kind full --no-llm` (date 2027-01-20, output deleted): 37 ok, 4 not_found (the manual light specs), 0 errors, including E5. Waits for the annual run: the X2 OpenAlex year must move to the last complete year then. + The first `kind: full` run uses the 22 full specs added in WP-0010-T08. Before it runs, move the publication year in the X2 OpenAlex URLs to the last complete year (see the spec note). Run `--kind full --no-llm` locally diff --git a/workplans/ASSEMBLY-WP-0015-first-checkpoint-review.md b/workplans/ASSEMBLY-WP-0015-first-checkpoint-review.md index b0cc22f..a6f357b 100644 --- a/workplans/ASSEMBLY-WP-0015-first-checkpoint-review.md +++ b/workplans/ASSEMBLY-WP-0015-first-checkpoint-review.md @@ -4,13 +4,13 @@ type: workplan title: "First checkpoint review: measured targets, manual indicators, re-calibration" domain: communication repo: assembly-economics -status: active +status: blocked flavor: residual depends_on: [ASSEMBLY-WP-0013, ASSEMBLY-WP-0009] owner: claude-code topic_slug: coulomb-social created: "2026-10-13" -updated: "2026-10-13" +updated: "2026-10-14" state_hub_workstream_id: "74d02cb9-e4f3-5943-8c33-6db81c8b5acf" --- @@ -143,6 +143,8 @@ priority: medium state_hub_task_id: "8cce2578-9046-502f-b4a6-bcab272accab" ``` +**2026-10-14:** EU market concentration measured (STOXX Europe 600 top-10 about 21 %), re-calibrated (Calibration v0.6: 50/50 targets, 42 measured); readings R1–R4 unchanged; cross-border and world results re-run. **Blocked:** AR market concentration (the MERVAL is too narrow for a comparable operator) and AR adoption growth (needs a second Google/IDB or INDEC data point). + Waits for data that does not exist yet as of 2026-10-13. - **AR adoption growth:** the second data point of the Google/IDB study, or @@ -161,11 +163,13 @@ R1–R4 change. Also verify the secondary-source figures marked in ```task id: ASSEMBLY-WP-0015-T07 -status: todo +status: wait priority: high state_hub_task_id: "73b358e7-d09e-56b8-a1c3-1659e70554f1" ``` +**2026-10-14:** step 1 done. Observation noise from real residuals: adoption 0.026, investment 0.078, discovery 0.009. The filter result is unchanged (B4 1.00 in Q3 2026, no confirmed flip), so its sharpness comes from model-structure uncertainty, not from measurement noise. **Blocked:** step 2, the B3 → B4 check, needs Q4 2026 data (next review). + From ASSEMBLY-WP-0017. The IMM filter is overconfident on observed data: weights jump to 1.00 within a quarter (`research/ModelMatching.md` § 4.3). diff --git a/workplans/ASSEMBLY-WP-0016-open-economy-refinements.md b/workplans/ASSEMBLY-WP-0016-open-economy-refinements.md index cb6559b..454b833 100644 --- a/workplans/ASSEMBLY-WP-0016-open-economy-refinements.md +++ b/workplans/ASSEMBLY-WP-0016-open-economy-refinements.md @@ -4,13 +4,13 @@ type: workplan title: "Open-economy refinements: lineage access rules, endogenous foreign shares, calibrated coupling" domain: communication repo: assembly-economics -status: active +status: finished flavor: residual depends_on: [ASSEMBLY-WP-0011] owner: claude-code topic_slug: coulomb-social created: "2026-10-13" -updated: "2026-10-13" +updated: "2026-10-14" state_hub_workstream_id: "94ce26e9-139a-5da5-947d-8a582495b38f" --- @@ -62,12 +62,12 @@ point. Use indicator CB1 (operator shares over time) to calibrate the speed. ```task id: ASSEMBLY-WP-0016-T03 -status: progress +status: done priority: medium state_hub_task_id: "8c6e4c04-5749-52a6-a296-e6fd79eab379" ``` -**Partly done 2026-10-13:** κ is not identified by today's data (EU one-year ratio 1.453 at κ 0, 1.470 at 0.8, observed 1.48); 0.8 does not double-count. Open: a calibrated J4 start (no tracked data for a J4 jurisdiction). +**Partly done 2026-10-13:** κ is not identified by today's data (EU one-year ratio 1.453 at κ 0, 1.470 at 0.8, observed 1.48); 0.8 does not double-count. **Done 2026-10-14:** the J4 bloc now starts from China data (`calibrate_data` "CN": search and mobile-OS shares measured with a StatCounter caveat, sentiment Ipsos 83 % benefits > drawbacks, adoption level and growth priors); `world_scenarios.py` uses it. H1 and H2 verdicts unchanged. κ = 0.8 is a prior. Calibrate it from the lag between frontier releases and host adoption (indicator CB5, BTOS vs. Eurostat timing). Give the J4 bloc its @@ -96,3 +96,10 @@ Add C6 (trade in organism output), C7 (talent and founders) and C8 whether H2 ("Argentina may thrive") changes with an export channel. That is the strongest argument for J2-type thriving that the model does not yet represent (`models/AdoptionBand.md` § 4.5). + +## Close-out 2026-10-14 + +T01–T04 are done (`models/CrossBorder.md` §§ 6–8, `world.py`, `exports.py`, +J4 start from China data). The remaining priors (d0, λ, γ, δ, κ) are tracked +by the coupling indicators CB1–CB6 in `checkpoints/IndicatorCatalog.md`. No +new workplan. diff --git a/workplans/ASSEMBLY-WP-0018-gadm05-grounding.md b/workplans/ASSEMBLY-WP-0018-gadm05-grounding.md index 571a755..d11e3c5 100644 --- a/workplans/ASSEMBLY-WP-0018-gadm05-grounding.md +++ b/workplans/ASSEMBLY-WP-0018-gadm05-grounding.md @@ -4,7 +4,7 @@ type: workplan title: "GADM-0.5 grounding: dematerialization, ecological classes, non-rival output" domain: communication repo: assembly-economics -status: active +status: finished flavor: residual depends_on: [ASSEMBLY-WP-0007] owner: claude-code @@ -96,11 +96,13 @@ AI-generated output, for example code on public repositories). ```task id: ASSEMBLY-WP-0018-T04 -status: todo +status: done priority: low state_hub_task_id: "60940505-b8f9-55f6-b55f-aa4075fe10ff" ``` +**Done 2026-10-14:** the speed (0.05/yr) and strengths are consistent with Bessen et al. and Kang 2016; the capture link `o_pd` was tested (with Pd passed to the base auxiliaries): VFAC effect ≤ 0.0003. Capture of selection is not material (`models/GADM-0.5.md` § 8). + 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 @@ -110,12 +112,21 @@ selection material for VFAC. ```task id: ASSEMBLY-WP-0018-T05 -status: todo +status: done priority: medium state_hub_task_id: "3aace583-cc0b-58f7-9eb0-e241dcfddc1e" ``` +**Done 2026-10-14 (decision):** GADM-0.4 stays the reference model; GADM-0.5 is the module for ecology and demand questions. Revisit when post-2024 E5/L4 data decide BR-011 (`models/GADM-0.5.md` § 9). + 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. + +## Close-out 2026-10-14 + +T01–T05 are done. The open question, BR-011 (decoupling vs. φ_r), is tracked +in the break register, with the trigger "post-2024 E5 and L4 data". E5 is +wired into the full checkpoint, and L4 is collected at reviews +(WP-0015-T01). No new workplan.