Skip to content

ci: a diagnostic upload must not fail a required check - #27

Merged
EricAndrechek merged 1 commit into
mainfrom
upload-not-fatal
Sep 13, 2026
Merged

EricAndrechek merged 1 commit into
mainfrom
upload-not-fatal

Conversation

@EricAndrechek

Copy link
Copy Markdown
Member

Both actions/upload-artifact steps sit in required jobs — go and artifacts — with no continue-on-error. So anything that refuses an upload reddens two required checks and blocks every pull request.

Not hypothetical — it happened today

The org's Actions artifact storage filled, 97.6% of it one sibling repository (20.36 GB across 408 rows), and GitHub refused every CreateArtifact in the org:

##[error]Failed to CreateArtifact: Artifact storage quota has been hit.
Unable to upload any new artifacts. Usage is recalculated every 6-12 hours.

A sibling's scheduled job died on exactly this — two steps after completing its real work successfully, so a healthy run was filed as a failure under a title that misdirected.

The SDK escaped by timing alone. Its last run predated the ceiling. I dispatched a run to test it (34768470404) and both uploads succeeded — but only because the sibling had already deleted 16.8 GiB. That is the measurement, not the fix.

Why this is the right call and not a loosening

scratch/check-standalone.json is the census scripts/check-standalone.sh reads its own verdict from. The script has already decided by the time the upload step runs. The JSON is how a human reads a failure afterwards — it is never how the verdict is reached, and the job's correctness does not depend on it landing. if-no-files-found: ignore already marks it best-effort.

So gating a required check on it was always wrong; the storage event only made it visible.

A genuine upload failure stays visible — the step still shows red in the run, it just no longer fails the job.

Safety

No job name: changed (verified by diffing every name: line against main) — branch protection keys required checks on those. lint-actions (actionlint + shellcheck) passes.

🤖 Generated with Claude Code

https://claude.ai/code/session_018ckJDLjWhAAttQVrYnQEJD

Both `actions/upload-artifact` steps sit in REQUIRED jobs — `go` and
`artifacts` — with no continue-on-error, so anything that refuses an upload
reddens two required checks and blocks every pull request.

That is not hypothetical. On 2026-09-13 the org's Actions artifact storage
filled (97.6% of it one sibling repository, 20.36 GB across 408 rows) and
GitHub refused every CreateArtifact in the org: "Artifact storage quota has
been hit. Unable to upload any new artifacts." A sibling's scheduled job died
on exactly this, two steps after doing its real work successfully.

The SDK escaped only by timing — its last run predated the ceiling, and by
the time a dispatched run tested it the sibling had deleted 16.8 GiB. Both
uploads then succeeded (run 34768470404), which is the measurement, not the
fix.

What the artifact is: scratch/check-standalone.json, the census
scripts/check-standalone.sh reads its own verdict from. The script has
already decided by the time the upload runs; the JSON is how a human READS a
failure afterwards, never how the verdict is reached. `if-no-files-found:
ignore` already marks it best-effort. So the job's correctness does not
depend on the upload landing, and letting it gate a required check was
always wrong — the storage event only made it visible.

A genuine upload failure stays visible: the step itself still shows red in
the run, it simply no longer fails the job.

No job `name:` changed — branch protection keys required checks on those.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ckJDLjWhAAttQVrYnQEJD
@EricAndrechek
EricAndrechek merged commit f92e68e into main Sep 13, 2026
14 checks passed
@EricAndrechek
EricAndrechek deleted the upload-not-fatal branch September 13, 2026 16:29
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.

1 participant