os-sdlc hook: normalize namespaced subagent_type at hook ingestion #412
Labels
No labels
P0
P1
P2
P3
bug
create
delete
enhancement
filed-by/agent
filed-by/user
frozen
lint-rule
needs-info
needs-triage
next
plugin/cc-architect
plugin/os
plugin/os-adr
plugin/os-aidd-lint
plugin/os-backlog
plugin/os-context
plugin/os-doc-hygiene
plugin/os-sdlc
plugin/os-vault
project/cc-os
ready-for-agent
ready-for-human
recurring
review
update
waiting
wayfinder:grilling
wayfinder:map
wayfinder:map
wayfinder:research
wayfinder:task
wayfinder:task
wontfix
worklist/deviations
worklist/lint-rule
worklist/new-implement-build
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jared/cc-os#412
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Context
Child of #400. The PostToolUse hook reads
subagent_typeunmodified (plugins/os-sdlc/hooks/post_tool_use.rb:24-26) and compares it against bare agent names from maps/default.yaml at two downstream sites: TransitionTable#known_agent? (lib/os_sdlc/runner/transition_table.rb:62-64) and TicketFlow#matching_pending_dispatch (lib/os_sdlc/runner/ticket_flow.rb:10-17). Namespaced dispatch names likeos-sdlc:programmertherefore never match, so the hook no-ops and stages must be advanced by manually piping bare-name events. Evidence brief: .sdlc/tickets/400/evidence-brief.md.Tasks
Acceptance criteria
os-sdlc:<stage>advances the pipeline identically to bare<stage>.Out of scope: GateEvaluator target_name env threading (#410); shakedown (#400).
Work starting on branch worktree-issue-412 (os-sdlc implement pipeline).
Resolution
Done: Hook now normalizes subagent_type at the ingestion boundary: normalize_agent strips the literal os-sdlc: prefix in plugins/os-sdlc/hooks/post_tool_use.rb, so namespaced pipeline dispatches advance identically to bare names while foreign-plugin namespaced agents still no-op silently (incl. the ADR-0121 async guard path). Test fixtures corrected to shipped bare-name maps; discriminating AC2 tests added.
Evidence: os-sdlc pipeline run to done on branch worktree-issue-412 (report .sdlc/tickets/412/briefs/013-review-to-done.md); reviewer APPROVE with mutation-check (strip-any fails, shipped fix passes); suite 950 runs 0 failures; changed files rubocop-clean; lint skip covered only 22 pre-existing offenses in untouched files, user-approved.
Follow-ups: Captured with skeptic verdicts: #413 (resolve_slug drops target, multi-target intake broken), #414 (tea 0.13.0 broke --output yaml BodyFetch), #415 (worktrees miss .cc-os/config), #416 (lint gate scopes whole target, not changed files), #417 (agent charter drift enforcement). No others.