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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions