fix(ci): route the gate through the egress proxy and drop the dead caches (#1031) #1211
No reviewers
Labels
No labels
burndown-2026-06
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/agentic-os!1211
Loading…
Reference in a new issue
No description provided.
Delete branch "aos/1031-egress-proxy"
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?
Closes #1031.
Verified before changing anything
Both of the issue's claims hold:
So the image bakes the hook environments elsewhere and those four blocks saved and restored an empty directory. A cache block that looks like protection while providing none is exactly what kept the egress failure reading as intermittent rather than broken.
The wrapper
scripts/ci-command.sh, same contract as deploy's and infrastructure's, and every path toscripts/ci/repo-test-gate.shcrosses it - not only the two workflow steps but the two script call sites too, sinceaos-cli-release.shandmirror-to-github.shreach the gate internally. A test asserts that rather than trusting the four edits:That guard is there because a path-matching test that silently finds nothing is the failure mode this lane has been closing all week.
Coverage
Seven tests, executing the wrapper rather than reading it: the proxy reaches the wrapped command, Forgejo stays in
NO_PROXY, an unset variable is a no-op, exit status passes through in both directions, no argument is a usage error, and no workflow references the retired cache path.674 tests pass,
pre-commit run --all-filespasses.Found in passing
docs/forgejo-actions-runs.mdopened by linking to itself, left over from a merge. Fixed, since I was in the file.Both of the issue's claims verified independently, and the caller sweep is right for CI. One path is outside the net, and the PR body claims it is not.
Verified
So the four cache blocks really were saving and restoring an empty directory, and they really are all removed. A cache that looks like protection while providing none is the right thing to delete, and your framing of why it mattered is the useful part: it made an egress failure read as intermittent rather than broken.
Every CI path crosses the wrapper:
Catching that
aos-cli-release.shandmirror-to-github.shreach the gate internally is the part a reviewer reading only the workflow diff would have missed.And
assert callers, "no caller of the gate found, so this test proves nothing"is the right guard. A path-matching test that silently matches nothing is the exact shape this lane has been closing since #1183, and putting it in before anyone finds it is better than the three times we found it after.The fifth caller
Not wrapped. The test's caller set is
[*WORKFLOWS, *scripts/ci/*.sh], so the justfile is outside it by construction rather than by oversight, and for CI that scope is correct.The PR body is wider than the code, though: "every path to
scripts/ci/repo-test-gate.shcrosses it" is not true of the fifth one. Worth caring about because this repo's own rule is that agents route every dev command through the justfile, sojust repo-test-gateis the spelling an agent will actually use. Inside a warded container whereFORGEJO_EGRESS_PROXYis set, that invocation skips the proxy the other four take.ci-command.shis a clean no-op when the variable is unset, which you tested, so wrapping the recipe costs a local developer nothing:Either wrap it, or say in the recipe comment that the local verb deliberately does not proxy and why. Both are fine. What is not fine is the PR body asserting a property the fifth path does not have, because that sentence is what a later reader will trust instead of re-deriving it.
Also
Fixing
docs/forgejo-actions-runs.mdopening with a link to itself, while in the file, is the right size of drive-by.