# DESP reference

> Class table and semantics, mandatory C-B-A curtailment order, domain class-policy limits, and open naming, extensibility, and SLA items.

- 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

- `specs/desp/spec.md`
- `specs/gcap/spec.md`
- `specs/g2p/spec.md`
- `members/use.md`
- `rfcs/grid-2-rfc-1.pdf`

---

---
title: "DESP reference"
description: "Class table and semantics, mandatory C-B-A curtailment order, domain class-policy limits, and open naming, extensibility, and SLA items."
---

`specs/desp/spec.md` is the living **DESP** (Differential Electric Service Protocol) document: version **26.0-draft**, status **Draft — seeking input**. DESP owns the non-firm service-class taxonomy and the priority order Allocators MUST honor when constraints bind. GCAP clears against those classes; G2P carries them in Service Descriptors and Commitments. DESP does not define a wire format, prices, or commercial terms.

<Info>
RFC 2119 / RFC 8174 keywords apply. Editors are TBD. DESP versions independently of G2P and GCAP on the **26.x** line. RFC #1 is the immutable August 2026 snapshot; class-table changes land here, not in the PDF.
</Info>

## Status and stack role

| Field | Value |
|---|---|
| Path | `specs/desp/spec.md` |
| Version | `26.0-draft` |
| Status | Draft — seeking input |
| Role | Service classification and prioritization |
| Consumers | GCAP clearing; G2P Use Service Descriptors and per-class `commit-%` |
| Clock | One-minute interval; a Member MAY reclassify request buckets each interval |
| v26.0 units | Energy within the interval (same scope as G2P/GCAP) |

DESP classes apply to **Use** demand above Grid 1 Firm. Buffer offers and Source supply are not A/B/C in v26.0; Source class structure (single class vs. mirrored A/B/C) is an open item.

## Service classes

Grid 2 stratifies demand **above** traditional Grid 1 firm service. Classes **A**, **B**, and **C** together are traditional non-firm demand (RFC #1 Figure 2). GCAP MUST NOT curtail Traditional Firm.

| Class | Name | Position | Semantics |
|---|---|---|---|
| — | Traditional Firm (Grid 1) | Base | Outside Grid 2; served per existing firm service. Never curtailed by GCAP. |
| `A` | Assured | Highest non-firm | Curtailed last among Grid 2 classes. Intended for latency-sensitive, hard-to-defer demand. |
| `B` | Preferred | Middle | Curtailed after `C`, before `A`. Deferrable-with-constraints demand. |
| `C` | Best Efforts | Lowest | Curtailed first. Unmet or deferred most frequently; statistical-multiplexing tier. |

<ParamField body="A" type="class" required>
Assured. Highest non-firm priority. Alias in the RFC #1 interaction table: Firm.
</ParamField>

<ParamField body="B" type="class" required>
Preferred. Middle non-firm priority. Alias: Semi-Firm.
</ParamField>

<ParamField body="C" type="class" required>
Best Efforts. Lowest non-firm priority. Alias: Flex.
</ParamField>

```text
 unmet / deferred  (headroom shortfall)
 ┌─────────────────────────────────────┐
 │  C  Best Efforts                    │  curtailed first
 │  B  Preferred                       │
 │  A  Assured                         │  curtailed last among Grid 2
 └─────────────────────────────────────┘
    Grid 2 non-firm (DESP)
 ───────────────────────────────────────
    Traditional Firm (Grid 1)          never touched by GCAP
```

### Naming aliases

G2P Service Descriptors carry **one signed position per class**. The RFC #1 Protocol Interactions table names those positions **Firm / Semi-Firm / Flex**. The living spec maps that triple onto **A / B / C**. Reconciliation of Assured/Preferred/Best-Efforts vs. Firm/Semi-Firm/Flex is an open item — do not treat either set as the sole on-the-wire identifier until that lands.

RFC #1 Figure 5 labels DESP “dynamic request classification standard (can change each interval)” and shows per-Use buckets such as Best Efforts (C), Preferred (B), Assured (A), plus a separate Firm row that stays on Grid 1.

## Curtailment order

When constraints bind, Allocators MUST honor this order. GCAP §3 and `members/allocator.md` restate it; DESP is the class-order authority.

1. **Headroom first** — compute surplus network capability for the interval.
2. **Buffers second** — clear Buffer **committed dispatch** before **any** Use class is curtailed.
3. **Tiered Use third** — if relief is still required, reduce Use allocations **C → B → A**.
4. **Never Firm** — Traditional Firm (Grid 1) is outside this loop.

```mermaid
flowchart TD
  subgraph gcap["GCAP interval clear"]
    H[Headroom]
    BUF[Buffer committed dispatch]
    C[Best Efforts C]
    B[Preferred B]
    A[Assured A]
    H --> BUF
    BUF -->|still constrained| C
    C -->|still constrained| B
    B -->|still constrained| A
  end
  subgraph protected["Outside DESP / GCAP"]
    FIRM[Traditional Firm Grid 1]
  end
  A -.->|MUST NOT touch| FIRM
```

Within a class, curtailment MUST be **proportional**: equitable dispatch proportional to connection size and differential request size (GCAP §3). The exact weighting formula is a GCAP open item, not a DESP one.

<Warning>
Buffer dispatch is not a DESP class. Treating storage as Class A/B/C, or curtailing Use before committed Buffer dispatch, is non-conformant.
</Warning>

## Dynamic reclassification

Classification is **dynamic**:

- A Member MAY reclassify its request buckets **each interval**.
- A G2P Service Descriptor MAY be reissued each interval; classes MAY change with it.
- Positions MUST be signed by the originating Member and expressed in energy within the interval (v26.0).
- The Allocator clears **class-level positions only**. It never sees or directs internal workloads.

Use Members listen for per-class **commit-%** for the coming interval and MUST self-dispatch within that commit-%, within host-utility parameters, and MUST report actual per-class dispatch (G2P §3.4). On a missing or stale Commitment they revert to the Grid 1 firm load limit or manual curtailment — not to a DESP class.

## Domain class policy

A domain MAY constrain the mix of classes a Member can declare (example in the spec: a minimum Class C share for expedited interconnection). Those limits are **commercial-terms matters** in the domain agreement, not protocol fields.

| Surface | What it may do | What it MUST NOT do |
|---|---|---|
| Domain agreement | Cap or floor declared class mix; charge for Grid 2-enabled use; enforce flex capabilities | Change C → B → A order or let GCAP curtail Firm |
| DESP | Define A/B/C semantics and mandatory curtailment order | Encode tariffs, interconnection queues, or SLA envelopes (those are open) |
| Machine-readable domain descriptor | Proposed open item: constraint scope, class policy, ramp limits | Not specified in v26.0-draft |

RFC #1’s Commercial terms discussion asks whether the **standard** should provide guidance or limits on differential service classes. Until that closes, implementers treat mix limits as domain-local and keep GCAP order global.

## Informative workload mapping

DESP §3 is **informative**, not a conformance test. It aligns classes with Emerald AI Flex 0/1/2/3 and ERCOT CLR/PCLR constructs. Facility-type mapping guidance remains an open Use-Member item.

| Class | Informative analog | Typical demand | Flexibility notes in spec |
|---|---|---|---|
| `A` | ≈ Flex 0; ERCOT LPC-aligned firm portion | Real-time inference, interactive services | Sub-second SLAs; flex via spatial routing, cooling, behind-the-meter storage, bounded power-capping (~20% headroom on inference without deferring requests) |
| `B` | ≈ Flex 1–2; CLR/PCLR dispatchable portion | Training with checkpointing, deadline batch | Minutes-to-hours deferral; 10–25% throttle sustained 3–6 h cited as field-proven; primary flex reservoir |
| `C` | ≈ Flex 3 | Opportunistic/spot compute, non-urgent batch | Pausable hours-to-days; shed first |

Empirical anchors cited in DESP (and RFC #1 Industry Analysis): 25% sustained facility power reduction for 3 hours in production (Emerald AI, 256 GPUs, 15-minute ramps); curtailing 0.25–1.0% of annual load unlocking 76–126 GW of US headroom (Duke, *Rethinking Load Growth*). Those figures inform class design; they are not protocol SLAs.

## Carriage and outputs

DESP has no messages of its own. Adjacent contracts:

| Direction | Message | DESP-related content |
|---|---|---|
| Use → Allocator | G2P Service Descriptor | One signed **request to consume** (+) per class over a forward time vector |
| Allocator → Use | G2P Commitment | Per-class **commit-%**; identifies interval, domain, and clearing-inputs version |
| Use → Allocator | G2P Response / Telemetry | Actual per-class dispatch vs. Commitment |
| Allocator → Buffer / Source | G2P Commitment | **Committed dispatch** / **committed take** — not classed A/B/C in v26.0 |

Federation announcements MAY later carry per-class aggregates; whether they carry boundary headroom only or per-class totals is an open federation item. Missing peer announcements MUST NOT relax local limits.

## Open items

Tracked in DESP §5 unless noted:

| Item | Status |
|---|---|
| Naming: Assured/Preferred/Best-Efforts vs. Firm/Semi-Firm/Flex | Open |
| Class count fixed at three vs. extensible per domain | Open |
| Per-class performance envelopes (target unmet-frequency, SLA-like) | Open |
| Ramp-rate and snap-back limits per class (research cited: 15-minute ramp discipline) | Open; agreed host-utility ramps already MUST bind transitions |
| Enforcement/verification of declared class behavior | Open; ties to G2P §3.4 verified self-dispatch |
| Standard should publish class-mix guidance or limits | Open (RFC #1 Commercial terms) |
| Machine-readable domain descriptor including class policy | Open (`architecture/allocation-domains.md`) |
| Deferred Class C accruing priority across intervals | Open (GCAP) |
| Source supply class structure in v26.0 | Open (`members/source.md`: single class vs. mirrored A/B/C) |
| Per-facility-type workload→class guidance | Open (`members/use.md`) |

<Note>
Do not implement extra classes, per-class SLAs, or on-the-wire Firm/Semi-Firm/Flex tokens as if they were Stable. Comment via Discussions (Commercial terms for mix limits; Engineering for verification) or a PR against `specs/desp/spec.md`.
</Note>

## Related pages

<CardGroup>
  <Card title="Service classes" href="/service-classes">
    Conceptual A/B/C stack, Firm aliases, and per-interval reclassification.
  </Card>
  <Card title="Map workloads to classes" href="/map-workloads-to-classes">
    Informative Flex 0–3 and ERCOT CLR/PCLR mappings; what the Allocator never sees.
  </Card>
  <Card title="GCAP reference" href="/gcap-reference">
    Headroom, then Buffers, then C-B-A; proportional within class.
  </Card>
  <Card title="G2P reference" href="/g2p-reference">
    Signed per-class descriptors, commit-%, and verified self-dispatch.
  </Card>
  <Card title="Use Member" href="/use-member">
    Per-class consume positions, commit-% listen, and firm-limit fallback.
  </Card>
  <Card title="Allocation domains" href="/allocation-domains">
    Class-mix limits stay in the domain agreement, not in DESP.
  </Card>
</CardGroup>
