aos#310 issue 5: repoint scripts/agent-compat.py at ward agents list --json (kill the aos<->ward roster drift) #312

Closed
opened 2026-07-01 09:47:01 +00:00 by coilysiren · 2 comments
Owner

Issue 5 of the ward<=>aos config pass (aos#310 §6 step 3). Unblocked: ward#417 landed ward agents list --json - the stable roster read surface.

Deliverable (aos)

  • Repoint scripts/agent-compat.py to read the roster from ward agents list --json instead of its own HARNESSES dict / private roster notion. The smoke test now validates what ward embeds, killing the aos<->ward roster-drift vector at its source (the exact leak aos#308 flagged, incl. the Codex/Goose pronoun drift).
  • Add a test asserting the agent-compat roster == ward agents list --json output.
  • Demote any aos-side roster/adapter file to a clearly-marked reference copy (per the config-placement doctrine: aos holds reference copies, never a thing consumed at runtime), or remove it if redundant.

Constraints

  • aos is the consumer here, not the author - it reads ward's embedded roster, does not maintain a parallel one. Conform to the catalog pre-commit suite. Mode: headless.
Issue 5 of the ward<=>aos config pass (**aos#310** §6 step 3). **Unblocked: ward#417** landed `ward agents list --json` - the stable roster read surface. ## Deliverable (aos) - Repoint `scripts/agent-compat.py` to read the roster from **`ward agents list --json`** instead of its own `HARNESSES` dict / private roster notion. The smoke test now validates **what ward embeds**, killing the aos<->ward roster-drift vector at its source (the exact leak aos#308 flagged, incl. the Codex/Goose pronoun drift). - Add a test asserting the `agent-compat` roster == `ward agents list --json` output. - Demote any aos-side roster/adapter file to a **clearly-marked reference copy** (per the config-placement doctrine: aos holds reference copies, never a thing consumed at runtime), or remove it if redundant. ## Constraints - aos is the consumer here, not the author - it reads ward's embedded roster, does not maintain a parallel one. Conform to the catalog pre-commit suite. Mode: headless.
Member

🔒 Reserved by ward agent --driver claude — container engineer-claude-agentic-os-312 on host kais-macbook-pro-2.local is carrying this issue (reserved 2026-07-01T09:47:16Z). Concurrent ward agent runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); --force overrides.

— Claude (she/her), via ward agent

<!-- ward-agent-reservation --> 🔒 Reserved by `ward agent --driver claude` — container `engineer-claude-agentic-os-312` on host `kais-macbook-pro-2.local` is carrying this issue (reserved 2026-07-01T09:47:16Z). Concurrent `ward agent` runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); `--force` overrides. <!-- ward-agent-signature --> — Claude (she/her), via `ward agent`
Author
Owner

WARD-OUTCOME: done - agent-compat now reads its roster from ward agents list --json, with a test pinning the probe set to ward's embedded fleet.

Straightforward once the shape was clear. The one thing that fought back: this container's ward is v0.227, which predates agents list --json, so I couldn't exercise the happy path locally - ward agents list --json exits 1 here. I read the surface from ward's source under /substrate instead, and built the fallback around that reality: WardRosterUnavailable, a stderr-warning fallback to the built-in probe set, and a drift-pin test that skips on old ward. So on a current host the test validates equality; here it skips cleanly.

The real substance was reconciling the drift: aider isn't in the fleet at all, and post-#412 qwen is only opencode's backing model. I dropped aider and folded qwen's ollama-inventory probe into the canonical opencode harness rather than lose the coverage. No separate aos-side roster file existed to demote - the parallel roster was entirely inline in the script.

Confident in the result. Probe classes still fail here only because the agent CLIs aren't installed (expected for a host-targeted smoke check). Rough edge worth a follow-up: the drift-pin test can only truly validate on a host with current ward, so it silently skips everywhere ward is stale - if fleets lag, the pin is dormant. Also unrelated: tests/test_check_commit_closes_issue.py has 6 pre-existing failures against a retired hook, worth a separate cleanup issue.

WARD-OUTCOME: done - agent-compat now reads its roster from `ward agents list --json`, with a test pinning the probe set to ward's embedded fleet. Straightforward once the shape was clear. The one thing that fought back: this container's ward is v0.227, which predates `agents list --json`, so I couldn't exercise the happy path locally - `ward agents list --json` exits 1 here. I read the surface from ward's source under /substrate instead, and built the fallback around that reality: WardRosterUnavailable, a stderr-warning fallback to the built-in probe set, and a drift-pin test that skips on old ward. So on a current host the test validates equality; here it skips cleanly. The real substance was reconciling the drift: aider isn't in the fleet at all, and post-#412 qwen is only opencode's backing model. I dropped aider and folded qwen's ollama-inventory probe into the canonical opencode harness rather than lose the coverage. No separate aos-side roster file existed to demote - the parallel roster was entirely inline in the script. Confident in the result. Probe classes still fail here only because the agent CLIs aren't installed (expected for a host-targeted smoke check). Rough edge worth a follow-up: the drift-pin test can only truly validate on a host with current ward, so it silently skips everywhere ward is stale - if fleets lag, the pin is dormant. Also unrelated: tests/test_check_commit_closes_issue.py has 6 pre-existing failures against a retired hook, worth a separate cleanup issue.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
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/agentic-os#312
No description provided.