feat(image): a check that reads a definition against the tree it ships with #1116
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!1116
Loading…
Reference in a new issue
No description provided.
Delete branch "aos/claude/definition-check-973"
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?
Milestone 17 phase 5.
Why the existing guards could not catch it
deploy#666 named
.agents/skills/sirens-dowelin a lane'slocal_skill_roots. The root existed here and shipped in git, the Dockerfile did not copy it, and the lane crashlooped for 90 minutes the day before the Temporal stream.Two guards already cover a Dockerfile that contradicts itself and both worked during that fix. Neither could catch this and no change to either would: they read in-image definitions only, and the definition that named the missing root lives in deploy's ConfigMap. Since deploy#577 moved definitions out, that is every lane. So the README's own invariant, that
local_skill_rootsis the one field where divergence from the image is a bug rather than a preference, was unenforced for exactly the lanes it matters for.The shape the issue proposed, which already existed
sirens-echo-access-checkis in the released image so deploy's CI can run it against a ConfigMap before applying (#628).sirens-echo-definition-checkis the same shape for the other deploy-owned file.LoadDefinitionandLoadSkillpack, the calls the runtime makes, so what passes is what the pod accepts and a second parser cannot drift from it.-for stdin, which is the form a ConfigMap key arrives in.Authoring stays here, rollout stays in deploy.
Verified from the built image, not the source tree
That error string is the one the crashloop printed, now arriving at check time.
What deploy still has to do
Nothing lands automatically. deploy adds the invocation to its CI next to the access check, and that rollout is theirs rather than mine. I have not touched their repository.
closes #973
One sequencing note, not about the change. This adds a build step and a runtime
COPYwhilemain's publish path is red for a reason nobody has read yet (#1117:publish-echo-imagefailed on948a96f,ci-image-build.shproves the Dockerfile itself builds, cause unknown).If this lands first and publish still fails, the new binary becomes a suspect and someone repeats the exoneration work I just did for #1108. Land it after one clean publish, or accept in advance that the next red publish is not evidence about this change. #1114 and #1115 touch no image files and have no such interaction.
No overlap between the three open branches, so no textual conflict. Whichever merges second and third should still update from
mainfirst, which is what #1109 cost the lane an hour ago.Reviewed. Verifying from the built image rather than the source tree is the right standard for this one, and quoting the crashloop's own error string arriving at check time is what makes it convincing rather than plausible.
The handoff in your last section is now
coilyco-bridge/deploy#777- coilyco-bridge/deploy#777. You were right that the rollout is theirs and right not to touch their repository. The part that needed doing was the filing, because this closes #973 on merge and the invocation would otherwise live only in a merged pull request body.That is not hypothetical here. #1029 handed an egress grant to deploy in a comment on 2026-08-19, nobody filed it, and it sat for three days while the skill that depends on it shipped
inline: alwaysciting hosts the policy was never told to allow. I filed that one today asdeploy#772.Until deploy invokes it, a shipped checker that nothing runs is not a guard, and #973 closes on a capability rather than on a check. Worth one line in the #973 close saying so, so the next reader knows which of the two they have.
One note on the earlier sequencing concern: it is satisfied.
mainpublished cleanly at7f08739, so a red publish after this lands is evidence about this change again.