Skip to content

ci: raise the conditional-compilation cap so checkout stops killing the job - #809

Merged
FenrysUnchained merged 1 commit into
bleeding-edgefrom
claude/ci-checkout-timeout
Aug 26, 2026
Merged

ci: raise the conditional-compilation cap so checkout stops killing the job#809
FenrysUnchained merged 1 commit into
bleeding-edgefrom
claude/ci-checkout-timeout

Conversation

@FenrysUnchained

Copy link
Copy Markdown
Contributor

One functional line: timeout-minutes: 520 on the conditional-compilation job. The rest of the diff is the comment explaining why.

The failure

That job was cancelled mid-checkout three times on 2026-08-26, across two unrelated branches — #808 once, claude/arcade-launch-screen-revamp-driys twice. Every check step showed skipped, so the checker never ran a line, and it surfaced as a red X that said nothing about the code:

Checkout                          17:34:33 → 17:39:33   (5m00s)  cancelled
Verify the checker still detects                        (0s)     skipped
Check conditional compilation                           (0s)     skipped
Check prism shader wiring                               (0s)     skipped

Why 5 was the wrong number

The cap was sized for the checks, which take seconds. In practice it bounds the checkout, which the job does not control:

What the job downloads ~1.4 GB of Assets/
What it actually reads ~5 MB — 608 KB of .cs, 4.7 MB of .shadergraph / .shader / .hlsl

.gitattributes carries only two filter=lfs rules, so nearly all binary assets live in ordinary git and fetch-depth: 1 still pulls the lot. Healthy runs finish in 57–90 s; when throughput dips they don't, and at 5 minutes the job gets killed before it starts working.

Raising the ceiling does not make the job slower — it only stops a slow clone being reported as a failing check. At 20 minutes, a run that genuinely reaches the cap is a real fault worth failing on.

What this deliberately does not do

The narrower fix is to stop fetching what the job never reads: filter: blob:none plus a sparse-checkout of *.cs / *.shadergraph / *.shader / *.hlsl / Tools. Left for its own change, because it needs a validation pass rather than a guess.

Verified in passing that it would at least fail safely: with a shader file absent, the wiring checks raise FileNotFoundError rather than passing, so a wrong sparse pattern breaks CI visibly instead of going green on an unchecked tree. Worth knowing before anyone attempts it.

The root cause beneath both is that the binary assets are not in LFS, which slows every job in this repo including the Unity build. That's a project-wide migration, not this PR.

Verification

  • Workflow still parses; all three jobs (resolve, conditional-compilation, unity) load
  • conditional-compilation's step list is unchanged
  • unity's own timeout-minutes: 240 untouched — the 5 was a deliberate per-job choice, not a default, so this raises it rather than removing it
  • Functional diff is exactly - timeout-minutes: 5 / + timeout-minutes: 20

This PR's own CI run is the test: it exercises the changed job.

🤖 Generated with Claude Code


Generated by Claude Code

…he job

The job was cancelled MID-CHECKOUT three times on 2026-08-26, across two
unrelated branches (PRs #808 and the arcade-launch-screen branch, twice). Every
check step showed "skipped" -- the checker never ran a line -- so it surfaced as
a red X that said nothing at all about the code.

timeout-minutes: 5 was sized for the checks, which take seconds. In practice it
bounds the CHECKOUT, which the job does not control: Assets/ is ~1.4 GB and
almost none of it is in LFS (two filter=lfs rules in .gitattributes), so even at
fetch-depth 1 this job pulls ~1.4 GB to read ~5 MB of .cs and shader sources.
Usually that lands inside a minute -- healthy runs finish in 57-90s -- and when
throughput dips it does not.

Raising the ceiling does not make the job slower; it only stops a slow clone
being reported as a failing check. At 20 minutes a run that actually reaches the
cap is a real fault worth failing on.

The narrower fix is to stop fetching what this job never reads (filter:
blob:none + sparse-checkout for *.cs / *.shadergraph / *.shader / *.hlsl /
Tools). Deliberately not done here: it needs its own validation pass. Verified
in passing that it would at least fail SAFELY -- with a shader file absent the
wiring checks raise FileNotFoundError rather than passing -- so a wrong pattern
breaks CI visibly instead of going green on an unchecked tree. The root cause
under both is that the binary assets are not in LFS, which slows every job here
including the Unity build.

Validated: the workflow still parses (all three jobs), conditional-compilation's
steps are unchanged, and the functional diff is one line.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PsUBppM6FtPcfyiZSM9Eun
@FenrysUnchained
FenrysUnchained merged commit c719533 into bleeding-edge Aug 26, 2026
3 checks passed
@FenrysUnchained
FenrysUnchained deleted the claude/ci-checkout-timeout branch August 26, 2026 21:31
Soncub pushed a commit that referenced this pull request Aug 26, 2026
…stered)

- QA-MAELSTROM-POOL PASS -> ARCHIVE (all seven modes present, clean load in/out, scoring ok)
- scan 3bbe4f7 -> c719533 (PRs #583-#809), 221 commits / ~25 PRs
- new P0: QA-SPARROW-SALVO-MODE (#790, new Sparrow party game 'Salvo')
- new P1: QA-SPARROW-VISUAL-REWORK (#801/#794/#791/#787/#786/#784/#798),
  QA-UI-ABILITY-ICON-SYSTEM (#803/#804), QA-UI-THEME (#795),
  QA-ECOLOGY-TIME-BREEDING (#774), QA-SCARAB-BALL-FIXES (#807/#780/#773)
- folded: prism-shield color/pop (#771/#778/#785), worm colony (#793), quadfish/AI/camera fixes,
  the QA workflow itself merged upstream (#800/#808), CI (#809)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P3Nu7PRozvXnV4W41rEqNq
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants