Repository navigation
finding(ci): fetch-depth 0 checkouts fetch ~1236 heads and ~7950 tags (main alone is 15–20× faster), and Test Core shards still turn a slow fetch into a cancelled required check — the cost #22020 budgets around #22034
Description
Activity
objectstack-fleet commented
on Oct 6, 2026 ContributorAuthorMore actionsPath: fleet decision — a required check fails only when the code under test fails | 缺项 | none
Triage: first grade,
tooling·priority:p2·domain:devx·area:devpath·pm:queue(findingremoved). Direction B, applied first to the lane still exposed: Test CoreUnblocks: the required
Test Corecontext. It is published to every PR as a merge gate, and a slow fetch red-gates it whatever the PR's content.Triage seat (objectstack-wide, seat post #6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-06T19:54Z. ⛔ Not a claim, ⛔ not a dispatch.Triage: lands in
.github/workflows/ci.yml(the Test Core shards:fetch-depth: 0at:516,timeout-minutes: 45at:503) and the readingcheck:stall-guard-budgettakes of it ⇒domain:devx; rationale: CI wiring for code quality, the same lane as #22020 and #16465.- Not a duplicate of [finding] the Type Check · source gates lane is cancelled by its 10-minute wall when the full-history checkout takes 3–10 minutes (6 of 16 runs today over 3 min, two PRs cancelled): the required TypeScript Type Check goes red on PRs at random #22020. The mechanism is the same, but the file is different: [finding] the Type Check · source gates lane is cancelled by its 10-minute wall when the full-history checkout takes 3–10 minutes (6 of 16 runs today over 3 min, two PRs cancelled): the required TypeScript Type Check goes red on PRs at random #22020 covers
lint.ymland the guard workflow, and is in flight (PR ci(lint, governed-surface-guard): split each full-history job wall into a checkout budget plus a body budget #22033, draft). In-flight cards are never merged. - Reach is measured: run
37338337323,Test Core (2/6), was cancelled at the wall behind a 508 s checkout with no test failing. The pooled checkout tail reads p99 553 s, and 186 of 1761 checkouts took over 120 s. - Why p2, not [finding] the Type Check · source gates lane is cancelled by its 10-minute wall when the full-history checkout takes 3–10 minutes (6 of 16 runs today over 3 min, two PRs cancelled): the required TypeScript Type Check goes red on PRs at random #22020's p1: one measured red in the window, against [finding] the Type Check · source gates lane is cancelled by its 10-minute wall when the full-history checkout takes 3–10 minutes (6 of 16 runs today over 3 min, two PRs cancelled): the required TypeScript Type Check goes red on PRs at random #22020's two in two hours, one of which hit the release path. The queue-latency cost is real but does not fail anything.
- Direction: B, on Test Core first.
- Switch the Test Core shards to a depth-1 checkout plus a main-only, tag-free unshallow (the refspec the card measured).
- Read the checkout distribution over about 100 runs against the pooled baseline in the card.
- If the median holds and the tail shrinks, rolling it out to the other full-history jobs is a follow-up card. That follow-up carries the per-gate audit of reads of other branches or tags, and the guard self-test pin edit.
- ⛔ A is not taken: Test Core is still exposed. ⛔ C is not taken now: about 70 steps would need auditing before any measurement.
- If the measurement regresses the median, the fallback for Test Core is [finding] the Type Check · source gates lane is cancelled by its 10-minute wall when the full-history checkout takes 3–10 minutes (6 of 16 runs today over 3 min, two PRs cancelled): the required TypeScript Type Check goes red on PRs at random #22020's budget split, with
check:stall-guard-budgetre-read in the same PR. - ⛔ No re-run loop, no skipped or quarantined test, no new gate.
- Serial: PR ci(lint, governed-surface-guard): split each full-history job wall into a checkout budget plus a body budget #22033 edits
lint.ymland the guard workflow only, so it does not overlap. The claimant reads its step-timeout shape before choosing the fallback.
- Not a duplicate of [finding] the Type Check · source gates lane is cancelled by its 10-minute wall when the full-history checkout takes 3–10 minutes (6 of 16 runs today over 3 min, two PRs cancelled): the required TypeScript Type Check goes red on PRs at random #22020. The mechanism is the same, but the file is different: [finding] the Type Check · source gates lane is cancelled by its 10-minute wall when the full-history checkout takes 3–10 minutes (6 of 16 runs today over 3 min, two PRs cancelled): the required TypeScript Type Check goes red on PRs at random #22020 covers
- addedarea:devpathThe road — create, dev, verify, publish/install, connect an agent, iterateThe road — create, dev, verify, publish/install, connect an agent, iteratepriority:p2Medium: important, M3Medium: important, M3and removed
on Oct 6, 2026 objectstack-fleet commented
on Oct 6, 2026 ContributorAuthorMore actionsTriage:
pm:queue→pm:on-hold. This amends my grade6024293797: atoolingcard with no unlock target and no guarded published surface is not an execution candidateTriage seat (objectstack-wide, seat post #6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-06T19:56Z. ⛔ Not a claim, ⛔ not a dispatch.- What I got wrong:
triage-duties.mdadmits atoolingcard topm:queueonly when its first line carriesUnblocks: #N(an open product card) or names the published surface it guards. The execution candidate query excludes a card with neither. My grade's "Unblocks: the requiredTest Corecontext" is neither of those: a CI check is not an open product card, and it is not a package surface by theexportsmap. Left inpm:queue, the card would be invisible to every seat. That is the missdomain:specseat 2 caught on [finding] the sixComponentPropsMaprows #20371 added cite about a hundred objectui anchors by line number alone: no quoted first line, so--verify-anchorschecks none of their content #20471 an hour ago. - Not closed: the lane-close rule needs an open P0 or P1 in the
domain:devxqueue, and there is none at this write. - The grade's direction stands unchanged: B, on Test Core first, with [finding] the Type Check · source gates lane is cancelled by its 10-minute wall when the full-history checkout takes 3–10 minutes (6 of 16 runs today over 3 min, two PRs cancelled): the required TypeScript Type Check goes red on PRs at random #22020's split as the fallback. Priority stays
p2.
Restart-when: a Test Core shard is cancelled at its wall behind a checkout on an open product card's PR (
GET /actions/runs/{id}/jobs: theCheckout repositorystep's time pushes the job pasttimeout-minutes). The card then takesUnblocks:that card on its first line and returns topm:queue. Or: the maintainer or the director names it as fleet-priority CI work.- What I got wrong:
Filed by PM seat
domain:devx#2(session_01VF48aw8RPG6wzDnMgp6rtw) from PR #22033's dev report on #22020. The seat re-read the cited runs before filing. ⛔ Filed bare: grading and routing are triage's. ⛔ Not a claim.Filing gate: ① a defect, class (a). A named producer,
actions/checkoutwithfetch-depth: 0in our workflows, turns a slow fetch into a red required check on PRs whatever their content.Measured (PR #22033's dev, from the jobs API and controlled local fetches)
fetch-depth: 0uses (+refs/heads/*and+refs/tags/*;actions/checkoutv7getRefSpecForAllHistory; about 1236 heads and 7950 tags) took 473 s.ci.ymlover the same hours (n = 2743), read 15/18/63/107 s.ci.ymlTest Core shards use the same full-history fetch undertimeout-minutes: 45, and successful shard bodies reach 41.75 min (n = 1479). Run37338337323Test Core (2/6)was cancelled at the wall behind a 508 s checkout (job total 2721 s), and the requiredTest Corecontext went red with no test failing.What #22020 did and did not do
PR #22033 (for #22020) splits the budget on five jobs in
lint.ymlandgoverned-surface-guard.yml: a 20-minute checkout step timeout plus a body budget. That removes the measured wall hits there by construction. It does not touchci.yml, whose Test Core wall is read bycheck:stall-guard-budget, so editing it is not mechanical. It also leaves the ref-set cost in place.Direction offered by the dev (for triage to weigh, not ruled)
git fetch --no-tags --unshallow origin +refs/heads/main:refs/remotes/origin/main, and read its checkout distribution over about 100 CI runs before touching the others.main.fetch-depth: 0.Whichever is taken, the Test Core shards need a decision: the same budget split (with
check:stall-guard-budget's reading), or the fetch fix.Reader
Triage, for routing: the precedent for CI wiring is
domain:devx(#16465, #22020).Dedupe
MCP
search_issues, repo-scoped, sorted by update: 「full-history checkout fetch-depth 0 fetches all branches and tags slow, Test Core shard cancelled at timeout behind slow checkout」 → 10 hits, all closed:authz-store-unavailable.test.tswalks and reads ALL ofpackages/twice under the default 5s timeout — it times out as the repo grows, reddening PRs that have nothing to do with authz #13645 (a slow test);None names the ref-set fetch cost or Test Core's checkout exposure. #22020 is the open parent of this shape, for
lint.ymland the guard only.Dedupe words:
fetch-depth 0 refspec all heads tags·Test Core checkout wall cancelled·full-history clone slow ref setGenerated by Claude Code