---
name: main-baseline-procedure
description: "BINDING (doyle 2026-07-27): the last merge of a sweep triggers the SACRED main baseline run — nothing pushes behind it; rerun-at-sha is the only sanctioned fallback"
metadata: 
  node_type: memory
  type: feedback
  originSessionId: 3dd84a69-59d8-431a-8fd4-60a68986a003
  modified: 2026-07-27T09:46:40.981Z
---

**MAIN BASELINE PROCEDURE — binding, ruled by doyle 2026-07-27 during the FIELD-TRUTH W1 merge sweep.**

The main run triggered by the **LAST merge of a sweep** is the **SACRED BASELINE**. Nothing pushes
to main behind it until it completes. Earlier merges' runs getting cancelled is expected and fine —
only the final one is sacred. The gater holds his own merges behind that window if they would
otherwise cancel it.

If the sacred run is cancelled anyway, produce a replacement **immediately**:

- ✅ **`gh run rerun <cancelled-run-id>`** — the ONLY sanctioned fallback. Re-runs at the SAME sha
  with the same jobs: a real verification, no history write, executable today.
- ⛔ **empty/no-op commit pushed to main** — REFUSED by ruling. No no-op commits into main for CI
  plumbing.
- ⏳ **`workflow_dispatch`** — does NOT exist on ci.yml today (`on:` is `push: [main,
  dev-freeform]` + `pull_request`), so `gh workflow run` refuses. Adding the trigger is bundled into
  hertz's future CI-lane PR, not a tonight fix.

**Why the procedure exists (the gap it closes):** ci.yml carries
`concurrency: { group: ci-${{ github.ref }}, cancel-in-progress: true }`, so every main push cancels
the previous main run. Under a deep queue that ate FIVE consecutive main runs (cc3a054, 544d765,
d4a4b20, 6ecec12, 56a3497 — all `cancelled`; last green main was be4182b), leaving main's health
UNVERIFIED across three merges. Consequence: PR reds get triaged with no known-good main, which is
exactly how a real regression hides inside a flake family.

**Queued CI-lane fix (hertz's, bundled, after his current two items):** add `workflow_dispatch:` to
`on:`, plus the ratified one-liner `cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}` —
PR runs keep cancelling, main runs never do. Ratified as written; beats a concurrency-group rewrite
because it reads as the policy.

**How to apply as a builder driving a sweep:** serialize your merges (poll-granularity is enough),
merge NOTHING after the last of your set, then GUARD that run to completion with three verdicts —
ESTABLISHED (green) / RED (main health is now a known fact → escalate to the gater) / UNRESOLVED at
deadline. A sacred run must never be able to die silently. Mechanize the guard; do not remember to
check it ([[gate-rig-mechanisms-not-remembered-steps]]).

Kin: [[unmergeable-pr-blocks-ci]], [[verdict-from-exit-not-from-silence]],
[[seedmap-test-collides-live-daemon]] (same shared-box CI reality).
