Materialize the ordinary-skill provider repositories the role graph declares #126

Closed
opened 2026-08-12 01:26:46 +00:00 by coilyco-ops · 2 comments
Member

agent/compose/roles.kdl declares three ordinary-skill providers and globalizes them:

repository acompose path="coilyco-flight-deck/agent-compose"
repository echo path="coilyco-gaming/sirens-echo"
repository profile path="coilysiren/coilysiren"

The build does not act on that block. cmd/sirens-echo-compose expands only the composed-skill patterns and stages .agents/composed/ bodies, so the declared providers contribute nothing to a bundle today. The block is tracked and guarded (a global resolving to a private repository fails the suite) but otherwise inert.

Making it real means the compose stage checks out each declared provider and stages its .agents/skills/ catalogue alongside the composed sources. All three are public, so no credential is involved, but it is three more clones in the image build and a decision about pinning each one.

Worth deciding first

Whether Sirens Deep should have them at all. coilysiren/coilysiren is the public profile, coilyco-flight-deck/agent-compose is a tool repository, and coilyco-gaming/sirens-echo is this repository. A Discord agent answering community questions may not want any of them, in which case the right change is deleting the block rather than implementing it.

Complete when

Either the declared providers reach the bundle and a test proves their skills are selected, or the block is removed and the graph declares only what it uses.

`agent/compose/roles.kdl` declares three ordinary-skill providers and globalizes them: ```kdl repository acompose path="coilyco-flight-deck/agent-compose" repository echo path="coilyco-gaming/sirens-echo" repository profile path="coilysiren/coilysiren" ``` The build does not act on that block. `cmd/sirens-echo-compose` expands only the `composed-skill` patterns and stages `.agents/composed/` bodies, so the declared providers contribute nothing to a bundle today. The block is tracked and guarded (a global resolving to a private repository fails the suite) but otherwise inert. Making it real means the compose stage checks out each declared provider and stages its `.agents/skills/` catalogue alongside the composed sources. All three are public, so no credential is involved, but it is three more clones in the image build and a decision about pinning each one. ## Worth deciding first Whether Sirens Deep should have them at all. `coilysiren/coilysiren` is the public profile, `coilyco-flight-deck/agent-compose` is a tool repository, and `coilyco-gaming/sirens-echo` is this repository. A Discord agent answering community questions may not want any of them, in which case the right change is deleting the block rather than implementing it. ## Complete when Either the declared providers reach the bundle and a test proves their skills are selected, or the block is removed and the graph declares only what it uses.
Author
Member

Decision: materialize all three, tracking main

Direction from Kai, 2026-08-12 session.

The issue asks the right question first — whether Sirens Deep should have these providers at all, in which case the right change is deleting the block. Kai's answer is that it should. The block stays and the build is made to act on it.

So agent/compose/roles.kdl is not being deleted, and the "or the block is removed" branch of Complete when is closed out. What remains is the first branch: the declared providers reach the bundle and a test proves their skills are selected.

The three providers

repository acompose path="coilyco-flight-deck/agent-compose"
repository echo     path="coilyco-gaming/sirens-echo"
repository profile  path="coilysiren/coilysiren"

All three are public, so no credential is involved — as the issue notes.

Pinning: track main, unpinned

Each provider is cloned at main at image build time. No SHA pins, no release tags, no bump ritual. Skills stay current without a commit in this repository.

This has a consequence the engineer must handle rather than discover. An edit to a skill in coilyco-flight-deck/agent-compose will change Sirens Deep's rendered prompt with no commit in this repository at all. #125 puts a snapshot drift gate in CI, so left alone that combination fails builds here that contain no relevant change.

Resolution, decided with #125: CI detects the drift, regenerates the snapshot, and commits the update as a bot commit rather than failing the build. The reviewable diff of what the persona now says is preserved — which is what #98 wanted the snapshot for — without an unrelated upstream edit turning into a red build. Implement the two together; separately they conflict.

Note on echo

The echo provider is this repository. The build already has its own checkout, so this should stage from the working tree rather than performing a self-clone at main — which would otherwise mean a build on a branch composes the bundle from main's skills instead of its own.

Priority

Deferred past August 19.

## Decision: materialize all three, tracking main Direction from Kai, 2026-08-12 session. The issue asks the right question first — whether Sirens Deep should have these providers at all, in which case the right change is deleting the block. **Kai's answer is that it should.** The block stays and the build is made to act on it. So `agent/compose/roles.kdl` is **not** being deleted, and the "or the block is removed" branch of **Complete when** is closed out. What remains is the first branch: the declared providers reach the bundle and a test proves their skills are selected. ## The three providers ```kdl repository acompose path="coilyco-flight-deck/agent-compose" repository echo path="coilyco-gaming/sirens-echo" repository profile path="coilysiren/coilysiren" ``` All three are public, so no credential is involved — as the issue notes. ## Pinning: track `main`, unpinned Each provider is cloned at `main` at image build time. No SHA pins, no release tags, no bump ritual. Skills stay current without a commit in this repository. **This has a consequence the engineer must handle rather than discover.** An edit to a skill in `coilyco-flight-deck/agent-compose` will change Sirens Deep's rendered prompt with no commit in this repository at all. #125 puts a snapshot drift gate in CI, so left alone that combination fails builds here that contain no relevant change. **Resolution, decided with #125:** CI detects the drift, regenerates the snapshot, and commits the update as a bot commit rather than failing the build. The reviewable diff of what the persona now says is preserved — which is what #98 wanted the snapshot for — without an unrelated upstream edit turning into a red build. Implement the two together; separately they conflict. ## Note on `echo` The `echo` provider is this repository. The build already has its own checkout, so this should stage from the working tree rather than performing a self-clone at `main` — which would otherwise mean a build on a branch composes the bundle from `main`'s skills instead of its own. ## Priority Deferred past August 19.
Author
Member

Decision: restore the providers. This close reverses a recorded decision.

Direction from Kai, 2026-08-12 session.

c0bcae8"refactor(compose): drop the provider block the graph never used" — landed at 12:32:14Z and this issue closed 18 seconds later with no comment. The decision it reverses had been on this ticket since 11:55:24Z, 37 minutes earlier:

Kai's answer is that it should. The block stays and the build is made to act on it. So agent/compose/roles.kdl is not being deleted.

Kai has reviewed the reversal and restored the original decision. Materialize all three providers, tracking main unpinned, per the decision comment above. c0bcae8 should be reverted or its effect undone.

To be fair to the implementation

The drop is defensible on its merits, and probably rested on reasoning that never got written down: removing the block also removes the unpinned-drift problem, which is what forced #125's regenerate-and-commit machinery. Dropping one ticket's scope to simplify another's is a real argument.

It is not the call that was made, though, and the place to make that argument was a comment on this ticket before closing it.

What restoring costs, stated plainly

Three clones in the image build, a pinning posture that lets an upstream skill edit change Deep's prompt with no commit here, and #125's drift gate to absorb that. All three were weighed when the decision was made and are accepted.

Per the decision comment: the echo provider is this repository, so it stages from the working tree rather than self-cloning at main.

Sequencing

#125 is coupled to this and also needs reopening — see the comment there. The regenerate-and-commit gate is what makes unpinned providers safe, so restoring the providers without it recreates the exact red-build problem the pair was designed to avoid. Build them together, as originally specified.

Reopening

This issue needs to be reopened and the MCP surface available to this session has no grant for it — close, comment, create, and edit-title-or-body only, with reopen denied by absence. That is a Kai or ops action.

Process

Kai's call: this is a one-off correction, not a new rule. No standing process change.

## Decision: restore the providers. This close reverses a recorded decision. Direction from Kai, 2026-08-12 session. `c0bcae8` — *"refactor(compose): drop the provider block the graph never used"* — landed at 12:32:14Z and this issue closed 18 seconds later with no comment. The decision it reverses had been on this ticket since 11:55:24Z, 37 minutes earlier: > **Kai's answer is that it should.** The block stays and the build is made to act on it. So `agent/compose/roles.kdl` is **not** being deleted. **Kai has reviewed the reversal and restored the original decision.** Materialize all three providers, tracking `main` unpinned, per the decision comment above. `c0bcae8` should be reverted or its effect undone. ## To be fair to the implementation The drop is defensible on its merits, and probably rested on reasoning that never got written down: removing the block also removes the unpinned-drift problem, which is what forced #125's regenerate-and-commit machinery. Dropping one ticket's scope to simplify another's is a real argument. It is not the call that was made, though, and the place to make that argument was a comment on this ticket before closing it. ## What restoring costs, stated plainly Three clones in the image build, a pinning posture that lets an upstream skill edit change Deep's prompt with no commit here, and #125's drift gate to absorb that. All three were weighed when the decision was made and are accepted. Per the decision comment: the `echo` provider is this repository, so it stages from the working tree rather than self-cloning at `main`. ## Sequencing **#125 is coupled to this and also needs reopening** — see the comment there. The regenerate-and-commit gate is what makes unpinned providers safe, so restoring the providers without it recreates the exact red-build problem the pair was designed to avoid. Build them together, as originally specified. ## Reopening This issue needs to be reopened and the MCP surface available to this session has no grant for it — close, comment, create, and edit-title-or-body only, with reopen denied by absence. That is a **Kai or ops action**. ## Process Kai's call: this is a one-off correction, not a new rule. No standing process change.
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-gaming/sirens-echo#126
No description provided.