# Provision constraint inputs

> Required Grid 1 constraint set, optional DLR and distribution-factor inputs, input digests, and the rule that peer announcements must not relax local limits.

- 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

- `members/allocator.md`
- `specs/gcap/spec.md`
- `architecture/allocation-domains.md`
- `architecture/federation.md`
- `specs/g2p/spec.md`

---

---
title: "Provision constraint inputs"
description: "Required Grid 1 constraint set, optional DLR and distribution-factor inputs, input digests, and the rule that peer announcements must not relax local limits."
---

Each interval, a GCAP Allocator clears Member Service Descriptors against **Grid 1 constraints provisioned by that domain's custodians**. The living input set is `specs/gcap/spec.md` §2; authority and optional Dynamic Line Ratings (DLR) / distribution-factor language live in `members/allocator.md` and `architecture/allocation-domains.md`. The protocol carries and enforces those bounds. It does not create them.

<Warning>
An Allocator MUST clear only against constraints provisioned by its own domain's Grid 1 custodians. Peer-Allocator announcements MAY add **boundary headroom**. They MUST NOT relax local limits.
</Warning>

## Who provisions

Authority is anchored in the **utility transmission owner**. No Grid 2 element derives authority from G2P, GCAP, or DESP.

| Role | Obligation | What it binds |
|---|---|---|
| Utility transmission owner | MUST provision the Allocator's **local and regional** constraints | Clearing for Member Elements in that Allocation Domain |
| Regional system operator | MAY additionally provision **capacity constraints** | A regional Allocator |
| Peer Allocator | Announce coupled-boundary quantities via G2P | Informs local clearing; never overrides local constraints |

A **Grid 2 Allocation Domain** is the set of Member Elements cleared by a common Allocator (or Allocator hierarchy) against a common Grid 1 constraint set. Domains nest: local transmission congestion zone → utility / balancing authority → regional RTO/ISO.

The smallest viable domain is a host utility plus one flexible load. Membership exists only at a point of interconnection **covered by a provisioned domain**.

```mermaid
flowchart LR
  subgraph custodians [Grid 1 custodians]
    TO["Transmission owner"]
    RSO["Regional system operator"]
  end
  subgraph domain [This Allocation Domain]
    LOCAL["Local and regional constraints"]
    GCAP["GCAP Allocator"]
    DIGEST["Input digest / clearing-inputs version"]
  end
  subgraph peers [Coupled zones]
    ANN["G2P Federation Announcement"]
  end
  TO -->|"MUST provision"| LOCAL
  RSO -->|"MAY add capacity constraints"| LOCAL
  LOCAL --> GCAP
  ANN -->|"MAY add boundary headroom; MUST NOT relax"| GCAP
  GCAP --> DIGEST
```

## Required Grid 1 constraint set

GCAP §2 lists the custodian-provisioned inputs the Allocator clears against each one-minute interval:

<ParamField body="zone power production capacity" type="Grid 1 constraint" required>
Zone-level Grid 1 production capability represented by the Allocator. Same quantity RFC #1 names as a zone's Grid 1 power production capacity.
</ParamField>

<ParamField body="transmission constraints" type="Grid 1 constraint" required>
Local and regional transmission limits the transmission owner MUST provision. These are the bounds Member Elements in the domain cannot exceed through Grid 2 allocations.
</ParamField>

<ParamField body="target reserves" type="Grid 1 constraint" required>
Reserve targets supplied by Grid 1 custodians. Federation text lists zone capacity and target reserves as the examples an Allocator uses when setting allocation decisions.
</ParamField>

The Allocator **represents** that production-capacity + transmission-constraint pair. It holds **no internal intelligence or discretion**. Given identical inputs, any conformant GCAP implementation MUST produce identical allocations.

<Note>
Which existing transmission-owner signals should feed these fields, and how to standardize them, is an open Engineering discussion. Do not invent a wire mapping; implementations consume whatever the domain's Grid 1 custodians provision until that discussion lands in the living specs.
</Note>

## Optional DLR and distribution factors

The required set is sufficient to clear. The Allocator MAY also incorporate:

| Input | Status | Source language |
|---|---|---|
| Power distribution factors | Optional | GCAP §2; Allocator "Represents" |
| Dynamics from Dynamic Line Ratings | Optional | GCAP §2; Allocator MAY use DLR "and similar sources" |

These refine how surplus network capability (headroom) is computed. They do not replace the required Grid 1 set and MUST NOT be used to invent headroom the transmission owner did not authorize.

GCAP still treats **multi-constraint (nodal) allocation versus single-zone headroom** as unspecified. Until that lands, treat optional factors as additional custodian-provisioned inputs to the same deterministic function, not as a second clearing engine.

## Other interval inputs (not custodian constraints)

Besides the Grid 1 set, each interval's GCAP input vector includes:

| Input | Direction | Role in clearing |
|---|---|---|
| Member Service Descriptors | Member → Allocator (G2P §3.1) | In-zone requests and offers: Use consume positions, Buffer charge/discharge, Source supply |
| Peer-Allocator announcements | Allocator ↔ Allocator (G2P §3.3) | Coupled-boundary quantities; MAY add boundary headroom |

Member Descriptors do not loosen Grid 1 limits. They only state what Members request or offer inside those limits.

## Peer announcements must not relax local limits

Federation is announce-and-listen. Domains do not command one another.

Normative rules (`architecture/federation.md`, GCAP §2):

1. Clear **only** against this domain's Grid 1-provisioned constraints.
2. Carry Federation Announcements on G2P. Each announcement MUST identify the **announcing domain**, **interval**, and **coupled-boundary quantities**. Message schema is still to be specified in G2P.
3. If required peer announcements for a coupled boundary are missing, clear **conservatively as if the boundary contributes no additional headroom**.
4. Partition between peer Allocators MUST NOT prevent **local** clearing and MUST NOT trigger member fallback in unaffected domains.

<Info>
Missing peer data is a **no extra headroom** condition, not a withhold-clearing condition. Stale **local Grid 1 constraint inputs** are the withhold-clearing condition (below).
</Info>

Announcement *content* (boundary headroom only versus per-class aggregates) and inter-domain import policy remain open. Until specified, treat imported quantities as optional additive headroom that is discarded when absent and that cannot raise any locally provisioned limit.

## Input digests and clearing-inputs version

Deterministic clearing is auditable only if parties can name the input vector:

| Surface | Requirement |
|---|---|
| GCAP §5 | Allocators SHOULD publish, **within the domain**, the **input digest** each Commitment was computed against |
| G2P §3.2 Commitment | MUST identify the **interval**, the **domain**, and the **clearing inputs version** they were computed against |

`members/allocator.md` still lists "publication of clearing inputs digest for reproducibility" as an open item. Implement the GCAP SHOULD and the G2P MUST now; hash algorithm, canonical serialization, and publication channel are not specified.

Any party holding the same inputs MUST be able to reproduce the same allocations. The digest / inputs version is how Members and auditors bind a Commitment to that vector.

## Stale, invalid, or missing constraint inputs

| Condition | Allocator | Members |
|---|---|---|
| Stale Grid 1 constraint inputs | MUST NOT clear (withhold) | Detect missed Commitment; fall back |
| Domain partition (Allocator isolated from its constraint feed) | MUST NOT clear | Same |
| Invalid clearing inputs (G2P §5) | MUST trigger failsafe | Element-specific fallback |
| Missing required peer announcement | Still clears, with zero extra boundary headroom | Continue if a fresh Commitment arrives |
| Grid 1 dispatch instruction conflicts with a Grid 2 allocation | Grid 1 instruction **prevails** | Self-dispatch under the Grid 1 instruction |

Fallback is Grid 1 baseline (Use firm load limit or manual curtailment; Buffer standalone Grid 1 schedule; Source interconnection baseline), along allowed ramp rates. Quantitative staleness timers are still open in G2P.

The participating pool MUST be sized so simultaneous fallback stays inside manageable Grid 1 aggregate ramp limits. That bound is a provisioning input to domain growth, not a GCAP output.

## Provisioning sequence

<Steps>
<Step title="Identify the Allocation Domain">
Name the constraint scope the Allocator will clear: a local congestion zone, a utility / balancing-authority domain, or a regional RTO/ISO domain. Bind every Member and Allocator element identifier to a physical point of interconnection inside that provisioned domain (G2P §2).
</Step>
<Step title="Provision the required Grid 1 set">
The transmission owner supplies zone power production capacity, transmission constraints, and target reserves. A regional system operator MAY add capacity constraints to a regional Allocator. Host the Allocator under utility authority (utility-operated versus third-party hosting is still open).
</Step>
<Step title="Attach optional DLR and distribution factors">
If the custodian already publishes DLR dynamics or power distribution factors, feed them as optional GCAP inputs. Do not treat them as a license to exceed the required Grid 1 set.
</Step>
<Step title="Configure peer listen without override">
Subscribe to G2P Federation Announcements for coupled boundaries. On a missing required announcement, add **no** boundary headroom. Never let a peer quantity raise a local limit.
</Step>
<Step title="Publish digest and withhold on stale local inputs">
Stamp each Commitment with interval, domain, and clearing-inputs version. Publish the in-domain input digest (GCAP SHOULD). If local constraint inputs are stale or invalid, withhold clearing for that interval.
</Step>
</Steps>

Verification signals:

- Same input vector → same per-class commit-%, Buffer committed dispatch, and Source committed take.
- Injected peer headroom never increases any locally provisioned limit.
- Dropping a required peer announcement reduces (or leaves unchanged) available headroom; it does not stop local clearing.
- Dropping or aging local Grid 1 constraint inputs stops clearing; Members revert to Grid 1 baseline.

## Still unspecified

`specs/` and `members/` are **26.0-draft** / **Draft — seeking input**. These items are explicitly open around this surface:

| Item | Where tracked |
|---|---|
| Standardization of transmission-owner input signals | Allocator open items; CONTRIBUTING Engineering; RFC #1 Engineering questions |
| Digest publication mechanics | Allocator open items; GCAP SHOULD without a schema |
| Federation announcement schema and whether content is boundary headroom only or per-class aggregates | G2P §3.3; federation open items |
| Machine-readable domain descriptor (constraint scope, class policy, ramp limits) | Allocation-domains open items |
| Multi-constraint (nodal) allocation vs single-zone headroom | GCAP §7 |
| Allocator redundancy (active/standby) and operational hosting | Allocator open items |
| Quantitative staleness thresholds | Failsafe model; G2P timing |

Raise Engineering Discussions for input-signal standardization. File Issues for contradictions or missing MUST/SHOULD text. Change the living files under `specs/`, `members/`, and `architecture/` — not `rfcs/grid-2-rfc-1.pdf`.

## Next

<CardGroup>
<Card title="Allocation domains" href="/allocation-domains">
Nested domains, transmission-owner authority, and membership by spec compliance.
</Card>
<Card title="Allocator" href="/allocator">
No-discretion clearing, federation announce-and-listen, withhold-on-stale, pool ramp sizing.
</Card>
<Card title="GCAP reference" href="/gcap-reference">
Full input vector, headroom-then-buffers-then-C-B-A curtailment, identical-input determinism.
</Card>
<Card title="Federation" href="/federation">
Conservative missing-announcement clearing and partition that does not trip unrelated members.
</Card>
<Card title="Failsafe model" href="/failsafe-model">
Interval-only commitments and locally determinable Grid 1 fallback.
</Card>
<Card title="G2P reference" href="/g2p-reference">
Commitment clearing-inputs version, Federation Announcement fields, stale-commitment faults.
</Card>
</CardGroup>
