# One-minute window

> One-minute interval clock between ~5-minute market dispatch and sub-second ancillaries, commit-before-open, and the Grid 1-prevails conflict rule.

- 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/temporal-position.md`
- `architecture/overview.md`
- `specs/g2p/spec.md`
- `specs/gcap/spec.md`
- `README.md`

---

---
title: "One-minute window"
description: "One-minute interval clock between ~5-minute market dispatch and sub-second ancillaries, commit-before-open, and the Grid 1-prevails conflict rule."
---

Grid 2 allocations **MUST** apply to whole one-minute intervals. G2P binds all four message families to that clock; GCAP clears once per interval and expires the resulting commitments with it; DESP lets a Member reclassify request buckets on the same cadence. Version **26.0-draft** measures only units of energy consumed and provided inside that window on the bulk power system. Sub-minute response is out of scope for the orchestration plane.

<Callout type="info">
Living specs (`architecture/temporal-position.md`, G2P §4, GCAP §4) are **Draft — seeking input**. RFC 2119 keywords below are as written in those files. Intra-interval deadlines and clock-sync requirements are still open.
</Callout>

## Position on the Grid 1 clocks

Grid 2 sits **below** the market dispatch domain and **above** Grid 1 primary controls. RFC #1 and `architecture/temporal-position.md` place the stack as:

| Clock | Plane | What runs |
|---|---|---|
| ~5 minutes | Grid 1 — Market Dispatch Domain | Nodal pricing, forward dispatch scheduling |
| **1 minute** | **Grid 2 overlay** | DESP (classification), GCAP (clearing), G2P (identity, messages, staleness) |
| Seconds / sub-second | Grid 1 — Fast Operational Domain | Frequency response, AGC, reserves, protection |

Normative non-interference:

- Grid 2 elements **MUST NOT** interfere with, substitute for, or assume governor response, AGC, or protection.
- Grid 1 ancillary services absorb overlay error without modification. NERC **CPS1/BAL** remain the balancing-performance measures; ancillary sizing can be tuned later against observed need.
- Commercial settlements stay on Grid 1's slower clock. Grid 2 coordinates operation, not prices.

Voluntary adoption does not require a market-rule change: the overlay occupies the minutes band already used for ERCOT PCLR and PJM IRAS/PRD flex compliance.

## Commit-before-open

GCAP outputs apply to the **coming** interval only. Clearing **MUST** finish early enough that Members receive `commit-%` (and Buffer/Source equivalents) with time to self-dispatch **before the interval opens**.

<Steps>
<Step title="Describe the next window">
Members publish a signed G2P **Service Descriptor** for a forward time vector: Use per-class request to consume (`+`); Buffer offer to charge (`+`) or discharge (`−`); Source offer to supply (`−`). Positions are energy **within the interval**. A descriptor **MAY** be reissued each interval; DESP classes **MAY** change each interval.
</Step>
<Step title="Clear once">
The domain Allocator runs GCAP against (1) Grid 1 constraints provisioned by the transmission owner / RSO, (2) in-zone descriptors, (3) peer-Allocator announcements. Peer announcements **MAY** add boundary headroom and **MUST NOT** relax local constraints. Order is fixed: headroom, then Buffer committed dispatch, then C→B→A curtailment. Traditional Firm (Grid 1) is never curtailed by GCAP.
</Step>
<Step title="Publish commitments">
The Allocator emits a G2P **Commitment** that **MUST** identify the interval, the domain, and the clearing-inputs version. Payloads: per-class `commit-%` (Use), **committed dispatch** (Buffer), **committed take** (Source).
</Step>
<Step title="Self-dispatch, then report">
Members **MUST** self-dispatch within the committed amounts and agreed host-utility ramp rates, then **MUST** report verified self-dispatch (G2P §3.4). Per-member allocation deltas between consecutive intervals **MUST** respect those ramp rates.
</Step>
</Steps>

The exact intra-interval budget — descriptor deadline, clearing deadline, commitment publication deadline, clock sync — is **not** specified. Track it as Discussion: Engineering.

## Grid 1-prevails conflict rule

<Callout type="warning">
Grid 2 **SHOULD** consume, not contradict, forward information from the market dispatch domain. Where a Grid 1 dispatch instruction conflicts with a Grid 2 allocation, **the Grid 1 instruction prevails**.
</Callout>

GCAP still lists **interaction with market dispatch instructions mid-interval** as unspecified. Until that interaction is written, implementers treat Grid 1 instructions as binding even after a Grid 2 Commitment has been published for the same minute.

## Interval-bound messages

G2P §3: all four families are per-interval (one minute) unless a later note says otherwise.

| Family | Direction | Interval binding |
|---|---|---|
| Service Descriptor | Member → Allocator | Requests/offers for a forward vector; energy units = this interval (v26.0) |
| Commitment | Allocator → Member | Names the interval, domain, and inputs version; missing or stale → fallback |
| Federation Announcement | Allocator ↔ Allocator | Names announcing domain, interval, and coupled-boundary quantities |
| Response / Telemetry | Member → Allocator | Actual per-class dispatch vs. that interval's Commitment |

Wire format, state machines, version negotiation, and conformance vectors are unspecified.

## Expiry, staleness, and ramps

<ParamField path="allocation lifetime" type="one interval">
GCAP: allocations apply to the coming interval only and expire with it. Failsafe: a Member that has not received a `commit-%` for the **current** interval **MUST** treat itself as in fallback.
</ParamField>

<ParamField path="stale or invalid inputs" type="no clear">
On stale constraint inputs or partition, the Allocator **MUST NOT** clear. Members detecting a missed clearing fall back locally. Explicit staleness timers are still TBD in G2P.
</ParamField>

<ParamField path="fallback locality" type="local state only">
Fallback **MUST** be determinable from the Member's own state and last-known configuration. It **MUST NOT** depend on reaching a remote peer.
</ParamField>

<ParamField path="ramp discipline" type="agreed host-utility rates">
All transitions — into fallback, out of fallback, and between interval allocations — **MUST** respect agreed ramp rates. The participating pool **MUST** be sized so simultaneous whole-pool fallback stays inside manageable Grid 1 ramp limits.
</ParamField>

Per-element fallback (Use → firm load limit or manual curtailment; Buffer → standalone Grid 1 schedule with no Grid 2 support commitment; Source → Grid 1 interconnection behavior) is defined on the failsafe page, not here.

Federation does not change the clock: a missing peer announcement causes **conservative** local clearing (treat the boundary as adding no headroom). Partition between Allocators **MUST NOT** prevent local clearing and **MUST NOT** trip Members in unaffected domains.

## Open timing items

<AccordionGroup>
<Accordion title="Intra-interval budget and clocks">
Descriptor / clearing / commitment deadlines and clock-sync requirements (G2P §4). Late-arrival and clock-skew tolerances for Member broadcasts. Interval phase alignment across federated domains (common epoch vs. per-domain clocks).
</Accordion>
<Accordion title="Adjacent Grid 1 clocks">
Interaction with 15-minute settlement intervals in some markets. Mid-interval market dispatch vs. an already-published Commitment (GCAP §7).
</Accordion>
<Accordion title="Staleness and mid-interval unused energy">
Quantitative missed-interval count before fallback; re-entry hysteresis. Whether unused Use allocation returns to the pool mid-interval. Verification granularity and metering source of truth for G2P §3.4.
</Accordion>
</AccordionGroup>

## Related pages

<CardGroup cols={2}>
  <Card title="Overlay and Grid 1" href="/overlay-and-grid-1">
    Non-interference, coordination without prices, v26.0 energy-in-the-interval scope.
  </Card>
  <Card title="Failsafe model" href="/failsafe-model">
    Interval-only commitments, local fallback, pool ramp limits.
  </Card>
  <Card title="G2P reference" href="/g2p-reference">
    Four message families, one-minute timing, stale-commitment faults.
  </Card>
  <Card title="GCAP reference" href="/gcap-reference">
    Per-interval clearing, commit outputs, consecutive-interval ramp bounds.
  </Card>
  <Card title="Federation" href="/federation">
    Interval-tagged announce-and-listen; missing announcement does not trip local Members.
  </Card>
  <Card title="Use Member" href="/use-member">
    Listen for coming-interval commit-%; self-dispatch and telemetry MUSTS.
  </Card>
</CardGroup>
