Make repository availability role-scoped and derive native residency #200

Closed
opened 2026-08-05 07:42:44 +00:00 by coilyco-ops · 2 comments
Member

Outcome

Make repository availability a first-class part of the Agent Compose role graph. Remove harness-specific mount variance, collapse the standalone mount-eligibility artifact into verified role bundles, and derive the native host residency plan from the complete role repository graph.

The completed model has three concepts:

  • Substrate - build-time repositories available through the development image or cache.
  • Role bundle - doctrine, skills, providers, and repositories visible to one role.
  • Host residency - long-lived native checkouts derived from every role dependency plus explicit resident-only pins.

Substrate remains separate because image availability, host persistence, and role visibility have different security and lifecycle boundaries.

Role graph contract

Extend the trusted .agents/roles.kdl schema with explicit repository dependencies.

  • Support global repository dependencies inherited by every role.
  • Support repository dependencies selected for one role.
  • Resolve each role to one complete, sorted, deduplicated repository set.
  • Keep repository selection invariant across Claude, Codex, Goose, OpenCode, and any later harness.
  • Validate logical owner/repo identity, duplicate declarations, unknown references, and invalid placement.
  • Preserve strict parsing. Do not ignore unknown top-level or role nodes.
  • Stop inferring repository mounts from the location of composed doctrine sources.

Initial AOSK policy:

  • coilysiren/lore is a global repository dependency for every role.
  • coilysiren/voice-corpus is a Content Manager repository dependency.
  • Provider repositories continue to enter the appropriate role closure through the trusted provider graph.

Collapse mount eligibility into the bundle

Repository dependencies belong in Agent Compose's typed decision output and verified bundle metadata.

  • Agent Compose owns parsing, validation, resolution, provenance, and deterministic serialization.
  • Bundle inspection and description surfaces show why each repository entered the role.
  • AOS and Ward consume the complete resolved repository set from the verified bundle.
  • Consumers do not merge defaults or re-parse roles.kdl.
  • Harness frontmatter may still affect doctrine composition where supported, but never repository visibility.
  • Remove the standalone ~/.config/agent-compose/mount-eligibility.json contract.
  • Remove the legacy per-harness manifest producer, source-location inference, drift checks, consumers, tests, and documentation.
  • Any compatibility bridge needed for rollout is temporary and is removed before this issue closes.

Derive native host residency

Replace handwritten expected-repository rosters with one compiled residency plan.

The default resident set is:

  1. The union of every canonical role's resolved repository dependencies.
  2. Trusted provider and operating-context repositories required to build those roles.
  3. Explicit resident-only pins for repositories that belong on a native host but must not become visible to a role.

The derivation must preserve the distinction between residency and visibility. A resident-only pin does not grant a role access, and a role dependency does not become substrate merely because it is resident.

AOS owns the deterministic host plan and its local machine-readable output. Infrastructure realizes that plan across hosts.

  • Expose the compiled residency plan through an installed AOS or Agent Compose surface that does not require the target checkouts to exist first.
  • Keep only a minimal, explicitly named bootstrap input if fresh-host convergence needs one. Do not retain a second full expected-repository roster.
  • Make AOS native workspace projection, startup cleanup, and the repository status line consume the same compiled plan.
  • Make Infrastructure's checkout sync consume the compiled plan instead of a source-tree list.
  • Retire the duplicated public and private flat roster maintenance.
  • Retire AOSK's scripts/repos-on-disk.txt once its registry, digest, pointer-skill, and catalog-graph consumers read the canonical compiled plan.
  • Remove the Infrastructure repo-list symlink rollout when no consumer needs ~/.config/agentic-os/repos-on-disk.txt. Keep unrelated fleet-organization configuration separate.
  • Preserve an explicit report or doctor surface for resident checkout drift.

Current drift demonstrates the need: AOS's native roster includes voice-corpus, while AOSK's repeated flat personal roster omits it.

Ownership

  • Agent Compose - roles.kdl schema, strict validation, repository resolution, bundle metadata, provenance, and inspection.
  • AOSK - personal global, per-role, and resident-only repository declarations.
  • AOS - launch integration, deterministic host-plan output, native workspace and status-line consumption, and removal of the legacy manifest generator.
  • Ward - consume verified bundle repository metadata for warded workspace mounts without role re-derivation.
  • Infrastructure - converge checkouts and host configuration from AOS's compiled plan without owning a repository list.
  • Substrate build - retain its separate public-safe seed manifest and image lifecycle.

Config remains at the lowest layer that fully determines it. Infrastructure performs fleet rollout but does not redefine role policy.

Rollout sequence

  1. Add strict repository declarations, resolution, provenance, and bundle metadata to Agent Compose.
  2. Teach AOS and Ward to consume the verified bundle repository set.
  3. Add the AOSK global Lore and Content-only Voice Corpus declarations.
  4. Add deterministic host-residency derivation and resident-only pins.
  5. Move Infrastructure and AOS native consumers to the compiled host plan.
  6. Move AOSK registry and catalog jobs to that plan.
  7. Delete the standalone mount manifest, handwritten full rosters, repo-list symlink, compatibility code, and stale documentation.
  8. Regenerate affected documentation and feature inventories through each repository's declared workflow.

Acceptance criteria

  • roles.kdl has a strict, documented repository dependency schema.
  • Unknown nodes, invalid repository identities, duplicate declarations, and unknown references fail closed.
  • Each verified role bundle contains one complete repository set with decision provenance.
  • The same role receives the same repository set across every supported harness.
  • Every role receives coilysiren/lore.
  • Content Manager receives coilysiren/voice-corpus.
  • Roles other than Content Manager do not receive coilysiren/voice-corpus unless separately declared by an accepted policy change.
  • Native, standalone-container, and warded launches consume the same role repository decision.
  • No consumer re-parses roles.kdl or rebuilds the repository set.
  • mount-eligibility.json and its per-harness contract are removed.
  • The native resident set is derived from the complete role graph plus explicit resident-only pins.
  • Fresh-host convergence can obtain the residency plan without a checkout dependency cycle.
  • Infrastructure clones and refreshes the derived resident set without maintaining a second list.
  • Native workspace projection, cleanup, status, and drift reporting use the same residency plan.
  • AOSK registry, digest, pointer-skill, and catalog-graph jobs no longer depend on a handwritten flat roster.
  • Repeated public and private repos-on-disk manifests and the Infrastructure repo-list symlink are removed.
  • Substrate membership remains an independent, public-safe build input.
  • Agent Compose, AOS, AOSK, Ward, and Infrastructure documentation describe the final ownership boundary consistently.
  • Material feature changes update each affected docs/FEATURES.md.
  • Repository validation passes through each repository's declared Ward verbs.
## Outcome Make repository availability a first-class part of the Agent Compose role graph. Remove harness-specific mount variance, collapse the standalone mount-eligibility artifact into verified role bundles, and derive the native host residency plan from the complete role repository graph. The completed model has three concepts: * **Substrate** - build-time repositories available through the development image or cache. * **Role bundle** - doctrine, skills, providers, and repositories visible to one role. * **Host residency** - long-lived native checkouts derived from every role dependency plus explicit resident-only pins. Substrate remains separate because image availability, host persistence, and role visibility have different security and lifecycle boundaries. ## Role graph contract Extend the trusted `.agents/roles.kdl` schema with explicit repository dependencies. * Support global repository dependencies inherited by every role. * Support repository dependencies selected for one role. * Resolve each role to one complete, sorted, deduplicated repository set. * Keep repository selection invariant across Claude, Codex, Goose, OpenCode, and any later harness. * Validate logical `owner/repo` identity, duplicate declarations, unknown references, and invalid placement. * Preserve strict parsing. Do not ignore unknown top-level or role nodes. * Stop inferring repository mounts from the location of composed doctrine sources. Initial AOSK policy: * `coilysiren/lore` is a global repository dependency for every role. * `coilysiren/voice-corpus` is a Content Manager repository dependency. * Provider repositories continue to enter the appropriate role closure through the trusted provider graph. ## Collapse mount eligibility into the bundle Repository dependencies belong in Agent Compose's typed decision output and verified bundle metadata. * Agent Compose owns parsing, validation, resolution, provenance, and deterministic serialization. * Bundle inspection and description surfaces show why each repository entered the role. * AOS and Ward consume the complete resolved repository set from the verified bundle. * Consumers do not merge defaults or re-parse `roles.kdl`. * Harness frontmatter may still affect doctrine composition where supported, but never repository visibility. * Remove the standalone `~/.config/agent-compose/mount-eligibility.json` contract. * Remove the legacy per-harness manifest producer, source-location inference, drift checks, consumers, tests, and documentation. * Any compatibility bridge needed for rollout is temporary and is removed before this issue closes. ## Derive native host residency Replace handwritten expected-repository rosters with one compiled residency plan. The default resident set is: 1. The union of every canonical role's resolved repository dependencies. 2. Trusted provider and operating-context repositories required to build those roles. 3. Explicit resident-only pins for repositories that belong on a native host but must not become visible to a role. The derivation must preserve the distinction between residency and visibility. A resident-only pin does not grant a role access, and a role dependency does not become substrate merely because it is resident. AOS owns the deterministic host plan and its local machine-readable output. Infrastructure realizes that plan across hosts. * Expose the compiled residency plan through an installed AOS or Agent Compose surface that does not require the target checkouts to exist first. * Keep only a minimal, explicitly named bootstrap input if fresh-host convergence needs one. Do not retain a second full expected-repository roster. * Make AOS native workspace projection, startup cleanup, and the repository status line consume the same compiled plan. * Make Infrastructure's checkout sync consume the compiled plan instead of a source-tree list. * Retire the duplicated public and private flat roster maintenance. * Retire AOSK's `scripts/repos-on-disk.txt` once its registry, digest, pointer-skill, and catalog-graph consumers read the canonical compiled plan. * Remove the Infrastructure repo-list symlink rollout when no consumer needs `~/.config/agentic-os/repos-on-disk.txt`. Keep unrelated fleet-organization configuration separate. * Preserve an explicit report or doctor surface for resident checkout drift. Current drift demonstrates the need: AOS's native roster includes `voice-corpus`, while AOSK's repeated flat personal roster omits it. ## Ownership * **Agent Compose** - `roles.kdl` schema, strict validation, repository resolution, bundle metadata, provenance, and inspection. * **AOSK** - personal global, per-role, and resident-only repository declarations. * **AOS** - launch integration, deterministic host-plan output, native workspace and status-line consumption, and removal of the legacy manifest generator. * **Ward** - consume verified bundle repository metadata for warded workspace mounts without role re-derivation. * **Infrastructure** - converge checkouts and host configuration from AOS's compiled plan without owning a repository list. * **Substrate build** - retain its separate public-safe seed manifest and image lifecycle. Config remains at the lowest layer that fully determines it. Infrastructure performs fleet rollout but does not redefine role policy. ## Rollout sequence 1. Add strict repository declarations, resolution, provenance, and bundle metadata to Agent Compose. 2. Teach AOS and Ward to consume the verified bundle repository set. 3. Add the AOSK global Lore and Content-only Voice Corpus declarations. 4. Add deterministic host-residency derivation and resident-only pins. 5. Move Infrastructure and AOS native consumers to the compiled host plan. 6. Move AOSK registry and catalog jobs to that plan. 7. Delete the standalone mount manifest, handwritten full rosters, repo-list symlink, compatibility code, and stale documentation. 8. Regenerate affected documentation and feature inventories through each repository's declared workflow. ## Acceptance criteria * [ ] `roles.kdl` has a strict, documented repository dependency schema. * [ ] Unknown nodes, invalid repository identities, duplicate declarations, and unknown references fail closed. * [ ] Each verified role bundle contains one complete repository set with decision provenance. * [ ] The same role receives the same repository set across every supported harness. * [ ] Every role receives `coilysiren/lore`. * [ ] Content Manager receives `coilysiren/voice-corpus`. * [ ] Roles other than Content Manager do not receive `coilysiren/voice-corpus` unless separately declared by an accepted policy change. * [ ] Native, standalone-container, and warded launches consume the same role repository decision. * [ ] No consumer re-parses `roles.kdl` or rebuilds the repository set. * [ ] `mount-eligibility.json` and its per-harness contract are removed. * [ ] The native resident set is derived from the complete role graph plus explicit resident-only pins. * [ ] Fresh-host convergence can obtain the residency plan without a checkout dependency cycle. * [ ] Infrastructure clones and refreshes the derived resident set without maintaining a second list. * [ ] Native workspace projection, cleanup, status, and drift reporting use the same residency plan. * [ ] AOSK registry, digest, pointer-skill, and catalog-graph jobs no longer depend on a handwritten flat roster. * [ ] Repeated public and private `repos-on-disk` manifests and the Infrastructure repo-list symlink are removed. * [ ] Substrate membership remains an independent, public-safe build input. * [ ] Agent Compose, AOS, AOSK, Ward, and Infrastructure documentation describe the final ownership boundary consistently. * [ ] Material feature changes update each affected `docs/FEATURES.md`. * [ ] Repository validation passes through each repository's declared Ward verbs.
Author
Member

Implementation issues

The parent remains the complete architecture and done-condition. Each child owns its repository-local implementation and validation.

## Implementation issues * AOS: https://forgejo.coilysiren.me/coilyco-flight-deck/agentic-os/issues/895 * AOSK: https://forgejo.coilysiren.me/coilyco-bridge/agentic-os-kai/issues/837 * Infrastructure: https://forgejo.coilysiren.me/coilyco-flight-deck/infrastructure/issues/758 * Ward: https://forgejo.coilysiren.me/coilyco-flight-deck/ward/issues/1644 The parent remains the complete architecture and done-condition. Each child owns its repository-local implementation and validation.
Author
Member

Completed

The repository-availability migration is landed across every owning layer.

  • Agent Compose: 72cd03c plus validator follow-up dca225f. Strict role repository policy, bundle provenance, materialize-only handoff, and deterministic residency plan. Release run 159 passed.
  • Ward: efbb7ab1. Verified bundle repositories mount read-only under /refs. Promote and release workflows passed.
  • AOSK: 848073d. Lore is global, Voice Corpus is Content-only, resident-only policy is explicit, and the flat roster is deleted.
  • Infrastructure: 6d71f7d. Fresh-host policy bootstrap and compiled residency convergence are landed. Lint and secret-scan workflows passed.
  • AOS: PR coilyco-flight-deck/agentic-os#896 merged as c2817ed6. Verified repository metadata now drives native and Ward launch handoffs. The Python composer, standalone mount manifest, and embedded flat roster are retired.
  • AOS main validation, CLI release, pre-commit release, mirror, promotion, and full dev-base publication all passed.

All child issues are closed: agentic-os#895, agentic-os#618, agentic-os-kai#837, infrastructure#758, and ward#1644.

## Completed The repository-availability migration is landed across every owning layer. * Agent Compose: 72cd03c plus validator follow-up dca225f. Strict role repository policy, bundle provenance, materialize-only handoff, and deterministic residency plan. Release run 159 passed. * Ward: efbb7ab1. Verified bundle repositories mount read-only under /refs. Promote and release workflows passed. * AOSK: 848073d. Lore is global, Voice Corpus is Content-only, resident-only policy is explicit, and the flat roster is deleted. * Infrastructure: 6d71f7d. Fresh-host policy bootstrap and compiled residency convergence are landed. Lint and secret-scan workflows passed. * AOS: PR https://forgejo.coilysiren.me/coilyco-flight-deck/agentic-os/pulls/896 merged as c2817ed6. Verified repository metadata now drives native and Ward launch handoffs. The Python composer, standalone mount manifest, and embedded flat roster are retired. * AOS main validation, CLI release, pre-commit release, mirror, promotion, and full dev-base publication all passed. All child issues are closed: agentic-os#895, agentic-os#618, agentic-os-kai#837, infrastructure#758, and ward#1644.
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#200
No description provided.