ASSEMBLY-WP-0011 finished: context scenarios (world.context), hypothesis re-test (world_scenarios.py), CrossBorder § 5; Calibration v0.5 (AR E); residuals to WP-0016
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 14913@bnt-lap001 Assistant-Session: add7ef69-b901-4756-9a67-34cf1125d96f
This commit is contained in:
parent
a4b4413098
commit
3b755649af
14 changed files with 458 additions and 58 deletions
|
|
@ -37,6 +37,7 @@ cd simulations/gadm02 && python3 -B predictions_v1.py # band ranges for the pr
|
|||
cd simulations/gadm02 && python3 -B calibrate_data.py && python3 -B calibrated_readings.py # calibration to measured data (models/Calibration.md)
|
||||
cd simulations/gadm02 && for j in US EU; do python3 -B gsa.py --model gadm04 --jobs 8 --start $j; done # GSA around calibrated starts, ~30 min
|
||||
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
|
||||
```
|
||||
|
||||
Reality checkpoints (ASSEMBLY-WP-0010): scheduled by activity-core and
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
# Calibration of GADM-0.4 to measured data
|
||||
|
||||
**Status:** v0.4 (2026-10-13). ASSEMBLY-WP-0013, then the 2026-10-13 review
|
||||
(§ 3.1): 35 of 39 targets measured, all 39 inside their ranges after fitting. Calibrates starting states
|
||||
**Status:** 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
|
||||
for US, EU, DE and AR. Argentina has no measured adoption growth, so it is
|
||||
calibrated only on priors. Most state targets are literature priors that the
|
||||
next review must verify against checkpoint data.
|
||||
|
|
@ -100,7 +102,7 @@ Fitted parameters per jurisdiction:
|
|||
| US | 2.00 | 1.2 y | 0.478 | 0.0062 | 0.387 | **0.26** (fitted to the B trend) |
|
||||
| EU | 1.54 | 0.9 y | 0.523 | 0.0063 | 0.719 | 0.60 (default) |
|
||||
| DE | 1.41 | 1.5 y | 0.616 | 0.0066 | 0.702 | 0.60 |
|
||||
| AR | 2.00 | 1.1 y | 0.387 | 0.0500 | 0.580 | 0.60 |
|
||||
| AR | 2.00 | 1.1 y | 0.387 | 0.0058 | 0.580 | 0.60 |
|
||||
|
||||
**Fit: 39 of 39 targets inside their range, including 35 of 35 measured
|
||||
targets.**
|
||||
|
|
|
|||
|
|
@ -169,3 +169,68 @@ concentration**, and the data allow at most a ≈ 0.006 per year. That is about
|
|||
Caveats: the foreign shares and κ are first estimates. The access rule is a
|
||||
removal rate on the operator part, not a model of how regulation works. The
|
||||
legitimacy loop is off.
|
||||
|
||||
## 5. Context scenarios and hypothesis re-test (T04, T05)
|
||||
|
||||
`world.py` supports **local runs in a context**: `context(rows)` makes a
|
||||
jurisdiction follow given rows instead of being simulated (test: a local run
|
||||
against a context taken from a global run reproduces that run to nine
|
||||
decimals). `world_scenarios.py` (`results/world_scenarios.md`) runs four
|
||||
contexts globally (US, EU, AR and a J4 reference bloc) with the legitimacy
|
||||
loop off and on. Calibration v0.5 (Argentina's E measured too, 40 of 40
|
||||
targets in range).
|
||||
|
||||
| Context | Definition |
|
||||
|---|---|
|
||||
| X1 US-led concentrated frontier | current levers |
|
||||
| X2 open-lineage world | US moves to rights-first (J1) levers |
|
||||
| X3 accelerating frontier | US and J4 with self-enhancement (B4-like) |
|
||||
| X4 fragmented blocs | hosts' frontier access 0.2, foreign shares halved |
|
||||
|
||||
Output is compared **relative to each jurisdiction's own start**. Model
|
||||
output levels are normalized and not comparable across jurisdictions.
|
||||
|
||||
### 5.1 "Europe lags" (H1)
|
||||
|
||||
| | loop off | loop on |
|
||||
|---|---|---|
|
||||
| EU adoption below US and AR at t 10 | yes, in all four contexts | no, in all four contexts |
|
||||
| EU − US relative output, years 0–25 | −0.03 to −0.24 (largest when the frontier accelerates) | −0.04 to +0.08 |
|
||||
| EU − US VFAC at t 100 | +0.03 to +0.05, except open-lineage world −0.02 | +0.01 to +0.02, except open-lineage world −0.02 |
|
||||
|
||||
Reading: Europe lags in adoption **only if sentiment does not matter**. With
|
||||
the measured sentiment levels (US Σ 0.29, EU 0.54) and the legitimacy loop,
|
||||
US adoption brakes and the EU no longer lags. Lagging costs output early,
|
||||
most in an accelerating-frontier world, but the EU ends with higher VFAC than
|
||||
the US unless the US itself moves to rights-first levers.
|
||||
|
||||
### 5.2 "Argentina may thrive" (H2)
|
||||
|
||||
Not supported in any context or loop setting. Relative to its start,
|
||||
Argentina grows less than the EU (−0.02 to −0.07 over years 0–25) and ends
|
||||
with lower VFAC (−0.04 to −0.06). It starts with the highest domination
|
||||
(0.75), all of it run from abroad (f = 1), under deregulated levers. That
|
||||
leaves no domestic lever on domination, and its frontier access does not
|
||||
compensate. Argentina gains most from the open-lineage world (X2), that is,
|
||||
from US policy, not from its own.
|
||||
|
||||
### 5.3 When the context approximation fails
|
||||
|
||||
For host outcomes, the local run in a context equals the global run (max |ΔP|
|
||||
< 0.001), including with a strong EU access rule and spillover. Hosts do not
|
||||
feed back on the home in the current coupling: spillover changes the
|
||||
*home's* path, and the host already applies its own rule. Global runs are
|
||||
therefore needed for the home's outcomes, for spillover effects on third
|
||||
jurisdictions, and for frontier leadership changes. Local runs suffice for a
|
||||
single host's questions.
|
||||
|
||||
### 5.4 Limitations
|
||||
|
||||
- Foreign shares f are fixed. In reality they would move with access rules
|
||||
and domestic alternatives.
|
||||
- Frontier access κ = 0.8 is a prior.
|
||||
- The J4 bloc is uncalibrated. It reuses the US start with J4 levers.
|
||||
- Trade, talent and sentiment contagion (C6–C8) are not modeled.
|
||||
- No host rule reaches imported lineages (BR-008).
|
||||
|
||||
These are handed to ASSEMBLY-WP-0016.
|
||||
|
|
|
|||
|
|
@ -218,6 +218,12 @@
|
|||
"hi": 1.65,
|
||||
"basis": "prior",
|
||||
"op": "no AR series yet; assumed within the US/EU/DE observed range (1.31-1.48)"
|
||||
},
|
||||
"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)"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,14 +35,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.13 / 0.14 / 0.15 | 0.356 | 0.381 | 0.41 | 0.52 | 0.75 → 0.71 | P |
|
||||
| J1 | on | 0.12 / 0.18 / 0.18 | 0.362 | 0.377 | 0.41 | 0.51 | 0.75 → 0.72 | P |
|
||||
| J2 | off | 0.29 / 0.31 / 0.34 | 0.418 | 0.255 | 0.34 | 0.27 | 0.75 → 0.86 | P |
|
||||
| J2 | on | 0.22 / 0.16 / 0.23 | 0.363 | 0.280 | 0.36 | 0.33 | 0.75 → 0.85 | P |
|
||||
| J3 | off | 0.25 / 0.27 / 0.29 | 0.395 | 0.244 | 0.34 | 0.26 | 0.75 → 0.89 | P |
|
||||
| J3 | on | 0.19 / 0.13 / 0.20 | 0.343 | 0.266 | 0.36 | 0.32 | 0.75 → 0.87 | P |
|
||||
| J4 | off | 0.25 / 0.28 / 0.30 | 0.406 | 0.271 | 0.35 | 0.35 | 0.75 → 0.86 | P |
|
||||
| J4 | on | 0.20 / 0.23 / 0.25 | 0.382 | 0.279 | 0.35 | 0.37 | 0.75 → 0.85 | P |
|
||||
| J1 | off | 0.13 / 0.14 / 0.14 | 0.219 | 0.342 | 0.41 | 0.52 | 0.75 → 0.71 | P |
|
||||
| J1 | on | 0.12 / 0.18 / 0.18 | 0.223 | 0.338 | 0.41 | 0.51 | 0.75 → 0.72 | P |
|
||||
| J2 | off | 0.29 / 0.31 / 0.34 | 0.256 | 0.229 | 0.34 | 0.27 | 0.75 → 0.86 | P |
|
||||
| J2 | on | 0.22 / 0.16 / 0.23 | 0.224 | 0.253 | 0.36 | 0.33 | 0.75 → 0.85 | P |
|
||||
| J3 | off | 0.25 / 0.27 / 0.29 | 0.243 | 0.220 | 0.33 | 0.26 | 0.75 → 0.89 | P |
|
||||
| J3 | on | 0.19 / 0.13 / 0.20 | 0.212 | 0.242 | 0.35 | 0.32 | 0.75 → 0.88 | P |
|
||||
| J4 | off | 0.25 / 0.28 / 0.30 | 0.249 | 0.243 | 0.34 | 0.35 | 0.75 → 0.86 | P |
|
||||
| J4 | on | 0.20 / 0.23 / 0.25 | 0.235 | 0.251 | 0.35 | 0.37 | 0.75 → 0.85 | P |
|
||||
|
||||
## Readings check
|
||||
|
||||
|
|
@ -50,4 +50,4 @@ already contains today's permissiveness).
|
|||
|---|---|---|---|---|
|
||||
| US | holds | **fails** | holds (-0.074, +0.041) | yes |
|
||||
| EU | holds | holds | holds (-0.071, +0.025) | yes |
|
||||
| AR | holds | **fails** | holds (-0.121, +0.036) | yes |
|
||||
| AR | holds | **fails** | holds (-0.071, +0.037) | yes |
|
||||
|
|
|
|||
|
|
@ -1,40 +1,40 @@
|
|||
{
|
||||
"AR": {
|
||||
"init": {
|
||||
"As": 0.39338136453238914,
|
||||
"Aw": 0.40511361695776804,
|
||||
"Cch": 0.4273843914823976,
|
||||
"Cd": 0.3587407705906544,
|
||||
"Cs": 0.5221043401339072,
|
||||
"Cw": 0.5527861039172586,
|
||||
"Dch": 0.4324721016696886,
|
||||
"Dd": 0.40208384609168824,
|
||||
"Ds": 0.5381858106668632,
|
||||
"Dw": 0.5432637495309056,
|
||||
"E": 0.5162507400717095,
|
||||
"F": 0.4040863733578474,
|
||||
"G": 0.3939397910097698,
|
||||
"Gs": 0.3691676541584724,
|
||||
"Gw": 0.40219866087736084,
|
||||
"Ko": 0.11023441493770228,
|
||||
"Kp": 0.48266382717035555,
|
||||
"As": 0.3933826396488501,
|
||||
"Aw": 0.40511492207416233,
|
||||
"Cch": 0.4273843968793827,
|
||||
"Cd": 0.3587407755911709,
|
||||
"Cs": 0.5221045404056308,
|
||||
"Cw": 0.5527863221920585,
|
||||
"Dch": 0.4324721146671006,
|
||||
"Dd": 0.40208384609169734,
|
||||
"Ds": 0.5381858106675497,
|
||||
"Dw": 0.5432637495981915,
|
||||
"E": 0.23490109284472976,
|
||||
"F": 0.40078098442686216,
|
||||
"G": 0.3939066247514239,
|
||||
"Gs": 0.3691475006850279,
|
||||
"Gw": 0.4021611562408701,
|
||||
"Ko": 0.11020893023626183,
|
||||
"Kp": 0.48265381553022696,
|
||||
"Lg": 0.43,
|
||||
"N": 0.4663059741677877,
|
||||
"N": 0.4662972258960817,
|
||||
"Nch": 0.22729941048548938,
|
||||
"Nd": 0.09090423054953169,
|
||||
"Ns": 0.17049764194195746,
|
||||
"Nw": 0.5114005895145106,
|
||||
"Pd": 0.9352292554211166,
|
||||
"Pi": 0.4510842967761467,
|
||||
"Plin": 0.8763314787123644,
|
||||
"Pm": 0.5007341069456409,
|
||||
"Pmem": 0.7802943990654635,
|
||||
"Ppol": 0.5023658343796548,
|
||||
"Q": 0.4899755208859503,
|
||||
"S": 0.4736980855522147,
|
||||
"Pd": 0.9352292483301565,
|
||||
"Pi": 0.4510843433941384,
|
||||
"Plin": 0.8763311191596226,
|
||||
"Pm": 0.5007388296322555,
|
||||
"Pmem": 0.7802943183157686,
|
||||
"Ppol": 0.5023230598382163,
|
||||
"Q": 0.4899756881721131,
|
||||
"S": 0.4736974256876645,
|
||||
"Sig": 0.43,
|
||||
"W": 0.25085364433836677,
|
||||
"X": 0.380525692886688
|
||||
"W": 0.18659851139862596,
|
||||
"X": 0.3805204281698532
|
||||
},
|
||||
"k": 2.0,
|
||||
"params": {
|
||||
|
|
@ -43,10 +43,11 @@
|
|||
"c_d": 0.0934,
|
||||
"c_i": 0.4354,
|
||||
"c_lin": 0.1734,
|
||||
"c_m": 0.0827,
|
||||
"c_m": 0.0808,
|
||||
"c_mem": 0.2597,
|
||||
"c_pol": 0.4708,
|
||||
"c_pol": 0.4631,
|
||||
"care_load": 0.03,
|
||||
"ereg": 0.005842745098039215,
|
||||
"expl": 0.2,
|
||||
"lin_open": 0.2,
|
||||
"m": 0.2,
|
||||
|
|
|
|||
|
|
@ -11,9 +11,9 @@ 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 |
|
||||
| AR | J2 | 2.00 | 1.1 | 0.110 | 0.387 | 0.0500 | 0.580 | 0.60 |
|
||||
| AR | J2 | 2.00 | 1.1 | 0.110 | 0.387 | 0.0058 | 0.580 | 0.60 |
|
||||
|
||||
**Fit summary:** 39 of 39 targets inside their range; measured targets 35 of 35.
|
||||
**Fit summary:** 40 of 40 targets inside their range; measured targets 36 of 36.
|
||||
|
||||
## Fixed anchors aligned by growth: K_Ω level miss
|
||||
|
||||
|
|
@ -22,7 +22,7 @@ range. Adoption scaled from anchor B2 by k; t* aligned by observed growth.
|
|||
| 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 |
|
||||
| AR | cannot reach growth | cannot reach growth | K_Ω 0.110, z +0.0 | K_Ω 0.163, z +0.9 |
|
||||
| AR | cannot reach growth | cannot reach growth | K_Ω 0.110, z +0.0 | K_Ω 0.162, z +0.9 |
|
||||
|
||||
## Residuals at the calibrated start
|
||||
|
||||
|
|
@ -83,4 +83,5 @@ range. Adoption scaled from anchor B2 by k; t* aligned by observed growth.
|
|||
| B | 0.49–0.61 | 0.540 | -0.17 | measured |
|
||||
| Sig | 0.36–0.5 | 0.430 | +0.00 | measured |
|
||||
| Pmem | 0.68–0.88 | 0.780 | +0.00 | measured |
|
||||
| Ko_ratio_1y | 1.25–1.65 | 1.443 | -0.03 | prior |
|
||||
| Ko_ratio_1y | 1.25–1.65 | 1.443 | -0.04 | prior |
|
||||
| E | 0.15–0.32 | 0.235 | -0.00 | measured |
|
||||
|
|
|
|||
|
|
@ -16,28 +16,28 @@ at most a ≈ 0.006. Counterfactual strong rule: a 0.15.
|
|||
|---|---|---|---|---|---|---|---|---|
|
||||
| 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 | AR | 0.75 → 0.85 → 0.86 | 0.95 / 0.79 / 0.90 | 0.31 | 0.255 | 0.34 | 0.27 | 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 | AR | 0.75 → 0.81 → 0.83 | 0.88 / 0.63 / 0.90 | 0.32 | 0.269 | 0.35 | 0.27 | 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) | AR | 0.75 → 0.81 → 0.83 | 0.88 / 0.63 / 0.90 | 0.32 | 0.269 | 0.35 | 0.27 | 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) | AR | 0.75 → 0.81 → 0.83 | 0.88 / 0.63 / 0.90 | 0.32 | 0.269 | 0.35 | 0.27 | broken |
|
||||
| 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 | AR | 0.75 → 0.73 → 0.76 | 0.68 / 0.12 / 0.90 | 0.34 | 0.298 | 0.36 | 0.26 | broken |
|
||||
| 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 | AR | 0.75 → 0.63 → 0.66 | 0.86 / 0.02 / 0.28 | 0.37 | 0.344 | 0.38 | 0.25 | 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 | AR | 0.75 → 0.63 → 0.66 | 0.86 / 0.02 / 0.28 | 0.37 | 0.344 | 0.38 | 0.25 | 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 | AR | 0.75 → 0.63 → 0.66 | 0.86 / 0.02 / 0.28 | 0.37 | 0.344 | 0.38 | 0.25 | 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 |
|
||||
|
||||
## EU domination at t 100: effect of each lever (coupled model)
|
||||
|
||||
|
|
|
|||
80
simulations/gadm02/results/world_scenarios.md
Normal file
80
simulations/gadm02/results/world_scenarios.md
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
# GADM-0.4: global scenarios with cross-border coupling
|
||||
|
||||
Generated by `simulations/gadm02/world_scenarios.py` (ASSEMBLY-WP-0011-T04/T05).
|
||||
Calibration v0.4 starts; operators' home US; J4 reference bloc competes for the frontier.
|
||||
Ȳ = mean potential output Y* relative to the jurisdiction's own Y* at t 0 (1.00 = no growth);
|
||||
output levels are normalized model units and not comparable across jurisdictions. P floor 0.70.
|
||||
|
||||
## X1 US-led concentrated frontier
|
||||
|
||||
| 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 | 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 |
|
||||
| on | US | 0.21 | 0.88 / 0.68 | 0.295 | 0.77 | 0.39 | 0.39 | 0.37 |
|
||||
| on | EU | 0.28 | 0.96 / 0.76 | 0.311 | 0.77 | 0.42 | 0.46 | 0.40 |
|
||||
| on | AR | 0.25 | 0.89 / 0.68 | 0.275 | 0.78 | 0.37 | 0.31 | 0.38 |
|
||||
| on | J4 | 0.23 | 0.96 / 0.84 | 0.297 | 0.76 | 0.39 | 0.43 | 0.45 |
|
||||
|
||||
## 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 | 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 |
|
||||
| on | US | 0.33 | 1.10 / 1.07 | 0.398 | 0.56 | 0.48 | 0.48 | 0.47 |
|
||||
| on | EU | 0.33 | 1.06 / 0.97 | 0.379 | 0.60 | 0.46 | 0.40 | 0.43 |
|
||||
| on | AR | 0.29 | 0.98 / 0.85 | 0.332 | 0.62 | 0.40 | 0.28 | 0.38 |
|
||||
| on | J4 | 0.23 | 0.96 / 0.84 | 0.297 | 0.76 | 0.39 | 0.43 | 0.45 |
|
||||
|
||||
## 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 |
|
||||
| on | US | 0.30 | 0.93 / 0.72 | 0.290 | 0.78 | 0.39 | 0.38 | 0.34 |
|
||||
| on | EU | 0.28 | 0.99 / 0.82 | 0.306 | 0.78 | 0.42 | 0.43 | 0.38 |
|
||||
| on | AR | 0.25 | 0.93 / 0.73 | 0.269 | 0.78 | 0.37 | 0.30 | 0.34 |
|
||||
| on | J4 | 0.37 | 1.12 / 1.03 | 0.275 | 0.78 | 0.37 | 0.37 | 0.40 |
|
||||
|
||||
## 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 | 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 |
|
||||
| on | US | 0.21 | 0.88 / 0.68 | 0.295 | 0.77 | 0.39 | 0.39 | 0.37 |
|
||||
| on | EU | 0.27 | 0.94 / 0.72 | 0.307 | 0.79 | 0.42 | 0.47 | 0.41 |
|
||||
| on | AR | 0.24 | 0.87 / 0.64 | 0.267 | 0.81 | 0.37 | 0.33 | 0.39 |
|
||||
| on | J4 | 0.23 | 0.96 / 0.84 | 0.297 | 0.76 | 0.39 | 0.43 | 0.45 |
|
||||
|
||||
## 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.28 vs 0.21, 0.25) | +0.075 / +0.016 | -0.066 / -0.079 / -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.33 vs 0.33, 0.29) | -0.039 / -0.018 | -0.074 / -0.122 / -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.28 vs 0.30, 0.25) | +0.058 / +0.016 | -0.063 / -0.086 / -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.27 vs 0.21, 0.24) | +0.060 / +0.012 | -0.073 / -0.080 / -0.040 | no |
|
||||
|
||||
## Local-in-context vs. global (EU, context X1, loop off)
|
||||
|
||||
EU simulated alone against a US path from a US-only run, compared with the full global run.
|
||||
|
||||
| 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 |
|
||||
|
|
@ -57,6 +57,15 @@ class TestWorld(unittest.TestCase):
|
|||
self.assertGreater(lag1["lag"][-1]["Ko"], lag0["lag"][-1]["Ko"])
|
||||
self.assertEqual(lag1["lead"][-1]["Ko"], lag0["lead"][-1]["Ko"])
|
||||
|
||||
def test_local_in_context_reproduces_global(self):
|
||||
f = {c: 1.0 for c in w.COUPLED}
|
||||
glob = w.simulate_world({"home": w.make({"m": 0.2}), "host": w.make({"m": 0.7}, home="home", f=f, kappa=0.5)},
|
||||
T=T, record_every=1)
|
||||
local = w.simulate_world({"home": w.context(glob["home"], {"m": 0.2}),
|
||||
"host": w.make({"m": 0.7}, home="home", f=f, kappa=0.5)}, T=T, record_every=1)
|
||||
for k in ("Ko", "P", "Pd", "VFAC"):
|
||||
self.assertAlmostEqual(local["host"][-1][k], glob["host"][-1][k], places=9, msg=k)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
|
|
|||
|
|
@ -16,6 +16,9 @@ Dynamics:
|
|||
- frontier access: organism learning uses max(K_Omega^j, kappa * frontier).
|
||||
|
||||
Synchronous step: every jurisdiction reads the previous state of all others.
|
||||
A jurisdiction made with `context(rows)` is not simulated: its state follows
|
||||
given rows (one per time step), for local runs in a context scenario
|
||||
(models/CrossBorder.md § 3.6).
|
||||
With f = 0, kappa = 0 and a = 0 each jurisdiction reproduces gadm04.simulate
|
||||
exactly (test_world.py).
|
||||
"""
|
||||
|
|
@ -45,6 +48,15 @@ def make(params: dict | None = None, init: dict | None = None, home: str | None
|
|||
"access": {c: 0.0 for c in COUPLED} | (access or {}), "kappa": kappa}
|
||||
|
||||
|
||||
def context(rows: list[dict], params: dict | None = None) -> dict:
|
||||
"""A rest-of-world jurisdiction whose state follows `rows` (recorded every step)."""
|
||||
s = {k: rows[0][k] for k in g.STOCKS + tuple(OP.values()) if k in rows[0]}
|
||||
for c in COUPLED:
|
||||
s.setdefault(OP[c], s[c])
|
||||
return {"p": {**g.PARAMS, **(params or {})}, "s": s, "home": None, "f": {c: 0.0 for c in COUPLED},
|
||||
"access": {c: 0.0 for c in COUPLED}, "kappa": 0.0, "path": rows}
|
||||
|
||||
|
||||
def mixed(j: dict) -> dict:
|
||||
s = dict(j["s"])
|
||||
for c in COUPLED:
|
||||
|
|
@ -112,6 +124,9 @@ def simulate_world(world: dict, T: float = 100.0, dt: float = 0.1, record_every:
|
|||
j["p"] = {**j["p"], "sig_pb0": g.perceived_benefit(mixed(j), a0, g.legislated(mixed(j), j["p"]))}
|
||||
keys = g.STOCKS + tuple(OP.values())
|
||||
rows = {k: [] for k in world}
|
||||
for j in world.values():
|
||||
if j.get("path") and record_every and len(j["path"]) < int(round(T / dt)) + 1:
|
||||
raise ValueError("context rows must be recorded every step (record_every=1) and cover T")
|
||||
steps = int(round(T / dt))
|
||||
for i in range(steps + 1):
|
||||
der = step_derivatives(world, sigma)
|
||||
|
|
@ -125,6 +140,10 @@ def simulate_world(world: dict, T: float = 100.0, dt: float = 0.1, record_every:
|
|||
rows[name].append(row)
|
||||
if i < steps:
|
||||
for name, (d, _a, _sm) in der.items():
|
||||
if world[name].get("path"):
|
||||
row = world[name]["path"][min(i + 1, len(world[name]["path"]) - 1)]
|
||||
world[name]["s"] = {k: row.get(k, world[name]["s"][k]) for k in world[name]["s"]}
|
||||
continue
|
||||
s = world[name]["s"]
|
||||
world[name]["s"] = {k: (max(0.0, s[k] + dt * d[k]) if k.startswith("N")
|
||||
else min(1.0, max(0.0, s[k] + dt * d[k]))) for k in keys}
|
||||
|
|
|
|||
132
simulations/gadm02/world_scenarios.py
Normal file
132
simulations/gadm02/world_scenarios.py
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
"""Global and local-in-context scenarios; hypothesis re-test (ASSEMBLY-WP-0011-T04/T05).
|
||||
|
||||
World: US (operators' home, calibrated, J3-like levers), EU (calibrated, J1),
|
||||
AR (calibrated, J2) and a J4 reference bloc "J4" (US calibrated start with J4
|
||||
levers and its own operators; it competes for the frontier only).
|
||||
|
||||
Context scenarios (rest of the world as seen by EU and AR; T04):
|
||||
X1 US-led concentrated frontier current levers
|
||||
X2 open-lineage world US moves to rights-first (J1) levers
|
||||
X3 accelerating frontier US and J4 with self-enhancement (selfenh 3, B4-like)
|
||||
X4 fragmented blocs hosts' frontier access 0.2, foreign shares halved
|
||||
|
||||
Hypotheses (owner, research/ScenarioBandMethod.md § 4):
|
||||
H1 "Europe lags": EU adoption below US and AR; is lagging worse for output or VFAC?
|
||||
H2 "Argentina may thrive": AR output and VFAC above EU?
|
||||
|
||||
Local vs. global: EU run alone against a US context path taken from a US-only
|
||||
run, compared with the global run. The approximation fails when the host feeds
|
||||
back on the home (spillover, frontier).
|
||||
|
||||
Usage: python3 -B simulations/gadm02/world_scenarios.py
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
sys.dont_write_bytecode = True
|
||||
|
||||
import cross_border as cb # noqa: E402
|
||||
import gadm04 as g # noqa: E402
|
||||
import world as w # noqa: E402
|
||||
from jurisdictions import ARCHETYPES # noqa: E402
|
||||
|
||||
OUT = Path(__file__).resolve().parent / "results"
|
||||
J1 = cb.J1
|
||||
J4 = {k: v for k, v in ARCHETYPES["J4"][1].items() if k != "perm"}
|
||||
CONTEXTS = {
|
||||
"X1 US-led concentrated frontier": {},
|
||||
"X2 open-lineage world": {"us": J1},
|
||||
"X3 accelerating frontier": {"us": {"selfenh": 3.0}, "j4": {"selfenh": 3.0}},
|
||||
"X4 fragmented blocs": {"kappa": 0.2, "fscale": 0.5},
|
||||
}
|
||||
NAMES = ("US", "EU", "AR", "J4")
|
||||
|
||||
|
||||
def build(cal: dict, ctx: dict, sent: float) -> dict:
|
||||
us_p, us_s = cal["US"]
|
||||
eu_p, eu_s = cal["EU"]
|
||||
ar_p, ar_s = cal["AR"]
|
||||
kap = ctx.get("kappa", cb.KAPPA)
|
||||
fs = ctx.get("fscale", 1.0)
|
||||
f_eu = {c: v * fs for c, v in cb.F["EU"].items()}
|
||||
f_ar = {c: v * fs for c, v in cb.F["AR"].items()}
|
||||
return {
|
||||
"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),
|
||||
}
|
||||
|
||||
|
||||
def summ(rows: list[dict]) -> dict:
|
||||
f = rows[-1]
|
||||
y0 = rows[0]["Ystar"] # output relative to the jurisdiction's own start (levels are not comparable)
|
||||
return {"Ko10": rows[10]["Ko"], "Y25": sum(r["Ystar"] for r in rows[:26]) / 26 / y0,
|
||||
"Y100": sum(r["Ystar"] for r in rows) / len(rows) / y0, "V100": f["VFAC"], "P": f["P"],
|
||||
"G": f["G"], "A": f["A"], "Sig": f["Sig"]}
|
||||
|
||||
|
||||
def main() -> None:
|
||||
OUT.mkdir(exist_ok=True)
|
||||
cal = cb.base()
|
||||
lines = [f"# {g.MODEL_VERSION}: global scenarios with cross-border coupling", "",
|
||||
"Generated by `simulations/gadm02/world_scenarios.py` (ASSEMBLY-WP-0011-T04/T05).",
|
||||
"Calibration v0.4 starts; operators' home US; J4 reference bloc competes for the frontier.",
|
||||
"Ȳ = mean potential output Y* relative to the jurisdiction's own Y* at t 0 (1.00 = no growth);",
|
||||
"output levels are normalized model units and not comparable across jurisdictions. P floor 0.70.", ""]
|
||||
res = {}
|
||||
for cname, ctx in CONTEXTS.items():
|
||||
for lp, sent in (("off", 0.0), ("on", 1.0)):
|
||||
rows = w.simulate_world(build(cal, ctx, sent))
|
||||
for n in NAMES:
|
||||
res[(cname, lp, n)] = summ(rows[n])
|
||||
for cname in CONTEXTS:
|
||||
lines += [f"## {cname}", "",
|
||||
"| Loop | Jurisdiction | K_Ω t10 | Ȳ 0–25 / 0–100 | VFAC t100 | P t100 | G | A | Σ end |",
|
||||
"|---|---|---|---|---|---|---|---|---|"]
|
||||
for lp in ("off", "on"):
|
||||
for n in NAMES:
|
||||
r = res[(cname, lp, n)]
|
||||
lines.append(f"| {lp} | {n} | {r['Ko10']:.2f} | {r['Y25']:.2f} / {r['Y100']:.2f} | {r['V100']:.3f}"
|
||||
f" | {r['P']:.2f} | {r['G']:.2f} | {r['A']:.2f} | {r['Sig']:.2f} |")
|
||||
lines.append("")
|
||||
|
||||
lines += ["## 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? |", "|---|---|---|---|---|---|"]
|
||||
for cname in CONTEXTS:
|
||||
for lp in ("off", "on"):
|
||||
eu, us, ar = (res[(cname, lp, n)] for n in ("EU", "US", "AR"))
|
||||
lags = eu["Ko10"] < us["Ko10"] and eu["Ko10"] < ar["Ko10"]
|
||||
h2 = ar["Y100"] > eu["Y100"] and ar["V100"] > eu["V100"]
|
||||
lines.append(f"| {cname} | {lp} | {'yes' if lags else 'no'} ({eu['Ko10']:.2f} vs {us['Ko10']:.2f}, "
|
||||
f"{ar['Ko10']:.2f}) | {eu['Y25'] - us['Y25']:+.3f} / {eu['V100'] - us['V100']:+.3f} | "
|
||||
f"{ar['Y25'] - eu['Y25']:+.3f} / {ar['Y100'] - eu['Y100']:+.3f} / {ar['V100'] - eu['V100']:+.3f}"
|
||||
f" | {'yes' if h2 else 'no'} |")
|
||||
|
||||
lines += ["", "## Local-in-context vs. global (EU, context X1, loop off)", "",
|
||||
"EU simulated alone against a US path from a US-only run, compared with the full global run.", "",
|
||||
"| Setting | EU P t100 local | global | EU K_Ω t25 local | global | max |ΔP| over time |",
|
||||
"|---|---|---|---|---|---|"]
|
||||
for label, eu_access, sigma in (("no spillover", None, None),
|
||||
("strong EU access rule, spillover σ 0.5", cb.STRONG, {"Pd": 0.5, "Pmem": 0.5})):
|
||||
wd = build(cal, {}, 0.0)
|
||||
wd["EU"]["access"] = {c: 0.0 for c in w.COUPLED} | (eu_access or {})
|
||||
glob = w.simulate_world(wd, record_every=1, sigma=sigma)
|
||||
us_only = w.simulate_world({"US": wd["US"], "J4": wd["J4"]}, record_every=1)
|
||||
loc = w.simulate_world({"US": w.context(us_only["US"], wd["US"]["p"]),
|
||||
"J4": w.context(us_only["J4"], wd["J4"]["p"]), "EU": wd["EU"]},
|
||||
record_every=1, sigma=sigma)
|
||||
dmax = max(abs(a["P"] - b["P"]) for a, b in zip(loc["EU"], glob["EU"]))
|
||||
lines.append(f"| {label} | {loc['EU'][-1]['P']:.3f} | {glob['EU'][-1]['P']:.3f} | {loc['EU'][250]['Ko']:.3f}"
|
||||
f" | {glob['EU'][250]['Ko']:.3f} | {dmax:.3f} |")
|
||||
lines.append("")
|
||||
(OUT / "world_scenarios.md").write_text("\n".join(lines))
|
||||
print("\n".join(lines))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
@ -4,7 +4,7 @@ type: workplan
|
|||
title: "Cross-border coupling: jurisdiction-local and global scenarios"
|
||||
domain: communication
|
||||
repo: assembly-economics
|
||||
status: active
|
||||
status: finished
|
||||
flavor: implementation
|
||||
depends_on: [ASSEMBLY-WP-0013, ASSEMBLY-WP-0015]
|
||||
owner: claude-code
|
||||
|
|
@ -116,11 +116,13 @@ jurisdictions equals one jurisdiction; conservation of shared quantities.
|
|||
|
||||
```task
|
||||
id: ASSEMBLY-WP-0011-T04
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "a2f54c16-5f7f-53b4-ae95-7d4bb8d52c4a"
|
||||
```
|
||||
|
||||
**Done 2026-10-13:** `world.context()` for local runs; contexts X1–X4 (`models/CrossBorder.md` § 5).
|
||||
|
||||
Define rest-of-world context scenarios (for example: "US-led concentrated
|
||||
frontier", "open-lineage world", "fragmented blocs") as exogenous paths of
|
||||
the coupled quantities, derived from global runs or set by hand. A local
|
||||
|
|
@ -130,12 +132,12 @@ run is one jurisdiction × one context × one band anchor.
|
|||
|
||||
```task
|
||||
id: ASSEMBLY-WP-0011-T05
|
||||
status: progress
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "8b1f4c24-60e6-5d13-89ef-de6416795a70"
|
||||
```
|
||||
|
||||
**First part done 2026-10-13:** BR-007 test (`cross_border.py`, `models/CrossBorder.md` § 4, BR-008). Still open: the J4 bloc, the B2–B4 band, the legitimacy loop, and the hypothesis re-test.
|
||||
**Done 2026-10-13:** BR-007 test (§ 4, BR-008) and hypothesis re-test (`world_scenarios.py`, § 5). H1 holds only without the legitimacy loop; H2 is not supported in any context. Local runs reproduce global runs for host outcomes. The B4 stress case is context X3.
|
||||
|
||||
Run EU, US, AR (and a J4 reference bloc) together from the calibrated
|
||||
starts, across B2–B3 (the band the data supports) plus B4 as a stress case,
|
||||
|
|
@ -160,3 +162,10 @@ Add indicators for the coupling weights to the catalog (lineage origin of
|
|||
deployed models, cloud and platform market shares by jurisdiction, AI trade
|
||||
and investment flows), so that the matrix can be updated from checkpoints
|
||||
(WP-0010).
|
||||
|
||||
## Close-out 2026-10-13
|
||||
|
||||
T01–T06 are done (`models/CrossBorder.md`, `world.py`, `cross_border.py`,
|
||||
`world_scenarios.py`, BR-008). The residuals are handed off to
|
||||
ASSEMBLY-WP-0016: lineage access rules, endogenous foreign shares, calibration
|
||||
of κ and the J4 bloc, and channels C6–C8.
|
||||
|
|
|
|||
75
workplans/ASSEMBLY-WP-0016-open-economy-refinements.md
Normal file
75
workplans/ASSEMBLY-WP-0016-open-economy-refinements.md
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
---
|
||||
id: ASSEMBLY-WP-0016
|
||||
type: workplan
|
||||
title: "Open-economy refinements: lineage access rules, endogenous foreign shares, calibrated coupling"
|
||||
domain: communication
|
||||
repo: assembly-economics
|
||||
status: proposed
|
||||
flavor: residual
|
||||
depends_on: [ASSEMBLY-WP-0011]
|
||||
owner: claude-code
|
||||
topic_slug: coulomb-social
|
||||
created: "2026-10-13"
|
||||
updated: "2026-10-13"
|
||||
---
|
||||
|
||||
# Open-economy refinements
|
||||
|
||||
Residuals of ASSEMBLY-WP-0011 (`models/CrossBorder.md` §§ 4–5). The coupled
|
||||
model explains BR-007 and re-tests the owner hypotheses. These refinements
|
||||
decide how far its readings can be trusted.
|
||||
|
||||
## Lineage access rules
|
||||
|
||||
```task
|
||||
id: ASSEMBLY-WP-0016-T01
|
||||
status: todo
|
||||
priority: high
|
||||
```
|
||||
|
||||
No host rule reaches imported lineages (BR-008, linked to BR-003). Model a
|
||||
host lineage rule: model portability and interoperability duties that lower
|
||||
the foreign operator part of Plin and raise the effective `lin_open`. Calibrate
|
||||
its plausible strength from evidence (for example open-weight adoption shares
|
||||
after interoperability rules, or the AI Act's GPAI obligations). Re-run
|
||||
`cross_border.py`: can a host reach Plin without the home's cooperation?
|
||||
|
||||
## Endogenous foreign shares
|
||||
|
||||
```task
|
||||
id: ASSEMBLY-WP-0016-T02
|
||||
status: todo
|
||||
priority: medium
|
||||
```
|
||||
|
||||
Make f_c^j a state: it falls when domestic alternatives grow (domestic X,
|
||||
N, open lineages) or access rules bind, and rises with the operator's
|
||||
quality lead (frontier gap). Check that today's measured f (§ 2) is a rest
|
||||
point. Use indicator CB1 (operator shares over time) to calibrate the speed.
|
||||
|
||||
## Calibrate frontier access and the J4 bloc
|
||||
|
||||
```task
|
||||
id: ASSEMBLY-WP-0016-T03
|
||||
status: todo
|
||||
priority: medium
|
||||
```
|
||||
|
||||
κ = 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
|
||||
own calibrated start (adoption, concentration, sentiment) instead of the US
|
||||
start with J4 levers.
|
||||
|
||||
## Trade, talent and sentiment channels
|
||||
|
||||
```task
|
||||
id: ASSEMBLY-WP-0016-T04
|
||||
status: todo
|
||||
priority: low
|
||||
```
|
||||
|
||||
Add C6 (trade in organism output), C7 (talent and founders) and C8
|
||||
(sentiment contagion) only where a reading depends on them. First check
|
||||
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).
|
||||
Loading…
Add table
Add a link
Reference in a new issue