fix(ci): unbreak the pytest gate and repair repos.kdl KDL v2 booleans #471

Merged
coilyco-ops merged 1 commit from fix/ci-pytest-gate-and-repos-kdl into main 2026-07-11 23:10:31 +00:00
Member

The recent .ward/ edits landed through the Forgejo web UI, which bypasses pre-commit, and reddened every aos workflow that runs the pytest gate: ci, release, mirror-to-github, and dep-bump.

publish-dev-base sits behind that gate with needs:, so it has been skipped on every push since, and no dev-base image has published. dep-bump runs the same gate before it pushes, so the pinned WARD_VERSION stayed at 0.567.0 while ward shipped v0.626.0. That is why ward inside the published image reads stale.

What broke

  • roles.kdl gained a pm role holding merge authority, so the bundle test's count == 2 assertion failed. The test now pins the merge overlay by role name rather than by count, which guards the surface a bare count never did.
  • repos.kdl carried KDL v1 bare booleans (true / false). The v2 parser cli-guard uses rejects them and fails the whole document, which silently degraded ward's exec mount and left ward ops forgejo unavailable on the host. Regression from 778666c.
  • restored the roles.kdl header comment pointing at the spec docs.
  • guardfile.aws.engineer.kdl was missing its trailing newline.

Verification

Run inside agentic-os:latest, the same container CI uses:

  • uv run pytest - 455 passed (was 1 failed).
  • uv run pre-commit run --all-files - all hooks pass.
  • every .ward/*.kdl file now parses with calico32/kdl-go, the parser cli-guard uses.
The recent `.ward/` edits landed through the Forgejo web UI, which bypasses pre-commit, and reddened every aos workflow that runs the pytest gate: `ci`, `release`, `mirror-to-github`, and `dep-bump`. `publish-dev-base` sits behind that gate with `needs:`, so it has been **skipped** on every push since, and no dev-base image has published. `dep-bump` runs the same gate before it pushes, so the pinned `WARD_VERSION` stayed at `0.567.0` while ward shipped `v0.626.0`. That is why ward inside the published image reads stale. ## What broke * **roles.kdl** gained a `pm` role holding merge authority, so the bundle test's `count == 2` assertion failed. The test now pins the merge overlay **by role name** rather than by count, which guards the surface a bare count never did. * **repos.kdl** carried KDL **v1** bare booleans (`true` / `false`). The v2 parser cli-guard uses rejects them and fails the whole document, which silently degraded ward's exec mount and left `ward ops forgejo` unavailable on the host. Regression from `778666c`. * restored the roles.kdl header comment pointing at the spec docs. * `guardfile.aws.engineer.kdl` was missing its trailing newline. ## Verification Run inside `agentic-os:latest`, the same container CI uses: * `uv run pytest` - **455 passed** (was 1 failed). * `uv run pre-commit run --all-files` - all hooks pass. * every `.ward/*.kdl` file now parses with `calico32/kdl-go`, the parser cli-guard uses.
fix(ci): unbreak the pytest gate and repair repos.kdl KDL v2 booleans
All checks were successful
ci / gate (pull_request) Successful in 9s
44e6bce74d
The recent .ward edits landed through the Forgejo web UI, which bypasses
pre-commit, and reddened every aos workflow that runs the pytest gate
(ci, release, mirror-to-github, dep-bump). publish-dev-base sits behind
that gate with needs:, so it has been skipped on every push and no
dev-base image has published since. dep-bump runs the same gate before
it pushes, so the pinned WARD_VERSION stayed at 0.567.0 while ward
shipped v0.626.0, which is why ward inside the image reads stale.

* roles.kdl gained a pm role holding merge authority, so the bundle test
  now pins the merge overlay by role name rather than by count. Naming
  the roles guards the surface that a bare count never did.
* repos.kdl carried KDL v1 bare booleans (true / false). The v2 parser
  cli-guard uses rejects them and fails the whole document, which
  silently degraded ward's exec mount and left `ward ops forgejo`
  unavailable on the host. Regression from 778666c.
* restore the roles.kdl header comment pointing at the spec docs.
* guardfile.aws.engineer.kdl was missing its trailing newline.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign in to join this conversation.
No description provided.