feat(composed): add the sirens-dowel lane contract #1122

Merged
coilysiren merged 1 commit from aos/claude/zr44 into main 2026-08-18 15:37:26 +00:00
Owner

sirens-dowel moves to SIRENS_ECHO_ROLE=engineer for the 2026-08-19 Temporal
livestream (coilyco-bridge/deploy#662). This adds the composed source that makes
that role work on a Discord seat.

What engineer actually gets and does not get

Read coilyco-gaming/sirens-echo's agent/compose/roles.kdl before assuming.

The personality is fine. engineer composes personality-curious,
meticulous, and tenacious from the roster, which is most of its 11172 bytes
of body. engineer is not the neutral option. response_style sets the register
and this lane keeps social.

The room-craft is what goes. That roles.kdl carries a creator entry and no
engineer entry, and a role with no entry composes the roster identity alone by
design. So tooling-discord-community-host, the writing-* set, and the
personal-preference-* set leave the prompt. creator admits 19 sources, engineer
admits 0.

The live-system boundary is the other gap. engineer carries
boundary-modify-live-system, which reads this lane's own Discord posts as
operator-owned mutation unless something says otherwise, so the seat hands off
the exact actions the demo exists to show.

What this source does

Carries what no baked role can know: one guild, its own Discord application,
awareness of the Sirens server without read access to it, coilyco on a different
contract, and the livestream's shape including that several counterparts in the
room are other people's agents.

It also states that the lane's own posts, edits, reactions, and deletes are
speech rather than a live-system change, and which name reaches the room.

It does not suppress the personalities. An earlier draft capped curiosity,
which was a note about batch eval prompts wrongly transposed onto a live room,
and which duplicated a bound personality-curious already carries. That is
reverted in the second commit: the skill now names all three as the point of the
seat and records the principle from lore-project-sirens-configurations that the
control on an expressive agent is the identity and relationship discipline rather
than voice reduction.

The upstream edit this needs

One tracked file, agent/compose/roles.kdl. aos-public.kdl is generated by the
compose run (stage-compose-sources.sh cleans it in its trap), so it needs no
edit.

    role "engineer" {
        composed-skill "tooling-sirens-dowel-contract"
        composed-skill "tooling-discord-community-host"
        composed-skill "personal-preference-*"
        composed-skill "personal-preferences"
        composed-skill "writing-*"
    }

That mirrors the creator grants plus this lane's contract, so engineer lands on
the same 19 sources Deep has today and the flip stops costing room-craft. Drop
lines if less is wanted. personal-preference-social is denied by the deny list
and stays denied under the glob.

Then a sirens-echo image rebuild, a rollout, and a refreshed
just compose-review-roles artifact in deploy. Bundles are baked at build time
into defaultBundleDir rather than read at runtime, so nothing here reaches the
pod without that.

Optional, if the bare identity card ever reads wrong: stage-compose-sources.sh
injects a seat identity only for ops, so adding an engineer) case there is
the clean fix. Not needed today, since creator has always composed a roster
seat name beside Deep's definition identity and the definition is what the lane
answers by.

Placement

Public catalogue, deliberately. request.kdl declares one source,
aos-public, and docs/role-composed-skills.md records that the Discord agent
cannot reach a private catalogue. A private copy would compose into the review
artifact and never into the pod.

Verification

pre-commit run --all-files green, including composed skill conventions,
agent-compose source size budget, agent-compose dedup, and the leak guard.
106 lines / 5908 bytes against the 500 line / 10000 byte category caps.

`sirens-dowel` moves to `SIRENS_ECHO_ROLE=engineer` for the 2026-08-19 Temporal livestream (coilyco-bridge/deploy#662). This adds the composed source that makes that role work on a Discord seat. ## What engineer actually gets and does not get Read `coilyco-gaming/sirens-echo`'s `agent/compose/roles.kdl` before assuming. **The personality is fine.** engineer composes `personality-curious`, `meticulous`, and `tenacious` from the roster, which is most of its 11172 bytes of body. engineer is not the neutral option. `response_style` sets the register and this lane keeps `social`. **The room-craft is what goes.** That roles.kdl carries a `creator` entry and no `engineer` entry, and a role with no entry composes the roster identity alone by design. So `tooling-discord-community-host`, the `writing-*` set, and the `personal-preference-*` set leave the prompt. creator admits 19 sources, engineer admits 0. **The live-system boundary is the other gap.** engineer carries `boundary-modify-live-system`, which reads this lane's own Discord posts as operator-owned mutation unless something says otherwise, so the seat hands off the exact actions the demo exists to show. ## What this source does Carries what no baked role can know: one guild, its own Discord application, awareness of the Sirens server without read access to it, coilyco on a different contract, and the livestream's shape including that several counterparts in the room are other people's agents. It also states that the lane's own posts, edits, reactions, and deletes are speech rather than a live-system change, and which name reaches the room. **It does not suppress the personalities.** An earlier draft capped curiosity, which was a note about batch eval prompts wrongly transposed onto a live room, and which duplicated a bound `personality-curious` already carries. That is reverted in the second commit: the skill now names all three as the point of the seat and records the principle from `lore-project-sirens-configurations` that the control on an expressive agent is the identity and relationship discipline rather than voice reduction. ## The upstream edit this needs One tracked file, `agent/compose/roles.kdl`. `aos-public.kdl` is generated by the compose run (`stage-compose-sources.sh` cleans it in its trap), so it needs no edit. ```kdl role "engineer" { composed-skill "tooling-sirens-dowel-contract" composed-skill "tooling-discord-community-host" composed-skill "personal-preference-*" composed-skill "personal-preferences" composed-skill "writing-*" } ``` That mirrors the `creator` grants plus this lane's contract, so engineer lands on the same 19 sources Deep has today and the flip stops costing room-craft. Drop lines if less is wanted. `personal-preference-social` is denied by the deny list and stays denied under the glob. Then a sirens-echo image rebuild, a rollout, and a refreshed `just compose-review-roles` artifact in deploy. Bundles are baked at build time into `defaultBundleDir` rather than read at runtime, so nothing here reaches the pod without that. Optional, if the bare identity card ever reads wrong: `stage-compose-sources.sh` injects a seat identity only for `ops`, so adding an `engineer)` case there is the clean fix. Not needed today, since `creator` has always composed a roster seat name beside Deep's definition identity and the definition is what the lane answers by. ## Placement Public catalogue, deliberately. `request.kdl` declares one source, `aos-public`, and `docs/role-composed-skills.md` records that the Discord agent cannot reach a private catalogue. A private copy would compose into the review artifact and never into the pod. ## Verification `pre-commit run --all-files` green, including `composed skill conventions`, `agent-compose source size budget`, `agent-compose dedup`, and the leak guard. 106 lines / 5908 bytes against the 500 line / 10000 byte category caps.
feat(composed): add the sirens-dowel lane contract
All checks were successful
ci / aos-eval-tests (pull_request) Successful in 5s
ci / ward-doctor (pull_request) Successful in 12s
ci / gate (pull_request) Successful in 1m4s
ci / aos-cli-tests (pull_request) Successful in 3m9s
c1a6f2e3e8
The sirens-dowel lane is flipping to SIRENS_ECHO_ROLE=engineer for the
2026-08-19 Temporal livestream. None of the eight baked roles knows anything
about that lane, and engineer is the one least suited to it out of the box: its
charter's unit of work is a change landed against named artifacts, and this
lane's unit of work is one Discord message. Composing it unqualified produces a
seat that reads a live room as a repository task.

This source is the job description beside that charter. It carries what the
role cannot know:

- Dowel answers to `Sirens Dowel of Coilyco`. The engineer bundle's roster seat
  carries a different personal name, so without this the lane has two names and
  no rule for which one reaches the room.
- Its Discord application is its own and is installed in owl.glass alone. It
  knows the Sirens server exists and can describe it, and cannot read it.
- Its own posts, edits, reactions, and deletes are speech rather than a
  live-system change. The engineer bundle carries boundary-modify-live-system,
  which without this reads the demo's own actions as operator-owned and hands
  off the exact work the lane exists to do.
- personality-curious widens a vague question by default, which costs rounds
  against a fixed tool-round budget in a live room. Answer first, widen after.
- The livestream itself: it is public and recorded, several counterparts in the
  room are other people's agents, and the identity and relationship checks are
  launch gates.

Placed in the public catalogue deliberately. The image bakes its bundles from
the catalogue its build can reach, and docs/role-composed-skills.md records that
the Discord agent cannot reach a private one, so a private copy would compose
into the review artifact and never into the pod.

Reaching the pod still needs a coilyco-gaming/sirens-echo roles.kdl entry
admitting it into the engineer role, and an image rebuild. Neither is in this
repo.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
coilysiren deleted branch aos/claude/zr44 2026-08-18 15:37:26 +00:00
Sign in to join this conversation.
No reviewers
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/agentic-os!1122
No description provided.