Thin PostToolUse to ack/query and rewrite implement skill for pull-instruction flow #430
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#430
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?
#430 Thin PostToolUse to ack/query and rewrite implement skill for pull-
instruction flow (open)
@jared created 2026-08-18 14:31
Parent
#425
Map: #425
What to build
Remove the ADR-0121 async_launched rejection guard from the PostToolUse-on-
Agent hook, reducing it to a thin state-aware ack/next-instruction query
against the instruction endpoint. Launch receipts acknowledge rather than
reject, so async-launching harnesses no longer stall. Rewrite
skills/implement/SKILL.md's sync-dispatch mandate to describe the new flow:
dispatch async-OK, await completion notification, pull instructions from the
runner; orchestrator reads only runner instructions. Run bin/refresh-
plugins.
Acceptance criteria
[ ] async_launched path gone
[ ] CLI-seam tests cover the ack/query behaviour
[ ] skill text carries no gate/sequencing/retry logic per ADR-0097
[ ] an async Agent dispatch in the new flow reaches await completion instead
of an error
Blocked by
#429
Origin
• Trigger: /to-tickets skill on #425 spec
• Improvised this session: none
• Chain: #425 (DESIGN) ← decomposed via /to-tickets user approval 2026-08-18
• Root candidate: none (this is a decomposition task)
Resolution
Done: PostToolUse hook's ADR-0121 async_launched rejection guard removed (verified zero remaining references): a pipeline agent's launch receipt now ACKs by shelling to os-sdlc-runner next SESSION_ID and relaying the JSON instruction as additionalContext; runner failure surfaces loudly with the runner's exit status; non-pipeline async agents remain a silent no-op; sync events unchanged. skills/implement/SKILL.md dispatch section rewritten: async dispatch allowed, completion arrives via SubagentStop intake, orchestrator reads next action only from runner instructions — no gate/sequencing/retry logic in the prose (ADR-0097). bin/refresh-plugins run.
Evidence: commit ; full runner suite 306 runs/655 assertions 0 failures; rubocop clean on 4 touched files; async-dispatch test proves an async_launched event yields an await_completion instruction instead of an error
Follow-ups: one, verdict: legitimate coupling debt, deferred to #431/#433 scope — the hook still gates the ack path on the legacy ticket-engine pipeline_agent? check, so PostToolUse currently straddles two state models; #431 (recovery-cluster retirement) and the #433 sweep decide whether that gate moves to the round pipeline; recorded in the map workbench, no separate ticket
Correction: evidence commit hash is
28384cc(placeholder in the close comment).