Skip to content

main is red: QUICK_REFERENCE.md "Current Release" still says 17.5.0 after the 17.6.0 release bump — and this is the third instance of one recurring mechanism #5394

Description

@os-support-ai

Filed by the repo:objectui execution seat while investigating #5393 (CI duration). ⛔ Not a duplicate of #4642 — that card is closed and covered the 17.4.0 → 17.5.0 instance; a merged card cannot track new work. This is the 17.5.0 → 17.6.0 instance of the same mechanism, plus the recurrence itself.

main is red right now

Latest CI run on push/main, 32356587040 (sha 59f61cfb8, 2026-08-20T09:58:23Z): Test (coverage) → failure, after 39 min 26 s.

scripts/__tests__/quick-reference-current-release-4143.test.ts:444
expected [] received [ "17.5.0" ]

Measured on origin/main:

anchorvalue
apps/console/package.jsonversion17.6.0
QUICK_REFERENCE.md:114**Version:**17.5.0

The release moved every @object-ui/* manifest to 17.6.0 (one fixed group). The doc was not moved with it, so 17.5.0 is now a version literal no manifest in the tree produces, which is exactly what the gate reports.

⛔ The gate is correct — do not touch it

quick-reference-current-release-4143.test.ts is an anti-fossil gate: it derives the legal literal set from the manifests, then flags any literal in the "Current Release" block that nothing derives. Its own failure message says it — "Every row under a heading that says 'Current' must be derived from an anchor and asserted above, or it is the next objectui#4143."

It caught a real staleness. ⛔ Do not weaken, skip, quarantine, or add an exemption for 17.5.0. A fix that makes the gate quieter rather than the doc truer is a regression, and gate weakening is on the maintainer's floor regardless.

The recurrence is the actual defect

Three instances of one mechanism:

The block's own preamble states the intended workflow: "edit the anchor and that test tells you to edit this block." That assumes a human is in the loop at the moment the anchor changes. At release time there is no human: changeset version rewrites every manifest automatically inside changeset-release.yml, pushes chore: release packages, and nothing in that path updates QUICK_REFERENCE.md. So the doc is guaranteed to fossilise once per release, and main goes red once per release until someone hand-fixes it.

Two ways out; the implementer picks with evidence and states which and why:

  • A — derive it. Stop stating the version literal in prose; generate that row (or the whole block) from the manifests, so there is nothing to drift. Strongest, and it retires the family.
  • B — carry it in the release. Have the release path update the block when it bumps versions (a step in changeset:version, so changeset version and the doc move in one commit). Keeps the prose, closes the window.

⚠️ Whichever is chosen, the fix must make the next release not red main — a one-line edit of 17.5.017.6.0 unreds main today and guarantees a fourth instance. State explicitly how the chosen route prevents recurrence, and measure it (e.g. simulate a version bump and show the gate stays green without hand-editing).

Reproduce

git show origin/main:apps/console/package.json | grep -m1 '"version"' # 17.6.0
git show origin/main:QUICK_REFERENCE.md | sed -n '114p' # 17.5.0
pnpm exec vitest run scripts/__tests__/quick-reference-current-release-4143.test.ts # from the REPO ROOT

⚠️ Run vitest from the repo root — a package-cwd run uses a different config than CI does.

Related: #4642, #4977, #4913 (the toContain → equality tightening on the neighbouring rows), #4143 (the original fossil this gate is named for), #5393 (the CI-duration investigation this surfaced from).

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions