DEVEX-1653: flip Slack classifier to bright-line on_rt rule (Phase 3)#149
Conversation
…VEX-1653 badge) The DEVEX-1653 sweep completed (21 participant PRs merged 2026-07-09, plus the accept-only on_rt input in #148). Every participant's deploy chain now propagates on_rt to this workflow. Flip the classifier from tag-shape inference to bright-line on the declared intent: on_rt=true → 🚂 RT (only rt-promote.sh sets this) on_rt=false → ⚡ Hotfix (default — every other dispatch path) This fixes Sam's 2026-07-09 rc.8 case where a hotfix backport promoted manually via mis-badged as 🚂 RT because the tag matched the -rc.<date>.<iter> pattern. The tag pattern can't distinguish rc.1 (initial train ship) from rc.N>1 (hotfix backport) — only the dispatcher's intent knows. Depends on: - Every participant declaring on_rt on deploy-production.yaml (done — 21 sweep PRs merged) - Shared slack-deploy-notification.yaml declaring on_rt input (done — #148 merged as ab8282c) Companion PR (must merge in the same window): - encodium/actions: rt-promote.sh update to pass -f on_rt=true on each deploy-production.yaml dispatch. Between this PR's merge and the rt-promote.sh update landing, every prod deploy shows as ⚡ Hotfix — including next Thursday's train ship if rt-promote.sh hasn't been updated yet. That's the safe default (better to under-classify than to falsely-badge as RT), but keep the two PRs tight.
PR SummaryLow Risk Overview Only dispatches that set The classify step env switches from Reviewed by Cursor Bugbot for commit f33d6cf. Bugbot is set up for automated code reviews on this repo. Configure here. |
Context
The DEVEX-1653 sweep completed 2026-07-09:
on_rtinput to slack-deploy-notification.yaml (accepted, not yet consumed). Merged asab8282c8.on_rtthrough every RT participant's deploy chain. All merged (webstore #4670, catalog_api #650, ... — see DEVEX-1653: declare on_rt input on slack-deploy-notification (unblock sweep) #148 body for the list).This PR is Phase 3: flip the classifier from tag-shape inference to bright-line rule based on the declared
on_rtintent.Change
Plus updated env var (
ON_RT: ${{ inputs.on_rt }}instead ofIMAGE_TAG) and the block-comment rationale reflecting the new logic.Why the flip
Tag inference could match
v0.440.10-rc.2026-07-09.8as 🚂 RT even when it was actually a hotfix backport manually promoted after Thursday's train ship (Sam's case). The dispatcher's intent is the source of truth, not the tag pattern.Companion PR
rt-promote.shupdate to dispatch with-f on_rt=true. Also opened as a draft, in this same window.Merge order safety
Either order works — the
on_rtinput is already accepted by the shared workflow. Between merges:IMAGE_TAG(tag inference)IMAGE_TAG(tag inference)ON_RT(bright-line)ON_RT(bright-line)Merge the rt-promote.sh PR first if there's a next promote in flight; otherwise either order is fine.