feat(dowel): give engineer its build surface and name it the owner of its own puts #954
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-gaming/sirens-echo!954
Loading…
Reference in a new issue
No description provided.
Delete branch "aos/claude/dowel-site-work"
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?
Everything the
sirens-dowellane needs from the prose and composition layers to work the site on camera. Follow-on to #952. No deploy values and no MCP definition: those stay with the engineer on coilyco-bridge/deploy#658.1. engineer had no allowlist entry at all
roles.kdlcarried one role,creator. A role with no entry composes the roster identity alone, which forengineeris six skills and zero catalogue sources: no coding, delivery, diagnosis, or verification doctrine.Flipping the lane to
engineerwithout this would have staged an agent to do work on camera with a bundle holding none of the skills for it. That is the "not my lane, sorry" failure arriving through the bundle rather than through the prose.The entry admits
coding-*, the engineeringtooling-*surfaces,tooling-ops-*,tooling-qa-*, and the four aosk build helpers.tooling-ops-*is deliberate rather than borrowed. There is no operator seat behind this lane during the session, so change risk, diagnosis, and remediation are its own doctrine here.Every entry is a glob on purpose.
DeniedComposedSkillserrors on a denied skill named exactly and silently drops one reached by a pattern. Two denied entries sit under surfaces this set reaches:kai-engineering-voice("code review and eng-channel posts, not this agent") andtooling-cross-repo-infra("fleet mutation surface"). Globs let the deny list do its job instead of turning a policy decision into a parse failure.What it costs, measured before landing
creatortoday - about 48 KB of skill bodiesengineerwith this set - about 113 KBSo the flip adds roughly 64 KB to a fixed prefix measured at 116 KB. That lands on the surface deploy#932 is open about, and it is recorded rather than hidden. That issue already decided the prefix problem is a caching failure rather than a roster size, and rejected cutting the roster on those grounds, so this set is not trimmed on count alone. If it has to come down, trim it against a measurement.
2. Dowel owns deployment, said in the prompt rather than left to section order
The composed bundle carries
boundary-modify-live-system, which hands changes to running systems over to DevOps. There is no DevOps seat on this lane during the demo. Left alone, that boundary is exactly the instruction that makes Dowel narrate an edit to an operator who is not coming.site-work.mdnow names the winner directly, which is the patterncomposedVoicePolicyalready establishes for voice, described in its own comment as naming the winner rather than leaving it to section order. The boundary governs systems this lane has no tool for, the site is its own granted work surface, and where they disagree about the site the local file wins.It also closes the size-based escape hatch, which is the likelier failure in practice: fixing a word, a typo, a heading, or an ordering is squarely the job, and "too small to be worth a put" and "too live to touch" are the same refusal wearing different clothes.
The honest limit stays the tool list rather than the org chart. Rollback, serving, and nginx have no verb here, so they are declined as absent tools and never as another role's work.
Why this works without an agent-compose change
BuildSystemPromptemits<composed-identity>before<local-policy>, so the lane's own skill root is the later and more specific instruction. Naming the precedence explicitly is what makes that reliable rather than positional.agent-compose has no way to compose a role with boundaries dropped.
ParseRequestaccepts nine keys and none of them touches boundaries, which come fromrole.kdldeclarations plus owned-boundary affinity. Building that knob is the durable fix and it is filed separately. It is not a change to make across three repositories and an image publish inside this window.Verification
go test ./internal/community/passes.pre-commit runpasses on every changed file.Still not wired, and still the other engineer's file
sirens-dowel-definition.ymlneeds.agents/skills/sirens-dowelinlocal_skill_roots, or none of the prose loads, and itsidentitystill readsSirens Deep of Coilyco. deploy#658 is the role flip itself.Refs coilyco-bridge/deploy#658, coilyco-bridge/deploy#932, #952
🤖 Generated with Claude Code
feat(dowel): carry the site write surface as the lane's landing workflowto feat(dowel): give engineer its build surface and name it the owner of its own puts