P1: prod deploy frozen since #60 — publish gates on the always-failing mods job (app image has no mods). Decouple + fix the mods gate #68
Loading…
Add table
Add a link
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?
Severity: production deploys frozen. Fix ASAP.
The live app (
eco-app.coilysiren.me) is up and serving, but stale - frozen on the pre-#60 image. Confirmed live via/mcp/tools/list: it registersget_eco_trades(#6),get_eco_stores(#50),get_eco_currency(#53) but is missing everything that landed after #60 -get_eco_civics(#61),get_eco_world(#62),get_eco_social(#63),get_eco_progression(#64), the logistics/watchers tools (#51/#52), plus the deepen-existing wave. The corresponding/preview/*.jsonfor those routes 404.Root cause
.forgejo/workflows/build-publish.yml: thepublishjob hasneeds: [test, frontend, mods]. Themodsjob (added by #60 to compile the four C# mods) has failed on every run since it was added - forgejo actions tasks show runs 48-57 allfailure/cancelled, neversuccess. Sopublishnever runs, no image is pushed to the in-cluster registry, and the CD reconciler (deploy#43) has no new image to roll. Prod froze the moment #60 landed.The coupling is wrong
Per the workflow's own comment, the mods are built by the
build-mod-*verbs and shipped to the game server out of band - they are NOT in the eco-app image. The image is SPA + MCP + jobs (Python/Node). So gating the app image publish on C# mod compilation is incorrect: a mod that does not compile has zero bearing on whether the app image is publishable. #60's gate was meant to catch mod typos, but it was wired into the wrong path and took production down with it.Fix
1. Unstick prod now (the P0 change): in
build-publish.yml, change thepublishjob toneeds: [test, frontend]- dropmods. The app image is still fully validated (pytest/ruff/mypy/smoke viatest, plusfrontend); it just no longer waits on mod compilation it does not contain. This lets the next push publish and the CD reconciler roll prod forward.2. Fix the red
modsjob (same run): it has never passed - investigate and repair so the mod-compile signal is restored. Likely suspects: the self-installed .NET 10 SDK step,Eco.ReferenceAssembliesrestore (the pin was bumped 998 -> 1024 by #66 - confirm 1024 actually restores from the feed and all four mods, includingstores#55, compile against it), or ICU/invariant-globalization. Keepmodsas a required status check / signal for the out-of-band mod-shipping step, but never back inpublish'sneeds.Verify (before closing)
build-publishrun reaches thepublishjob and pushes a new image.rollout.sh eco-app) brings the new image live; do not assume publish == deployed./mcp/tools/listgainsget_eco_civics/get_eco_world/get_eco_social/get_eco_progressionand the logistics/watchers tools, and their/preview/*.jsonreturn 200.modsjob is green again (part 2).Also worth noting (do not block on)
eco-mcp.coilysiren.mereturns 503 "no available server" - that is the deprecated standalone (#41), backend deprovisioned. Separate cleanup (decommission the hostname or redirect it toeco-app.coilysiren.meso stale connectors do not 503). Not part of this fix.Refs
Introduced by #60 (mod-compile gate). Pin bump: #66. CI parity: #57. CD: deploy#43. Deprecated host: #41. Diagnosed live from the director session, 2026-07-05.
🔒 Reserved by
ward agent --driver claude— containerengineer-claude-eco-app-68on hostKAI-DESKTOP-TOWERis carrying this issue (reserved 2026-07-05T06:47:11Z). Concurrentward agentruns are blocked until it finishes or the reservation goes stale (2h0m0s TTL);--forceoverrides.Do not comment on or edit this issue to steer the run while it is reserved. The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a new issue, dispatched fresh — that is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494).
— Claude (she/her), via
ward agent