Mount and home-project bundles in warded containers #17

Closed
opened 2026-07-22 23:13:33 +00:00 by coilyco-ops · 3 comments
Member

Parent

#1

What to build

The container tier of identity delivery, replacing #7's pre-review framing. Ward launches a warded container with a bundle mounted read-only; at container start the bundle projects into container-HOME load points, so the agent wakes with its personality already in context - loaded at launch mechanically, not by prose cooperation. The container's private HOME is what makes home-scoped delivery per-agent: one member's identity present, the rest of the roster absent from the filesystem entirely.

Composition stays harness-blind and Ward stays authority-only: the handoff into agent-compose is a five-line compose request (role, personality, delivery, density, sources) or a path to an already-materialized bundle, and nothing in the bundle grants permissions.

Acceptance criteria

  • The handoff is documented: Ward supplies a compose request or bundle path, nothing else; agent-compose learns no guardfiles, credentials, or authority.
  • Ward mounts the bundle read-only and treats the tree as opaque, entering only through manifest.json.
  • Container start projects the bundle into container-HOME load points (home-scope layout variants of the v0.1 registry), using the existing projection ownership rules.
  • A missing, unreadable, or malformed bundle fails closed before the agent launches, with an actionable error.
  • The projected container context contains exactly one member identity; no other personality files exist in the container filesystem.
  • Fixtures exercise at least the engineer role end to end; the five-role matrix (engineer, qa, director, advisor, ops) lands when #10 assigns their personalities.
  • Companion Ward issue links here with compatibility tests on both sides.

Blocked by

  • The v1/aosk integration design (container-home load points must agree with the v1 cascade's global load-point handling).
  • Partially blocked by #10 for the multi-role fixture matrix.

Execution type

HITL for the design seam, AFK once the load-point agreement is written down.

Filed by Claude Code, replacing #7 on Kai's direction.

## Parent #1 ## What to build The container tier of identity delivery, replacing #7's pre-review framing. Ward launches a warded container with a bundle mounted read-only; at container start the bundle projects into container-HOME load points, so the agent wakes with its personality already in context - loaded at launch mechanically, not by prose cooperation. The container's private HOME is what makes home-scoped delivery per-agent: one member's identity present, the rest of the roster absent from the filesystem entirely. Composition stays harness-blind and Ward stays authority-only: the handoff into agent-compose is a five-line compose request (role, personality, delivery, density, sources) or a path to an already-materialized bundle, and nothing in the bundle grants permissions. ## Acceptance criteria - [ ] The handoff is documented: Ward supplies a compose request or bundle path, nothing else; agent-compose learns no guardfiles, credentials, or authority. - [ ] Ward mounts the bundle read-only and treats the tree as opaque, entering only through manifest.json. - [ ] Container start projects the bundle into container-HOME load points (home-scope layout variants of the v0.1 registry), using the existing projection ownership rules. - [ ] A missing, unreadable, or malformed bundle fails closed before the agent launches, with an actionable error. - [ ] The projected container context contains exactly one member identity; no other personality files exist in the container filesystem. - [ ] Fixtures exercise at least the engineer role end to end; the five-role matrix (engineer, qa, director, advisor, ops) lands when #10 assigns their personalities. - [ ] Companion Ward issue links here with compatibility tests on both sides. ## Blocked by - The v1/aosk integration design (container-home load points must agree with the v1 cascade's global load-point handling). - Partially blocked by #10 for the multi-role fixture matrix. ## Execution type HITL for the design seam, AFK once the load-point agreement is written down. Filed by Claude Code, replacing #7 on Kai's direction.
Author
Member

Design dependency resolved: docs/integration.md (4207b4a) fixes the seam rule - in a container v2 owns the whole home, v1 does not exist there, so container-HOME projection cannot conflict with the cascade by construction. Remaining blockers: the home-scope layout variants slice (registry additions plus per-harness global load-point verification) and #10/#21 for the multi-role fixture matrix. Engineer-role end-to-end can proceed before those.

Filed by Claude Code working the issue queue.

Design dependency resolved: docs/integration.md (4207b4a) fixes the seam rule - in a container v2 owns the whole home, v1 does not exist there, so container-HOME projection cannot conflict with the cascade by construction. Remaining blockers: the home-scope layout variants slice (registry additions plus per-harness global load-point verification) and #10/#21 for the multi-role fixture matrix. Engineer-role end-to-end can proceed before those. Filed by Claude Code working the issue queue.
Author
Member

Provider-side contract landed in 025f31d:

  • Agent-compose exposes a read-only verify command and rechecks staged and cached bundles.
  • project --scope home transactionally targets claude, codex, goose, and opencode global load points.
  • Black-box fixtures enforce one selected identity and prove the input bundle stays unchanged.
  • Projection failures restore the prior owned files, modes, and sidecar.

Ward-side work remaining here is limited to mounting the opaque bundle read-only and invoking verify then project --scope home at container startup. This slice changed no Ward source.

Provider-side contract landed in 025f31d: * Agent-compose exposes a read-only `verify` command and rechecks staged and cached bundles. * `project --scope home` transactionally targets claude, codex, goose, and opencode global load points. * Black-box fixtures enforce one selected identity and prove the input bundle stays unchanged. * Projection failures restore the prior owned files, modes, and sidecar. Ward-side work remaining here is limited to mounting the opaque bundle read-only and invoking `verify` then `project --scope home` at container startup. This slice changed no Ward source.
Author
Member

Ward consumer work landed on canonical main in coilyco-flight-deck/ward@b339ac4 and closed ward#1541.

  • --agent-compose-bundle resolves the host path and requires a readable regular manifest.json before launch.
  • Ward mounts the opaque bundle read-only at /opt/agent-compose-bundle and exports only that fixed path.
  • Bootstrap runs agent-compose verify, then agent-compose project --scope home for the selected harness, before the harness starts.
  • Ward composes its separate authority document into the projected load point. The immutable bundle remains unchanged and grants no runtime authority.
  • Missing, malformed, foreign-target, and projection failures stop launch. Bundle-free launches remain unchanged. Nested bundle forwarding fails closed when Docker cannot preserve the read-only source.
  • Compatibility tests cover engineer, qa, director, advisor, and ops across claude, codex, goose, and opencode. A real provider smoke materialized, verified, and home-projected an engineer bundle while preserving the manifest byte-for-byte.
  • Ward build, vet, focused tests, lint, generated flag docs, and the full pre-commit catalog passed. The canonical Windows TruffleHog hook remained skipped under agentic-os#694.

This completes the provider and consumer sides of the ticket.

Ward consumer work landed on canonical main in coilyco-flight-deck/ward@b339ac4 and closed ward#1541. * `--agent-compose-bundle` resolves the host path and requires a readable regular `manifest.json` before launch. * Ward mounts the opaque bundle read-only at `/opt/agent-compose-bundle` and exports only that fixed path. * Bootstrap runs `agent-compose verify`, then `agent-compose project --scope home` for the selected harness, before the harness starts. * Ward composes its separate authority document into the projected load point. The immutable bundle remains unchanged and grants no runtime authority. * Missing, malformed, foreign-target, and projection failures stop launch. Bundle-free launches remain unchanged. Nested bundle forwarding fails closed when Docker cannot preserve the read-only source. * Compatibility tests cover engineer, qa, director, advisor, and ops across claude, codex, goose, and opencode. A real provider smoke materialized, verified, and home-projected an engineer bundle while preserving the manifest byte-for-byte. * Ward build, vet, focused tests, lint, generated flag docs, and the full pre-commit catalog passed. The canonical Windows TruffleHog hook remained skipped under agentic-os#694. This completes the provider and consumer sides of the ticket.
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/agent-compose#17
No description provided.