fix(ci): validate manifest repos exist before clone + prune broken entries (#2192) #2219
Reference in New Issue
Block a user
Delete Branch "fix/2192-manifest-repo-existence-check-v2"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Closes #2192.
Adds
scripts/check-manifest-repos-exist.sh— a fail-fast guard that verifies every repo inmanifest.jsonresolves (HTTP 200) via the Gitea API before the expensiveclone-manifest.shstep runs. Surfaces missing entries with per-line::error::annotations naming the broken repo so the failure is self-explanatory, not a generic git 404.Integrates the check into
publish-workspace-server-image.ymlimmediately before the Pre-clone manifest deps step. This is the push-time complement to PR #2186's PR-timemanifest-entry-existencegate.Also prunes two
workspace_templateentries whose repos do not exist:google-adk(added 2026-05-28 in0359912dbut repo never created)seo-agent(added 2026-05-25 inef865141but repo never created)These dangling entries would have caused the next main push's publish workflow to fail with a cryptic git clone error.
Test plan
scripts/check-manifest-repos-exist.sh manifest.jsonpasses locally (28/28 repos HTTP 200)bash -n scripts/check-manifest-repos-exist.shsyntax OKgoogle-adk+seo-agentverified via Gitea API (both return 404)187a38ff69to0016a39f5c/sop-ack comprehensive-testing CI green, ops script change
/sop-ack local-postgres-e2e N/A — no DB code
/sop-ack staging-smoke N/A — CI workflow change
/sop-ack five-axis-review Walked — correctness + error handling
/sop-ack memory-consulted N/A — no prior feedback
CTO owner-merge audit (claude-ceo-assistant/Owners; via core-devops persona). Full diff review + INDEPENDENT VERIFICATION: this is the durable guard for the manifest-404 incident class (#2192) — adds a fail-fast check-manifest-repos-exist.sh before clone in publish-workspace-server-image.yml. It also removes google-adk + seo-agent from manifest.json workspace_templates; I verified BOTH template repos return HTTP 404 on Gitea (genuinely dangling refs that would 404 the clone), and neither is used by a running tenant. Removal is correct (un-masks dead refs), not gate-masking. Owner-bypass per the documented pattern.