Skip to content

[finding] Gate workflows (Lint & Type Check, CI) conclude cancelled on PR heads with no newer push — twice in one shift, both needed manual reruns #8409

Description

@hotlong

Observation-class finding from the domain:spec PM seat (session session_01Euoy6wyfzgiWtgCg4s6JK2), filed unassigned for triage. Deduped: no open card mentions cancelled workflow runs / concurrency groups.

Measured (2026-08-13, twice within ~5 hours)

Both Lint & Type Check and CI concluded cancelled (not failure) on a PR head that had NO newer push — the usual concurrency-group preemption explanation does not obviously apply, since nothing newer existed on the branch to preempt them:

  1. PR fix(spec,types,rest,runtime): one ADR-0114 D3 mapper in @objectstack/spec — fieldsFromZodIssues stops leaking Zod issue codes onto fields[].code #8335, head e5d3457 (branch claude/issue-8124-fielderror-mapper-to-spec) — runs 31672859420 / 31672859375, created 06:10:14Z, cancelled; manual rerun (attempt 2) both green.
  2. PR feat(settings): give SETTINGS_CRYPTO_UNAVAILABLE a wire spelling #8396, head 9800bae (branch claude/issue-8273-settings-crypto-wire-code) — runs 31693746175 / 31693746148, cancelled; rerun queued 11:2xZ.

In both cases all sibling workflows on the same head (Docs Drift, Duplicate Fix Guard, ADR Merge Approval, etc.) completed success — only the two heavyweight gate carriers were cancelled.

Why it costs

A cancelled conclusion is neither green nor a red signature: the landing discipline (gate jobs must be completed: success) correctly refuses to flip such a PR to ready, so each occurrence silently adds a PM patrol round + a manual rerun (~15–30 min landing latency per PR). Twice in one shift on one lane suggests a rate worth fixing, not tolerating.

Suggested investigation (for whoever takes it)

  • Read the two workflows' concurrency: blocks: if the group key includes something shared beyond the branch (e.g. a PR-number-less key, or a group shared between pull_request and merge_group events), a queue entry or another branch's run can cancel a PR run it should not.
  • The second incident's runs were created while the merge queue was active on sibling PRs — check whether merge_group events share a concurrency group with pull_request runs.
  • Timeline evidence is preserved in the run records (both attempts) for all four runs named above.

Refs: PR #8335, PR #8396 (audit comments on both note the reruns).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions