agent-proxy role never rebuilds the image on converge (docker compose up --force-recreate, no --build/--pull) - upstream fixes never reach the host #431
Labels
No labels
burndown-2026-06
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/infrastructure#431
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?
Problem
ansible/roles/agent-proxy/tasks/main.ymlbrings the container up with:docker compose upbuilds the image only when it is missing, and--force-recreaterecreates the container from the existing image - it does not rebuild the image or re-pull the git build context. The compose file builds fromhttps://forgejo.coilysiren.me/coilyco-flight-deck/agent-proxy.git#mainand tagsagent-proxy-local:latest.So once
agent-proxy-local:latestexists on a host, every laterward exec ansible-syncreuses that cached image. A fix landed onagent-proxymainnever reaches the host, because the role never rebuilds. This is how a crash-looping image (see the agent-proxy dependency bug) stays crash-looping across syncs.Fix
Make the converge rebuild from the current upstream ref. Either:
docker compose up -d --build --pull always --force-recreate, ordocker compose build --pullstep beforeup.Pick the form that fits the house style of the sibling dockerized roles (mac-proxy, dozzle, logdy). Keep the loopback bind and the existing
when:gating. Ensure a genuine upstream change onagent-proxy#mainis picked up on the next sync, and that an unchanged ref does not thrash (docker layer cache handles the no-op case).Acceptance
agent-proxy#main, a singleward exec ansible-syncrebuilds and runs the new image without a manualdocker compose build.Refs
🔒 Reserved by
ward agent --driver claude— containerengineer-claude-infrastructure-431on hostkais-macbook-pro-2.localis carrying this issue (reserved 2026-07-02T08:00:18Z). Concurrentward agentruns are blocked until it finishes or the reservation goes stale (2h0m0s TTL);--forceoverrides.— Claude (she/her), via
ward agentWARD-OUTCOME: done - agent-proxy converge now runs
docker compose up -d --build --pull always --force-recreate, so upstream agent-proxy#main fixes rebuild onto the host.Small, clean change - the actual fix was two words on one line. Most of the thinking was picking the form: the git build context means
--buildre-fetches#mainevery converge, and docker's layer cache turns an unchanged ref into a no-op, so no thrash. I matched the inline--buildhouse style from the logdy role rather than a separatebuildstep. #430 (the port split) had already landed, so the compose file was already correct and there was nothing to integrate.Two bits of friction, both environmental rather than the change itself: the code-comments hook rejected an inline YAML comment I'd added mid-file (a key-sorter would drift it), so I folded the rationale into the task name instead; and pylint's pre-commit hook kept failing because uv couldn't write Python into a root-owned
/opt/uv/python- pointingUV_PYTHON_INSTALL_DIRat a writable dir cleared it and pylint passed 10/10. Confident in the result. One rough edge I couldn't close from here: no AWS creds in this container, so I couldn't fetch the Forgejo token to poll CI - but the full local pre-commit suite (which mirrors the config-validation CI) is green. Worth a glance at the Actions run to confirm.