Found while executing the dispatched measurement on #14000. Observation-class instrument gap — no claim on the fix shape; filed unassigned for triage.
The mechanism
publish-smoke.yml multiplexes two jobs with disjoint triggers into one workflow:
Packed-tarball smoke (release candidate) — runs on workflow_run after each Release run, iff an open release PR exists.Registry canary (published latest) — runs on schedule (cron 47 4 * * 1, Monday 04:47 UTC).
A schedule-triggered run skips Resolve target and pack-smoke entirely; when the canary passes, the RUN-LEVEL conclusion is success. In the run list this is indistinguishable from "the release candidate passed its fresh-install smoke".
Measured consequence (three independent readers, same misread)
The canary green was also SEMANTICALLY misleading in this instance: the canary tests the published packages (plugin-auth 17.2.0, published 2026-08-23), which predate the very change the release candidate is red on — so the one green row in the list was green precisely because it does not test the thing the red rows test.
Note #14000's own trap warning (judge by the commit status on the release-branch head, never by a check-run on a main SHA) does not protect against this one: the commit status answers "is it red NOW"; the DURATION question sends every reader back to the run list, where the canary success sits unlabeled.
Possible directions (triage's call, not pinned here)
- Split the canary into its own workflow file so run-list conclusions are per-surface.
- Or set a
run-name that names the executed path (event-conditional), so canary runs are visually distinct in the list. - Or answer duration questions from the commit-status history on release heads instead of the run list, and say so in the workflow header comment.
Evidence pointers: runs 33358429723 (canary green, pack-smoke skipped), 32844424297 (last true pack-smoke green), 32846258837 (first red, identical POST /auth/sign-up/email: expected HTTP 200, got 403 annotation as every red since, sampled through 2026-09-01).
Found while executing the dispatched measurement on #14000. Observation-class instrument gap — no claim on the fix shape; filed unassigned for triage.
The mechanism
publish-smoke.ymlmultiplexes two jobs with disjoint triggers into one workflow:Packed-tarball smoke (release candidate)— runs onworkflow_runafter each Release run, iff an open release PR exists.Registry canary (published latest)— runs onschedule(cron47 4 * * 1, Monday 04:47 UTC).A schedule-triggered run skips
Resolve targetand pack-smoke entirely; when the canary passes, the RUN-LEVEL conclusion issuccess. In the run list this is indistinguishable from "the release candidate passed its fresh-install smoke".Measured consequence (three independent readers, same misread)
33358429723(started 2026-08-31T04:49:46Z, conclusionsuccess) is a canary run: its jobs list showsPacked-tarball smoke: skipped,Registry canary: success,Resolve target: skipped.32844424297(2026-08-25T11:50:56Z). The first red is32846258837(2026-08-25T12:11:42Z). The real outage at filing time is about 7.0 days — the misread hid roughly six days of it.The canary green was also SEMANTICALLY misleading in this instance: the canary tests the published packages (plugin-auth 17.2.0, published 2026-08-23), which predate the very change the release candidate is red on — so the one green row in the list was green precisely because it does not test the thing the red rows test.
Note #14000's own trap warning (judge by the commit status on the release-branch head, never by a check-run on a main SHA) does not protect against this one: the commit status answers "is it red NOW"; the DURATION question sends every reader back to the run list, where the canary success sits unlabeled.
Possible directions (triage's call, not pinned here)
run-namethat names the executed path (event-conditional), so canary runs are visually distinct in the list.Evidence pointers: runs
33358429723(canary green, pack-smoke skipped),32844424297(last true pack-smoke green),32846258837(first red, identicalPOST /auth/sign-up/email: expected HTTP 200, got 403annotation as every red since, sampled through 2026-09-01).