---
name: a-push-to-main-runs-the-full-thin-lane-on-both-runners
description: "The docs-only skip of lint/unit is PULL_REQUEST-ONLY: ci.yml's classify step emits code=true for every other event, so an ff push to main runs unit on hfenduleam AND kitsubito regardless of the diff. Read the PUSH run, not the PR run, before promising a box is untouched."
metadata:
  type: project
---

**Measured 2026-09-09 (doyle):** `.github/workflows/ci.yml` `changes.classify` (line 49 at
`88701366`): `if event_name != pull_request -> code=true; exit 0`. The `*.md` /
`traceable-reqs.toml` skip only runs on a PR. So PR #206 and #207 showed `unit: skipped` on
their pull_request runs, and their ff pushes to main (runs 34337797758, 34341010297) ran the
Windows unit job on the operator's desktop for 40+ min each — through hertz's IR-85
discriminator TIMING window, after I had told him twice that a docs-only push "schedules
kitsubito only, seconds". The first one hit the 40-min job wall at a docs-only sha.

**Why:** I read the PR run's job list and the `runs-on` lines and inferred the push run's
shape from them. A push and a PR are two events with two classifications; the evidence for
one is not evidence for the other. Concurrency on main is `cancel-in-progress: false`, so two
quick ff pushes QUEUE two full Windows unit jobs back to back.

**How to apply:** before promising a runner is untouched, `gh run list --commit <sha>` and
read the job list of the event you are about to fire (push vs pull_request). Do not ff to
main during a timing measurement on the runner box; batch docs lanes into one push. A
thin-run red on main at a docs-only sha is an IR-85 wall face, not a product signal, and not
a reason to rerun inside the window. Related: [[open-the-subindex-before-running-a-gate]],
[[a-stale-target-makes-a-check-pass-harder-not-fail]].
