# Allocation domains

> Nested constraint domains, transmission-owner authority, voluntary membership by spec compliance, and commercial terms that stay outside the protocol.

- Repository: g2tf-org/g2tf-standards
- GitHub: https://github.com/g2tf-org/g2tf-standards
- Human docs: https://grok-wiki.com/public/docs/g2tf-org-g2tf-standards-436ba3f3e0ff
- Complete Markdown: https://grok-wiki.com/public/docs/g2tf-org-g2tf-standards-436ba3f3e0ff/llms-full.txt

## Source Files

- `architecture/allocation-domains.md`
- `architecture/federation.md`
- `architecture/overview.md`
- `members/allocator.md`
- `rfcs/grid-2-rfc-1.pdf`

---

---
title: "Allocation domains"
description: "Nested constraint domains, transmission-owner authority, voluntary membership by spec compliance, and commercial terms that stay outside the protocol."
---

A **Grid 2 Allocation Domain** is the set of Member Elements cleared by a common Allocator (or Allocator hierarchy) against a common set of Grid 1 constraints. The living definition is `architecture/allocation-domains.md` (`Status: Draft — seeking input`), sourced from RFC #1 §Grid 2.0 Membership and Basis of Authority. RFC 2119 / RFC 8174 keywords in that file and in `specs/` / `members/` are normative.

<Note>
No Grid 2 element derives authority from the protocol. G2P, GCAP, and DESP carry and enforce constraints whose authority comes from Grid 1 custodians.
</Note>

## Definition

| Field | Value |
|---|---|
| Cleared set | Member Elements (Use, Buffer, Source) plus the domain Allocator(s) |
| Common bound | One provisioned Grid 1 constraint set |
| Nesting | Local transmission congestion zone → utility / balancing authority → regional RTO/ISO |
| Smallest domain | One host utility and one flexible load customer |
| On-ramp | Transmission-owner "connect and manage"; no capital deployment and no multi-stakeholder consensus required |
| Status | Draft — seeking input (living file). RFC #1 is immutable; errata go to Issues labeled `errata` |

Every Member Element and Allocator MUST hold a stable element identifier bound to a physical point of interconnection inside a **provisioned** Allocation Domain (`specs/g2p/spec.md` §2). Identifier format is open; the recommended direction is a domain-scoped hierarchical ID that mirrors constraint-domain nesting.

## Nested constraint domains

Allocator associated scope is any level of the hierarchy: transmission line → utility load zone → RTO region (`members/allocator.md`). Domains do not command one another. Federation is announce-and-listen; each Allocator clears only against constraints provisioned by its own Grid 1 custodians.

```mermaid
flowchart TB
  subgraph Regional["Regional Constraint Domain"]
    RA["Allocator(s)"]
    SM["Source Member"]
    RBM["Buffer Member"]
    subgraph UtilA["Utility A Constraint Domain"]
      UA["Allocator(s)"]
      subgraph LocalA["Local Constraint Domain"]
        LA["Allocator(s)"]
        U1["Use Member A1"]
        U2["Use Member A2"]
        B1["Buffer Member A1"]
      end
    end
    subgraph UtilB["Utility B Constraint Domain"]
      UB["Allocator(s)"]
      subgraph LocalB["Local Constraint Domain"]
        LB["Allocator(s)"]
        U3["Use Member B1"]
        B2["Buffer Member B1"]
      end
    end
  end
  TO["Utility transmission owner"] -->|"MUST provision local and regional constraints"| UA
  TO -->|"MUST provision local and regional constraints"| UB
  RSO["Regional system operator"] -.->|"MAY add capacity constraints"| RA
```

This is the RFC #1 Figure 6 / `architecture/federation.md` tree. Regional Source and Buffer Members can sit on the regional domain; local Use and Buffer Members sit on the innermost domain that covers their point of interconnection.

### Two interaction patterns

| Pattern | Direction | What happens |
|---|---|---|
| Member ↔ Allocator | In-domain | Members advertise Service Descriptors; the Allocator clears; Members perform verified self-dispatch |
| Allocator ↔ Allocator | Coupled zones | Peer Allocators exchange G2P Federation Announcements; each still clears from its own Grid 1 inputs |

<Warning>
Treatment of a Member present in overlapping domains (local + regional) is an open item in `architecture/allocation-domains.md`. Do not assume a specified multi-domain commit rule.
</Warning>

## Basis of authority

Authority is **anchored in the utility transmission owner**.

| Actor | Normative role |
|---|---|
| Utility transmission owner | MUST provision the Allocator with the local and regional constraints that bound clearing for Member Elements in its domain |
| Regional system operator | MAY additionally provision capacity constraints to a regional Allocator |
| Protocol stack | Carries and enforces those constraints; does not originate them |
| Allocator | Holds no internal intelligence or discretion; deterministic GCAP only |

RFC #1 Figure 5 is the single-domain picture: the transmission owner feeds **transmission constraints**, the regional system operator feeds **capacity constraints**, and Allocator(s) clear every minute under GCAP.

Hosting and operational responsibility (utility-operated vs. third-party under utility authority) is an Allocator open item. Redundancy (active/standby Allocators per domain) is also unspecified.

## Constraint inputs the domain must provision

Each interval, GCAP clears against three input classes (`specs/gcap/spec.md` §2):

<ParamField body="Grid 1 constraints" type="custodian-provisioned set" required>
Zone power production capacity, transmission constraints, and target reserves. Optional: power distribution factors and dynamics from Dynamic Line Ratings. Which existing transmission-owner signals to standardize is a headline Engineering discussion item.
</ParamField>

<ParamField body="Member Service Descriptors" type="G2P §3.1" required>
In-zone signed requests/offers for the forward time vector. Positions are energy-in-the-interval (v26.0).
</ParamField>

<ParamField body="Peer-Allocator announcements" type="G2P §3.3">
Across coupled zones. MAY add boundary headroom. MUST NOT relax local constraints. Missing required announcements: clear conservatively as if the boundary contributes no additional headroom.
</ParamField>

<ParamField body="Clearing inputs version" type="digest on Commitment" required>
A Commitment MUST identify the interval, the **domain**, and the clearing-inputs version it was computed against. Allocators SHOULD publish (within the domain) the input digest. Publication of that digest is still listed as an Allocator open item.
</ParamField>

An Allocator MUST NOT clear on stale constraint inputs. On staleness or partition it MUST withhold clearing; Members fall back to Grid 1 baseline.

## Membership

Grid 2 has **no admission process** and **no perimeter** (`architecture/overview.md`, Membership without a perimeter).

A Member is any asset running a conformant protocol implementation at a point of interconnection covered by a provisioned domain, under commercial terms with its host utility.

| Layer | What defines it | What does not |
|---|---|---|
| Technical membership | Spec compliance at a qualifying POI whose transmission-owner constraints are provisioned to an Allocator | Registration, a central operator, or a universal rollout |
| Commercial participation | Domain-level agreements with the host utility | G2P / GCAP / DESP message semantics |
| Voluntariness | Distinct from other grid and market requirements; same class of arrangement as emerging connect-and-manage schemes | A requirement that Grid 2 be universally applied |

The design assumes willingness of parties to agree on connect-and-manage principles. Grid 2 does not need to be universally applied; it sits inside the Grid 1 context at any scale.

Certification / conformance test criteria for "spec compliance" are **not specified**. Wire format, state machines, version negotiation, and conformance test vectors remain "to be specified" in G2P.

### Member kinds in a domain

| Kind | Physical asset | Broadcasts | Listens for |
|---|---|---|---|
| Use | Flexible large load | Per-class request to consume (+) | Per-class commit-% |
| Buffer | Storage | Signed charge (+) / discharge (−) offer | Committed dispatch (cleared before any load curtailment) |
| Source | Clean-energy supply | Offer to supply (−) over a forward vector | Committed take |
| Allocator | Domain constraint set | Per-class commit-% to Members; Federation Announcements to peers | In-zone descriptors; peer announcements |

The Allocator never sees internal facility workloads. A Use Member maps workloads to classes at the edge; GCAP clears class-level positions only.

## Commercial terms stay outside the protocol

Commercial participation terms are **domain-level agreements**, not protocol fields. `architecture/allocation-domains.md` and DESP §4 both point at Discussion: Commercial terms.

A domain MAY constrain the mix of classes a Member can declare (example: a minimum Class C share for expedited interconnection). Those limits live in the domain agreement. Class ordering C → B → A remains mandatory in GCAP regardless of commercial policy.

Settlements stay on Grid 1's slower clock. Grid 2 coordinates operation, not prices.

RFC #1 Open Questions that stay off the wire:

| Topic | Open question (RFC #1) |
|---|---|
| Enforcement | What commercial terms look like, especially enforcement of flexible capabilities |
| Class policy | Whether the standard should give guidance or limits on differential service classes |
| Congestion investment | How participating organizations solve direct congestion needs; who decides a new battery |
| Rates | How broader rate structures are impacted; how Grid 2-enabled use is charged |
| Planning | How Grid 2 connections enter IRP / RTO interconnection processes |

<Info>
GitHub Discussions category **Commercial terms** is the comment channel for those items (`CONTRIBUTING.md`). Do not encode prices, SLAs, or class-mix mandates into G2P messages.
</Info>

Whether domains publish a machine-readable **domain descriptor** (constraint scope, class policy, ramp limits) is an open item. Until that exists, implementers treat class-policy and ramp limits as configuration agreed with the host utility, not as a specified object.

## What the Allocator does inside a domain

GCAP is deterministic: identical inputs MUST produce identical allocations. Clearing order:

1. **Headroom** — surplus network capability for the interval
2. **Buffers** — committed dispatch before any load is curtailed
3. **Tiered ramp-down** — DESP order C → B → A, proportional within class; never touching traditional Firm (Grid 1)

Outputs apply to the coming interval only and expire with it. Per-class commit-% / committed dispatch / committed take are the only Allocator-to-Member control surface.

The total participating pool MUST be sized so simultaneous fallback of all Members stays within manageable Grid 1 aggregate ramp limits. That pool bound is the binding constraint on domain growth; sizing methodology is open.

## Failsafe inside a domain

| Condition | Allocator | Members |
|---|---|---|
| Stale constraint inputs | MUST NOT clear | Missed/stale Commitment → fallback |
| Partition of this domain | MUST NOT clear | Element-specific Grid 1 baseline |
| Partition of a peer Allocator | Local clearing continues | MUST NOT trigger fallback in unaffected domains |

Fallback MUST be locally determinable from the Member's own state and last-known configuration. It MUST NOT depend on reaching a remote peer. Ramp rates agreed with the host utility apply on every transition.

## Open items that change implementers

| Item | Owner file | Effect if you implement now |
|---|---|---|
| Conformance / certification criteria | `architecture/allocation-domains.md` | Spec compliance is declared, not certified |
| Machine-readable domain descriptor | `architecture/allocation-domains.md` | Class policy and ramp limits stay in the utility agreement |
| Overlapping local + regional membership | `architecture/allocation-domains.md` | Do not invent a dual-commit rule |
| Hierarchical element IDs | `specs/g2p/spec.md` §2 | Bind a stable ID to POI + provisioned domain; format is open |
| Federation announcement schema | `architecture/federation.md`, G2P §3.3 | Identify announcing domain, interval, coupled-boundary quantities; fields TBD |
| Transmission-owner input standardization | `members/allocator.md`, RFC #1 Engineering | Provision the required constraint set; signal catalog is open |
| Allocator hosting / redundancy | `members/allocator.md` | Authority stays with the transmission owner either way |

## Related pages

<CardGroup>
  <Card title="Minimum viable domain" href="/minimum-viable-domain">
    Host utility plus one flexible load, transmission-owner constraint provisioning, and the connect-and-manage on-ramp.
  </Card>
  <Card title="Federation" href="/federation">
    Announce-and-listen across nested local-to-regional domains; missing announcements do not trip unrelated members.
  </Card>
  <Card title="Allocator" href="/allocator">
    No-discretion deterministic clearing, constraint-authority inputs, withhold-on-stale, and whole-pool ramp sizing.
  </Card>
  <Card title="Provision constraint inputs" href="/provision-constraint-inputs">
    Required Grid 1 constraint set, optional DLR and distribution factors, and the no-relax rule for peer announcements.
  </Card>
  <Card title="Overlay and Grid 1" href="/overlay-and-grid-1">
    Membership without a perimeter, NERC/FERC/TSO non-interference, and coordination without prices.
  </Card>
  <Card title="Service classes" href="/service-classes">
    DESP A/B/C above Firm, mandatory C-B-A curtailment, and domain class-policy limits that stay in the agreement.
  </Card>
</CardGroup>
