Quick Reference

Group Models
Organisation & Tenancy Organisation · Tenant · TenantDomain
Access & Sharing User · Role · UserRole · Permission · LayerShare
Spatial Data GISLayer · SpatialFeature · FeatureResponsibility
Spatial Evaluation SpatialEvaluationRun · SpatialRelationship · SpatialRule
Events & Triggers TriggerDefinition · SpatialEvent · EventDelivery
Disclosure & Integration DisclosureProfile · DataTransfer · AuditEvent
Reconciliation ReconciliationCheck

21 models in total.

Key status vocabularies (enums)

  • GeometryType: Point · MultiPoint · LineString · MultiLineString · Polygon · MultiPolygon (GeoJSON, CamelCase)
  • FeatureStatus: proposed · active · inactive · closed · superseded
  • LayerSourceType: internal · imported · api · external_gis · simulated
  • ShareAccessLevel: none · metadata · geometry · read · export
  • ResponsibilityType: owner · custodian · operator · maintainer · approver · regulator · viewer · affected_party
  • SpatialRelationType: intersects · within · contains · touches · crosses · overlaps · near
  • RuleSeverity: info · advisory · warning · critical
  • PermissionScope: tenant · layer · feature
  • GeometryDisclosurePolicy: none · centroid · simplified · full
  • TransferDirection: inbound · outbound
  • TenantStatus: active · suspended · archived

The spatial flow, in the demo codes

Tenants ngm (mining) + srr (regulator) → layers TENEMENTS / PROTECTED → features ML-4471 (lease Polygon) / PA-KOALA (protected Polygon) → share (geometry) → run EVAL-2026-0007 → relationship overlaps (≈1.85 M m²) → rule RULE-LEASE-PARK (critical) → event EVT-2026-000042 → delivery to regulator → disclosure DP-REGULATOR (full geometry) → data transfer (outbound GeoJSON) → audit disclosure.sent → reconciliation RECON-2026-0003 (passed).

The demo data set

A cross-tenant compliance scenario: a mining lease overlapping a protected area, detected by the spatial engine, raised as a critical event, disclosed to the regulator and reconciled. 32 rows across all 21 models.

Translation & modelling notes

  • Source pack ships a module / enum {} / model {} DSL dialect (space-separated field lines, uuid relation Target FKs, datetime system auto-fields) across 9 dsl/*.dsl files. A dedicated converter (scratchpad/convert_gis.py) translated it to native DSL: uuid primaryInt pk, relation → ref, enums inlined verbatim, system/deleted* fields and index/unique constraint lines dropped, metadatametadata_json (SQLAlchemy reserved).
  • Denormalisation is intentional & pervasive (per the DSLCore denorm philosophy): child rows carry tenant_id, layer/feature/rule codes etc. alongside the FK. Post-seed denorm scan: zero Text leaks.
  • 3 models carry two FKs to the same parent (LayerShare source/target Tenant; SpatialRelationship and SpatialEvent source/target SpatialFeature) — tab_config gives each role a distinct drill-down label.
  • Seed gotchas met: overlap_area_m2 (a _m2 suffix a plain [a-z_] grep truncates) and SpatialEvent.emitted_at (not occurred_at) — always read the exact generated columns before seeding.
  • The spatial engine, rules/triggers/events, disclosure enforcement and reconciliation are Phase 2 (page 03) — Phase 1 models the outcomes statically.