Regulatory corpus
Per-jurisdiction reference data — authorities, statutes, tax-stability regimes, indigenous-consultation regimes, resource-adequacy programs, and open interpretive questions — pinned by version so Verdicts remain reproducible at any point in time.
Why a corpus
Compute-ready energy assets cross legal regimes that change faster than annual cadence. Argentina's RIGI was extended to onshore upstream in February 2026; the federal indigenous-emergency program (Ley 26.160) was operatively terminated in December 2024 by DNU 1083/2024; the BCRA cepo was lifted for individuals in April 2025; the BIS AI Diffusion Rule was rescinded in May 2025. A schema that hard-codes today's rules becomes legally inadmissible the moment any of those positions move.
DMTR Energy resolves this by versioning the regulatory state directly. Every Verdict, ComputeSlot, CapacityContract, and ParticipantVPU may pin a regulatory_corpus_id of the form <COUNTRY>@<YYYY-MM-DD>.<N>. The corpus is read-only data — authorities, statutes, tax regimes, indigenous-consultation regimes, resource-adequacy programs, and any open interpretive questions still pending counsel sign-off. Behavior lives in the rights-engine checks that consume it.
Layout
| Layer | Lives in | Owns |
|---|---|---|
| Corpus types | packages/energy/src/regulatory/types.ts | RegulatoryCorpus, RegulatoryAuthority, StatutoryReference, CorpusAssumption |
| Per-jurisdiction snapshots | packages/energy/src/regulatory/<country>.ts | One immutable constant per country / version |
| Registry | packages/energy/src/regulatory/index.ts | CORPUS_REGISTRY, lookupCorpus(country, version?) |
Adding a new jurisdiction means writing one constant and registering it in the index. Amending an existing jurisdiction means issuing a new constant (COUNTRYNAME_CORPUS_<YYYY_MM>) — never mutating an existing one. Older snapshots are preserved indefinitely so historical Verdicts remain reproducible.
What a corpus snapshot contains
{
country: "AR",
corpus_version: "2026-05-06.1",
effective_from: "2026-05-06",
effective_until: "...", // when superseded
supersedes: "AR@2026-04-01.1", // chain back
authorities: [
{ code, name, level, domain[], statutory_basis[], url, notes }, ...
],
tax_stability_regimes: [
{ code, statutory_basis, scope[], min_investment_usd, stability_years }, ...
],
indigenous_consultation: {
applicable_treaties[], applicable_federal_law[],
applicable_provincial_law[], recognized_communities_partial[]
},
resource_adequacy_programs: [
{ code, statutory_basis, status, eligibility_summary }, ...
],
open_assumptions: [
{ id, question, current_position, conservative_default,
implication_if_disconfirmed, counsel_routed_to[] }, ...
],
notes: [...]
}Each StatutoryReference carries citation text, a published_at date, and an optional URL — counsel can audit any field down to the Boletín Oficial / Federal Register / equivalent gazette.
How the rights engine uses it
Rights-engine checks consume corpus data in two ways:
- Reading authoritative facts — e.g.,
checkRigiEligibilityreads the RIGI sector floors fromtax_stability_regimesrather than hardcoding USD 200M. - Surfacing open questions —
open_assumptionsare interpretive judgments the schema cannot resolve without outside counsel. The rights engine returnsconditionalorcounsel_reviewfor any check that depends on an unresolved assumption, withregulatory_assumption_idpointing back to the specific question.
This is the schema-level expression of the credibility-recalibration discipline: a Verdict that says "allowed" never means more than the corpus and the open assumptions support.
Pinned snapshots in the registry
| Key | Status | Notes |
|---|---|---|
AR@2026-05-06.1 | Active | Production-ready for Pampa JV reference asset |
BR@stub, CL@stub, PY@stub, UY@stub, US@stub | Stubs | Authority skeleton + tax-stability anchors only — populate before project structuring |
Programmatic use
import { lookupCorpus, ARGENTINA_CORPUS_2026_05 } from "@dmtr/energy/regulatory";
const corpus = lookupCorpus("AR", "2026-05-06.1");
// What's the RIGI onshore-upstream floor?
const onshore = ARGENTINA_CORPUS_2026_05.tax_stability_regimes.find(
(r) => r.code === "AR_RIGI_ONSHORE_UPSTREAM_OIL_GAS",
);
console.log(onshore?.min_investment_usd); // → 600_000_000
// What open questions does the corpus flag?
ARGENTINA_CORPUS_2026_05.open_assumptions.forEach((a) => {
console.log(a.id, "→", a.current_position);
});Related pages
- Argentina corpus reference — full snapshot detail
- Counsel review items — the five open AR interpretive questions
- Corpus versioning — when to issue a new snapshot
- Jurisdictions roadmap — what's needed to lift each stub to production
- Jurisdiction codes — the per-slot field
Sublease a slot between tenants (4(a)(7) playbook)
Reassign a slot's tenant_assignment from one hyperscaler to another using the same Section 4(a)(7) secondary-transfer mechanics DMTR uses for fund interest re-allocations.
Argentina — regulatory corpus reference
Snapshot AR@2026-05-06.1: authorities, statutes, RIGI sector floors, BCRA capital-controls posture, indigenous consultation regime, MEM resource-adequacy programs, and the five open counsel-review questions material to compute-ready energy projects in Argentina.