fix: unstrand ward from cli-guard, and honor the burndown block (2 of 3 doctor failures) #1121
No reviewers
Labels
No labels
burndown-2026-06
pressure-test
sunday-sprint
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/ward!1121
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/migrate-off-cli-guard-dispatch"
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?
Unblocks the dev-base image. Takes
ward doctoragainst the aos bundle from 3 failures to 1. aos is canonical; ward adapts to it.1.
fix(deps)- own the issue types, move to cli-guard v0.94.0cli-guard removed
cli/dispatch(05e8b78, 2026-07-09) and added singularguardfilerole nodes to fleetconfig the next day (f6063aa). ward still imported the removed package, so it was stranded on a pre-removal pseudo-version and could not reach the fleetconfig fix. No cli-guard version carries both.cli-guard parses a reference (
pkg/issueref) and has no concept of an issue. The issue, and which forge it resolves against, are ward's domain, soPlatform/IssueRef/Issuenow live incmd/ward;ParseIssueRefdelegates the short, bare, and Forgejo-URL forms toissueref.Parseand matches GitHub first (issueref does not know it).The removed package was the only compile error across the whole 0.85 -> 0.94 range.
->
FAIL fleet: role "engineer" body: unknown node "guardfile"becomesPASS fleet.2.
feat(smart-defaults)- honor the burndown block (ward#1105)aos authors a block ward had no concept of, so doctor failed the whole bundle on
repos body: unknown node "burndown".defaultsets the posture, eachrepooverrides it, and the director honors it where it expands an--orginto repo slugs - so an excluded repo is dropped from the scope, not parsed and silently ignored.Two things worth calling out:
false, so falling through to the default would have silently drained the director's entire scope on every bundle predating the block. My first cut had exactly that bug; the existing suite caught it. AburndownConfiguredflag fixes it and a test pins it.#true/#false). A baretruelexes as an identifier and fails the document - the same bug that took the aos bundle down (aos#471) - so the parser rejects non-bools rather than coercing.Verification
All inside
agentic-os:latest:go build/go vet- cleango test ./...- exit 0golangci-lint run ./...- 0 issuesWhat is left before the image publishes
ward doctoris down to two, and both need a call from Kai (see ward#1120):agent-reservation-ttl 1h must exceed role "engineer" execution-time-limit 90m- newly surfaced, it was hidden behind the burndown parse error. aos sets the 1h TTL; ward's embedded engineer preset sets the 90m limit. One of the two has to move.guardfile base-url "git.example.com/api/v1" still looks like a placeholder-ops.forgejo.kdlis the baked default embedded into ward's release, so its example values are correct (ward must not ship coilyco config). doctor is checking the pre-meld layer instead of the melded surface. Do not rewireward.bundle.kdlor meld real values intoops.forgejo.kdl- either would embed the deployment into the product.fix(deps): own the issue types so ward can move to cli-guard v0.94.0to fix: unstrand ward from cli-guard, and honor the burndown block (2 of 3 doctor failures)aos authors a burndown block that ward had no concept of, so `ward doctor` failed the whole bundle with `repos body: unknown node "burndown"`, which gates the dev-base image build. aos is canonical, so ward learns the node. burndown default=#true { repo "coilyco-flight-deck/infrastructure" #false } `default` sets the fleet-wide posture and each `repo` overrides it. The director honors it where it expands an --org into repo slugs, so an excluded repo is dropped from the burndown scope with a note on stderr rather than being parsed and silently ignored. An absent burndown block excludes nothing. The zero value of a bool is false, so falling through to the default would have silently drained the director's entire scope on every bundle that predates the block. A burndownConfigured flag keeps that from happening, and a test pins it. Booleans must be the KDL v2 spelling (#true / #false). A bare true / false lexes as an identifier and fails the document, which is exactly the bug that took the aos bundle down (aos#471), so the parser rejects anything that is not a real bool rather than coercing it. Refs ward#1105, ward#1120, aos#452. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>