Found while working #9561 / PR #9827 (the launch-window major guard's two stale "dormant" comments). Deliberately not folded into that PR: same defect class, but a different guard, and its correct replacement is a statement about release policy rather than a mechanical restatement.
The stale claim
.github/workflows/cut-rc.yml L795, inside the Downstream backward-compat smoke step's warning path:
echo "::warning::hotcrm@${HOTCRM_REF} is incompatible with the pre-release train — expected for this window's deliberate removals. Ship a migrated hotcrm release and bump HOTCRM_REF in release.yml before 'changeset pre exit' re-arms that gate."
The step comment just above it (L781-786) rests on the same keying: "In pre mode ... the #3600 amendment makes it advisory".
Why it is stale
.github/workflows/release.yml L511-535 records the correction in full, in the past tense:
It did exactly that (#8643, 2026-08-14) — and the deadlock was still on, because HOTCRM_REF was and is v2.1.0, i.e. ObjectStack 14.7. So the re-armed gate stood between the 17.0.0 GA publish and a migration nobody had done yet, which is the same deadlock #3600 named, one event later. The keying was the bug: pre-exit is not when a migrated hotcrm release starts existing. Shipping one is.
So the posture is now tied to THAT event instead.
So changeset pre exit no longer re-arms the gate — release.yml's BLOCKING switch does, and it is keyed on shipping a migrated hotcrm and bumping HOTCRM_REF. cut-rc.yml still tells a curator, in operator-facing warning text on a live publish lane, to race a deadline that no longer exists.
This is worse than an ordinary stale comment because it is echoed into the workflow run's annotations, where a release curator reads it at exactly the moment they are deciding whether to act.
Shape of a fix
Not a wording pass. The warning should name the condition release.yml actually keys on — ship a hotcrm release migrated to v17 and bump HOTCRM_REF, at which point the gate becomes blocking again — and should not name changeset pre exit as the re-arming event at all. The L781-786 step comment needs the same treatment: "advisory in pre mode" is true on this lane for a different reason (the lane only runs in pre mode) than the one #3600 gave, and conflating them is how the pre-exit keying survived here.
Worth checking in the same pass whether the step's name: ("advisory in pre mode") should say what makes it advisory.
Not claimed
Whether the downstream gate's current posture is the right one — that is release policy and #8643 already ruled on it. This card is only about cut-rc.yml describing a keying the repo replaced.
Filed unassigned.
Generated by Claude Code
Found while working #9561 / PR #9827 (the launch-window major guard's two stale "dormant" comments). Deliberately not folded into that PR: same defect class, but a different guard, and its correct replacement is a statement about release policy rather than a mechanical restatement.
The stale claim
.github/workflows/cut-rc.ymlL795, inside theDownstream backward-compat smokestep's warning path:The step comment just above it (L781-786) rests on the same keying: "In pre mode ... the #3600 amendment makes it advisory".
Why it is stale
.github/workflows/release.ymlL511-535 records the correction in full, in the past tense:So
changeset pre exitno longer re-arms the gate — release.yml'sBLOCKINGswitch does, and it is keyed on shipping a migrated hotcrm and bumpingHOTCRM_REF. cut-rc.yml still tells a curator, in operator-facing warning text on a live publish lane, to race a deadline that no longer exists.This is worse than an ordinary stale comment because it is echoed into the workflow run's annotations, where a release curator reads it at exactly the moment they are deciding whether to act.
Shape of a fix
Not a wording pass. The warning should name the condition release.yml actually keys on — ship a hotcrm release migrated to v17 and bump
HOTCRM_REF, at which point the gate becomes blocking again — and should not namechangeset pre exitas the re-arming event at all. The L781-786 step comment needs the same treatment: "advisory in pre mode" is true on this lane for a different reason (the lane only runs in pre mode) than the one #3600 gave, and conflating them is how the pre-exit keying survived here.Worth checking in the same pass whether the step's
name:("advisory in pre mode") should say what makes it advisory.Not claimed
Whether the downstream gate's current posture is the right one — that is release policy and #8643 already ruled on it. This card is only about cut-rc.yml describing a keying the repo replaced.
Filed unassigned.
Generated by Claude Code