Skip to content

PR-level AI gate and decision-cost perf gate have not passed once since 2026-07-31 (58 runs, 0 successes) — CLAUDE.md's mandated AI evidence is unobtainable #6967

Description

@matthewevans

Summary

The PR-level Paired-seed AI gate and Decision-cost perf gate jobs in .github/workflows/ai-gate.yml have not produced a passing run since at least 2026-07-31. Every run either hits the timeout-minutes: 60 wall and is cancelled, or fails outright.

CLAUDE.md requires these for AI work — "AI behavior changes must run cargo ai-gate and refresh baselines only with the paired-seed report attached." That requirement is currently unsatisfiable in CI: the gate produces no verdict at all, so an AI-behavior PR merges with no gate evidence rather than with a green one. The gate is not failing loudly; it is silently producing nothing.

Evidence

Sampled the 58 most recent completed AI gate workflow runs (gh run list --workflow="AI gate" --limit 60), oldest in sample 2026-07-31T22:39:27Z:

conclusion count
cancelled (60-min timeout) 49
failure 9
success 0

Zero successes. Affected branches are unrelated to each other and include main, so this is not one bad change:

main, card/captain-marvel-apex-avenger, claude/jetfire-characters-3b456b, claude/phase-developer-track-card-o1e67k, feat/combo-detector-player-feedback, fix/5237-all-will-be-one-targets, fix/6507-depletion-sacrifice-rider, fix/6640-serpent-society-ward-poison-cost, fix/6942-ai-empty-selection, fix/ai-target-sourced-damage-lethality, fix/prune-connections-map-740b, mech/static-forced-attack, ship/ai-reliability-fixes, ship/canonicalize-delayed-trigger-lifecycle

Recent cancelled runs (all ~61 min wall clock):

run branch start end
30821722308 feat/combo-detector-player-feedback 08-03T14:14 08-03T15:15
30821719213 fix/6942-ai-empty-selection 08-03T14:14 08-03T15:14
30816542439 feat/combo-detector-player-feedback 08-03T13:08 08-03T14:10
30814076784 feat/combo-detector-player-feedback 08-03T12:33 08-03T13:34
30786917498 card/captain-marvel-apex-avenger 08-03T05:21 08-03T06:23
30786622542 mech/static-forced-attack 08-03T05:14 08-03T06:15

Where the time goes

Step timings from run 30821719213 show setup is healthy and the gate step itself consumes the entire budget:

Paired-seed AI gate

Restore AI card data caches   14:14:37 → 14:14:42   (5s)
Generate card data            14:14:42 → 14:22:47   (8m05s)
Run quick AI gate             14:22:47 → 15:14:25   (51m38s, CANCELLED)

Decision-cost perf gate

Generate card data            14:14:35 → 14:22:15   (7m40s)
Run decision-cost perf gate   14:22:15 → 15:14:23   (52m08s, CANCELLED)

So ~8 minutes of the 60 is card-data generation and ~52 minutes is the gate binary, which never terminates within budget. Both jobs are timeout-minutes: 60 (ai-gate.yml:32 and :121).

Open questions for whoever picks this up

  1. Did the gate get slower, or did it start hanging? A gate that legitimately needs >52 min is a different bug from one that livelocks. Worth capturing whether it is making progress when killed — the cancellation discards the step log tail, which is itself part of why this has gone unnoticed.
  2. Is the 8-minute "Generate card data" step a cache miss? ai-gate.yml cardgen cache key never sees AtomicCards.json (restores before download): stale card-data + phantom sharing with ci.yml #5456 (closed) was a cardgen cache-key ordering bug in this same workflow; worth confirming that fix is still effective before assuming the budget is the problem.
  3. Should the gate fail loudly instead of being cancelled? A cancelled job reads as neutral in the checks UI and does not block anything, which is how three days of no coverage went unremarked. A hard failure, or a much shorter timeout with an explicit "gate did not converge" message, would surface this immediately.

Related

Confidence

  • Confirmed by direct query of the GitHub Actions API: the 58/0 success rate, the branch list, and the step timings above.
  • Not established: the root cause of the 52-minute gate step. I have not run the gate locally and am not claiming to know whether it is slow, hung, or livelocked.

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