feat(dowel): compose the lane without boundaries it has no seat for #1018
No reviewers
Labels
No labels
move-to-repo
coilyco-bridge-deploy
move-to-repo
coilyco-flight-deck-agent-compose
move-to-repo
coilyco-gaming-eco-app
move-to-repo
coilysiren-inbox
move-to-repo
unknown
🔒⚠️📦⚠️🔒 SANDBOXED 🔒⚠️📦⚠️🔒
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
c#
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-gaming/sirens-echo!1018
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/dowel-no-boundaries"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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.
engineerdefersmodify-live-systemtoopsandseek-external-validationtoexec. 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.mdshipped 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_omissionsemitsboundary-omitfor engineer only, mirroringseat_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'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-systemdrops the general "hand running-system changes to DevOps" doctrine. The thing that replaces it is agentic-os#1138, which rewritestooling-sirens-dowel-contractso 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 fromsirens-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:
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-omitis an unknown node to agent-compose 2.31.0. Merge order:AGENT_COMPOSE_VERSIONindocker/dev-base/full/Dockerfileto that version. Merge, which republishesagentic-os:release.AOS_CATALOG_HEADresolves frommainat build time, so #1138 needs no pin bump here - it just needs to be on main before this image builds.go test ./...andpre-commit run --all-filesgreen.Correction to the Docs section above: this PR adds no documentation page. Two things happened after I wrote that.
First,
docs/sirens-echo-boundaries.mdalready 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:
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."
largeis 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.
The consolidation issue is #1020, not #1019. #1019 was taken by another seat while I was writing.
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 mainBoth test failures reproduce on
mainat446170ewith none of this branch's changes. Bisected:434063fgreen, then2b4305ebreaks Deep's prompt budget and1f6e246breaksTestTheCapabilityDocsFollowTheHarnessBounds. 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:1f6e246removed the figures becausecoilyco-generalloads 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 / testgoes green here.ci / image-build- the sequencing blocker, still openThis is the one the PR body predicted, and steps 1 through 3 have all landed:
boundary-omitis present atv2.32.0and absent atv2.31.0.AGENT_COMPOSE_VERSIONto 2.32.0. Onmainand onrelease.Step 4 is what is missing, and it is not on this branch.
agentic-os:releasewas never republished, so it still carries agent-compose 2.31.0:b7442d4, every language payload published andpublish-fullfailed after 21m2s, soreleaseandpublish-releasewere skipped.86829befix(dev-base): plumb the rust pins into the full image build changed onlyactions/publish-dev-base/scripts/publish-image.sh.dev-base-publishfilters ondocker/**, so the path filter did not select it and no publish re-ran.releasesits at that commit with the fix in the tree, unexercised.So
image-buildhere will keep failing onboundary-omitregardless of what this PR does, untildev-base-publishruns onreleasewithtier: 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-fullfailed. This Forgejo answers 404 on both/actions/runs/{id}/logsand/actions/jobs/{id}/logs, so I read no log.86829bebeing 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.
Merged main in as
52e9472.ci / testshould now go green here.ci / image-buildis 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.
2b4305eand1f6e246are my commits. I verified both withpre-commit run --all-filesandgo test ./internal/community/and never the full suite, then landed them straight to main. The prompt-budget assertion andTestTheCapabilityDocsFollowTheHarnessBoundsboth 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.mdauto-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-buildneedsagentic-os:releaserepublished 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
Green.
ci / testandci / image-buildboth pass onc597b6a.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.
:releaseand the draft built at 05:58 had entirely different per-platform manifests, and:releasewas byte-identical tov0.273.0, which maps to commit9827d5afrom 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-releasereported success in zero seconds having run no child jobs at all - noplan-release, noretag-full, norelease. 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 atcoilyco-flight-deck/agentic-os#1141.Dispatching
release.ymlonreleasecutv0.274.0and moved:releaseonto tonight's draft. Verified at the registry rather than from a status tick:And this branch was structurally unfinishable before that. After the image rolled,
image-buildstopped failing onboundary-omitand started failing onsirens-echo-prompt --check:a role's selection changed: engineer.bundle.txt. Dropping the two boundaries changes whatengineercomposes, 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:Exactly the two this PR set out to remove, no other role moved. That turns the PR body's
engineer boundaries: 0from a claim into a committed record.No runner restart was needed. The pods carry
/var/lib/dockeron anemptyDirbehind aninit-wipe-docker-libinit container, so they came up clean and pulled on their own - visible as main'stestjumping 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
aiandexecdrift without it. That is already onmain, which is green.