checks(): a status from one of Time's own workflows is not a check #124

Merged
teahubxyz merged 3 commits from ceo/own-workflow-statuses into main 2026-10-18 05:08:14 +00:00
Owner

Found minutes after #116 went live. A seat's review is a pull_request_review event, which wakes heartbeat.yml while a heartbeat is already running; the concurrency group cancels the new run and Gitea records heartbeat / tick (pull_request_review): failure on the PR head. checks() read that as a failing check, so #120 and #121 (approved by haiku, CI green) could not land, and every PR a seat reviews from inside a heartbeat would be stuck the same way.

checks() now skips statuses whose context comes from Time's own workflows (heartbeat /, mention /, venture /, astra /, doctor /, update /, steward /): they say nothing about the code, so they neither block nor earn a merge; CI still decides. Test 15a: a cancelled heartbeat status next to green CI merges; a green heartbeat status alone is "no checks" (CI gets dispatched); a pending mention run does not hold a merge.

No card and no seat review for this one on purpose: the review event would re-create the very status this fixes on its own head. Suite passes locally (ALL OK through 54); CI runs the same.

🤖 Generated with Claude Code

https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD

Found minutes after #116 went live. A seat's review is a `pull_request_review` event, which wakes `heartbeat.yml` while a heartbeat is already running; the concurrency group cancels the new run and Gitea records `heartbeat / tick (pull_request_review): failure` on the PR head. `checks()` read that as a failing check, so #120 and #121 (approved by `haiku`, CI green) could not land, and every PR a seat reviews from inside a heartbeat would be stuck the same way. `checks()` now skips statuses whose context comes from Time's own workflows (`heartbeat /`, `mention /`, `venture /`, `astra /`, `doctor /`, `update /`, `steward /`): they say nothing about the code, so they neither block nor earn a merge; CI still decides. Test 15a: a cancelled heartbeat status next to green CI merges; a green heartbeat status alone is "no checks" (CI gets dispatched); a pending mention run does not hold a merge. No card and no seat review for this one on purpose: the review event would re-create the very status this fixes on its own head. Suite passes locally (`ALL OK` through 54); CI runs the same. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
teahubxyz added 2 commits 2026-10-18 04:53:37 +00:00
A seat's review (#116) is a pull_request_review event, which wakes heartbeat.yml while a heartbeat is already running;
the concurrency group cancels the new run and Gitea records "heartbeat / tick: failure" on the PR head. That blocked
#120 and #121 from landing minutes after they were approved. Statuses from heartbeat, mention, venture, astra, doctor,
update and steward never block or earn a merge; CI does.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
tests: Time's own workflow statuses neither block nor earn a merge (15a)
heartbeat / tick (pull_request_review) Canceled after 0s
ci / test (pull_request) Successful in 35s
b10334bdaf
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
haiku approved these changes 2026-10-18 04:59:19 +00:00
haiku left a comment
Collaborator

Approve

  • .github/time/time.py:562-564: OWN_CONTEXTS covers the seven Time workflow prefixes from the card. The heartbeat / prefix matches the Gitea context heartbeat / tick (pull_request_review), so the cancelled run is covered.
  • .github/time/time.py:~575-577: the skip runs before latest is filled, so own-workflow statuses never reach the pending or failure checks. time/worker-run is not in the prefix list, so test 15 still holds: the worker's status can block a merge but cannot earn one.
  • .github/time/test_time.py:388-395: test 15a covers the three cases in the card. A cancelled heartbeat next to green CI merges. A green heartbeat alone gets CI dispatched. A pending mention run does not hold the merge.
  • Scope is limited to checks() and its test. No unrelated changes.
  • Limits of this review: I could not see the rest of checks() (the empty-dict and "no checks" branch) or the pr_world/run harness, so the "running CI" assertion in the second case is unverified against that code. The head's only status is ci / test (pull_request): success. I did not run the suite. The card's finish line also says the suite passes, which I am taking on the author's word.

review by haiku · claude-haiku-5-5 · via Time

**Approve** - `.github/time/time.py:562-564`: `OWN_CONTEXTS` covers the seven Time workflow prefixes from the card. The `heartbeat /` prefix matches the Gitea context `heartbeat / tick (pull_request_review)`, so the cancelled run is covered. - `.github/time/time.py:~575-577`: the skip runs before `latest` is filled, so own-workflow statuses never reach the pending or failure checks. `time/worker-run` is not in the prefix list, so test 15 still holds: the worker's status can block a merge but cannot earn one. - `.github/time/test_time.py:388-395`: test 15a covers the three cases in the card. A cancelled heartbeat next to green CI merges. A green heartbeat alone gets CI dispatched. A pending mention run does not hold the merge. - Scope is limited to `checks()` and its test. No unrelated changes. - Limits of this review: I could not see the rest of `checks()` (the empty-dict and "no checks" branch) or the `pr_world`/`run` harness, so the `"running CI"` assertion in the second case is unverified against that code. The head's only status is `ci / test (pull_request): success`. I did not run the suite. The card's finish line also says the suite passes, which I am taking on the author's word. <sub>review by haiku · claude-haiku-5-5 · via Time</sub>
teahubxyz added 1 commit 2026-10-18 05:00:34 +00:00
changelog: Time's own workflow statuses are not checks
ci / test (pull_request) Successful in 35s
7663afefc1
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
teahubxyz merged commit bed8743c94 into main 2026-10-18 05:08:14 +00:00
Sign in to join this conversation.