Skip to content

docs(releases-maintenance): wait for the newest in-flight scheduled CI before approving release - #25320

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-beijtf
Oct 23, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-beijtf

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Elon · project thread

Fixes #24889
Clause-②: no
Metadata-protocol: none

What

docs/releases-maintenance.md, section "Cutting a GA release — the Version Packages PR flow": one maintainer step before the release environment approval, after the existing "First, check #4935 is current" step.

  • Read the Release run's Full battery green at the version commit job (step Read the full battery at or before the version commit): one line per workflow, naming the chosen run and its distance from the version commit.
  • If a CI run on the version commit, or on a commit between it and the one the CI line names, is still in progress (normally the hourly schedule run), wait for it to complete (about 25–30 minutes) before approving. Green: approve. Red: treat it as the gate's refusal.
  • Why: 18.0.0 was approved on a green gate that read a run 9 commits back while the run 2 commits back was in flight, and that run went red.
  • What it is not: a merge freeze. The snapshot flow's choice against coordinated freezes and annotate-shipped's handling of a Version Packages PR merged behind main are referenced, not changed.

Docs only, 32 added lines, one file. No workflow, script, ADR or content/docs/releases/** change, so no changeset (skip-changeset).

Measurements (all against origin/main at 9dc1f42d50)

  • Gate job name: .github/workflows/release.yml:1508 reads name: Full battery green at the version commit (job id full-battery, step Read the full battery at or before the version commit at :1556). It runs scripts/ci/scheduled-full-run.mjs --release-gate, whose HALF 3 selection rule reads only completed schedule or push runs of CI, Lint & Type Check and Spec Shape Gate and "never waits". It prints its lines to the job log, not to the step summary.
  • Scheduled CI cadence: .github/workflows/ci.yml:58 reads - cron: '0 * * * *' (hourly, minute 0). lint.yml:47 carries the same cron.
  • Scheduled CI duration: the 20 most recent completed schedule runs of ci.yml on main, as of 2026-10-23 00:20Z (run_started_at to updated_at): 14.4–38.7 min, median 28.7, 14 of 20 in 25–31. lint.yml and spec-shape-gate.yml scheduled runs in the same window were about 10–24 min.
  • 18.0.0 facts, re-read: run 39412016980 (CI, schedule) on abd5acdaf7, success, 11:01–11:25Z; run 39419131283 (CI, schedule) on 81120caac8, failure, 12:01–12:30Z; run 39427630088 (Release, workflow_dispatch) failure. git log --first-parent 06cab4849a puts 81120caac8 2 commits back and abd5acdaf7 9 commits back.

Gates

Derived by node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack at 64ff9db3c5. Exit codes were captured before any pipe and reconciled with --ran: "13 derived, 13 run, 0 NOT-MEASURED, 0 UNRUN (a DERIVED zero — all 13 recorded an exit code and none of them is 3)".

Command Exit
node scripts/check-ci-filter-parity.mjs 0
node scripts/check-closing-keyword-parity.mjs 0
node scripts/check-closing-keyword-parity.mjs --self-test 0
node scripts/check-comment-mask-corpus.mjs 0
pnpm --filter @objectstack/lint run check:doc-formula-expressions 0 (first run exit 3, a prerequisite: @objectstack/lint unbuilt; built @objectstack/formula and @objectstack/lint, then re-ran)
pnpm check:cross-package-test-inputs 0
pnpm check:doc-authoring 0
pnpm check:driver-memory-census 0
pnpm check:gitlink-declared 0
pnpm check:nul-bytes 0
pnpm check:refd-timer-probe 0
pnpm check:required-contexts 0
pnpm check:watch-hint-literal 0

CI runs the rest of the families on this PR.

Acceptance notes

  • The card names a scheduled CI run. The gate reads push runs on main too, and two more workflows, so the step is written for any in-flight CI run between the gate's chosen run and the version commit (normally the hourly one). It adds one sentence that the same wait applies to Lint & Type Check and Spec Shape Gate, whose scheduled runs are shorter.
  • The card's :297 anchor was stale. The GA section starts at :445 on 9dc1f42d50.
  • The "Red: do not approve" branch points at the recovery already written in the full-battery job header of release.yml. It adds no new recovery procedure.
  • Not touched: the release: snapshot one-click rc cut — a cut-rc workflow that bumps, versions, gates and publishes from ONE SHA, ending the two-treadmill freeze dance #7447 snapshot section and annotate-shipped.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LKHDniRQSWjRJyDtacwpEd

…re approving a GA release

The release gate reads only completed full-battery runs and never waits, so
a nearer scheduled CI run still in flight is invisible to it. 18.0.0 was
approved on a green run 9 commits back while the run 2 commits back was in
flight; that run went red. Add the maintainer step: read the gate's lines,
and wait for an in-flight run at or before the version commit to complete
before approving. A wait, not a merge freeze.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LKHDniRQSWjRJyDtacwpEd
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 23, 2026
@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation labels Oct 23, 2026
@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 23, 2026 06:18
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 23, 2026 06:18
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 23, 2026
Merged via the queue into main with commit b85bfed Oct 23, 2026
46 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-beijtf branch October 23, 2026 06:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants