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:
| anchor | value |
|---|
apps/console/package.jsonversion | 17.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.0 → 17.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).
Filed by the
repo:objectuiexecution 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.mainis red right nowLatest CI run on
push/main, 32356587040 (sha59f61cfb8, 2026-08-20T09:58:23Z):Test (coverage)→ failure, after 39 min 26 s.Measured on
origin/main:apps/console/package.jsonversionQUICK_REFERENCE.md:114—**Version:**The release moved every
@object-ui/*manifest to 17.6.0 (onefixedgroup). The doc was not moved with it, so17.5.0is 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.tsis 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 versionrewrites every manifest automatically insidechangeset-release.yml, pusheschore: release packages, and nothing in that path updatesQUICK_REFERENCE.md. So the doc is guaranteed to fossilise once per release, andmaingoes red once per release until someone hand-fixes it.Two ways out; the implementer picks with evidence and states which and why:
changeset:version, sochangeset versionand the doc move in one commit). Keeps the prose, closes the window.main— a one-line edit of17.5.0→17.6.0unredsmaintoday 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
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).