assembly-economics/simulations/gadm02/wealth.py
tegwick 7707657464 ASSEMBLY-WP-0005-T05: attention recalibration and 2x2x2 organism grid
- aext recalibrated to 0.275 against ATUS and social-media time-use data;
  baseline attention headroom now ~0.49 instead of rising to 0.65
- T03/T04 stages stay reproducible (t03_params, t04_params; verified)
- organism_grid.py: factorial analysis; lineage ownership is the strongest
  organism lever, then membrane control, then attention protection (which
  acts on A, not on power); lineage x membrane complementary at baseline;
  organism governance without attention protection raises attention draw

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 1494246@bnt-lap001
Assistant-Session: caf6de6f-f9e4-47ce-a584-49baa271fa4b
2026-10-12 07:34:59 +02:00

63 lines
2.6 KiB
Python

"""Hypothesis P3 and scenario table for GADM-0.3 with wealth separated from power.
P3: wealth taxation alone does not bound domination P when the membrane
channel dominates. Test: sweep the wealth-tax lever wtax in [0, 1] in three
settings and compare wealth W with the channels it can and cannot reach.
Runs the T04 stage (gadm03.t04_params(): attention extraction as in GADM-0.2)
so the results in models/GADM-0.3.md § 3 stay reproducible after T05.
Usage: python3 -B simulations/gadm02/wealth.py
"""
from __future__ import annotations
import sys
from pathlib import Path
sys.dont_write_bytecode = True
import gadm03 as g # noqa: E402
from scenarios import load_all # noqa: E402
OUT = Path(__file__).resolve().parent / "results"
TAX = [0.0, 0.25, 0.5, 0.75, 1.0]
CASES = [
("baseline", "Baseline"),
("generative_concentrated_lineages", "Membrane/lineage-dominated (generative, concentrated lineages)"),
("automated_capitalism", "Wealth-heavy contrast (automated capitalism)"),
]
def main() -> None:
OUT.mkdir(exist_ok=True)
scs = load_all()
lines = [f"# {g.MODEL_VERSION} + wealth: hypothesis P3 and scenarios", "",
"Generated by `simulations/gadm02/wealth.py`. T04 stage of GADM-0.3 (wealth on,",
"GADM-0.2 attention extraction).",
"Final values at t = 100 years.", "",
"## P3: wealth tax sweep", ""]
for name, title in CASES:
sc = scs[name]
lines += [f"### {title}", "",
"| wtax | W | market | political | membrane | lineage | P | VFAC |",
"|---|---|---|---|---|---|---|---|"]
for t in TAX:
r = g.simulate({**sc["params"], **g.t04_params(), "wtax": t}, sc["init"])[-1]
lines.append(f"| {t:.2f} | {r['W']:.2f} | {r['Pm']:.2f} | {r['Ppol']:.2f} | "
f"{r['Pmem']:.2f} | {r['Plin']:.2f} | {r['P']:.2f} | {r['VFAC']:.3f} |")
lines.append("")
lines += ["## Scenarios: T03 stage vs. with wealth", "",
"| Scenario | P (T03) | P (+wealth) | W | market | political | VFAC (T03) | VFAC (+wealth) |",
"|---|---|---|---|---|---|---|---|"]
for name, sc in scs.items():
a = g.simulate({**sc["params"], **g.t03_params()}, sc["init"])[-1]
b = g.simulate({**sc["params"], **g.t04_params()}, sc["init"])[-1]
lines.append(f"| {sc['title']} | {a['P']:.2f} | {b['P']:.2f} | {b['W']:.2f} | {b['Pm']:.2f} | "
f"{b['Ppol']:.2f} | {a['VFAC']:.3f} | {b['VFAC']:.3f} |")
(OUT / "wealth.md").write_text("\n".join(lines) + "\n")
print("\n".join(lines))
if __name__ == "__main__":
main()