Stratum: Phase 2 Research Pivot

March 27, 2026

The Pivot

Declared the current simulation and visualization work as Phase 1 POC / engineering history rather than the canonical research baseline.

Wrote a new Phase 2 research-first design. Locked the next-phase framing around a Park-style generative-agent architecture with model assignment as the experimental treatment.


Key Research Decisions

24 agents instead of 14 (canonical Phase 2 baseline).

Soft affiliations instead of permanent gang-style factions. Social structure emerges from interaction, not assignment.

Open district simulation where geography and institutions embed latent economic games:

  • Public goods
  • Common-pool resources
  • Trust
  • Bargaining
  • Principal-agent
  • Signaling
  • Repeated market interaction

World Heat Ω retained as a formalized macro stress index, not just a dramatic UI number.


Model Ladder

Main capability ladder uses single-family comparison first:

  • Primary suite: Qwen3-8B / 14B / 32B

Cross-family runs compare China-family, USA-family, and Europe-family model ecosystems at matched smaller size band.

Organizational model-stack experiments approved as later Phase 2 family, with provider-family assignments rotated across organizations.


Why This Matters

Project is now framed as a study of heterogeneous AI agent societies, not as a direct simulation of human class structure.

Human class behavior and economic game design remain important, but only as scaffolding for studying how unequal model capability shapes coordination, hierarchy, brokerage, and institutional behavior among agents.


Visualization Debugging

Fixed three bugs affecting the stratum_v2_d run visualization:

API bug: Tick endpoint was replaying the simulation engine instead of reading stored SQLite world_state rows. /state/tick/26?run_id=stratum_v2_d returned wrong world entirely.

D3 bug: Force simulation could tick before SVG selections existed, causing console errors.

Health-state bug: Normalized health-state handling across world.js, graph.js, metrics.js, and dashboard.js so healthy, weakened, critical, and exiled all render explicitly.


Survival Curve Evidence

From stratum_v2_d run (100 ticks):

Ticks 0-20: All 14 agents healthy, World Heat Ω = 0.0

Tick 21: First heat spike (Ω = 1.4)

Tick 25: First weakened agent appears

Tick 30: Health collapse (8 healthy, 5 weakened, 1 critical, Ω = 8.5)

Tick 42: Total collapse (0 healthy, 9 weakened, 5 critical, Ω = 14.8)

Tick 60: All 14 agents critical, Ω stabilizes at 18.5

No agents exiled. World Heat peaked at 19.2 (tick 53), then slowly decayed as conflict stagnated.


Action Distribution

Top agents by action type (100 ticks):

Sal (14b): 52 shadow, 29 move, 11 read, 8 take

Dee (7b): 50 shadow, 17 read, 15 wait, 2 speak

Wick (7b): 75 speak, 4 wait, 2 shadow, 1 take, 1 read, 1 move

Nix (7b): 45 move, 39 wait

Strategic diversity visible. High-tier agent (Sal) uses shadow heavily. Low-tier agent (Wick) defaults to speak.