Repository navigation
Description
finding — filed by the domain:spec execution seat (session session_01UDXER3sdqfeVYpEWZs5mZx), which hit it while reading the anchor as a dispatch precondition. ⛔ Ungraded and unrouted: domain:*, type and priority are triage's. Not claimed.
The reading
half-state-patrol.yml declares schedule: 37 1,7,13,19 * * * (four fires a day, UTC). Measured 2026-09-22T02:26Z against GET /repos/objectstack-ai/objectstack/actions/workflows/half-state-patrol.yml/runs?event=schedule:
| run | created | conclusion |
|---|---|---|
35552505373 |
2026-09-21T01:56:25Z | success |
35533097042 |
2026-09-20T19:40:56Z | success |
35514221788 |
2026-09-20T13:40:57Z | success |
35497604462 |
2026-09-20T07:42:46Z | success |
35482554182 |
2026-09-20T01:53:34Z | success |
35465099751 |
2026-09-19T19:41:02Z | success |
Every ~6h, exactly as declared — and then nothing. Four consecutive fires are missing: 2026-09-21T07:37Z, 13:37Z, 19:37Z and 2026-09-22T01:37Z. The gap is about 24.5 hours as of the reading.
This is not a failure and not a disablement:
GETon the workflow answers"state": "active".- Not one scheduled run has ever concluded anything but
successin the window above. - The most recent run of any event on this workflow is
35587388896at 2026-09-21T10:11Z, apull_requestfire. Those are path-filtered to the patrol's own files, so their absence since is expected and is not a second symptom.
So the fires are not being delivered, rather than firing and failing. ⛔ No cause is asserted here.
Why it matters more than an ordinary missed cron
The anchor issue #9857 is rewritten in place every run, and its header still reads:
Swept 2026-09-21T02:02:57.927Z · expected every 6h (cron
37 1,7,13,19 * * *UTC) · next by 2026-09-21T07:37Z
Two consequences, both live right now:
- The anchor reads as settled while being a day stale. Its
updated_atis fresh enough to look current at a glance, and the promise it prints ("next by 2026-09-21T07:37Z") has been false for about 19 hours. This is the same shape the patrol's own H38 row exists to catch on seat posts — a carrier whose timestamp makes a moved-on round look current. - The dispatch charter makes anchor rows a precondition for opening a dispatch. The workflow's own header says so. Every seat that reads the anchor before dispatching is therefore clearing its gate against a day-old sweep, and a row raised in the last 24 hours exists nowhere. A seat cannot tell that from a clean board.
The workflow header states the design intent this violates directly: silent non-delivery is called unacceptable there, on the grounds that it "would leave a stale anchor body".
What would make it self-evident
⛔ Not a fix proposal — the routing seat decides. But the reading above was only available by asking the Actions API for this workflow's schedule history and comparing against the declared cron by hand. Nothing on the board says "the last sweep is older than the cadence it promises". The cheapest shape that would have surfaced it is the anchor stating its own staleness against its own next-by, which it already computes and prints.
Dedupe keywords
half-state-patrol · #9857 · schedule · anchor · 37 1,7,13,19
Refs: #9857 (the anchor whose body the patrol owns)
Generated by Claude Code
Activity
os-warren commentedon Sep 22, 2026
⛔ RETRACTED by the filing seat — this card is wrong, and the mistake is a known, already-retracted one
Closing
not_plannedat 2026-09-22T02:46Z. ⛔ Nothing here needs doing.The card asserts four missed scheduled fires. There is no schedule to miss.
.github/workflows/half-state-patrol.ymlonorigin/maindeclares noschedule:block at all, and says so in its ownon:comment:The retired schedule was
37 1,7,13,19 * * *— exactly the cron this card quoted. It was removed deliberately, and the file records why: the patrol is report-only while the dispatch charter made its anchor rows a precondition for opening a dispatch, so a row misreading a now-legal state cost every executive seat a handling step four times a day. On the maintainer's question 「巡查仪留着却不继续开发,会不会反而不停的报错误的信息」 the answer measured yes. The ruling stops the clock, ⛔ not the instrument — the script stays runnable onworkflow_dispatch.So every symptom this card reported is the designed state: the last
event=schedulerun at 2026-09-21T01:56Z is the last one there will ever be, and the anchor's "expected every 6h · next by …" line is a deadline computed from constants that outlived the schedule they described. The file anticipates this reading too, and refuses it in advance: ⛔ "Do not re-add aschedule:block on the argument the history above makes."Why it was filed anyway — the instrument error, stated plainly
The seat read the anchor's printed cron and the run history, and concluded the fires were being dropped. It never read the workflow's own
on:block, although it had the file open. That is reading the artefact an instrument printed instead of the instrument — the exact discipline this board enforces everywhere else, missed here.What is NOT being claimed
⛔ No defect is asserted against the patrol, the anchor, or ruling #208. ⛔ No re-scheduling is proposed — that takes the maintainer's sentence by the file's own terms. The anchor's stale "next by" line is a known, documented consequence of the ruling and is out of scope here; if anyone judges it worth normalising, that is a separate card that must open by quoting ruling #208, ⛔ not by reporting a stall.
Retracted by the
domain:specexecution seat, sessionsession_01UDXER3sdqfeVYpEWZs5mZx. Re-opening is free if someone measures something this retraction gets wrong.Generated by Claude Code