fix(ci): filter blobs in the standalone workflows and bound gate-attestation - #36
Merged
Merged
Conversation
…station The blob-filter fix landed only inside hybrid-gate.yml. Both standalone reusable workflows still clone full history unfiltered, and gate-attestation has no timeout at all, so it inherits GitHub's 360-minute ceiling. Both jobs are metadata-only -- every git call in either file is a git log --format= -- so blob:none, which keeps commits and trees and omits contents, cannot starve them. This matters because an overrunning checkout reports cancelled, the same status GitHub uses for a superseded run. The two are indistinguishable in the checks list, so a slow clone presents as a policy failure. These are reusable workflows, so every adopting repo inherits the defect.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Finding
The blob-filter fix landed in
hybrid-gate.ymlonly. The two standalone reusable workflows inthis repo still do unfiltered full-history checkouts, and one of them has no timeout at all.
Evidence
no-ai-attribution.yml— jobno-ai-attribution,timeout-minutes: 5,actions/checkoutwithfetch-depth: 0and nofilter:. This is the exact pattern commit963532686fixed insidehybrid-gate.yml'scheck-trailerandai-attributionjobs; the standalone file was not touched.gate-attestation.yml— jobgate-attestation,actions/checkoutwithfetch-depth: 0, nofilter:, and notimeout-minuteskey anywhere, so it inherits GitHub's 360-minute ceiling.git log --format=(
no-ai-attribution.yml:71,74;gate-attestation.yml:50). Neither reads a file's bytes, soblob:none— which omits contents while keeping commits and trees — cannot starve them.Why this matters
An overrunning
actions/checkoutreportscancelled— the same status GitHub uses for asuperseded run. The two are indistinguishable in the checks list, so a slow clone reads as a normal
supersede while presenting as a policy or gate failure. On aletheia's
mainthis class produced 3cancelled runs out of 5, one at exactly 5m02s inside
actions/checkout, and it read as a brokenbuild rather than a slow clone.
These are reusable workflows, so the defect is inherited by every adopting repo rather than
confined to one. Fixing
hybrid-gate.ymlalone left the standalone callers exposed.The missing timeout is a separate, quieter cost: with no bound, a wedged clone burns six hours of
metered minutes per occurrence against a check that never resolves. CI minutes are the fleet's
binding constraint at high dispatch parallelism, so an unbounded job is a real budget hazard, not a
tidiness point.
Desired correction
Add
filter: blob:noneto both checkouts, and givegate-attestationan explicittimeout-minutes: 10— generous for a metadata-only clone plus onegit log, and still fast tofail when something is genuinely stuck.
Done when:no checkout in this repo fetches blobs for a metadata-only job, and no job here relieson the default 360-minute ceiling.