Skip to content

Release process: prevent frontend (objectui) changesets being missed when the console pin lags #3340

Description

@os-zhuang

Background / incident

While curating the v16 release page (#3322), the Console section was written from the @objectstack/console bundle-bump summaries. Those summaries only cover up to the pinned objectui SHA (.objectui-sha). At that moment objectui main was 4 commits / 21 pending changesets ahead of the pin, so 4 frontend changes — two of them minor features — were absent from the page (fixed in #3331 by re-sourcing from objectui's own changesets):

This is a structural gap, not a one-off oversight.

Root cause — three blind spots in the pipeline

objectui main ──(bump-objectui.sh pins SHA)──▶ .objectui-sha ──▶ @objectstack/console changeset ──▶ vN.mdx Console section
     ① can lag                                  ② summarizes only up to the pin        ③ written from the bump summary
  1. .objectui-sha can lag — a release can be cut while objectui main has newer commits / pending changesets.
  2. The console bump changeset only covers up to the pin — anything merged in objectui after the last bump never enters the changesets pipeline for that release.
  3. scripts/check-release-notes.mjs only checks "a page exists per major" — it does not verify the pin is current, nor that frontend changesets are covered. So a lagging pin is invisible to both the changelog pipeline and the drift guard.

Proposed fixes (prioritized)

P0 — pin-freshness gate (the only thing that hard-blocks this)

Add scripts/check-objectui-pin-fresh.mjs, wired as a required check on the Version-Packages / release PR. Fail when:

  • objectui's latest release tag (or main HEAD) is ahead of .objectui-sha, or
  • objectui has pending .changeset/*.md not yet bundled (list them).

CI can read objectui state via git ls-remote + a lightweight API call.

P1 — auto-bump to structurally shrink the lag

A scheduled (or on-objectui-merge) job that runs scripts/bump-objectui.sh whenever objectui main advances and opens a PR. If the pin is (near-)always current, the bump summary is always complete and manual reconciliation disappears. This is the root-cause fix.

P1 — change the source of truth

Make the canonical "write the Console section" procedure read objectui's own .changeset/ rather than the bump summary. Extend scripts/objectui-range.mjs to additionally:

  • emit the objectui changeset entries for the range, and
  • flag entries that are merged but past the current pin (i.e. "landed, not yet bundled").

P2 — coverage reconciliation (upgrade the guard from "exists" to "complete")

Add scripts/check-release-coverage.mjs (run at release time; advisory checklist first, not a hard gate, since prose coverage is fuzzy): enumerate every changeset PR number in the release range (backend spec/package + objectui range) and flag which are not referenced anywhere in vN.mdx.

P2 — release-cut checklist in the PR template

Document the ritual: ① freeze objectui, push the pin to objectui's release commit → ② objectui-range.mjs <last-release>..<now> into the Console section → ③ run the coverage check → ④ the pin-freshness gate is green.

Suggested sequencing

P0 gate first (small: one script + one workflow, immediate value) → P1 auto-bump / source change (root cause) → P2 coverage + template.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions