Found while implementing objectui#7956 (bounding the six jobs that declared no timeout-minutes). Recorded rather than acted on there: that card is about EXPOSURE (no job ceiling), this is a live FAILURE, and bounding a job that cannot start would fix nothing while hiding the louder defect behind a tidy diff.
Attribution as prose: generated by Claude Code, dev session session_01FhBNJcLRZLe8M87VcUgpKr, while implementing objectui#7956.
The measurement
Repo-scoped Actions REST, measured 2026-09-06T17:24Z.
GET /actions/workflows/stale.yml/runs -> total_count 234
GET /actions/workflows/stale.yml/runs?status=success -> total_count 0
Window of the 234: 2026-01-16T01:14Z .. 2026-09-06T00:19Z, all schedule, all conclusion: failure. Per-job wall clock from /actions/runs/ID/jobs: min 1s / median 2s / p95 4s / max 4s.
Control, so the zero is a reading rather than a broken query: the identical ?status=success call against labeler.yml answers with a total_count of 5448. The filter works; this workflow has never once passed it.
Where it fails
Ten runs sampled evenly across the whole window (2026-09-06, 2026-08-14, 2026-07-22, 2026-06-29, 2026-06-06, 2026-05-14, 2026-04-21, 2026-03-29, 2026-03-06, 2026-02-11) report the same shape from /actions/runs/ID/jobs:
run 34000988323 conclusion=failure steps=[(1, 'Set up job', 'failure')]
One step, Set up job, conclusion failure. The actions/stale step below it never starts — the two oldest of the ten report no steps at all. So the 1-4 seconds are how fast the job fails to BEGIN; nothing in this history measures the job doing its work.
The one thing in the file that Set up job resolves and that could refuse is the pinned action reference:
- uses: actions/stale@e00e804f6792d3fedb5bd3a27df2761c5f86c981 # v9.0.0
⚠️ That is where to look FIRST, not a diagnosis — this card does not claim to have read a run log (the logs for these runs are outside the retention the API served here). Confirming it needs one workflow_dispatch run with the log read.
Why nobody noticed
stale produces no required status check (re-measured on GET /repos/objectstack-ai/objectui/rules/branches/main at 2026-09-06T17:20Z: the required contexts are Lint, Type Check, Build & E2E, Test (shard 1/4) through (4/4), Build Docs, Changeset Declaration). It blocks nothing, it is scheduled rather than triggered by a person, and a failing scheduled workflow in this repository sends its notification somewhere nobody reads. This repository's recurring "looks like enforcement, isn't" class (objectui#3009, #3181, #3494), except that here the mechanism is not even quietly passing — it is loudly failing, into a void.
Consequence
Every automation this file declares has been inert for the whole measured window: no issue or pull request has been marked stale, none auto-closed, no stale label applied or removed by it. Any reasoning that assumes the backlog is being aged — "old cards get swept" — is reasoning about a mechanism that has not run since at least 2026-01-16.
⛔ What this does NOT claim
- ⛔ Not a claim that the stale policy in the file is the RIGHT policy. Whether a 60-day issue sweep with those exempt-label sets is wanted here is a separate question, and a fix that makes this run should probably answer it first — turning on eight months of accumulated sweeping in one scheduled run is its own event.
- ⛔ Not a claim about the cause.
Set up job failing is the observation; the pinned SHA is the first place to look, not the answer.
- ⛔ Not a claim that objectui#7956's accept-360 decision for this job is wrong. It follows FROM this: a job that has never done its work has no distribution to derive a ceiling from. If this card is fixed and a few real sweeps run, that is exactly when the ceiling becomes derivable, and the pin in
scripts/__tests__/workflow-cache-save-bound.test.ts is written to make that move a deliberate edit.
Refs: objectui#7956, objectui#7270, objectui#7048.
Found while implementing objectui#7956 (bounding the six jobs that declared no
timeout-minutes). Recorded rather than acted on there: that card is about EXPOSURE (no job ceiling), this is a live FAILURE, and bounding a job that cannot start would fix nothing while hiding the louder defect behind a tidy diff.Attribution as prose: generated by Claude Code, dev session
session_01FhBNJcLRZLe8M87VcUgpKr, while implementing objectui#7956.The measurement
Repo-scoped Actions REST, measured 2026-09-06T17:24Z.
Window of the 234: 2026-01-16T01:14Z .. 2026-09-06T00:19Z, all
schedule, allconclusion: failure. Per-job wall clock from/actions/runs/ID/jobs: min 1s / median 2s / p95 4s / max 4s.Control, so the zero is a reading rather than a broken query: the identical
?status=successcall againstlabeler.ymlanswers with atotal_countof 5448. The filter works; this workflow has never once passed it.Where it fails
Ten runs sampled evenly across the whole window (2026-09-06, 2026-08-14, 2026-07-22, 2026-06-29, 2026-06-06, 2026-05-14, 2026-04-21, 2026-03-29, 2026-03-06, 2026-02-11) report the same shape from
/actions/runs/ID/jobs:One step,
Set up job, conclusionfailure. Theactions/stalestep below it never starts — the two oldest of the ten report no steps at all. So the 1-4 seconds are how fast the job fails to BEGIN; nothing in this history measures the job doing its work.The one thing in the file that
Set up jobresolves and that could refuse is the pinned action reference:workflow_dispatchrun with the log read.Why nobody noticed
staleproduces no required status check (re-measured onGET /repos/objectstack-ai/objectui/rules/branches/mainat 2026-09-06T17:20Z: the required contexts areLint,Type Check,Build & E2E,Test (shard 1/4)through(4/4),Build Docs,Changeset Declaration). It blocks nothing, it is scheduled rather than triggered by a person, and a failing scheduled workflow in this repository sends its notification somewhere nobody reads. This repository's recurring "looks like enforcement, isn't" class (objectui#3009, #3181, #3494), except that here the mechanism is not even quietly passing — it is loudly failing, into a void.Consequence
Every automation this file declares has been inert for the whole measured window: no issue or pull request has been marked stale, none auto-closed, no
stalelabel applied or removed by it. Any reasoning that assumes the backlog is being aged — "old cards get swept" — is reasoning about a mechanism that has not run since at least 2026-01-16.⛔ What this does NOT claim
Set up jobfailing is the observation; the pinned SHA is the first place to look, not the answer.scripts/__tests__/workflow-cache-save-bound.test.tsis written to make that move a deliberate edit.Refs: objectui#7956, objectui#7270, objectui#7048.