Skip to content

DEVEX-1653: declare on_rt input on slack-deploy-notification (unblock sweep)#148

Merged
pdodgen-revparts merged 1 commit into
mainfrom
devex-1653-slack-on-rt-input
Jul 9, 2026
Merged

DEVEX-1653: declare on_rt input on slack-deploy-notification (unblock sweep)#148
pdodgen-revparts merged 1 commit into
mainfrom
devex-1653-slack-on-rt-input

Conversation

@pdodgen-revparts

Copy link
Copy Markdown
Contributor

Context

The DEVEX-1653 on_rt sweep opened 21 draft PRs (webstore #4670 + 20 subagent-opened sibling PRs on the other RT participants + shipments-api #373 which contains a fresh deploy-production.yaml). Every one of them passes on_rt through to this workflow:

  • Shape A/B repos: deploy-production.yamldeploy-eks.yamlslack-deploy-notification.yaml with on_rt: ${{ inputs.on_rt }}
  • Shape C repos: deploy-production.yamlslack-deploy-notification.yaml with on_rt: ${{ github.event.inputs.on_rt == 'true' }}

Ordering gap I missed when opening the sweep: this workflow didn't declare on_rt as a workflow_call input. If any sweep PR merged first, its prod deploys would fail with "invalid input: on_rt" on the slack-notification step.

What this PR does

Declares on_rt as an optional workflow_call input (default false). The classifier step is unchanged — still uses tag-shape inference (-rc.YYYY-MM-DD.N = 🚂 RT, else = ⚡ Hotfix). The input is accepted but not yet consumed by the badge logic.

Current Slack badge behavior is preserved exactly.

Follow-up (once sweep merges + rt-promote.sh updates)

A separate coordinated pair of PRs will:

  1. encodium/.github: flip classifier to bright-line rule — if on_rt=true → 🚂 RT, else → ⚡ Hotfix. Drops tag-inference fallback.
  2. encodium/actions: update rt-promote.sh in captain handbook to dispatch each deploy with -f on_rt=true.

That fixes Sam's 2026-07-09 rc.8 case where a hotfix backport mis-badged as 🚂 RT.

Merge safety

  • Unaffected: every existing caller that doesn't pass on_rt (default false).
  • Unaffected: every Slack message currently in flight or emitted after merge (classifier unchanged).
  • Unblocked: the 21 sweep PRs — safe to merge in any order once this lands.

Small blast radius, easy to eyeball. Ready for review.

…ock sweep

The DEVEX-1653 on_rt sweep across 21 RT participant repos (webstore
#4670 + 20 subagent-opened sibling PRs + shipments-api #373's new
deploy-production.yaml) all pass `on_rt: ${{ inputs.on_rt }}` (or
`${{ github.event.inputs.on_rt == 'true' }}`) to this workflow. But
this workflow didn't yet declare the input — so any sweep PR merging
first would break Slack notifications with "invalid input: on_rt".

Declare the input now (default false, required false) so those PRs
are safe to merge in any order. The classifier step is UNCHANGED:
still uses tag-shape inference, still emits 🚂 RT for -rc.<date>.<iter>
tags and ⚡ Hotfix for everything else. Current behavior is preserved.

Follow-up PR (once sweep merges + rt-promote.sh updates to pass
-f on_rt=true) will:
- Flip classifier to bright-line: if on_rt=true → 🚂 RT, else → ⚡ Hotfix
- Drop tag-inference fallback (which currently mis-badges rc.N>1
  hotfix backport promotes as RT — Sam's 2026-07-09 rc.8 case)
@cursor

cursor Bot commented Jul 9, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Workflow input-only change with default false; existing callers and Slack classification behavior are unchanged.

Overview
Adds an optional on_rt boolean (workflow_call, default false) to slack-deploy-notification.yaml so downstream DEVEX-1653 deploy chains can pass on_rt: ${{ inputs.on_rt }} without GitHub rejecting an unknown input.

Slack RT vs Hotfix badges are unchanged — the classify step still infers from image tag shape (-rc.YYYY-MM-DD.N → 🚂 RT). The new input is documented as reserved for a follow-up that will use on_rt=true from rt-promote.sh instead of tag inference.

Reviewed by Cursor Bugbot for commit 54b8894. Bugbot is set up for automated code reviews on this repo. Configure here.

@pdodgen-revparts
pdodgen-revparts marked this pull request as ready for review July 9, 2026 22:09
@pdodgen-revparts
pdodgen-revparts requested a review from a team as a code owner July 9, 2026 22:09
@pdodgen-revparts
pdodgen-revparts merged commit ab8282c into main Jul 9, 2026
2 checks passed
@pdodgen-revparts
pdodgen-revparts deleted the devex-1653-slack-on-rt-input branch July 9, 2026 22:10
pdodgen-revparts added a commit that referenced this pull request Jul 9, 2026
…#149)

feat(slack): flip classifier to bright-line on_rt rule (Phase 3 of DEVEX-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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant