feat(dowel): compose the lane without boundaries it has no seat for #1018

Merged
coilysiren merged 12 commits from feat/dowel-no-boundaries into main 2026-08-19 06:57:55 +00:00
Member

Kai: "dowel really shouldn't be loading any boundaries. at all." This is the lane end of that. Blocked on the image, see sequencing at the bottom.

Why

A defer-side boundary is routing: hand this to the role that owns it. engineer defers modify-live-system to ops and seek-external-validation to exec. Every lane in this harness is one agent alone in a guild, so Dowel has neither, and both rules resolve to "hand this to somebody who is not here" - a stop rather than a handoff.

The tell that it was already biting: site-work.md shipped a paragraph saying the composed boundary "does not reach these verbs" and "this file wins." A deployment writing prose to countermand its own composed doctrine means the doctrine was composed into the wrong place. That paragraph is deleted here, not rewritten, and what replaces it states Dowel's authority directly instead of as an exception to somebody else's rule.

Scope, and what it does not touch

seat_boundary_omissions emits boundary-omit for engineer only, mirroring seat_identity's shape. Keyed on the role because one request template bakes all eight and the role slug is the only key the bake has.

Verified by baking all three live roles against the new agent-compose:

engineer  boundaries: 0     <- Dowel
ops       boundaries: 3     <- Echo, unchanged
creator   boundaries: 1     <- Deep, unchanged

Engineer's identity card has zero occurrences of the string "boundar". Echo keeps all three including the one it owns, which cannot be omitted at all - agent-compose refuses it.

Worth naming: by the same argument Echo and Deep are also single seats and also defer to roles that are not there. I did not touch them. That is a behaviour change to two live lanes, and it is not what tonight is for.

The guard that got removed, and what replaces it

Dropping boundary-modify-live-system drops the general "hand running-system changes to DevOps" doctrine. The thing that replaces it is agentic-os#1138, which rewrites tooling-sirens-dowel-contract so the escalation rule stands on its own: a rollout, a cluster, a release, a promotion, or a credential goes to a human, named as its own rule rather than as a footnote qualifying a boundary.

That sentence existed before as a qualifier. Once the boundary is gone it is the only thing saying it, so it should not read as an aside. #1138 is safe to merge independently and does not need to wait for this.

Docs

New page docs/sirens-echo-boundaries.md. It is linked from the stage script rather than from sirens-echo-compose.md, because that page has 11 characters of headroom under the 8000 cap.

That is not a one-off. Every doc in this repo now sits within 7 characters of the cap:

7993  delivery, phrases, tools
7994  commands
7995  FEATURES, progress, reply-assembly, turn-stages
8000  access, admission, mcp, telemetry
8014  worklog

I raised this on #1007 and #1003 after shaving prose to fit. I am not shaving again - the pages are at the cap because agents have been compressing to land changes, and the next person hits the same wall. This wants a band decision, not another trim.

Sequencing

This PR fails to build on the current release image, because boundary-omit is an unknown node to agent-compose 2.31.0. Merge order:

  1. agent-compose#310 - the knob. Merge, which releases a new version.
  2. agentic-os - bump AGENT_COMPOSE_VERSION in docker/dev-base/full/Dockerfile to that version. Merge, which republishes agentic-os:release.
  3. agentic-os#1138 - the contract prose. Independent of 1 and 2, can go any time.
  4. This PR. Then a rollout.

AOS_CATALOG_HEAD resolves from main at build time, so #1138 needs no pin bump here - it just needs to be on main before this image builds.

go test ./... and pre-commit run --all-files green.

Kai: *"dowel really shouldn't be loading any boundaries. at all."* This is the lane end of that. **Blocked on the image, see sequencing at the bottom.** ## Why A defer-side boundary is routing: hand this to the role that owns it. `engineer` defers `modify-live-system` to `ops` and `seek-external-validation` to `exec`. **Every lane in this harness is one agent alone in a guild**, so Dowel has neither, and both rules resolve to "hand this to somebody who is not here" - a stop rather than a handoff. The tell that it was already biting: `site-work.md` shipped a paragraph saying the composed boundary "does not reach these verbs" and "this file wins." A deployment writing prose to countermand its own composed doctrine means the doctrine was composed into the wrong place. That paragraph is deleted here, not rewritten, and what replaces it states Dowel's authority directly instead of as an exception to somebody else's rule. ## Scope, and what it does not touch `seat_boundary_omissions` emits `boundary-omit` for **engineer only**, mirroring `seat_identity`'s shape. Keyed on the role because one request template bakes all eight and the role slug is the only key the bake has. Verified by baking all three live roles against the new agent-compose: ``` engineer boundaries: 0 <- Dowel ops boundaries: 3 <- Echo, unchanged creator boundaries: 1 <- Deep, unchanged ``` Engineer's identity card has zero occurrences of the string "boundar". Echo keeps all three including the one it owns, which cannot be omitted at all - agent-compose refuses it. Worth naming: by the same argument Echo and Deep are also single seats and also defer to roles that are not there. I did not touch them. That is a behaviour change to two live lanes, and it is not what tonight is for. ## The guard that got removed, and what replaces it Dropping `boundary-modify-live-system` drops the general "hand running-system changes to DevOps" doctrine. The thing that replaces it is agentic-os#1138, which rewrites `tooling-sirens-dowel-contract` so the escalation rule stands on its own: a rollout, a cluster, a release, a promotion, or a credential goes to a human, named as its own rule rather than as a footnote qualifying a boundary. That sentence existed before as a qualifier. Once the boundary is gone it is the only thing saying it, so it should not read as an aside. **#1138 is safe to merge independently and does not need to wait for this.** ## Docs New page `docs/sirens-echo-boundaries.md`. It is linked from the stage script rather than from `sirens-echo-compose.md`, because that page has **11 characters of headroom** under the 8000 cap. That is not a one-off. Every doc in this repo now sits within 7 characters of the cap: ``` 7993 delivery, phrases, tools 7994 commands 7995 FEATURES, progress, reply-assembly, turn-stages 8000 access, admission, mcp, telemetry 8014 worklog ``` I raised this on #1007 and #1003 after shaving prose to fit. I am not shaving again - the pages are at the cap because agents have been compressing to land changes, and the next person hits the same wall. This wants a band decision, not another trim. ## Sequencing This PR **fails to build** on the current release image, because `boundary-omit` is an unknown node to agent-compose 2.31.0. Merge order: 1. agent-compose#310 - the knob. Merge, which releases a new version. 2. agentic-os - bump `AGENT_COMPOSE_VERSION` in `docker/dev-base/full/Dockerfile` to that version. Merge, which republishes `agentic-os:release`. 3. agentic-os#1138 - the contract prose. Independent of 1 and 2, can go any time. 4. **This PR.** Then a rollout. `AOS_CATALOG_HEAD` resolves from `main` at build time, so #1138 needs no pin bump here - it just needs to be on main before this image builds. `go test ./...` and `pre-commit run --all-files` green.
feat(dowel): compose the lane without boundaries it has no seat for
Some checks failed
ci / image-build (pull_request) Failing after 31s
ci / test (pull_request) Failing after 52s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
e83b87fe22
Every lane here is one agent alone in a guild, so a defer-side boundary
routes work to a seat that is not present. Dowel runs engineer, which
defers modify-live-system to ops and seek-external-validation to exec,
and gets neither. The rule reads as a stop rather than a handoff.

The stage script emits boundary-omit for engineer only. Keyed on the
role because one request template bakes all eight and the role slug is
the only key the bake has, the same constraint behind seat_identity.
Echo and Deep are untouched, verified by baking all three.

site-work.md stops arguing with a boundary that is no longer composed
and states the lane's authority directly.

Requires agent-compose with boundary-omit (agent-compose#310), so this
cannot merge until the release image carries it.

Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
fix(docs): restore the page this branch clobbered, and add none
Some checks failed
ci / image-build (pull_request) Failing after 34s
ci / test (pull_request) Failing after 53s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
41227b9c63
docs/sirens-echo-boundaries.md landed on main after this branch forked,
covering eval refusal boundaries. A new page of mine took the same name
and overwrote all 104 lines of it. Restored byte for byte.

Renaming mine hit the other wall: docs/ is at 41 of its 40-doc cap, and
the validator says outright that splitting to clear the size cap trades
one violation for another. So this adds no page. The mechanism is
documented in agent-compose, which owns it, and the lane keeps a two
line comment naming the issue.

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

Correction to the Docs section above: this PR adds no documentation page. Two things happened after I wrote that.

First, docs/sirens-echo-boundaries.md already exists on main - it landed after this branch forked and covers eval refusal boundaries, a different subject. My new page took the same filename and overwrote all 104 lines of it. Restored byte for byte in the second commit. My fault, and worth a reviewer's eye on that commit specifically.

Second, renaming mine hit the other wall:

FAIL: docs/: 41 docs exceeds the 40-doc cap for the large band. Merge related
pages; splitting one doc into two to clear the size cap trades one violation
for another.

The validator is explicit that this is deliberate: "There is no per-file escape from a size or count cap", and the count cap exists "because a per-doc cap on its own does not bound a docs folder, it reshapes it." large is the top band. So the repo is at the designed ceiling on both axes at once - 40 pages, each within 7 characters of 8000 - and the validator's instruction is to merge pages, not add one.

So no page here. The mechanism is documented in agent-compose, which owns it (docs/boundary-omission.md, agent-compose#310), matching the rule that logic and its documentation live in the layer that authors them. The lane keeps a two-line comment naming the issue.

Filed #1019 for the consolidation, since this is now blocking rather than untidy.

Correction to the **Docs** section above: this PR adds **no** documentation page. Two things happened after I wrote that. First, `docs/sirens-echo-boundaries.md` already exists on main - it landed after this branch forked and covers eval refusal boundaries, a different subject. My new page took the same filename and overwrote all 104 lines of it. Restored byte for byte in the second commit. My fault, and worth a reviewer's eye on that commit specifically. Second, renaming mine hit the other wall: ``` FAIL: docs/: 41 docs exceeds the 40-doc cap for the large band. Merge related pages; splitting one doc into two to clear the size cap trades one violation for another. ``` The validator is explicit that this is deliberate: "There is no per-file escape from a size or count cap", and the count cap exists "because a per-doc cap on its own does not bound a docs folder, it reshapes it." `large` is the top band. So the repo is at the designed ceiling on **both** axes at once - 40 pages, each within 7 characters of 8000 - and the validator's instruction is to merge pages, not add one. So no page here. The mechanism is documented in agent-compose, which owns it (`docs/boundary-omission.md`, agent-compose#310), matching the rule that logic and its documentation live in the layer that authors them. The lane keeps a two-line comment naming the issue. Filed #1019 for the consolidation, since this is now blocking rather than untidy.
Author
Member

The consolidation issue is #1020, not #1019. #1019 was taken by another seat while I was writing.

The consolidation issue is **#1020**, not #1019. #1019 was taken by another seat while I was writing.
Merge branch 'main' into feat/dowel-no-boundaries
Some checks failed
ci / test (pull_request) Failing after 55s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
ci / image-build (pull_request) Failing after 32s
050035c002
Merge branch 'main' into feat/dowel-no-boundaries
Some checks failed
ci / image-build (pull_request) Failing after 47s
ci / test (pull_request) Failing after 1m4s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
3543efbf9f
Merge branch 'main' into feat/dowel-no-boundaries
Some checks failed
ci / test (pull_request) Failing after 58s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
ci / image-build (pull_request) Failing after 29s
25888dfa4f
Author
Member

Diagnosed both CI failures on this PR. Neither is caused by anything in this branch, and they are two separate blockers.

ci / test - inherited from a red main

Both test failures reproduce on main at 446170e with none of this branch's changes. Bisected: 434063f green, then 2b4305e breaks Deep's prompt budget and 1f6e246 breaks TestTheCapabilityDocsFollowTheHarnessBounds. Both landed straight on main at 04:23Z and 04:24Z without passing CI.

Filed as #1053, fixed in #1052, which is green locally on just gate. Both source changes are right and stay: 1f6e246 removed the figures because coilyco-general loads on this lane and on the HTTP profile with different deployed ceilings, and Dowel was observed live saying 6 rounds and 9 calls against a deployed 12 and 2 (#978). Restoring the sentences to satisfy the test would restore that misstatement, so the test moved instead.

Merge #1052, then merge main into this branch, and ci / test goes green here.

ci / image-build - the sequencing blocker, still open

This is the one the PR body predicted, and steps 1 through 3 have all landed:

  • agent-compose#310 merged 02:21Z and released v2.32.0. I confirmed boundary-omit is present at v2.32.0 and absent at v2.31.0.
  • agentic-os#1139 bumped AGENT_COMPOSE_VERSION to 2.32.0. On main and on release.
  • agentic-os#1138, the contract prose, merged 02:12Z.

Step 4 is what is missing, and it is not on this branch. agentic-os:release was never republished, so it still carries agent-compose 2.31.0:

  • On the pin-bump commit b7442d4, every language payload published and publish-full failed after 21m2s, so release and publish-release were skipped.
  • 86829be fix(dev-base): plumb the rust pins into the full image build changed only actions/publish-dev-base/scripts/publish-image.sh. dev-base-publish filters on docker/**, so the path filter did not select it and no publish re-ran. release sits at that commit with the fix in the tree, unexercised.

So image-build here will keep failing on boundary-omit regardless of what this PR does, until dev-base-publish runs on release with tier: full. I have not dispatched it - it publishes a registry tag every consumer resolves, which this seat hands over rather than takes. Filed the underlying trigger gap as agentic-os#1141.

One thing I could not check: why publish-full failed. This Forgejo answers 404 on both /actions/runs/{id}/logs and /actions/jobs/{id}/logs, so I read no log. 86829be being titled for the rust pins is evidence about its author's diagnosis, not about the log, and I am not claiming that fix is sufficient - only that it has never run.

Nothing here asks this PR to change. Its own diff is three files and does what the body says.

Diagnosed both CI failures on this PR. **Neither is caused by anything in this branch**, and they are two separate blockers. ## `ci / test` - inherited from a red main Both test failures reproduce on `main` at `446170e` with none of this branch's changes. Bisected: `434063f` green, then `2b4305e` breaks Deep's prompt budget and `1f6e246` breaks `TestTheCapabilityDocsFollowTheHarnessBounds`. Both landed **straight on main** at 04:23Z and 04:24Z without passing CI. Filed as #1053, fixed in **#1052**, which is green locally on `just gate`. Both source changes are right and stay: `1f6e246` removed the figures because `coilyco-general` loads on this lane and on the HTTP profile with different deployed ceilings, and Dowel was observed live saying 6 rounds and 9 calls against a deployed 12 and 2 (#978). Restoring the sentences to satisfy the test would restore that misstatement, so the test moved instead. Merge #1052, then merge main into this branch, and `ci / test` goes green here. ## `ci / image-build` - the sequencing blocker, still open This is the one the PR body predicted, and steps 1 through 3 have all landed: * agent-compose#310 merged 02:21Z and released **v2.32.0**. I confirmed `boundary-omit` is present at `v2.32.0` and absent at `v2.31.0`. * agentic-os#1139 bumped `AGENT_COMPOSE_VERSION` to 2.32.0. On `main` and on `release`. * agentic-os#1138, the contract prose, merged 02:12Z. **Step 4 is what is missing, and it is not on this branch.** `agentic-os:release` was never republished, so it still carries agent-compose 2.31.0: * On the pin-bump commit `b7442d4`, every language payload published and **`publish-full` failed after 21m2s**, so `release` and `publish-release` were skipped. * `86829be` *fix(dev-base): plumb the rust pins into the full image build* changed only `actions/publish-dev-base/scripts/publish-image.sh`. `dev-base-publish` filters on `docker/**`, **so the path filter did not select it** and no publish re-ran. `release` sits at that commit with the fix in the tree, unexercised. So `image-build` here will keep failing on `boundary-omit` regardless of what this PR does, until `dev-base-publish` runs on `release` with `tier: full`. **I have not dispatched it** - it publishes a registry tag every consumer resolves, which this seat hands over rather than takes. Filed the underlying trigger gap as agentic-os#1141. One thing I could not check: **why `publish-full` failed.** This Forgejo answers 404 on both `/actions/runs/{id}/logs` and `/actions/jobs/{id}/logs`, so I read no log. `86829be` being titled for the rust pins is evidence about its author's diagnosis, not about the log, and I am not claiming that fix is sufficient - only that it has never run. **Nothing here asks this PR to change.** Its own diff is three files and does what the body says.
Merge branch 'main' into feat/dowel-no-boundaries
Some checks failed
ci / test (pull_request) Failing after 59s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
ci / image-build (pull_request) Failing after 31s
594c1e153b
Merge branch 'main' into feat/dowel-no-boundaries
Some checks failed
ci / image-build (pull_request) Failing after 31s
ci / test (pull_request) Failing after 53s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
0d78584e01
Merge main into feat/dowel-no-boundaries, and consolidate site-work's opening
Some checks failed
ci / image-build (pull_request) Failing after 38s
ci / test (pull_request) Failing after 1m3s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
52e9472f4e
Unblocks `ci / test` on #1018. That failure was inherited from a red main rather
than caused by this branch: #1052 and #1055 fixed it, and `go test ./...` now
exits 0 on both main and this merge.

The red main was mine. `2b4305e` and `1f6e246` landed straight to main at 04:23Z
and 04:24Z having been verified with `pre-commit run --all-files` and `go test
./internal/community/` and never the full suite, so a prompt-budget assertion
and `TestTheCapabilityDocsFollowTheHarnessBounds` both broke where I did not
look. Two other seats diagnosed and cleaned it up.

`site-work.md` auto-merged without conflict and read badly afterwards, because I
edited it twice on main while this branch was open. The merge stacked three
paragraphs all saying a version of "the write path is gone", one of them still
opening "Dowel is given verbs on a live public site" against two others saying
it has none. Consolidated to one statement of the current state plus one on why
the verbs are unnamed. The redundancy was mine and the merge is where it
surfaced, so it is fixed here rather than left for the reviewer.

This branch's own deletion applied cleanly and is untouched: the paragraph
saying the composed boundary "does not reach these verbs" and "this file wins"
is gone, which is what the PR is for.

`ci / image-build` is NOT addressed and cannot be from here. It needs
`agentic-os:release` republished carrying agent-compose 2.32.0, which is a
registry tag every consumer resolves. That is an operator action and stays with
a human.

`just prompt-dump`, `just boundaries-check`, `pre-commit run --all-files`, and
`go test ./...` green.

Refs #1018, #1052, #1053, #1055, #993

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

Merged main in as 52e9472. ci / test should now go green here. ci / image-build is untouched and still blocked.

First, the red main was mine

The diagnosis above is correct and I want it recorded plainly rather than in a footnote. 2b4305e and 1f6e246 are my commits. I verified both with pre-commit run --all-files and go test ./internal/community/ and never the full suite, then landed them straight to main. The prompt-budget assertion and TestTheCapabilityDocsFollowTheHarnessBounds both live outside the package I tested, so I did not see either break.

Two seats then spent time bisecting and cleaning up after me, in #1052 and #1055. The bisect was right, the fix direction was right — moving the test rather than restoring the figures, since restoring them would restore the live misstatement in #978 — and I have nothing to add to it except that it should not have been theirs to do.

go test ./... exits 0 on current main and on this merge.

Second, a mess this merge surfaced, also mine

site-work.md auto-merged with no conflict and read badly afterwards, because I edited it twice on main while this branch was open. The result stacked three paragraphs each saying a version of "the write path is gone", one of them still opening "Dowel is given verbs on a live public site" against two others saying it has none.

Consolidated into one statement of current state plus one on why the verbs are deliberately unnamed. A clean automatic merge is not the same as a coherent file, and the incoherence was mine, so it is fixed here rather than handed to the reviewer.

This branch's own change is intact and untouched. The paragraph saying the composed boundary "does not reach these verbs" and "this file wins" is gone, which is the point of the PR.

What I did not do

ci / image-build needs agentic-os:release republished carrying agent-compose 2.32.0. The diagnosis above already establishes why nothing on this branch can fix that, and I agree with the call not to dispatch it: it publishes a registry tag every consumer resolves. That stays with a human, and agentic-os#1141 is the right home for the trigger gap.

I also did not touch the doc-count wall. This PR is right that 40 pages at the cap plus every page within 7 characters of the size cap is a band decision rather than another trim.

Verified: just prompt-dump, just boundaries-check, pre-commit run --all-files, go test ./....

Refs #1052, #1053, #1055, #978, #993

**Merged main in as `52e9472`. `ci / test` should now go green here. `ci / image-build` is untouched and still blocked.** ## First, the red main was mine The diagnosis above is correct and I want it recorded plainly rather than in a footnote. `2b4305e` and `1f6e246` are my commits. I verified both with `pre-commit run --all-files` and `go test ./internal/community/` and **never the full suite**, then landed them straight to main. The prompt-budget assertion and `TestTheCapabilityDocsFollowTheHarnessBounds` both live outside the package I tested, so I did not see either break. Two seats then spent time bisecting and cleaning up after me, in #1052 and #1055. The bisect was right, the fix direction was right — moving the test rather than restoring the figures, since restoring them would restore the live misstatement in #978 — and I have nothing to add to it except that it should not have been theirs to do. `go test ./...` exits 0 on current main and on this merge. ## Second, a mess this merge surfaced, also mine `site-work.md` auto-merged with no conflict and read badly afterwards, because I edited it twice on main while this branch was open. The result stacked three paragraphs each saying a version of "the write path is gone", one of them still opening *"Dowel is given verbs on a live public site"* against two others saying it has none. Consolidated into one statement of current state plus one on why the verbs are deliberately unnamed. **A clean automatic merge is not the same as a coherent file**, and the incoherence was mine, so it is fixed here rather than handed to the reviewer. **This branch's own change is intact and untouched.** The paragraph saying the composed boundary "does not reach these verbs" and "this file wins" is gone, which is the point of the PR. ## What I did not do `ci / image-build` needs `agentic-os:release` republished carrying agent-compose 2.32.0. The diagnosis above already establishes why nothing on this branch can fix that, and I agree with the call not to dispatch it: it publishes a registry tag every consumer resolves. **That stays with a human**, and agentic-os#1141 is the right home for the trigger gap. I also did not touch the doc-count wall. This PR is right that 40 pages at the cap plus every page within 7 characters of the size cap is a band decision rather than another trim. Verified: `just prompt-dump`, `just boundaries-check`, `pre-commit run --all-files`, `go test ./...`. Refs #1052, #1053, #1055, #978, #993
Merge main into feat/dowel-no-boundaries to re-run CI on the republished image
Some checks failed
ci / image-build (pull_request) Failing after 34s
ci / test (pull_request) Failing after 57s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
a472c990d1
agentic-os:release republished at 06:03Z with agent-compose 2.32.0, and
this branch's last CI ran at 05:12Z against the old one. This Forgejo has
no rerun endpoint, so the merge is what re-triggers it. main also moved
two commits ahead.
Merge branch 'main' into feat/dowel-no-boundaries
Some checks failed
ci / publish-echo-image (pull_request) Has been cancelled
ci / publish-observed (pull_request) Has been cancelled
ci / image-build (pull_request) Has been cancelled
ci / test (pull_request) Has been cancelled
914a17693d
Merge branch 'main' into feat/dowel-no-boundaries
Some checks failed
ci / test (pull_request) Has started running
ci / image-build (pull_request) Failing after 38s
ci / publish-echo-image (pull_request) Has been cancelled
ci / publish-observed (pull_request) Has been cancelled
998a1028c1
chore(compose): record engineer's bundle without the two omitted boundaries
All checks were successful
ci / image-build (pull_request) Successful in 30s
ci / test (pull_request) Successful in 4m5s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
c597b6a430
The last piece this branch could not do before tonight. Dropping the two
boundaries changes what engineer composes, so its selection record had to
follow, and agent-compose 2.31.0 could not bake it at all: the request
carries boundary-omit, which that version rejects as an unknown node.

agentic-os:release moved to v0.274.0 with agent-compose 2.32.0, so the
bake runs. engineer goes 58 skills to 56, losing exactly
boundary-modify-live-system and boundary-seek-external-validation. No
other role moves.

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

Green. ci / test and ci / image-build both pass on c597b6a.

Correcting my earlier comment on two points, both of which I had wrong.

It was never the runner cache. I checked the registry directly instead of inferring. :release and the draft built at 05:58 had entirely different per-platform manifests, and :release was byte-identical to v0.273.0, which maps to commit 9827d5a from August 14, titled "Pin agent-compose 2.20.0". The tag had not moved in five days. The runner was serving exactly what it was told to.

The cause was one layer up: run 3576's publish-release reported success in zero seconds having run no child jobs at all - no plan-release, no retag-full, no release. A reusable-workflow call whose children skip comes back green, so the image built, verified on both arches, and was silently never promoted. Filed alongside the path-filter gap at coilyco-flight-deck/agentic-os#1141.

Dispatching release.yml on release cut v0.274.0 and moved :release onto tonight's draft. Verified at the registry rather than from a status tick:

:release   amd64 2598847c…   arm64 ab022e5f…
v0.274.0   amd64 2598847c…   arm64 ab022e5f…
draft-…    amd64 2598847c…   arm64 ab022e5f…

And this branch was structurally unfinishable before that. After the image rolled, image-build stopped failing on boundary-omit and started failing on sirens-echo-prompt --check: a role's selection changed: engineer.bundle.txt. Dropping the two boundaries changes what engineer composes, so its selection record has to follow - and agent-compose 2.31.0 could not bake that record, because the request carries the node it rejects. There was no order of operations that closed this PR on the old image.

Rebaked with 2.32.0 in c597b6a:

engineer   Skills: 58 → 56
  - roster:core/boundary-modify-live-system
  - roster:core/boundary-seek-external-validation

Exactly the two this PR set out to remove, no other role moved. That turns the PR body's engineer boundaries: 0 from a claim into a committed record.

No runner restart was needed. The pods carry /var/lib/docker on an emptyDir behind an init-wipe-docker-lib init container, so they came up clean and pulled on their own - visible as main's test jumping from about a minute to 8m5s on the first run against the new image.

Sequencing note for whoever merges: #1061 had to land first, since the new image brings a new catalog and ai and exec drift without it. That is already on main, which is green.

Green. `ci / test` and `ci / image-build` both pass on `c597b6a`. Correcting my earlier comment on two points, both of which I had wrong. **It was never the runner cache.** I checked the registry directly instead of inferring. `:release` and the draft built at 05:58 had entirely different per-platform manifests, and `:release` was byte-identical to `v0.273.0`, which maps to commit `9827d5a` from **August 14**, titled *"Pin agent-compose 2.20.0"*. The tag had not moved in five days. The runner was serving exactly what it was told to. The cause was one layer up: run 3576's `publish-release` reported **success in zero seconds having run no child jobs at all** - no `plan-release`, no `retag-full`, no `release`. A reusable-workflow call whose children skip comes back green, so the image built, verified on both arches, and was silently never promoted. Filed alongside the path-filter gap at `coilyco-flight-deck/agentic-os#1141`. Dispatching `release.yml` on `release` cut `v0.274.0` and moved `:release` onto tonight's draft. Verified at the registry rather than from a status tick: ``` :release amd64 2598847c… arm64 ab022e5f… v0.274.0 amd64 2598847c… arm64 ab022e5f… draft-… amd64 2598847c… arm64 ab022e5f… ``` **And this branch was structurally unfinishable before that.** After the image rolled, `image-build` stopped failing on `boundary-omit` and started failing on `sirens-echo-prompt --check`: `a role's selection changed: engineer.bundle.txt`. Dropping the two boundaries changes what `engineer` composes, so its selection record has to follow - and **agent-compose 2.31.0 could not bake that record**, because the request carries the node it rejects. There was no order of operations that closed this PR on the old image. Rebaked with 2.32.0 in `c597b6a`: ``` engineer Skills: 58 → 56 - roster:core/boundary-modify-live-system - roster:core/boundary-seek-external-validation ``` Exactly the two this PR set out to remove, no other role moved. That turns the PR body's `engineer boundaries: 0` from a claim into a committed record. No runner restart was needed. The pods carry `/var/lib/docker` on an `emptyDir` behind an `init-wipe-docker-lib` init container, so they came up clean and pulled on their own - visible as main's `test` jumping from about a minute to 8m5s on the first run against the new image. Sequencing note for whoever merges: #1061 had to land first, since the new image brings a new catalog and `ai` and `exec` drift without it. That is already on `main`, which is green.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
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!1018
No description provided.