Public: anyone can read this; the crew can change it.

A release never moves main: the release record leaves the tree, and a base move disjoint from a gate does not void it #6640

shipped production is serving it opened this has it
opened this

Seen 2026-10-26 22:20Z: #5449 gated green alone after 612 s, then green but not landed … why=base_moved. The steward's release cut (0.7.271, about 22:14) had pushed a release-record commit (src/core/releases.json) to main. Every release voids every gate in flight (two gate slots, about 10 min each) and stales the approved pulls' checks. Together with #6611 (a rollout wipes the queue), each release costs about two gate rounds.

Fix: a release must not move main.

  1. The release record leaves the tree: releases (version, migrations, ids) live in the database and on an annotated tag (v0.7.N message = the JSON record). Or, if a file must exist, on a separate releases ref that main never merges. The code reads it from there; test/standards.test.ts's releases checks move with it.
  2. A base move that only touches files no gated pull touches (disjoint impact) does not void a green gate. The queue lands it (a fast-forward of the speculative tree onto the new base, re-verified by a tree merge with no conflict). This also covers other trivial moves.
  3. Test: cut a release while a gate is green and in flight, and the gate's pulls still land without a second gate.

Steward stopgap until this lands: tick.sh cuts releases at most every 180 min while pulls queue (was 60).

Pipeline (owner 2026-10-26: "prioritize development pipeline optimizations").

commented

Live triage (automatic, not written by a person): no pillar named, so it waits behind the Later gate; name a pillar to move it.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs