fix(dev-base): pin agent-compose past the Core Roster reflow #1233

Merged
coilyco-ops merged 2 commits from fix/agent-compose-pin-v3-roster into main 2026-08-25 09:42:00 +00:00
Owner

The image ships agent-compose 2.32.0, which predates the seven-seat reflow (agent-compose@12c7198, first released in 2.39.0). So CI composes the old roster while the catalogue it reads is the new one, and the two halves have been landing separately.

How it surfaced

coilyco-gaming/sirens-echo is stuck between them. Its role-drift-check clones agentic-os main fresh, so it already sees the renamed composed sources, but it bakes with this image's agent-compose, which still has engineer, ops and creator in the core roster.

  • follow the source renames and the build gets past the expander but bakes against a roster that still owns those slugs
  • move those roles into the repository's own person package, which is what its deployment needs, and the bake fails role engineer exists in both rosters

There is no version of that repository correct against both halves. That is what makes this the pin rather than the consumer.

It also caught me out directly, which is worth recording: my host has 2.45.0, so just role-snapshot recorded a v3 bake while CI bakes the pre-reflow one. That is exactly the defect coilyco-gaming/sirens-echo#1129 describes — "role-snapshot records whatever roster the host bakes" — and a local green was much weaker evidence than it looked.

Why 2.47.0 and not 2.39.0

internal/person is byte-identical from 2.45.0 to 2.47.0, so the roster is the same one consumers are already recording snapshots against, and pinning the minimum that contains the reflow would be stale on arrival.

Blast radius

Every repository whose CI composes in this image. The roster it bakes changes from the pre-reflow seats to platform, sysadmin, eval, frontend, gamedev, tpm, devrel. That is the change the catalogue half is already forcing on them, so this closes the split rather than opening one — but it is a fleet-wide behavior change on a feat! upstream, so it deserves the second look.

Single pin site. just test 716 passed, pre-commit run --all-files green. The dev-base tests assert the ARG exists rather than its value, so nothing else moves.

The image ships agent-compose **2.32.0**, which predates the seven-seat reflow (`agent-compose@12c7198`, first released in **2.39.0**). So CI composes the *old* roster while the catalogue it reads is the *new* one, and the two halves have been landing separately. ## How it surfaced `coilyco-gaming/sirens-echo` is stuck between them. Its `role-drift-check` clones agentic-os `main` fresh, so it already sees the renamed composed sources, but it bakes with this image's agent-compose, which still has `engineer`, `ops` and `creator` in the core roster. - follow the source renames and the build gets past the expander but bakes against a roster that still owns those slugs - move those roles into the repository's own person package, which is what its deployment needs, and the bake fails `role engineer exists in both rosters` There is no version of that repository correct against both halves. That is what makes this the pin rather than the consumer. It also caught me out directly, which is worth recording: my host has 2.45.0, so `just role-snapshot` recorded a v3 bake while CI bakes the pre-reflow one. That is exactly the defect `coilyco-gaming/sirens-echo#1129` describes — "role-snapshot records whatever roster the host bakes" — and a local green was much weaker evidence than it looked. ## Why 2.47.0 and not 2.39.0 `internal/person` is byte-identical from 2.45.0 to 2.47.0, so the roster is the same one consumers are already recording snapshots against, and pinning the minimum that contains the reflow would be stale on arrival. ## Blast radius Every repository whose CI composes in this image. The roster it bakes changes from the pre-reflow seats to `platform`, `sysadmin`, `eval`, `frontend`, `gamedev`, `tpm`, `devrel`. That is the change the catalogue half is already forcing on them, so this closes the split rather than opening one — but it is a fleet-wide behavior change on a `feat!` upstream, so it deserves the second look. Single pin site. `just test` 716 passed, `pre-commit run --all-files` green. The dev-base tests assert the ARG exists rather than its value, so nothing else moves.
fix(dev-base): pin agent-compose past the Core Roster reflow
Some checks failed
dev-base-pr / build (pull_request) Failing after 8m10s
ci / aos-eval-tests (pull_request) Has been cancelled
ci / ward-doctor (pull_request) Has been cancelled
ci / gate (pull_request) Has been cancelled
ci / aos-cli-tests (pull_request) Has been cancelled
2a806db1c6
The image ships agent-compose 2.32.0, which predates the seven-seat reflow, so
CI composes the old roster while the catalogue it reads is the new one. The two
halves of that split have been landing separately and the repositories in
between are stuck holding both.

sirens-echo is where it surfaced. Its role-drift-check clones agentic-os main
fresh, so it already sees the renamed composed sources, but it bakes with this
image's agent-compose, which still has engineer, ops and creator in the core
roster. A repository that follows the rename gets a red build, and one that
moves those roles into its own person package collides with a core roster that
still claims the slugs. There is no version of that repository that is correct
against both, which is what makes this the pin rather than the consumer.

The reflow first shipped in 2.39.0. Pinning to 2.47.0 rather than the minimum
because internal/person is byte-identical from 2.45.0 to 2.47.0, so the roster
is the same one consumers are already recording snapshots against, and a
minimum-viable pin would be stale on arrival.

Blast radius is every repository whose CI composes in this image: the roster it
bakes changes from the pre-reflow seats to platform, sysadmin, eval, frontend,
gamedev, tpm and devrel. That is the change those repositories are already
being asked to absorb by the catalogue half, so this closes the split rather
than opening one.

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>
Agent-Role: platform
fix(dev-base): move the roster assertions to the seven-seat numbers
Some checks failed
dev-base-pr / build (pull_request) Successful in 4m45s
ci / aos-eval-tests (pull_request) Has been cancelled
ci / aos-cli-tests (pull_request) Successful in 17m58s
ci / ward-doctor (pull_request) Successful in 12m4s
ci / gate (pull_request) Successful in 12m47s
f15d8020be
The pin bump failed the image build on the image's own verification, which is
the check doing its job:

    v2.47.0
    roster .role_order | length = 7, expected 8

verify-common.sh pinned the pre-reflow roster shape, so the counts had to move
with the binary that produces them. Measured against 2.47.0 rather than derived
from the reflow diff: seven roles and ten personalities, where the assertions
said eight and eighteen.

Both numbers are restated configuration in the sense the house rule warns about,
and a roster that grows will fail an image build again. Leaving them as literals
here anyway, because the whole point of this assertion is to notice a roster
change at build time rather than in a consumer's CI a week later. Deriving them
from the same binary they check would assert nothing.

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>
Agent-Role: platform
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!1233
No description provided.