Skip to content
Dark MatterDark Matter
EnergyGuides

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.

Overview

A tenant may need to assign part of its allocation to another counterparty for a defined period — for example, subleasing 50 MW of a 200 MW allocation for a six-month batch-inference engagement. The sublease uses the same secondary-transfer mechanics DMTR applies to fund interest transfers under Section 4(a)(7).

The schema primitive is SubleaseRequest. The exemption pathway, consent flow, and compliance checks reuse the existing core rights engine.

Step 1 — Construct the SubleaseRequest

{
  "sublease_id": "sub-pampa-001",
  "parent_assignment_id": "ta-pampa-jv-001",
  "new_tenant_participant_id": "aws-llc",
  "sublease_capacity_mw": 50,
  "requested_start": "2027-09-01",
  "requested_end": "2028-03-01",
  "exemption_pathway": "section_4a7",
  "requires_landlord_consent": true,
  "requires_grid_operator_notice": false
}

The exemption_pathway selects the secondary-transfer regime. For private slots inside a Compute SPV LLC structure, section_4a7 is the standard path. For slots issued from a fund-of-funds vehicle, section_4a112 may apply.

Step 2 — Run the existing 4(a)(7) check

The core check4a7Resale evaluates the exemption requirements against the underlying Position. The slot's parent Position must have transfer.restrictions[].type === "section_4a7_resale" for the check to apply:

import { rightsEngine } from "@dmtr/core";

const verdict = rightsEngine.evaluate({
  position: parentPosition,
  buyer: awsParticipant,
  seller: anthropicParticipant,
  hasPreExistingRelationship: true,
  platformAccessRestricted: true,
});

If verdict.exemption_pathway === "section_4a7" and verdict.allowed === true, the sublease proceeds.

Step 3 — Decompose if needed

If the sublease is for less than the parent assignment, decompose the slot first:

curl -X POST https://sandbox-api.dmtr.ai/v1/energy/slots/slot-pampa-jv-phase1/decompose \
  -d '{
    "blocks": [
      { "slot_id": "slot-pampa-jv-phase1-block-A", "capacity_mw": 50 },
      { "slot_id": "slot-pampa-jv-phase1-block-B", "capacity_mw": 150 }
    ]
  }'

The 50 MW child slot is now a separately-tenantable unit referencing the parent via parent_slot_id.

Step 4 — Update the child slot's tenant_assignment

curl -X PATCH https://sandbox-api.dmtr.ai/v1/energy/slots/slot-pampa-jv-phase1-block-A \
  -d '{
    "tenant_assignment": {
      "assignment_id": "ta-pampa-block-A-aws",
      "tenant_participant_id": "aws-llc",
      "status": "active",
      "allocated_capacity_mw": 50,
      "use_class": "batch_inference",
      "assigned_at": "2027-09-01",
      "effective_at": "2027-09-01",
      "expires_at": "2028-03-01",
      "prior_assignment_id": "ta-pampa-jv-001"
    }
  }'

Step 5 — Notify the grid operator (when in-front-of-meter)

For behind-the-meter slots like Pampa Phase 1, no grid operator notice is required (set requires_grid_operator_notice: false). For in-front-of-meter slots, the slot's interconnect.queue_position.grid_operator (e.g. CAMMESA) requires a tenant-change notice. The SubleaseRequest.requires_grid_operator_notice flag captures this requirement.

What carries over from core

FeatureWhere it comes from
4(a)(7) exemption check@dmtr/core/rights-engine/checks/section-4a7.ts
Verdict shape@dmtr/core/schemas/transfer.ts
Consent chain (landlord, grid operator)@dmtr/core/schemas/consent.ts
Audit trail@dmtr/core/audit/hash-chain.ts
KYC/AML/OFAC on the new tenantExisting core checks + checkOfacTenant energy check

The energy vertical composes these core primitives directly without reimplementation.

Edit this page on GitHub

Last reviewed: May 5, 2026

Was this page helpful?