Simulation Scenarios

Merges the full pack's scenario narrative with gist's 8 seeded deterministic scenarios (tests/scenarios.yaml). Positive/negative/boundary/cessation are all in the seed.

The spatial situation

All scenarios evaluate the transport tenant's Northern Connector Upgrade (RP-2026-001) and sibling road concepts against the other tenants' features around Brisbane's western edge (≈ -27.52, 152.99).

# Source → Target Rule Match Relationship Event Severity
SCN-001 RP-2026-001 → ML-1032 ROAD_INTERSECTS_MINING_LEASE intersects gis.spatial.relationship_detected warning
SCN-002 RP-2026-002 → ML-1032 ROAD_INTERSECTS_MINING_LEASE — (bypass sits east)
SCN-003 RP-2026-003 → ML-1032 ROAD_TOUCHES_MINING_LEASE touches gis.spatial.relationship_detected advisory
SCN-004 RP-2026-001 → EA-076 ROAD_INTERSECTS_ENVIRONMENT_AREA intersects gis.environment.review_required critical
SCN-005 RP-2026-001 → PIPE-44 ROAD_NEAR_PIPELINE near (197.474 m ≤ 250) gis.utility.proximity_detected warning
SCN-006 RP-2026-002 → PIPE-44 ROAD_NEAR_PIPELINE near (9676 m > 250)
SCN-007 RP-2026-001 → TX-220-07 ROAD_INTERSECTS_TRANSMISSION intersects gis.utility.intersection_detected advisory
SCN-008 RP-2026-001 → ML-1032 (realigned) ROAD_INTERSECTS_MINING_LEASE ceased gis.spatial.relationship_ceased warning

Each positive match raises a SpatialEvent, delivered to the Orchestrator under coordination_basic. SCN-008 demonstrates the cessation lifecycle: after realignment the prior relationship is retained in history and marked ceased, and the downstream case is reconciled, not deleted.

Governance / integration scenarios (behavioural, Phase 2)

  • Orchestrator unavailable — event persists; EventDelivery fails visibly; retry applies; no duplicate event IDs; successful replay after recovery.
  • Duplicate delivery — replay an acknowledged event: same event_id, no duplicate coordination case, replay recorded.
  • Permission isolation — the mining user sees mining data and authorised affected features, but not unrelated private transport data.
  • Closed case but active relationship — reconciliation exception (seeded as RECON-2026-0012, STALE_RELATIONSHIP).

Where this lives in the seed

apps/gist/scripts/seed_data.py materialises the outcome of SCN-001/003/004/005/007 as active SpatialRelationship + SpatialEvent + EventDelivery rows, SCN-008 as a ceased relationship with its ceased event, plus the two evaluation runs, audit trail and reconciliation checks — 98 rows across all 21 models.