Add ward + coily binaries to the dev-base image #223
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/agentic-os#223
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?
Part of epic #220, fast follow to #221.
Add ward + coily to the dev-base image
#221 shipped the dev-base image (
forgejo.coilysiren.me/coilyco-flight-deck/agentic-os:<tag>) with the language + tooling base (uv, pre-commit, python, node, go, aws cli v2, claude). The ward + coily binaries were deliberately deferred because they need a cross-repo build token at image-build time.Scope
coilyco-flight-deck/ward) and coily (coilyco-bridge/coily) at pinned tags and compiles the Go binaries into the image (go is already in the base).coilyco-bridgeorg). Decide: build-arg secret vs buildx--secretmount, and which token.Notes
docker/dev-base/Dockerfileandpublish-imagejob in.forgejo/workflows/release.ymlare the touch points. Walkthrough:docs/dev-base-image.md.Goose triage - 2026-06-17
P4(score 65) - Real backlog item, actionable, moderate priorityconsult- Requires token access and repo availability decisionsAuto-generated by
ward exec goose-triage(qwen3-coder:30b), edited in place on each run. Labels are the conclusion; this is the why.🔒 Reserved by
ward agent --driver claude— containerengineer-claude-agentic-os-223on hostKAI-DESKTOP-TOWERis carrying this issue (reserved 2026-07-04T09:01:05Z). 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 agentWARD-OUTCOME: done - ward baked into dev-base from a pinned WARD_VERSION tag (anonymous clone, no build token); coily dropped as retired.
The premise fought back in the best way: the issue deferred ward because it "needs a cross-repo build token," but all three repos (ward, its cli-guard dep, and coily) are public now, so an anonymous clone plus
GOPROXY=directresolves the whole graph with no secret at all. I verified that live before writing a line - clean clone at v0.396.0,go mod download, build, andward version v0.396.0prints. So the whole token-decision axis the scope asked me to weigh just evaporated, and the publish job needs no change.The coily half I dropped on purpose: it was retired in agentic-os#261 (its surface moved into
ward ops) and coilyco-bridge/coily is archived, so baking it in would reintroduce a dead command. Called it inline rather than block on it.Confidence is high on the build recipe (it's byte-identical to what I ran by hand, plus ward's own bounded-retry pattern for the flaky direct fetch) but I could not run a full
docker buildhere - no daemon in the container - so I syntax-checked the RUN block instead. The one thing that genuinely annoyed me was the 4000-char documentation-layout cap: my doc bullet pushed dev-base-image.md over and I spent a dozen trims clawing back under it.Rough edges worth a follow-up: the image build now compiles ward (and fetches its module graph) on every publish, which adds real time - a prebuilt-binary or multi-stage cache could reclaim it if it bites. Also flagging two pre-existing, unrelated test reds on the branch I did not touch (test_ward_specs_bundle sees "coilysiren" in ward-kdl.fleet.kdl, and test_check_commit_closes_issue throws a TypeError) - not mine, but someone should file them.