Converge native Aguard on operator hosts #635

Closed
opened 2026-07-24 21:15:53 +00:00 by coilyco-ops · 3 comments
Member

Problem

The AOS operator CLI cutover makes aguard the native operator surface as well as the container surface. Full dev-base already installs Aguard, but long-lived operator hosts need it through normal fleet convergence.

AOS authoring and portable packaging are tracked in agentic-os#728. The Ward-side removal of generated operator leaves is tracked in ward#1548.

Ownership

Infrastructure owns persistent host rollout. Do not put fleet mutation in Ward container assets, AOS package post-install hooks, or ad hoc shell startup code.

Change

  • After agentic-os#728 publishes the paired native package, extend the existing AOS tooling convergence so every native operator host class receives matching aos and aguard commands.
  • Pin and upgrade the package through the same declared version/channel mechanism already used for native AOS tooling.
  • Add an idempotent verification for command discovery and version reporting.
  • Remove native host guidance or checks that still require ward ops, ward-kdl, or a source checkout for AOS-owned operator leaves once the dependencies land.
  • Document rollout and rollback through the owning role.

Acceptance

  • Every host class that receives the native AOS CLI also receives aguard on PATH.
  • Convergence is idempotent and does not depend on an interactive shell.
  • aos --version, aguard --version, and aguard --help succeed from a clean login environment.
  • Aguard works outside a repo checkout and does not resolve Ward or ward-kdl.
  • The role has a bounded rollback to the previous paired AOS package version.
  • Infrastructure validation and pre-commit pass.

Dependency

Implementation may prepare the convergence shape now, but rollout cannot complete until agentic-os#728 publishes the native Aguard artifact.

## Problem The AOS operator CLI cutover makes `aguard` the native operator surface as well as the container surface. Full dev-base already installs Aguard, but long-lived operator hosts need it through normal fleet convergence. AOS authoring and portable packaging are tracked in [agentic-os#728](https://forgejo.coilysiren.me/coilyco-flight-deck/agentic-os/issues/728). The Ward-side removal of generated operator leaves is tracked in [ward#1548](https://forgejo.coilysiren.me/coilyco-flight-deck/ward/issues/1548). ## Ownership Infrastructure owns persistent host rollout. Do not put fleet mutation in Ward container assets, AOS package post-install hooks, or ad hoc shell startup code. ## Change * After agentic-os#728 publishes the paired native package, extend the existing AOS tooling convergence so every native operator host class receives matching `aos` and `aguard` commands. * Pin and upgrade the package through the same declared version/channel mechanism already used for native AOS tooling. * Add an idempotent verification for command discovery and version reporting. * Remove native host guidance or checks that still require `ward ops`, ward-kdl, or a source checkout for AOS-owned operator leaves once the dependencies land. * Document rollout and rollback through the owning role. ## Acceptance * Every host class that receives the native AOS CLI also receives `aguard` on `PATH`. * Convergence is idempotent and does not depend on an interactive shell. * `aos --version`, `aguard --version`, and `aguard --help` succeed from a clean login environment. * Aguard works outside a repo checkout and does not resolve Ward or ward-kdl. * The role has a bounded rollback to the previous paired AOS package version. * Infrastructure validation and pre-commit pass. ## Dependency Implementation may prepare the convergence shape now, but rollout cannot complete until agentic-os#728 publishes the native Aguard artifact.
Author
Member

WARD-WORKFLOW: #636

details

review: skipped. The in-container review gate was intentionally skipped because the temporary Ward default is pending brokered QA.

workflow: pull-request; review summary: skipped pending brokered QA

Retrospective: The staged dependency boundary felt clear. The only surprise was the documentation-size and YAML-comment policy, both resolved before commit.

Confidence: high for the prepared Ansible shape. Follow-up: enable the declared paired release after agentic-os#728 publishes it.

WARD-WORKFLOW: https://forgejo.coilysiren.me/coilyco-flight-deck/infrastructure/pulls/636 <details><summary>details</summary> review: skipped. The in-container review gate was intentionally skipped because the temporary Ward default is pending brokered QA. workflow: pull-request; review summary: skipped pending brokered QA Retrospective: The staged dependency boundary felt clear. The only surprise was the documentation-size and YAML-comment policy, both resolved before commit. Confidence: high for the prepared Ansible shape. Follow-up: enable the declared paired release after agentic-os#728 publishes it. </details>
Author
Member

WARD-WORKFLOW: reservation-released

release details

Run finished with WARD-WORKFLOW: https://forgejo.coilysiren.me/coilyco-flight-deck/infrastructure/pulls/636.

ward container reap released container engineer-codex-infrastructure-635 (--harness codex): the terminal outcome supersedes the reservation, so a later redispatch no longer needs --override-reservation.

Outcome summary: #636

— Codex, via ward agent

<!-- ward-agent-reservation-released --> WARD-WORKFLOW: reservation-released <details><summary>release details</summary> Run finished with `WARD-WORKFLOW: https://forgejo.coilysiren.me/coilyco-flight-deck/infrastructure/pulls/636`. `ward container reap` released container `engineer-codex-infrastructure-635` (`--harness codex`): the terminal outcome supersedes the reservation, so a later redispatch no longer needs `--override-reservation`. **Outcome summary:** https://forgejo.coilysiren.me/coilyco-flight-deck/infrastructure/pulls/636 </details> <!-- ward-agent-signature --> — Codex, via `ward agent`
Author
Member

Incident impact observed

During the recovery recorded in infrastructure#642, Scoop upgraded Ward from 0.800.0 to 0.805.0 while the operator was working. The new Ward binary no longer exposed the old ops surface, and native aguard was not yet available on PATH.

The operator completed the guarded Forgejo credential lookup with the still-installed Ward 0.800.0 binary. No secret was printed or written to disk.

This was a live incident-response availability gap, not only stale documentation. The acceptance criteria here should include an upgrade ordering guarantee: native Aguard must be discoverable from a clean login environment before fleet convergence removes the last working operator surface.

## Incident impact observed During the recovery recorded in infrastructure#642, Scoop upgraded Ward from 0.800.0 to 0.805.0 while the operator was working. The new Ward binary no longer exposed the old `ops` surface, and native `aguard` was not yet available on PATH. The operator completed the guarded Forgejo credential lookup with the still-installed Ward 0.800.0 binary. No secret was printed or written to disk. This was a live incident-response availability gap, not only stale documentation. The acceptance criteria here should include an upgrade ordering guarantee: native Aguard must be discoverable from a clean login environment before fleet convergence removes the last working operator surface.
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/infrastructure#635
No description provided.