Retire .agents/roles.kdl across the fleet, with a compatibility window #341

Open
opened 2026-08-25 17:09:54 +00:00 by coilyco-ops · 0 comments
Member

Parent

#329

What to build

The last KDL surface, and the only one that crosses repository boundaries.

internal/schema/schema.go pins providerRolesPath = ".agents/roles.kdl", and internal/nativelaunch/launch.go:366 stats that exact filename to decide whether a root is an eligible provider. Native role launch refuses without it, with the error at launch.go:396 naming the path directly.

Two consumer repositories carry the file on this host:

  • coilyco-flight-deck/agentic-os
  • coilyco-bridge/agentic-os-kai

Plus examples/role-provider-selector/roles.kdl in this repo.

HITL, and it needs a rollout. Per the authoring-versus-rollout law, the format change is authored here and the fleet convergence belongs to infrastructure/ansible. A brew-installed acompose can be older than the repositories it reads, so the reader must accept both filenames during the window rather than flipping atomically.

Sequence:

  1. Land reader support for both filenames in acompose, preferring the new one.
  2. Release, and let the release propagate to every host.
  3. Convert the two consumer repositories and the example.
  4. Converge the fleet through ansible.
  5. Only then remove the old filename from the reader.

Step 5 does not land in the same release as step 1.

Acceptance criteria

  • acompose reads both the old and new filenames, preferring the new one, and that release is out.
  • Both consumer repositories carry the new file, and the example is converted.
  • An ansible role converges the fleet, authored in infrastructure rather than here.
  • A host running the previous acompose release against a converted repository still resolves its provider.
  • Old-filename support is removed only after fleet convergence is confirmed, in a later release.
  • internal/schema no longer imports kdl-go, closing the last dependency use from #339.
  • The error at launch.go:396 names the new path.

Blocked by

## Parent #329 ## What to build The last KDL surface, and the only one that crosses repository boundaries. `internal/schema/schema.go` pins `providerRolesPath = ".agents/roles.kdl"`, and `internal/nativelaunch/launch.go:366` stats that exact filename to decide whether a root is an eligible provider. Native role launch refuses without it, with the error at `launch.go:396` naming the path directly. Two consumer repositories carry the file on this host: * `coilyco-flight-deck/agentic-os` * `coilyco-bridge/agentic-os-kai` Plus `examples/role-provider-selector/roles.kdl` in this repo. **HITL, and it needs a rollout.** Per the authoring-versus-rollout law, the format change is authored here and the fleet convergence belongs to infrastructure/ansible. A brew-installed `acompose` can be older than the repositories it reads, so the reader must accept both filenames during the window rather than flipping atomically. Sequence: 1. Land reader support for both filenames in acompose, preferring the new one. 2. Release, and let the release propagate to every host. 3. Convert the two consumer repositories and the example. 4. Converge the fleet through ansible. 5. Only then remove the old filename from the reader. Step 5 does not land in the same release as step 1. ## Acceptance criteria - [ ] acompose reads both the old and new filenames, preferring the new one, and that release is out. - [ ] Both consumer repositories carry the new file, and the example is converted. - [ ] An ansible role converges the fleet, authored in infrastructure rather than here. - [ ] A host running the previous acompose release against a converted repository still resolves its provider. - [ ] Old-filename support is removed only after fleet convergence is confirmed, in a later release. - [ ] `internal/schema` no longer imports `kdl-go`, closing the last dependency use from #339. - [ ] The error at `launch.go:396` names the new path. ## Blocked by - Blocked by #339
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#341
No description provided.