- Documentation
- /
- Spatial
- /
- Quick Reference
Quick Reference
Menu map
| 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 TargetFKs,datetime systemauto-fields) across 9dsl/*.dslfiles. A dedicated converter (scratchpad/convert_gis.py) translated it to native DSL:uuid primary→Intpk,relation→ ref, enums inlined verbatim,system/deleted*fields andindex/uniqueconstraint lines dropped,metadata→metadata_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_m2suffix a plain[a-z_]grep truncates) andSpatialEvent.emitted_at(notoccurred_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.