Name Echo's seat, and unpin the card wording #771

Merged
coilysiren merged 2 commits from eng/name-echos-seat into main 2026-08-14 07:50:16 +00:00
Member

Echo's seat becomes Echo (it). Deep keeps Gem (they).

closes #770

Merge this before coilyco-flight-deck/agentic-os#1052

That is not a preference. 2.20.0 breaks this repository as it stands, and this PR is the fix.

The card's wording moved from Agent-compose assigned the ... to Agent-compose assigned **you** the ..., and ValidateSystemPrompt anchored on the whole first clause. Every composing role fails against a 2.20.0 bundle:

role ai: composed profile is missing bundle surface "Agent-compose assigned the"

It fails the image build closed rather than shipping a broken agent, which is the right direction — but the base-image bump would leave this repo unbuildable until this lands. I found it by baking all eight roles locally against the real catalogue, not by reading.

The anchor now matches the stable half of the line. Upstream owns that wording and may revise it again; a full-sentence anchor turns every upstream copy edit into a downstream build break.

Why the seat is not in request.kdl

agent/compose/request.kdl is one template that bakes every roster role — stage-compose-sources.sh rewrites only its role line. An identity node there would rename all eight, including creator, which is Deep's seat. So the seat lives in the stage script keyed by role, and only ops has one, because only Echo brings its own identity.

Verified by baking:

ops       **Agent // Echo (it)**
creator   **Agent // Gem (they)**
engineer  **Agent // Angie (she)**

The record can now see a rename

agent/rendered/roles/<role>.bundle.txt exists so a diff answers "what does this role actually pull", and it recorded no seat — a rename would have landed invisibly in the one file meant to make it reviewable. It now carries Seat: Echo (it).

Also in range, and worth a look

A week of agent-compose releases could not ship (agent-compose#281), so this is the first time their effects reach here:

  • strats became exec upstream. Its record is renamed accordingly.
  • Every role gains three boundary-* skills, now delivered as ordinary skills rather than implied. ops goes 4 → 7 skills, which is the visible half of that.

Verification

All eight roles baked against the real catalogue with 2.20.0 and validated; go test ./..., policy-check, the prompt snapshots, the role-record check, and the full pre-commit suite all pass.

To get 2.20.0 locally I upgraded through the tap (brew upgrade agent-compose), which is the sanctioned path and was possible because the release pipeline is fixed. I did not build the container image; that happens in CI.

🤖 Generated with Claude Code

Echo's seat becomes `Echo (it)`. Deep keeps `Gem (they)`. closes #770 ## Merge this before coilyco-flight-deck/agentic-os#1052 That is not a preference. **2.20.0 breaks this repository as it stands**, and this PR is the fix. The card's wording moved from `Agent-compose assigned the ...` to `Agent-compose assigned **you** the ...`, and `ValidateSystemPrompt` anchored on the whole first clause. Every composing role fails against a 2.20.0 bundle: ``` role ai: composed profile is missing bundle surface "Agent-compose assigned the" ``` It fails the image build closed rather than shipping a broken agent, which is the right direction — but the base-image bump would leave this repo unbuildable until this lands. I found it by baking all eight roles locally against the real catalogue, not by reading. The anchor now matches the stable half of the line. Upstream owns that wording and may revise it again; a full-sentence anchor turns every upstream copy edit into a downstream build break. ## Why the seat is not in request.kdl `agent/compose/request.kdl` is one template that bakes **every** roster role — `stage-compose-sources.sh` rewrites only its `role` line. An `identity` node there would rename all eight, including `creator`, which is Deep's seat. So the seat lives in the stage script keyed by role, and only `ops` has one, because only Echo brings its own identity. Verified by baking: ``` ops **Agent // Echo (it)** creator **Agent // Gem (they)** engineer **Agent // Angie (she)** ``` ## The record can now see a rename `agent/rendered/roles/<role>.bundle.txt` exists so a diff answers "what does this role actually pull", and it recorded no seat — a rename would have landed invisibly in the one file meant to make it reviewable. It now carries `Seat: Echo (it)`. ## Also in range, and worth a look A week of agent-compose releases could not ship (agent-compose#281), so this is the first time their effects reach here: - `strats` became `exec` upstream. Its record is renamed accordingly. - Every role gains three `boundary-*` skills, now delivered as ordinary skills rather than implied. `ops` goes 4 → 7 skills, which is the visible half of that. ## Verification All eight roles baked against the real catalogue with 2.20.0 and validated; `go test ./...`, `policy-check`, the prompt snapshots, the role-record check, and the full pre-commit suite all pass. To get 2.20.0 locally I upgraded through the tap (`brew upgrade agent-compose`), which is the sanctioned path and was possible because the release pipeline is fixed. I did not build the container image; that happens in CI. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(compose): name Echo's seat, and unpin the card wording
Some checks failed
ci / test (pull_request) Successful in 35s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
ci / image-build (pull_request) Failing after 7s
db90cfc810
Echo composes ops and introduced Olaf, a seat from another context, in a lane
whose policy forbids describing itself at all. agent-compose 2.20.0 adds the
grammar; this uses it.

The seat is per-role in scripts/stage-compose-sources.sh rather than in
agent/compose/request.kdl, because that file is one template that bakes every
roster role and rewrites only its role line. An identity node there would rename
all eight, creator included, which is Deep's. Only ops has a seat, because only
Echo brings its own identity.

The blocker found on the way matters more than the rename. 2.20.0 moved the card
from "Agent-compose assigned the" to "assigned you the", and ValidateSystemPrompt
anchored on the whole first clause, so every composing role failed against a
2.20.0 bundle. Pinning agentic-os to 2.20.0 would have broken this image build
until this landed. The anchor now matches the stable half: upstream owns that
wording and can revise it again, and a full-sentence anchor turns every upstream
copy edit into a downstream break.

The role record gains the seat. It exists so a diff answers what a role actually
pulls, and a rename it cannot show is a silent one.

Also in range, from a week of agent-compose releases that could not ship: strats
became exec, so its record is renamed, and every role gains three boundary-*
skills now delivered as ordinary skills.

Verified by baking all eight roles against the real catalogue with 2.20.0: ops
carries Echo (it), creator still carries Gem (they), and every role validates.

closes #770

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>
Author
Member

🤖 Filed by Claude Code on Kai's behalf.

Blocked, and the ordering I gave when opening this was wrong. Do not merge yet.

ci / image-build fails here and will keep failing. The image bakes with agentic-os:release, which still ships agent-compose 2.19.0, and this branch needs 2.20.0 twice over:

  • scripts/stage-compose-sources.sh injects an identity node, which 2.19.0 rejects as unknown node.
  • The committed role records are 2.20.0 artifacts — the Seat: line, exec in place of strats, and ops at 7 skills rather than 4. The build regenerates the records and fails on any difference.

ci / test passes, because the Go suite does not bake bundles. Only the bake fails.

The corrected sequence

I said "merge #771 before agentic-os#1052." That was backwards. The dependency runs the other way: this PR needs the new base image, so it cannot go first.

  1. #774 — the anchor fix alone, split out of this branch. Backward compatible, green today.
  2. coilyco-flight-deck/agentic-os#1052 — the pin bump. Already fully green.
  3. agentic-os:release republishes.
  4. This PR, which turns green once step 3 lands.

Step 1 exists so step 2 does not leave main unbuildable in the gap. Without it there is a window where the old anchor meets the new wording.

What happens to this branch

It keeps the seat rename, the per-role identity injection, the role-record Seat: line, and the stratsexec record rename. The anchor change in it becomes a no-op once #774 lands, so this will need a rebase on main before it can merge. I will do that after step 3 rather than now, since the records will need rebaking against the real 2.20.0 image anyway.

#770 stays open as the tracker for the rename; #773 is the atomic issue #774 closes.

🤖 Filed by Claude Code on Kai's behalf.

> 🤖 Filed by Claude Code on Kai's behalf. **Blocked, and the ordering I gave when opening this was wrong.** Do not merge yet. `ci / image-build` fails here and will keep failing. The image bakes with `agentic-os:release`, which still ships agent-compose 2.19.0, and this branch needs 2.20.0 twice over: - `scripts/stage-compose-sources.sh` injects an `identity` node, which 2.19.0 rejects as `unknown node`. - The committed role records are 2.20.0 artifacts — the `Seat:` line, `exec` in place of `strats`, and `ops` at 7 skills rather than 4. The build regenerates the records and fails on any difference. `ci / test` passes, because the Go suite does not bake bundles. Only the bake fails. ## The corrected sequence I said "merge #771 before agentic-os#1052." That was backwards. The dependency runs the other way: this PR needs the new base image, so it cannot go first. 1. #774 — the anchor fix alone, split out of this branch. Backward compatible, green today. 2. coilyco-flight-deck/agentic-os#1052 — the pin bump. Already fully green. 3. `agentic-os:release` republishes. 4. This PR, which turns green once step 3 lands. Step 1 exists so step 2 does not leave `main` unbuildable in the gap. Without it there is a window where the old anchor meets the new wording. ## What happens to this branch It keeps the seat rename, the per-role identity injection, the role-record `Seat:` line, and the `strats` → `exec` record rename. The anchor change in it becomes a no-op once #774 lands, so this will need a rebase on `main` before it can merge. I will do that after step 3 rather than now, since the records will need rebaking against the real 2.20.0 image anyway. #770 stays open as the tracker for the rename; #773 is the atomic issue #774 closes. > 🤖 Filed by Claude Code on Kai's behalf.
merge: take the anchor fix from main
All checks were successful
ci / test (pull_request) Successful in 15m59s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
ci / image-build (pull_request) Successful in 2m24s
6c30ea9cca
#774 landed the same anchor loosening this branch carried, so the shared line
resolves to one value. See sirens-echo#770.

Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>

# Conflicts:
#	internal/community/prompt.go
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-gaming/sirens-echo!771
No description provided.