Skip to content
Dark MatterDark Matter
EnergyGuides

File the permit stack

Required permits per site class, how to attach them to a ComputeSlot, and how the rights engine evaluates the stack.

Required permits per site class

The checkPermitStack rights-engine check enforces a per-site-class permit baseline. Beyond the baseline, additional permits may be required by jurisdiction.

Site classRequired permits
gas_associated, gas_stranded_dryland_use, environmental_impact, air_emissions, gas_extraction
gas_pipelineland_use, environmental_impact, air_emissions
hydro_run_of_riverland_use, environmental_impact, water_draw
hydro_reservoirland_use, environmental_impact, water_draw, indigenous_consultation
wind_onshore, wind_offshoreland_use, environmental_impact
solar_pvland_use, environmental_impact
solar_cspland_use, environmental_impact, water_draw
nuclear_smr, nuclear_lwrland_use, environmental_impact, water_draw, generation_license
geothermalland_use, environmental_impact, water_draw
behind_meterland_use, data_center_zoning

ILO-169 ratifying jurisdictions add indigenous_consultation automatically for high-sensitivity site classes (hydro, geothermal, gas) via checkIndigenousConsultation.

Attaching permits

Update the slot's permits array as each permit progresses. Each entry tracks type, status, authority, reference_id, submitted_at, approved_at, expires_at, and conditions[].

curl -X PATCH https://sandbox-api.dmtr.ai/v1/energy/slots/slot-pampa-jv-phase1 \
  -H "Authorization: Bearer $DMTR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "permits": [
      { "type": "land_use", "status": "issued", "authority": "Municipalidad de Añelo", "reference_id": "LU-2025-AN-0042", "approved_at": "2025-11-01" },
      { "type": "environmental_impact", "status": "submitted", "authority": "Subsecretaría de Ambiente, Neuquén", "reference_id": "EIA-2026-VM-0117", "submitted_at": "2026-01-15" },
      { "type": "air_emissions", "status": "submitted", "authority": "Subsecretaría de Ambiente, Neuquén", "submitted_at": "2026-01-15" },
      { "type": "gas_extraction", "status": "approved", "authority": "ENARGAS", "reference_id": "GE-2026-NQN-0233", "approved_at": "2026-02-20" }
    ]
  }'

Permit statuses and what checkPermitStack returns

status valueEffect
not_started, informalTreated as missing (counts toward fail / pending)
submittedPending — slot eligible for conditional Verdict, blocked from permit_complete lifecycle status
approved, issuedCounts toward pass
deniedCounts as fail — disqualifies the slot
expiredCounts as fail unless renewed

A permit with expires_at in the past is treated as expired even if status === "issued". The check accepts an evaluationDate for forward-looking simulations.

Advance the PERMITS gate

Once the required stack reaches issued/approved:

curl -X POST https://sandbox-api.dmtr.ai/v1/energy/slots/slot-pampa-jv-phase1/advance \
  -d '{ "gate": "permits", "status": "complete" }'

The state machine confirms land and energy are complete first.

Edit this page on GitHub

Last reviewed: May 5, 2026

Was this page helpful?