ASSEMBLY-WP-0017-T01: sentiment reference sig_ref (BR-009 resolved); calibrated pipeline re-run; matching loop weights ≈ 0.5

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 14913@bnt-lap001
Assistant-Session: add7ef69-b901-4756-9a67-34cf1125d96f
This commit is contained in:
tegwick 2026-10-13 21:14:14 +02:00
parent 3b85440a17
commit 65584be429
12 changed files with 111 additions and 69 deletions

View file

@ -156,6 +156,12 @@ peak (0.40 at year 10).
this loop, "lagging" is not worse in the long run. This depends on the
closed-economy assumption (§ 2.4, reading 2).
**Update 2026-10-13 (BR-009):** the loop as specified here relaxes Σ toward
the neutral 0.5. The uncalibrated results in this section keep that default.
Calibrated runs anchor Σ at its measured level (`sig_ref`,
`models/Calibration.md`), so measured low sentiment does not pull toward 0.5
and does not brake adoption by its level alone.
### 3.4 Limitations
- Σ is a single national mood. There is no polarization, no split by cohort

View file

@ -198,6 +198,11 @@ output levels are normalized and not comparable across jurisdictions.
| 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 |
After the BR-009 fix (sentiment anchored at measured levels), the verdicts
stay the same. With the loop on, EU and US adoption at t 10 are now equal in
X1 and X4 (0.27 / 0.26–0.27), and in X2 and X3 the US leads (0.44). The
relative-output differences with the loop on become −0.09 to +0.05.
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,

View file

@ -21,4 +21,4 @@ that part of the band.
| BR-006 | 2026-10-13 (WP-0013-T04) | Legitimacy loop damps adoption (BR-005, AdoptionBand § 3.3) | damping under extractive regimes → amplifying under rights-first levers from the calibrated start (US, AR) | when adoption lowers domination, perceived benefit rises and sentiment accelerates adoption | none structural; the reading is regime-dependent | open: state the loop's effect per regime |
| BR-007 | 2026-10-13 (WP-0013-T04) | Rights-first levers bound domination | holds when switching to J1 levers (US: P 0.64 → 0.54) → fails for a jurisdiction already at J1 levers (EU: P 0.65 → 0.77) | calibrated domination comes from levels set abroad that local levers cannot reach | **structural:** cross-border coupling (ASSEMBLY-WP-0011) | open |
| BR-008 | 2026-10-13 (WP-0011-T05) | Which levers bound domination (BR-007 follow-up) | closed model: host rights levers → coupled model: only host access rules on foreign operators and the home's levers reach the foreign-run channels | measured channels (Pd, Pmem, Plin, Pi) are operated from the US for EU and AR hosts | **structural, implemented:** cross-border coupling (`world.py`); observed DMA effect on search ≈ 0 (at most a 0.006/yr) | open: lineage access rules (BR-003) |
| BR-009 | 2026-10-13 (WP-0012) | Sentiment dynamics of the legitimacy loop | Σ relaxes toward 0.5 + gain × Δ(perceived benefit), so from the measured US Σ 0.285 it rises → measured US sentiment fell 2021–2026 (0.405 → 0.285) while adoption grew fast | the neutral reference 0.5 is an assumption; US adoption also shows no braking by low sentiment (all loop-on candidates fail the US match) | **structural candidate:** sentiment reference anchored to the observed level and a small or lagged adoption elasticity | open: ASSEMBLY-WP-0017 |
| BR-009 | 2026-10-13 (WP-0012) | Sentiment dynamics of the legitimacy loop | Σ relaxes toward 0.5 + gain × Δ(perceived benefit), so from the measured US Σ 0.285 it rises → measured US sentiment fell 2021–2026 (0.405 → 0.285) while adoption grew fast | the neutral reference 0.5 is an assumption; US adoption also shows no braking by low sentiment (all loop-on candidates fail the US match) | **resolved 2026-10-13 (WP-0017-T01):** parameter `sig_ref`; calibrated runs anchor Σ at its measured level, and adoption and legislation respond to changes relative to it. Default (None = 0.5) keeps earlier results. R1–R4 and H1/H2 verdicts unchanged; the matching loop weights become ≈ 0.5 | resolved; `sig_adopt` not yet identified |

View file

@ -30,20 +30,26 @@ points after checkpoint 0.
| Jurisdiction | Data | Anchor weights | Loop weights | Best |
|---|---|---|---|---|
| US | BTOS, 23 biweekly points 2025–2026 | B1 0.00 · B2 0.38 · B3 0.44 · B4 0.18 | off 1.00 · on 0.00 | B3 / loop off (0.44) |
| EU | Eurostat 2023–2025 | B1 0.00 · B2 0.38 · B3 0.62 · B4 0.00 | off 0.47 · on 0.53 | B3 / loop off (0.46) |
| DE | Eurostat 2023–2025 | B1 0.00 · B2 0.73 · B3 0.27 · B4 0.00 | off 0.33 · on 0.67 | B2 / loop on (0.57) |
| US | BTOS, 23 biweekly points 2025–2026 | B1 0.00 · B2 0.38 · B3 0.40 · B4 0.21 | off 0.52 · on 0.48 | B3 / loop off (0.23) |
| EU | Eurostat 2023–2025 | B1 0.00 · B2 0.03 · B3 0.96 · B4 0.01 | off 0.48 · on 0.52 | B3 / loop on (0.50) |
| DE | Eurostat 2023–2025 | B1 0.00 · B2 0.44 · B3 0.56 · B4 0.00 | off 0.49 · on 0.51 | B3 / loop on (0.29) |
Weights after the BR-009 fix (sentiment anchored at its measured level,
WP-0017-T01). Before the fix: US B3 0.44 / B2 0.38 with loop off 1.00; EU B3
0.62; DE B2 0.73.
Readings:
1. **The data rule out B1 everywhere, and B4 for the EU and DE.** The present
is B2–B3, consistent with the calibration (`models/Calibration.md` § 3).
2. **US adoption is not braked by its low sentiment.** Every loop-on
candidate fails for the US, because with measured US sentiment (Σ 0.285)
the loop slows adoption far below the observed growth. Either adoption's
elasticity to sentiment (`sig_adopt`) is much smaller than 1, or
sentiment acts on adoption with a long lag. This is the first data-based
constraint on the legitimacy loop.
2. **The adoption data cannot yet tell the loop on from off.** Before the
BR-009 fix, every US loop-on candidate failed. The neutral reference made
the measured low sentiment (Σ 0.285) brake adoption from the first day.
With sentiment anchored at its measured level, today's level is part of
the fitted speed, and only *changes* in sentiment act. The loop weights are
then about 0.5 everywhere. The loop becomes identifiable with sentiment
observations after checkpoint 0. `sig_adopt` stays at 1 and is not yet
identified.
3. **No regime is established yet.** No candidate reaches weight 0.75.
Predictions v1 (P-2026-001 … 004) assume growth alignment between B2 and
B3, which the matched weights bracket. No predictions v2 are needed (T04).

View file

@ -88,6 +88,7 @@ def start_state(jur: str, anchor: str, auto: float | None = None) -> tuple[dict,
s["E"] = centre(t["E"])
if "Sig" in t:
s["Sig"] = s["Lg"] = centre(t["Sig"])
p["sig_ref"] = s["Sig"] # BR-009: sentiment anchored at its measured level
for _ in range(2):
if "B" in t: # base labour share so that B(t0) is on target
c = p["dshare"] + p["cp"]

View file

@ -83,6 +83,11 @@ PARAMS.update({
"leg_m": 0.5, # membrane rights tightening per unit of stance below neutral
"leg_expl": 0.5, # explainability tightening per unit of stance below neutral
"sig_pb0": None, # reference perceived benefit; None = value at the initial state
# WP-0017-T01 (BR-009): sentiment reference level. None = neutral 0.5 (GADM-0.4 as
# first specified). A number (calibrated runs: the measured Sigma) is the level Sigma
# relaxes to when perceived benefit is unchanged; adoption and legislation then respond
# to Sigma and Lg relative to it, because today's level is already in the fitted speed.
"sig_ref": None,
# WP-0009-T04: deployment permissiveness of a jurisdiction; scales the organism
# inflow (investment, learning, seeding) like the legislative stance. 1 = neutral.
"perm": 1.0,
@ -131,7 +136,8 @@ def legislated(s: dict, p: dict) -> dict:
"""Parameters with legislation levers shifted by the legislative stance Lg."""
if not p["sent"]:
return p
gap = 0.5 - s["Lg"] # > 0: tightening after negative sentiment
ref = 0.5 if p["sig_ref"] is None else p["sig_ref"]
gap = ref - s["Lg"] # > 0: tightening after negative sentiment
clip = lambda v: min(1.0, max(0.0, v)) # noqa: E731
return {**p, "m": clip(p["m"] + p["leg_m"] * gap), "expl": clip(p["expl"] + p["leg_expl"] * gap)}
@ -158,14 +164,15 @@ def derivatives(s: dict, p: dict) -> tuple[dict, dict]:
# permissiveness, sentiment and stance scale the organism inflow, not its depreciation
scale = p["perm"]
if p["sent"]:
scale *= max(0.0, 1 + p["sig_adopt"] * 2 * (s["Sig"] - 0.5)) \
* max(0.0, 1 + p["leg_perm"] * 2 * (s["Lg"] - 0.5))
ref = 0.5 if p["sig_ref"] is None else p["sig_ref"]
scale *= max(0.0, 1 + p["sig_adopt"] * 2 * (s["Sig"] - ref)) \
* max(0.0, 1 + p["leg_perm"] * 2 * (s["Lg"] - ref))
inflow = d["Ko"] + p["dO"] * s["Ko"]
d["Ko"] = scale * inflow - p["dO"] * s["Ko"]
if p["sent"]:
pb = perceived_benefit(s, a, p)
pb0 = pb if p["sig_pb0"] is None else p["sig_pb0"]
target = min(1.0, max(0.0, 0.5 + p["sig_gain"] * (pb - pb0)))
target = min(1.0, max(0.0, (0.5 if p["sig_ref"] is None else p["sig_ref"]) + p["sig_gain"] * (pb - pb0)))
d["Sig"] = p["sent"] * p["sig_rate"] * (target - s["Sig"])
d["Lg"] = p["sent"] * (s["Sig"] - s["Lg"]) / p["leg_lag"]
else:

View file

@ -10,39 +10,39 @@ 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.18 / 0.23 / 0.23 | 0.253 | 0.419 | 0.48 | 0.56 | 0.68 → 0.54 | none |
| J1 | on | 0.11 / 0.29 / 0.29 | 0.252 | 0.413 | 0.48 | 0.54 | 0.68 → 0.55 | none |
| J1 | on | 0.18 / 0.28 / 0.29 | 0.261 | 0.411 | 0.47 | 0.54 | 0.68 → 0.55 | none |
| J2 | off | 0.38 / 0.41 / 0.44 | 0.289 | 0.268 | 0.37 | 0.33 | 0.68 → 0.78 | P |
| J2 | on | 0.19 / 0.23 / 0.27 | 0.247 | 0.301 | 0.40 | 0.41 | 0.68 → 0.75 | P |
| J2 | on | 0.34 / 0.22 / 0.35 | 0.252 | 0.299 | 0.40 | 0.40 | 0.68 → 0.76 | P |
| J3 | off | 0.33 / 0.36 / 0.39 | 0.277 | 0.253 | 0.36 | 0.32 | 0.68 → 0.82 | P |
| J3 | on | 0.16 / 0.19 / 0.22 | 0.235 | 0.295 | 0.39 | 0.39 | 0.68 → 0.77 | P |
| J3 | on | 0.30 / 0.18 / 0.30 | 0.240 | 0.293 | 0.39 | 0.39 | 0.68 → 0.77 | P |
| J4 | off | 0.34 / 0.39 / 0.41 | 0.284 | 0.285 | 0.38 | 0.41 | 0.68 → 0.77 | P |
| J4 | on | 0.17 / 0.31 / 0.31 | 0.254 | 0.297 | 0.39 | 0.43 | 0.68 → 0.76 | P |
| J4 | on | 0.33 / 0.32 / 0.38 | 0.274 | 0.296 | 0.39 | 0.43 | 0.68 → 0.76 | P |
## EU (current regime ≈ J1)
| 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.26 / 0.18 / 0.28 | 0.244 | 0.306 | 0.41 | 0.47 | 0.72 → 0.80 | 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.46 / 0.14 / 0.47 | 0.234 | 0.245 | 0.38 | 0.31 | 0.72 → 0.88 | P |
| 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.41 / 0.11 / 0.41 | 0.224 | 0.237 | 0.38 | 0.30 | 0.72 → 0.90 | P |
| 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.51 / 0.35 / 0.53 | 0.290 | 0.228 | 0.36 | 0.29 | 0.72 → 0.89 | P |
| J4 | on | 0.47 / 0.35 / 0.50 | 0.287 | 0.228 | 0.36 | 0.29 | 0.72 → 0.89 | P |
## AR (current regime ≈ J2)
| Regime | Loop | K_Ω t5 / t25 / peak | Ȳ 0–25 | VFAC t100 | G | A | P t0 → t100 | floors broken |
|---|---|---|---|---|---|---|---|---|
| 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 |
| J1 | on | 0.14 / 0.18 / 0.18 | 0.225 | 0.337 | 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 |
| J2 | on | 0.26 / 0.16 / 0.27 | 0.226 | 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 |
| J3 | on | 0.23 / 0.13 / 0.23 | 0.214 | 0.241 | 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 |
| J4 | on | 0.25 / 0.24 / 0.28 | 0.242 | 0.251 | 0.35 | 0.37 | 0.75 → 0.85 | P |
## Readings check

View file

@ -55,6 +55,7 @@
"r_i": 0.45,
"r_lin": 0.45,
"r_mem": 0.45,
"sig_ref": 0.43,
"wL0": 0.38659793814432997,
"x_att": 0.7
},
@ -119,6 +120,7 @@
"r_i": 0.45,
"r_lin": 0.45,
"r_mem": 0.45,
"sig_ref": 0.535,
"std": 0.6,
"wL0": 0.6156930126002291,
"x_att": 0.3
@ -184,6 +186,7 @@
"r_i": 0.45,
"r_lin": 0.45,
"r_mem": 0.45,
"sig_ref": 0.535,
"std": 0.6,
"wL0": 0.5226231386025201,
"x_att": 0.3
@ -247,6 +250,7 @@
"r_i": 0.45,
"r_lin": 0.45,
"r_mem": 0.45,
"sig_ref": 0.285,
"wL0": 0.47841498652534076,
"x_att": 0.8
},

View file

@ -12,16 +12,16 @@ Series: U.S. Census Bureau BTOS Q7 (National.xlsx), periods 2025-24 to 2026-20 (
| Candidate | log-likelihood | weight | t0 | K_Ω at window end |
|---|---|---|---|---|
| B3/loop off | -8.3 | 0.443 | 1.20 | 0.172 |
| B2/loop off | -8.5 | 0.376 | 0.20 | 0.077 |
| B4/loop off | -9.2 | 0.176 | 1.90 | 0.278 |
| B4/loop on | -12.8 | 0.005 | 0.00 | 0.065 |
| B3/loop on | -19.4 | 0.000 | 0.00 | 0.062 |
| B3/loop off | -8.3 | 0.230 | 1.20 | 0.172 |
| B2/loop off | -8.5 | 0.195 | 0.20 | 0.077 |
| B2/loop on | -8.5 | 0.187 | 0.20 | 0.077 |
| B3/loop on | -8.6 | 0.174 | 1.15 | 0.167 |
| B4/loop on | -9.0 | 0.122 | 1.65 | 0.244 |
| B4/loop off | -9.2 | 0.092 | 1.90 | 0.278 |
| B1/loop off | -80.7 | 0.000 | 0.00 | 0.054 |
| B2/loop on | -82.7 | 0.000 | 3.70 | 0.069 |
| B1/loop on | -110.1 | 0.000 | 9.60 | 0.045 |
| B1/loop on | -80.8 | 0.000 | 0.00 | 0.054 |
**Best:** B3/loop off (weight 0.44). Anchor weights: B1 0.00, B2 0.38, B3 0.44, B4 0.18. Loop weights: off 1.00, on 0.00.
**Best:** B3/loop off (weight 0.23). Anchor weights: B1 0.00, B2 0.38, B3 0.40, B4 0.21. Loop weights: off 0.52, on 0.48.
## EU
@ -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 off | -2.2 | 0.456 | 0.50 | 0.198 |
| B2/loop on | -2.4 | 0.366 | 0.00 | 0.107 |
| B3/loop on | -3.3 | 0.159 | 0.55 | 0.222 |
| 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 |
| B4/loop on | -11.4 | 0.000 | 1.05 | 0.356 |
| B1/loop on | -49.8 | 0.000 | 0.00 | 0.061 |
| B1/loop off | -58.0 | 0.000 | 0.00 | 0.058 |
| B1/loop on | -58.0 | 0.000 | 0.00 | 0.058 |
**Best:** B3/loop off (weight 0.46). Anchor weights: B1 0.00, B2 0.38, B3 0.62, B4 0.00. Loop weights: off 0.47, on 0.53.
**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.
## DE
@ -46,13 +46,13 @@ Series: Eurostat isoc_eb_ai, DE, reference years 2023-2025 (2021: 10.56, exclude
| Candidate | log-likelihood | weight | t0 | K_Ω at window end |
|---|---|---|---|---|
| B2/loop on | -0.1 | 0.573 | 0.00 | 0.110 |
| B3/loop off | -1.3 | 0.178 | 0.65 | 0.214 |
| B2/loop off | -1.4 | 0.152 | 0.00 | 0.101 |
| B3/loop on | -1.9 | 0.097 | 0.70 | 0.240 |
| 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 |
| B4/loop on | -11.0 | 0.000 | 1.35 | 0.415 |
| B1/loop on | -36.2 | 0.000 | 0.00 | 0.063 |
| B1/loop off | -43.4 | 0.000 | 0.00 | 0.059 |
| B1/loop on | -43.5 | 0.000 | 0.00 | 0.059 |
**Best:** B2/loop on (weight 0.57). Anchor weights: B1 0.00, B2 0.73, B3 0.27, B4 0.00. Loop weights: off 0.33, on 0.67.
**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.

View file

@ -13,10 +13,10 @@ output levels are normalized model units and not comparable across jurisdictions
| 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 |
| 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 |
## X2 open-lineage world
@ -26,10 +26,10 @@ output levels are normalized model units and not comparable across jurisdictions
| 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 |
| 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 | 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 |
## X3 accelerating frontier
@ -39,10 +39,10 @@ output levels are normalized model units and not comparable across jurisdictions
| 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 |
| 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 |
## X4 fragmented blocs
@ -52,23 +52,23 @@ output levels are normalized model units and not comparable across jurisdictions
| 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 |
| 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 | 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 |
## 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 |
| 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.33 vs 0.33, 0.29) | -0.039 / -0.018 | -0.074 / -0.122 / -0.048 | 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.28 vs 0.30, 0.25) | +0.058 / +0.016 | -0.063 / -0.086 / -0.037 | 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.27 vs 0.21, 0.24) | +0.060 / +0.012 | -0.073 / -0.080 / -0.040 | no |
| X4 fragmented blocs | on | no (0.26 vs 0.27, 0.25) | +0.027 / +0.013 | -0.055 / -0.073 / -0.040 | no |
## Local-in-context vs. global (EU, context X1, loop off)

View file

@ -98,6 +98,13 @@ class TestGrounding(unittest.TestCase):
self.assertEqual(ko, sorted(ko))
self.assertLess(ko[0], ko[1])
def test_anchored_sentiment_stays_at_reference_without_response(self):
# BR-009: with sig_ref set to the starting level, an unchanged perceived benefit keeps Sigma there
r = g.simulate({"sent": 1.0, "sig_gain": 0.0, "sig_ref": 0.3}, {"Sig": 0.3, "Lg": 0.3}, T=20)[-1]
self.assertAlmostEqual(r["Sig"], 0.3, places=9)
free = g.simulate({"sent": 1.0, "sig_gain": 0.0}, {"Sig": 0.3, "Lg": 0.3}, T=20)[-1]
self.assertGreater(free["Sig"], 0.4) # neutral reference: reverts toward 0.5
if __name__ == "__main__":
unittest.main()

View file

@ -4,7 +4,7 @@ type: workplan
title: "Reliable flip detection: indicators, per-regime filter, sentiment equation"
domain: communication
repo: assembly-economics
status: proposed
status: active
flavor: residual
depends_on: [ASSEMBLY-WP-0012]
owner: claude-code
@ -25,11 +25,17 @@ No flip may be recorded in `research/FlipRegister.md` until T04 passes.
```task
id: ASSEMBLY-WP-0017-T01
status: todo
status: done
priority: high
state_hub_task_id: "2d3c06d2-8788-5ed5-a68e-d648f61ef317"
```
**Done 2026-10-13:** `sig_ref` in `gadm04` (default None = 0.5 keeps old
results; calibrated runs anchor at measured Σ), test added, pipeline re-run.
R1–R4 and H1/H2 verdicts unchanged; matching loop weights ≈ 0.5 (the earlier
"US not braked" reading was an artifact). `sig_adopt` is not identifiable
until sentiment points after checkpoint 0 exist (T02).
Σ relaxes toward 0.5 + gain × Δ(perceived benefit), so from the measured US
level (0.285) it rises, while measured US sentiment fell 2021–2026. Add a
sentiment reference parameter: neutral 0.5 (the default, keeps old results)