Pin agent-compose 2.20.0 for the seat identity override #1052

Merged
coilysiren merged 1 commit from ops/pin-agent-compose-2.20.0 into main 2026-08-14 04:56:49 +00:00
Member

One line: AGENT_COMPOSE_VERSION 2.19.0 → 2.20.0 at docker/dev-base/full/Dockerfile:69.

closes #1051

Why now

2.20.0 adds an optional identity node to the compose request grammar:

compose {
    role "ops"
    identity name="Echo" pronouns="it"
    delivery "native-skills"
}

coilyco-gaming/sirens-echo is waiting on it. Sirens Echo composes ops for its operator doctrine and answers as Sirens Echo, so its prompt currently also introduces Olaf — a seat name from another context, in a lane whose own policy forbids describing itself at all. That fix cannot land in sirens-echo until this image ships a binary that parses the node; against 2.19.0 the build fails with unknown node "identity".

Background in coilyco-flight-deck/agent-compose#280.

This is a week of work, not one feature

Worth knowing before merging. 2.19.0 shipped 2026-08-07 and nothing followed it, because agent-compose's release pipeline failed on every main push for a week — 33 consecutive runs. Root cause and fix in agent-compose#281: scripts/test.sh kept calling a scorecard subcommand that #262 had deleted, along with a results directory it moved and an output document it removed.

So the 2.19.0 → 2.20.0 range also carries the driver-plus-reviewer eval stack retirement, role adjacency in KDL, the evalkit wiring, and the person loader refactors. The diff is bigger than a routine pin bump and the rebuild deserves a look for that reason rather than for the identity node.

Risk

The identity node is additive and optional, and every existing compose request in the fleet omits it, so no bundle changes identity as a result of this bump. A request without the node composes exactly as before.

The one behavioural change in the range worth watching: agent-compose#262 stopped feeding evaluation asset digests into bundle content digests, because editing an eval prompt was changing the digest of a bundle whose delivered content had not changed. Every bundle digest moves once as a result. That is a correction, but it will show up as churn on the first rebuild.

Verification

tests/test_dev_base_image.py passes (10 tests — it asserts the pin sites exist and are well-formed), and pre-commit is clean on the changed file.

I did not build the image. That happens in CI, and it is the step that would catch a bad asset URL or checksum, so treat the download path as verified by the build rather than by me. v2.20.0 does have all five platform binaries plus SHA256SUMS attached, which is what install-common.sh fetches.

🤖 Generated with Claude Code

One line: `AGENT_COMPOSE_VERSION` 2.19.0 → 2.20.0 at `docker/dev-base/full/Dockerfile:69`. closes #1051 ## Why now 2.20.0 adds an optional `identity` node to the compose request grammar: ```kdl compose { role "ops" identity name="Echo" pronouns="it" delivery "native-skills" } ``` `coilyco-gaming/sirens-echo` is waiting on it. Sirens Echo composes `ops` for its operator doctrine and answers as Sirens Echo, so its prompt currently also introduces Olaf — a seat name from another context, in a lane whose own policy forbids describing itself at all. That fix cannot land in sirens-echo until this image ships a binary that parses the node; against 2.19.0 the build fails with `unknown node "identity"`. Background in coilyco-flight-deck/agent-compose#280. ## This is a week of work, not one feature Worth knowing before merging. 2.19.0 shipped 2026-08-07 and nothing followed it, because agent-compose's release pipeline failed on **every** main push for a week — 33 consecutive runs. Root cause and fix in agent-compose#281: `scripts/test.sh` kept calling a `scorecard` subcommand that #262 had deleted, along with a results directory it moved and an output document it removed. So the 2.19.0 → 2.20.0 range also carries the driver-plus-reviewer eval stack retirement, role adjacency in KDL, the evalkit wiring, and the person loader refactors. The diff is bigger than a routine pin bump and the rebuild deserves a look for that reason rather than for the identity node. ## Risk The `identity` node is additive and optional, and every existing compose request in the fleet omits it, so **no bundle changes identity as a result of this bump**. A request without the node composes exactly as before. The one behavioural change in the range worth watching: agent-compose#262 stopped feeding evaluation asset digests into bundle content digests, because editing an eval prompt was changing the digest of a bundle whose delivered content had not changed. Every bundle digest moves once as a result. That is a correction, but it will show up as churn on the first rebuild. ## Verification `tests/test_dev_base_image.py` passes (10 tests — it asserts the pin sites exist and are well-formed), and pre-commit is clean on the changed file. I did **not** build the image. That happens in CI, and it is the step that would catch a bad asset URL or checksum, so treat the download path as verified by the build rather than by me. v2.20.0 does have all five platform binaries plus `SHA256SUMS` attached, which is what `install-common.sh` fetches. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chore(dev-base): pin agent-compose 2.20.0 for the seat identity override
All checks were successful
ci / ward-doctor (pull_request) Successful in 22s
ci / aos-cli-tests (pull_request) Successful in 34s
ci / gate (pull_request) Successful in 1m6s
dev-base-pr / build (pull_request) Successful in 20m50s
53e33cd609
Bumps AGENT_COMPOSE_VERSION from 2.19.0 to 2.20.0.

2.20.0 adds an optional `identity name=... pronouns=...` node to the compose
request grammar, so a caller can name the seat it composes without replacing the
whole person package. coilyco-gaming/sirens-echo needs it: Sirens Echo composes
ops for its operator doctrine and answers as Sirens Echo, so its prompt also
introduces Olaf today. That change cannot land there until this image carries a
binary that parses the node.

The bump is larger than one feature. 2.19.0 shipped 2026-08-07 and nothing
followed it, because agent-compose's release pipeline failed on every main push
for a week - 33 consecutive runs, fixed in agent-compose#281. So this range also
carries the driver-plus-reviewer eval stack retirement, role adjacency in KDL,
the evalkit wiring, and the person loader refactors.

The identity node itself is additive and optional, and every existing request in
the fleet omits it, so no bundle changes identity from this bump. The range's
one behavioural change to watch on rebuild is agent-compose#262 dropping
evaluation asset digests from bundle content digests, which moves every bundle
digest once.

closes #1051

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.

Merge coilyco-gaming/sirens-echo#771 before this. Found while verifying the consumer side, and it inverts the ordering I gave when opening this.

2.20.0 changed the identity card's wording from Agent-compose assigned the ... to Agent-compose assigned **you** the .... sirens-echo's ValidateSystemPrompt anchors on the literal "Agent-compose assigned the", so every composing role fails against a 2.20.0 bundle:

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

I found it by baking all eight roles locally against the real catalogue with 2.20.0, not by reading the diff. It fails the image build closed rather than shipping a broken agent, which is the right direction — but merging this first leaves sirens-echo unbuildable until #771 lands.

sirens-echo#771 fixes the anchor to match the stable half of the line, and also carries the seat rename this bump was for.

Worth checking beyond sirens-echo

That wording is upstream's to own, and I only verified one consumer. Any other repository anchoring on the old card text has the same latent break, and it would show up as a build failure after this merges rather than before. Agent-compose assigned the is the string to grep for.

I have not swept the fleet for it.

🤖 Filed by Claude Code on Kai's behalf.

> 🤖 Filed by Claude Code on Kai's behalf. **Merge coilyco-gaming/sirens-echo#771 before this.** Found while verifying the consumer side, and it inverts the ordering I gave when opening this. 2.20.0 changed the identity card's wording from `Agent-compose assigned the ...` to `Agent-compose assigned **you** the ...`. sirens-echo's `ValidateSystemPrompt` anchors on the literal `"Agent-compose assigned the"`, so every composing role fails against a 2.20.0 bundle: ``` role ai: composed profile is missing bundle surface "Agent-compose assigned the" ``` I found it by baking all eight roles locally against the real catalogue with 2.20.0, not by reading the diff. It fails the image build closed rather than shipping a broken agent, which is the right direction — but merging this first leaves sirens-echo unbuildable until #771 lands. sirens-echo#771 fixes the anchor to match the stable half of the line, and also carries the seat rename this bump was for. ## Worth checking beyond sirens-echo That wording is upstream's to own, and I only verified one consumer. Any other repository anchoring on the old card text has the same latent break, and it would show up as a build failure after this merges rather than before. `Agent-compose assigned the` is the string to grep for. I have not swept the fleet for it. > 🤖 Filed by Claude Code on Kai's behalf.
coilysiren deleted branch ops/pin-agent-compose-2.20.0 2026-08-14 04:56:49 +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!1052
No description provided.