Adopts the constructive tactical-wargame concept as advisory probabilistic stress-testing.
services/simulation/resolution.py: monte_carlo (wraps any deterministic simulator as a black box, perturbs sampled inputs, returns p5/p50/p95 with per-draw failure isolation under a bounded pool) and resolve_clash (CRT-style two-sided attacker/defender outcome probabilities incl. mutual loss) plus clash_sweep.
All outputs are advisory/read-only; no governed-state writes.
The "opposing force" is shocks/threats/pests/market/competitor data ONLY — never stakeholder/community fragmentation (anti-capture governance). Any future proposal still routes through DRAFT-only tactical_opportunity.
Documented in AGENTS.md.
Tests
tests/test_simulation_resolution.py: distribution aggregation, seed reproducibility, per-draw failure isolation, per-draw connection factory, symmetric/dominant-attacker clash, stochastic reproducibility, concurrent isolated sweep. All pass; ruff clean on new files.
Adopt the constructive tactical-wargame concept as advisory probabilistic
stress-testing. Add services/simulation/resolution.py with a Monte Carlo
runner (wraps any deterministic simulator, returns p5/p50/p95 with
per-draw failure isolation under a bounded pool) and a CRT-style
resolve_clash (two-sided attacker/defender outcome probabilities, incl.
mutual loss). Add clash_sweep for concurrent scenarios. Wire read-only
convenience wrappers: digital_twin.monte_carlo_yield and
StockFlowSimulator.monte_carlo_stock. Add advisory clash examples
(stress_reserve: threat pressure vs. reserve adequacy; pest_vs_intervention).
Register a read-only simulation_wargame report type.
Boundary: the "opposing force" is shocks/threats/pests/market/
competitor data only -- never stakeholder/community fragmentation
(anti-capture governance). All outputs are advisory; no governed
state writes.
Co-Authored-By: opencode <noreply@opencode.ai>
Summary
Adopts the constructive tactical-wargame concept as advisory probabilistic stress-testing.
services/simulation/resolution.py:monte_carlo(wraps any deterministic simulator as a black box, perturbs sampled inputs, returns p5/p50/p95 with per-draw failure isolation under a bounded pool) andresolve_clash(CRT-style two-sided attacker/defender outcome probabilities incl. mutual loss) plusclash_sweep.digital_twin.monte_carlo_yield,stock_flow.monte_carlo_stock.clash_examples.stress_reserve(threat pressure vs. reserve adequacy),clash_examples.pest_vs_intervention.simulation_wargamereport type.Safety / boundary
tactical_opportunity.Tests
tests/test_simulation_resolution.py: distribution aggregation, seed reproducibility, per-draw failure isolation, per-draw connection factory, symmetric/dominant-attacker clash, stochastic reproducibility, concurrent isolated sweep. All pass; ruff clean on new files.