Add role-scoped skill providers to native and staged bundles #168

Closed
opened 2026-07-31 08:52:30 +00:00 by coilyco-ops · 2 comments
Member

Outcome

Allow a launch consumer to add capability-skill providers for one selected role without broadening every role or every host-global skill surface.

The first consumer is the Ops role. Its native and staged container bundles need the infrastructure and deploy skill catalogues. Skill names and descriptions remain available at discovery time, while full SKILL.md bodies remain lazy-loaded by the harness.

Related product boundary: #142

Current gap

  • Mount eligibility supports default repositories and per-harness repositories, but no per-role repositories.
  • Native launch resolves eligible repositories from the harness alone.
  • Additional local catalogues project to every configured load point.
  • Configuration therefore cannot add infrastructure and deploy skills only to Ops.

Contract

  • Add a generic role-scoped provider map to the eligibility and launch contract. Do not hardcode repository names or the Ops role in Agent Compose.
  • Resolve a role launch from the ordered union of defaults, harness providers, and selected-role providers.
  • Keep host-global convergence unchanged when no role is selected. A role-only provider must not leak into a bare native skill surface.
  • Apply the same role selection to native launches and staged or container-home bundle projection.
  • Preserve the ownership boundary where AOS hydrates and verifies local catalogue roots and Agent Compose performs offline selection, composition, and projection.
  • Keep bundles immutable and read-only. Continue tracking only Agent Compose-owned projections.
  • Preserve deterministic source precedence. Byte-identical duplicate skills may shadow or deduplicate according to the existing contract. Non-identical collisions must fail closed.

Acceptance

  • The configuration and generated eligibility schemas accept and round-trip role-scoped providers with strict unknown-field validation.
  • A fixture Ops launch includes skills from two role-only providers.
  • The same harness launched as Engineer excludes those providers.
  • Bare host convergence excludes role-only providers.
  • Native Codex and one staged-home consumer prove the same selected skill set.
  • Missing optional and required role providers retain explicit trace behavior.
  • describe and why output explain why a role provider and its skills were selected or excluded.
  • Existing harness-only and default-provider behavior remains backward compatible.
  • Documentation and docs/FEATURES.md describe the shipped boundary.
  • ward exec test and ward exec smoke pass from clean repository state.
## Outcome Allow a launch consumer to add capability-skill providers for one selected role without broadening every role or every host-global skill surface. The first consumer is the Ops role. Its native and staged container bundles need the infrastructure and deploy skill catalogues. Skill names and descriptions remain available at discovery time, while full SKILL.md bodies remain lazy-loaded by the harness. Related product boundary: https://forgejo.coilysiren.me/coilyco-flight-deck/agent-compose/issues/142 ## Current gap * Mount eligibility supports default repositories and per-harness repositories, but no per-role repositories. * Native launch resolves eligible repositories from the harness alone. * Additional local catalogues project to every configured load point. * Configuration therefore cannot add infrastructure and deploy skills only to Ops. ## Contract * Add a generic role-scoped provider map to the eligibility and launch contract. Do not hardcode repository names or the Ops role in Agent Compose. * Resolve a role launch from the ordered union of defaults, harness providers, and selected-role providers. * Keep host-global convergence unchanged when no role is selected. A role-only provider must not leak into a bare native skill surface. * Apply the same role selection to native launches and staged or container-home bundle projection. * Preserve the ownership boundary where AOS hydrates and verifies local catalogue roots and Agent Compose performs offline selection, composition, and projection. * Keep bundles immutable and read-only. Continue tracking only Agent Compose-owned projections. * Preserve deterministic source precedence. Byte-identical duplicate skills may shadow or deduplicate according to the existing contract. Non-identical collisions must fail closed. ## Acceptance * The configuration and generated eligibility schemas accept and round-trip role-scoped providers with strict unknown-field validation. * A fixture Ops launch includes skills from two role-only providers. * The same harness launched as Engineer excludes those providers. * Bare host convergence excludes role-only providers. * Native Codex and one staged-home consumer prove the same selected skill set. * Missing optional and required role providers retain explicit trace behavior. * describe and why output explain why a role provider and its skills were selected or excluded. * Existing harness-only and default-provider behavior remains backward compatible. * Documentation and docs/FEATURES.md describe the shipped boundary. * ward exec test and ward exec smoke pass from clean repository state.
Author
Member
Downstream adoption and provider readiness are tracked in: * https://forgejo.coilysiren.me/coilyco-bridge/agentic-os-kai/issues/794 * https://forgejo.coilysiren.me/coilyco-flight-deck/infrastructure/issues/702 * https://forgejo.coilysiren.me/coilyco-flight-deck/infrastructure/issues/703 * https://forgejo.coilysiren.me/coilyco-flight-deck/infrastructure/issues/704
Author
Member

Agent Compose projection blocker fixed on branch

The rejection came from internal/project: native projection refused any pre-existing load-point file, even when it already contained the exact canonical provider content.

Branch: https://forgejo.coilysiren.me/coilyco-flight-deck/agent-compose/compare/main...codex/issue-794-preserve-canonical-projections
Commit: 8efa125

The fix:

  • accepts byte-identical existing regular files and skill symlinks as already satisfied
  • leaves those canonical files in place
  • does not claim them in .agent-compose/projection.json
  • continues refusing differing foreign files

Regression tests cover both regular files and symlinks. ward exec test passes, including the full pre-commit suite.

## Agent Compose projection blocker fixed on branch The rejection came from `internal/project`: native projection refused any pre-existing load-point file, even when it already contained the exact canonical provider content. Branch: https://forgejo.coilysiren.me/coilyco-flight-deck/agent-compose/compare/main...codex/issue-794-preserve-canonical-projections Commit: `8efa125` The fix: * accepts byte-identical existing regular files and skill symlinks as already satisfied * leaves those canonical files in place * does not claim them in `.agent-compose/projection.json` * continues refusing differing foreign files Regression tests cover both regular files and symlinks. `ward exec test` passes, including the full pre-commit suite.
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#168
No description provided.