fix(dowel): state the seat's limit without leaning on a composed boundary #1138

Merged
coilysiren merged 1 commit from fix/dowel-contract-standalone-limit into main 2026-08-19 02:12:19 +00:00
Owner

Part of the chain for agent-compose#304. Prose only, one file.

The problem this creates for itself

tooling-sirens-dowel-contract currently says:

The live-system boundary the engineer bundle carries governs deployments, clusters, releases, and promotion. It does not reach across a bot's own conversation ... Anything touching a deployment, a rollout, or a credential still goes to a human.

That sentence exists to stop boundary-modify-live-system from swallowing Dowel's ordinary Discord speech. agent-compose#310 removes that boundary from single-seat deployments, which is the right call - it routes work to a DevOps seat this lane does not have - but it turns this paragraph into a description of a file that will not be in the bundle.

The second half matters more than the first. "Anything touching a deployment, a rollout, or a credential still goes to a human" reads as a footnote qualifying the boundary. Once the boundary is gone it is the only thing saying it, so it should not be phrased as a qualifier on something absent.

What it says now

**The limit is deployments, not speech.** A rollout, a cluster, a release, a
promotion, or a credential goes to a human, every time, and Dowel says so
plainly rather than attempting it. This lane composes no operator to defer to,
so that escalation is to the human in the room and nobody else.

Named as its own rule, with the recipient made explicit. The old text said "goes to a human" while the composed boundary next to it said "hand it to DevOps," and those are different instructions. On this lane only one of them was ever reachable.

Safe to land before the rest

This is correct whether or not agent-compose#310 merges. With the boundary still composed, this paragraph agrees with it and is merely more direct. Without it, the rule stands alone. So it does not need to be sequenced against the image chain.

pre-commit run on the file passes, including composed skill conventions and the size budget.

Part of the chain for agent-compose#304. Prose only, one file. ## The problem this creates for itself `tooling-sirens-dowel-contract` currently says: > The live-system boundary the engineer bundle carries governs deployments, clusters, releases, and promotion. It does not reach across a bot's own conversation ... Anything touching a deployment, a rollout, or a credential still goes to a human. That sentence exists to stop `boundary-modify-live-system` from swallowing Dowel's ordinary Discord speech. agent-compose#310 removes that boundary from single-seat deployments, which is the right call - it routes work to a DevOps seat this lane does not have - but it turns this paragraph into a description of a file that will not be in the bundle. The second half matters more than the first. "Anything touching a deployment, a rollout, or a credential still goes to a human" reads as a footnote qualifying the boundary. Once the boundary is gone it is **the only thing saying it**, so it should not be phrased as a qualifier on something absent. ## What it says now ``` **The limit is deployments, not speech.** A rollout, a cluster, a release, a promotion, or a credential goes to a human, every time, and Dowel says so plainly rather than attempting it. This lane composes no operator to defer to, so that escalation is to the human in the room and nobody else. ``` Named as its own rule, with the recipient made explicit. The old text said "goes to a human" while the composed boundary next to it said "hand it to DevOps," and those are different instructions. On this lane only one of them was ever reachable. ## Safe to land before the rest This is correct whether or not agent-compose#310 merges. With the boundary still composed, this paragraph agrees with it and is merely more direct. Without it, the rule stands alone. So it does not need to be sequenced against the image chain. `pre-commit run` on the file passes, including `composed skill conventions` and the size budget.
fix(dowel): state the seat's limit without leaning on a composed boundary
All checks were successful
ci / aos-eval-tests (pull_request) Successful in 7s
ci / aos-cli-tests (pull_request) Successful in 19s
ci / ward-doctor (pull_request) Successful in 14s
ci / gate (pull_request) Successful in 56s
ea53f9c541
The contract described `boundary-modify-live-system` as the thing that
governs deployments and releases. agent-compose#304 removes that boundary
from single-seat deployments, which is right - it routes work to a DevOps
seat this lane does not have - but it leaves the escalation rule resting
on prose about a file that will not be in the bundle.

So the rule stands on its own now, and says who the escalation goes to.
There is no operator on this lane, so it goes to the human in the room.

Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
coilysiren deleted branch fix/dowel-contract-standalone-limit 2026-08-19 02:12:19 +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!1138
No description provided.