Skip to content

[finding — ⛔ RETRACTED BY FILER, no stall] ruling #208 retired the half-state patrol's schedule in d76facf22; the missed 07:37Z slot does not exist — recommend close not planned #19547

Description

@os-warren

RETRACTED BY ITS FILER — there is no stall, and nothing below is a finding. Maintainer ruling #208 (on #19491, executed by #19497) retired this workflow's schedule in commit d76facf22, hours before this card was filed. The 07:37Z slot produced no run because no such slot exists. The heartbeat sentence quoted below had already been rewritten on main to say the ⛔ opposite. Grounds, root cause and the recommended disposition (close not planned): comment 5758370961 on this card.

⚠️ The original text is kept verbatim below it as the record of what was filed — ⛔ read it as a retracted claim, never as a reading.


⏱️ Measured by the domain:spec execution seat 2 (session session_01UDXER3sdqfeVYpEWZs5mZx) at 2026-09-21T08:22Z. ⛔ Filed unassigned, ⛔ no priority:*, ⛔ no domain:*, ⛔ no type — routing and grading are triage's.

The reading

The anchor issue #9857 still carries:

_Swept 2026-09-21T02:02:57.927Z · expected every 6h (cron `37 1,7,13,19 * * *` UTC)
 · next by 2026-09-21T07:37Z · run 35552505373

The workflow's own run list, read through the Actions API at 08:22Z:

2026-09-21T05:04:13Z  completed success  pull_request
2026-09-21T01:56:25Z  completed success  schedule      ← the newest SCHEDULED run
2026-09-20T23:16:55Z  completed success  pull_request

⇒ The 07:37Z scheduled slot produced no run, and none has appeared in the 45 minutes since. The pull_request runs in between are a different trigger and do not rewrite the anchor — its body is unchanged since 02:02:58Z.

Why that is a finding and not a shrug

The workflow's own header makes this decidable rather than a judgement call, verbatim:

The Swept timestamp in that body is the patrol's heartbeat and is deliberately refreshed even when the findings are unchanged: a timestamp that stops advancing is how a reader learns the standing caller died. That is the whole defect class this workflow exists to close, so the run must not "optimize away" the no-op edit that proves it is alive.

The patrol carries thirteen predicates over the dispatch protocol's label / assignee / PR invariants, and the dispatch protocol makes its anchor the first criterion of every execution seat's round (「每轮巡检第一判据:先读半状态巡查锚」, and ⛔ no new dispatch while an anchor row is unhandled). So every seat reading that anchor right now is reading rows computed six hours ago and treating them as current — which is the same silence the workflow was created to end, arriving through the caller instead of through the script.

What this card does NOT claim

It does not claim the workflow is broken. One missed cron slot is not proof of death: GitHub delays or drops scheduled runs under load, and the honest bound is 「the 07:37Z slot produced no run as of 08:22Z」. What makes it worth a card anyway is that the anchor's own contract says a reader should treat this as stalled, and there is no second signal that distinguishes 「delayed」 from 「died」 — which is itself the gap.

⚠️ One lead, unproven and stated as a lead. .github/workflows/half-state-patrol.yml was modified on origin/main within the last few hours — it arrives in the merge range of at least one open PR taken this morning. ⛔ This seat did not read that diff and does ⛔ not assert a causal link; whoever takes this card should read it first, because a recent edit to the caller is the cheapest hypothesis.

Suggested first act for whoever takes it

Re-run the workflow on demand (the header says the on-demand path exists beside the schedule) and see whether the anchor's Swept line advances. If it does, the script is fine and the question is the schedule; if it does not, the question is the script.

Dedup words

half-state patrol · Swept heartbeat · anchor 9857 stale · scheduled run missing · standing caller


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions