Fail a composed-skill selector that matches nothing #1404

Merged
coilyco-ops merged 1 commit from aos/claude/ee98-deadsel into main 2026-08-29 10:57:28 +00:00
Owner

#1073 shipped both directions it asked for: every role selects something, and every source is selected by some role. The mirror was left out on purpose, because turning a passing consumer red on a hook bump is a rollout decision rather than that change's.

A role naming coding-rust in a repo whose catalogue does not carry it composes less than its author believes, and passes both existing checks: it has a selector, and every source is claimed.

Measured before enforcing, as the issue required

Both repositories on this host that carry a .agents/roles.kdl:

agentic-os      7 roles, 41 selectors, 72 composed sources - 0 match nothing
agentic-os-kai  7 roles, 45 selectors, 31 composed sources - 0 match nothing

The issue's own criterion: "Zero makes this a free gate." It is zero, so this lands as a plain check with no warning phase, no opt-in, and no exemption list.

Glob selectors are matched with fnmatchcase exactly as the other direction does, so tooling-* matching one source passes. Covered by a test.

Closes #1205

#1073 shipped both directions it asked for: every role selects something, and every source is selected by some role. The **mirror** was left out on purpose, because turning a passing consumer red on a hook bump is a rollout decision rather than that change's. A role naming `coding-rust` in a repo whose catalogue does not carry it composes less than its author believes, and passes both existing checks: it *has* a selector, and every source *is* claimed. ## Measured before enforcing, as the issue required Both repositories on this host that carry a `.agents/roles.kdl`: ``` agentic-os 7 roles, 41 selectors, 72 composed sources - 0 match nothing agentic-os-kai 7 roles, 45 selectors, 31 composed sources - 0 match nothing ``` The issue's own criterion: "Zero makes this a free gate." It is zero, so this lands as a plain check with no warning phase, no opt-in, and no exemption list. Glob selectors are matched with `fnmatchcase` exactly as the other direction does, so `tooling-*` matching one source passes. Covered by a test. Closes #1205
feat(check-composed-skills): fail a selector that matches nothing
All checks were successful
ci / aos-cli-tests (pull_request) Successful in 29s
ci / gate (pull_request) Successful in 52s
f30b603d38
#1073 shipped both directions it asked for: every role selects something,
and every source is selected. The mirror was left out, because turning a
passing consumer red on a hook bump is a rollout decision.

Measured first, as the issue required. Both repos carrying a roles.kdl:

  agentic-os      7 roles, 41 selectors, 72 sources - 0 match nothing
  agentic-os-kai  7 roles, 45 selectors, 31 sources - 0 match nothing

Zero, so this lands as a free gate rather than a migration, which is the
outcome the issue named as making it free.

Closes coilyco-flight-deck/agentic-os#1205

Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Agent-Role: platform
coilyco-ops deleted branch aos/claude/ee98-deadsel 2026-08-29 10:57:28 +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!1404
No description provided.