# Variant-Promotion Proof Batches

**UNOFFICIAL/EXPERIMENTAL.** Generated by
`scripts/generate-variant-promotion-proof-batches.mjs`. Do not hand-edit. Regenerate
with `npm run variant-promotion-proof-batches`.

A **run plan**, not evidence. The 0 `ready-to-run` promotion rows from the
[promotion closeout](../variant-promotion-closeout/summary.md) — each already has a
server-side clone and ConfigHub upload proof and only needs the `cub variant promote`
receipt — grouped here into 0 safe serial batches to run **once `cub
auth login` is restored**. These are the batches we should run; nothing here is
completed promotion evidence.

Live G/P is paused on expired ConfigHub auth; this plan is staged for when it
returns. Run batches serially — each command mutates ConfigHub server state.

**Stop condition (every batch):** Run serially once `cub auth login` is restored; each command records one server-side cub variant promote receipt. Stop on the first failure and inspect before continuing. Do not run in parallel -- each mutates ConfigHub server state.

## Boundaries

- Read-only projection over the promotion closeout. No ConfigHub mutation, no
  kind cluster, no `runs/` edit, no live runner touched.
- A batch is a planned run, never a claim of completed promotion. Receipts are
  recorded only when the commands are actually run, after auth is restored.
