Make engineer Ward self-refresh work without sudo #1608

Closed
opened 2026-07-28 10:52:32 +00:00 by coilyco-ops · 1 comment
Member

Headless burndown surfaced this in coilyco-flight-deck/ward#1510 after the change had landed and release CI was green.

The engineer tried to refresh /usr/local/bin/ward from the freshly published v0.851.0 release, but the container image had no sudo/privilege helper and /usr/local/bin/ward was root-owned:

sha_asset=4169c9029334e1379a57a94525fe89d75b3edae6a2d02b39a7f564aaf1f5f246
sha_file=4169c9029334e1379a57a94525fe89d75b3edae6a2d02b39a7f564aaf1f5f246
v0.851.0
install: cannot remove '/usr/local/bin/ward': Permission denied

There was a second paper cut in the same path: the per-asset .sha256 file is a bare digest, so sha256sum -c ward-linux-arm64.sha256 reports no properly formatted checksum lines found even though the digest matches when compared manually.

Make the self-refresh path either writable by the engineer user, brokered through a supported root-side operation, or explicitly skipped with a concise explanation. Avoid teaching headless agents to reach for raw Forgejo tokens or ad hoc release download logic during closeout.

Acceptance:

  • A successful engineer can complete post-release closeout without failing on sudo: command not found or Permission denied for /usr/local/bin/ward.
  • Checksum verification accepts the release asset format Ward publishes, or Ward publishes a sha256sum -c compatible per-asset checksum.
  • The closeout path documents the fallback when refresh is impossible in an ephemeral container.

Labels: headless, P2

Headless burndown surfaced this in coilyco-flight-deck/ward#1510 after the change had landed and release CI was green. The engineer tried to refresh `/usr/local/bin/ward` from the freshly published v0.851.0 release, but the container image had no `sudo`/privilege helper and `/usr/local/bin/ward` was root-owned: ``` sha_asset=4169c9029334e1379a57a94525fe89d75b3edae6a2d02b39a7f564aaf1f5f246 sha_file=4169c9029334e1379a57a94525fe89d75b3edae6a2d02b39a7f564aaf1f5f246 v0.851.0 install: cannot remove '/usr/local/bin/ward': Permission denied ``` There was a second paper cut in the same path: the per-asset `.sha256` file is a bare digest, so `sha256sum -c ward-linux-arm64.sha256` reports `no properly formatted checksum lines found` even though the digest matches when compared manually. Make the self-refresh path either writable by the engineer user, brokered through a supported root-side operation, or explicitly skipped with a concise explanation. Avoid teaching headless agents to reach for raw Forgejo tokens or ad hoc release download logic during closeout. Acceptance: - A successful engineer can complete post-release closeout without failing on `sudo: command not found` or `Permission denied` for `/usr/local/bin/ward`. - Checksum verification accepts the release asset format Ward publishes, or Ward publishes a `sha256sum -c` compatible per-asset checksum. - The closeout path documents the fallback when refresh is impossible in an ephemeral container. Labels: headless, P2
Author
Member

Closing under the sealed v1 run contract. An active engineer uses a fixed Ward version for the lifetime of its run. Refreshing the installed binary from inside the engineer container is not a supported closeout responsibility, and #1620 removes the autonomous loop that surfaced this behavior.

Closing under the sealed v1 run contract. An active engineer uses a fixed Ward version for the lifetime of its run. Refreshing the installed binary from inside the engineer container is not a supported closeout responsibility, and #1620 removes the autonomous loop that surfaced this behavior.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/ward#1608
No description provided.