T016 done: SC-003 routing validation passes 3/3 — feature is 18/18 #5
Reference in New Issue
Block a user
Delete Branch "worktree-t016-complete"
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?
Spec only (
specs/001-woodpecker-trigger-discipline/tasks.md). No version bump —specs/is not shipped plugin behaviour.The feature is now 18/18, no partials.
The standing note was one step too strong
It said T016 could only be run by a human. It correctly rules out subagents — a spawned subagent's skill listing carries names but not frontmatter descriptions, and routing is description-driven — but that does not rule out every non-interactive mechanism.
A headless CLI session (
claude -p) is a real session with the real plugin-loading machinery, not a subagent. Each phrasing ran in its own fresh session, in an empty scratch dir with no git repo,--allowedTools Skillso nothing could act, capturingstream-json.Results
cicd-insights:woodpecker-trigger-disciplinecicd-insights:woodpecker-trigger-disciplinecicd-insights:woodpecker-trigger-disciplineNegative controls — "how do I center a div with flexbox?" and "my postgres pod is in CrashLoopBackOff" invoked no skill. Without these, 3/3 proves nothing: a test where everything routes to the target also reads 3/3.
It's description-driven, not name-matching
This is the exact artifact that invalidated Run 2, so it's ruled out explicitly. "why won't this PR merge?" and "which status checks should I require on main?" share no lexical overlap with the string
woodpecker-trigger-discipline— no "woodpecker", no "trigger", no "discipline". They are near-verbatim entries in thedescription. Name alone cannot explain the routing.Consequence: the v1.4.1 redirect clause is vindicated
P1 is precisely the phrasing that used to land on the sibling skill. It now routes correctly, and the sibling did not under-fire on the controls. The handoff had flagged that clause as "the riskiest change to sanity-check, shipped on invalid evidence" — it holds up.
Caveat, recorded in the file
Headless ≠ a human at an interactive prompt. The machinery is the same and the controls discriminate, so this is treated as a valid SC-003 measurement; typing the three phrasings interactively reproduces it in about a minute if you want belt-and-braces.
Refs oleks/claude-plugin-cicd-insights#2
The standing note said T016 could only be run by a human. That was one step too strong. It correctly rules out SUBAGENTS -- a spawned subagent's skill listing carries names but not frontmatter descriptions, and routing is description-driven -- but it does not rule out every non-interactive mechanism. A headless CLI session (`claude -p`) is a real session with the real plugin-loading machinery, not a subagent. Each phrasing ran in its own fresh session, in an empty scratch dir with no git repo, with `--allowedTools Skill` so nothing could act, capturing stream-json: "why won't this PR merge?" -> woodpecker-trigger-discipline "the same pipeline ran twice on one commit" -> woodpecker-trigger-discipline "which status checks should I require on main?"-> woodpecker-trigger-discipline Negative controls ("how do I center a div with flexbox?", "my postgres pod is in CrashLoopBackOff") invoked NO skill. Without those, 3/3 proves nothing -- a test where everything routes to the target also reads 3/3. Rules out the name-matching artifact that invalidated Run 2: "why won't this PR merge?" and "which status checks should I require on main?" share no lexical overlap with the string `woodpecker-trigger-discipline` -- no "woodpecker", no "trigger", no "discipline". They are near-verbatim entries in the description. Name alone cannot explain the routing, so the description is doing the work, which is exactly what SC-003 set out to confirm. Consequence: the 1.4.1 redirect clause is vindicated. P1 is precisely the phrasing that used to land on the sibling skill; it now routes correctly, and the sibling did not under-fire on the controls. The handoff had flagged that clause as the riskiest change to sanity-check, shipped on invalid evidence. Caveat recorded in the file: headless is not a human at an interactive prompt. The machinery is the same and the controls discriminate, so this is treated as a valid SC-003 measurement. No version bump: specs/ is not shipped plugin behaviour. Refs oleks/claude-plugin-cicd-insights#2