Fix mod publishers invoking Ward outside the repository #167
Labels
No labels
burndown-2026-06
headless
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
c#
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
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-gaming/eco-app#167
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Failure
Forgejo Actions run 143 proved the refreshed repository-scoped runner credential works. The
build-imagejob authenticated, published, and completed successfully.All four downstream mod publishers then failed after extracting their packages into temporary directories. The first failure records:
ward: no .ward/ward.yaml or .coily/coily.yaml reachable from cwdThe same four jobs completed successfully before the current workflow shape, so this is a repository execution-boundary defect rather than a runner or registry failure.
Evidence: https://forgejo.coilysiren.me/coilyco-gaming/eco-app/actions/runs/143
Outcome
Keep Ward invoked from the repository context while passing the extracted package path explicitly. Do not copy or reinterpret
.ward/ward.yamlinto the temporary package directory.Acceptance
ward exec test, lint, and smoke remain green.build-imagepublishes the immutable source-SHA image.Checkpoint: commit
2962c7781blanded on main. Run 146 proves test, frontend, and build-image successful, including the C# mod build and immutable source-SHA image. All four publish jobs then failed after 6 to 15 seconds. The guarded Forgejo job and log endpoints return 404 on this server, and no authenticated browser surface is connected, so the first stderr line remains the live verification wall. Operator action: open run 146, select any publish-* job, and paste the first failing command plus stderr from Publish immutable mod package here. No rerun is needed. Keeping this interactive issue open, with no second probe push.Root-cause checkpoint: the operator-provided run 146 log proves Ward reached /workspace and attempted the generic-package PUT, which returned HTTP 403 at the internal Forgejo service URL. Commit
ecaa95areused the runner's current write:package REGISTRY_TOKEN, but run 147 still passed test, frontend, and build-image while all four publisher jobs failed. Static evidence identifies the remaining boundary: publish-mod-from-image.sh forwarded FORGEJO_EGRESS_PROXY as global HTTP_PROXY and HTTPS_PROXY, while infrastructure's proxy contract accepts only allowlisted HTTPS CONNECT traffic and explicitly requires internal Forgejo, registry, and cluster traffic to remain direct. Branch fix/mod-publisher-direct-forgejo at commit3093eferemoves the proxy variables from the package container, adds a regression assertion that internal Forgejo traffic stays direct, and updates the package contract. Focused publisher validation, full pre-commit, 561 tests, and smoke all pass. One attended Ops action remains: land commit3093efeon main and verify one build-publish run. If all four publishers pass, close this issue and use that run as closing evidence for eco-app#166 and infrastructure#675.Resolved on canonical main by commit
3093efe893. Forgejo Actions run 148 completed successfully at that exact SHA.The publisher now runs Ward from repository context, reuses the trusted package credential, and keeps internal Forgejo package traffic off the egress proxy. Closing with full acceptance evidence: https://forgejo.coilysiren.me/coilyco-gaming/eco-app/actions/runs/148