Document reroute recovery in implement skill and escalation procedure #874

Closed
opened 2026-10-01 14:26:18 +00:00 by jared · 3 comments
Owner

Problem

After the reroute CLI and gate exist, the orchestrator prose still describes the old recovery. skills/implement/SKILL.md:139 says "There is no resume command. Recovery starts with a new implementation-open, which abandons the unfinished implementation." references/escalation-procedure.md step 4 says "re-enter through the normal gates from the affected node" and does not mention os-sdlc-reroute-request. The implement skill also passes a map file path to os-sdlc-implementation-open (SKILL.md:52, 56), but implementation-open now takes a map name. SKILL.md:56 substitutes maps/poodr-implementation.yaml for docs, config, ADR-only, and spike tickets, but #883 deletes that map. ADR-0259 makes escalation a waiting position at needs-orchestrator, not a closing stamp. skills/pipeline-state-investigate/SKILL.md:36-38 still says an implementation has exactly one path with "no retry, no park, no resume", and its pipeline points (failed at :129-130, abandoned at :161-163) do not name the waiting state.

Reproduce

n/a: prose change, nothing to reproduce.

Approach

Edit plugins/os-sdlc/skills/implement/SKILL.md:

  • Start: pass poodr-ticket-implementation (a map name) to os-sdlc-implementation-open. Same edit in plugins/os-sdlc/skills/responsibility-refactor/SKILL.md:71.
  • Line 56: delete the poodr-implementation substitution. A docs, config, ADR-only, or spike ticket runs on the ticket map; when it escalates, the orchestrator reroutes it or handles it by the escalation procedure.
  • Replace the line-139 text: an escalation does not end the run; the run waits at needs-orchestrator. Recovery after an escalation can be a reroute with os-sdlc-reroute-request IMPLEMENTATION_ID --situation TEXT --misfit TEXT, on the same implementation; a fresh implementation-open stays the other recovery and abandons the waiting run. A failed run stays closed.
  • Add: when a gate reply holds a REROUTE block, relay the block to the user verbatim before dispatching the next agent.

Edit plugins/os-sdlc/references/escalation-procedure.md: the audience paragraph says the run waits at the waiting node needs-orchestrator; it is not closed. Step 4: "affected node" becomes "chosen entry node"; add when to use os-sdlc-reroute-request (the cause is a map misfit, after you patch what is broken; map-router chooses the map and entry node). Keep "Never merge freeform work."

Edit plugins/os-sdlc/skills/pipeline-state-investigate/SKILL.md: the state contract (lines 36-38) names the waiting state: active, position needs-orchestrator, newest escalations row; leave the run by a reroute or a fresh implementation-open. Line 129-130 stays true for a failed run; say it applies to failed runs only. Line 161-163: a later implementation-open also abandons a waiting run.

presenter/gate/unexpected_pass_reply.rb:11 says "The run escalates to the Orchestrator"; that stays true, so no change.

Follow the same authoring guidance as the map-router ticket (orwell-writing, os-sdlc:technical-communication, mattpocock-skills:writing-for-agents).

Required work:

  1. Pass map names to implementation-open in the implement skill — check: absent maps/poodr-ticket-implementation.yaml in plugins/os-sdlc/skills/implement/SKILL.md
  2. Replace the no-resume text — check: absent There is no resume command in plugins/os-sdlc/skills/implement/SKILL.md
  3. Tell the orchestrator to relay the REROUTE block verbatim — check: present REROUTE in plugins/os-sdlc/skills/implement/SKILL.md
  4. Name the reroute CLI in the escalation procedure — check: present os-sdlc-reroute-request in plugins/os-sdlc/references/escalation-procedure.md
  5. Change the re-entry wording — check: present chosen entry node in plugins/os-sdlc/references/escalation-procedure.md
  6. Pass a map name in the responsibility-refactor skill — check: absent maps/poodr-ticket-implementation.yaml in plugins/os-sdlc/skills/responsibility-refactor/SKILL.md
  7. Delete the poodr-implementation substitution — check: absent poodr-implementation in plugins/os-sdlc/skills/implement/SKILL.md
  8. Name the waiting node in the escalation procedure — check: present needs-orchestrator in plugins/os-sdlc/references/escalation-procedure.md
  9. Remove the no-park claim from the state contract — check: absent no park in plugins/os-sdlc/skills/pipeline-state-investigate/SKILL.md

Orchestrator work: run bin/refresh-plugins after merge.

Acceptance criteria

  1. Given the implement skill, when an orchestrator reads the Start section, then the implementation-open command passes a map name.
  2. Given the implement skill, when an orchestrator reads the recovery text, then it names os-sdlc-reroute-request as a recovery on the same implementation.
  3. Given the escalation procedure, when an orchestrator reads step 4, then it says to re-enter from the chosen entry node, says when to use os-sdlc-reroute-request, and still forbids merging freeform work.
  4. Given the implement skill, when an orchestrator reads the Start section, then it names no substitute map for docs, config, ADR-only, or spike tickets.
  5. Given the pipeline-state-investigate skill, when an investigator reads the state contract, then it names the waiting state at needs-orchestrator and its two exits.

Owner sketch

# no new class: implement, responsibility-refactor, and pipeline-state-investigate SKILL.md files and escalation-procedure.md prose only

Origin

  • Trigger: user ruling on the map reroute design, 2026-10-01 (ADR-0258)
  • Improvised this session: none
  • Chain: orchestrator hand-finishes misfit runs ← procedure offers no reroute ← DESIGN (plugins/os-sdlc/references/escalation-procedure.md step 4)
  • Root candidate: #859
  • Where: plugins/os-sdlc/references/escalation-procedure.md
  • Session: 55a56279-83ee-47d5-a21e-ee67f9e28abd
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/55a56279-83ee-47d5-a21e-ee67f9e28abd.jsonl

Parent: #859
Blocked by: #873, #886, #869

## Problem After the reroute CLI and gate exist, the orchestrator prose still describes the old recovery. `skills/implement/SKILL.md:139` says "There is no resume command. Recovery starts with a new `implementation-open`, which abandons the unfinished implementation." `references/escalation-procedure.md` step 4 says "re-enter through the normal gates from the affected node" and does not mention `os-sdlc-reroute-request`. The implement skill also passes a map file path to `os-sdlc-implementation-open` (SKILL.md:52, 56), but implementation-open now takes a map name. SKILL.md:56 substitutes `maps/poodr-implementation.yaml` for docs, config, ADR-only, and spike tickets, but #883 deletes that map. ADR-0259 makes escalation a waiting position at `needs-orchestrator`, not a closing stamp. `skills/pipeline-state-investigate/SKILL.md:36-38` still says an implementation has exactly one path with "no retry, no park, no resume", and its pipeline points (failed at :129-130, abandoned at :161-163) do not name the waiting state. ## Reproduce n/a: prose change, nothing to reproduce. ## Approach Edit `plugins/os-sdlc/skills/implement/SKILL.md`: - Start: pass `poodr-ticket-implementation` (a map name) to `os-sdlc-implementation-open`. Same edit in `plugins/os-sdlc/skills/responsibility-refactor/SKILL.md:71`. - Line 56: delete the `poodr-implementation` substitution. A docs, config, ADR-only, or spike ticket runs on the ticket map; when it escalates, the orchestrator reroutes it or handles it by the escalation procedure. - Replace the line-139 text: an escalation does not end the run; the run waits at `needs-orchestrator`. Recovery after an escalation can be a reroute with `os-sdlc-reroute-request IMPLEMENTATION_ID --situation TEXT --misfit TEXT`, on the same implementation; a fresh `implementation-open` stays the other recovery and abandons the waiting run. A failed run stays closed. - Add: when a gate reply holds a REROUTE block, relay the block to the user verbatim before dispatching the next agent. Edit `plugins/os-sdlc/references/escalation-procedure.md`: the audience paragraph says the run waits at the waiting node `needs-orchestrator`; it is not closed. Step 4: "affected node" becomes "chosen entry node"; add when to use `os-sdlc-reroute-request` (the cause is a map misfit, after you patch what is broken; map-router chooses the map and entry node). Keep "Never merge freeform work." Edit `plugins/os-sdlc/skills/pipeline-state-investigate/SKILL.md`: the state contract (lines 36-38) names the waiting state: active, position `needs-orchestrator`, newest `escalations` row; leave the run by a reroute or a fresh `implementation-open`. Line 129-130 stays true for a failed run; say it applies to failed runs only. Line 161-163: a later `implementation-open` also abandons a waiting run. `presenter/gate/unexpected_pass_reply.rb:11` says "The run escalates to the Orchestrator"; that stays true, so no change. Follow the same authoring guidance as the map-router ticket (orwell-writing, os-sdlc:technical-communication, mattpocock-skills:writing-for-agents). Required work: 1. Pass map names to implementation-open in the implement skill — check: absent `maps/poodr-ticket-implementation.yaml` in `plugins/os-sdlc/skills/implement/SKILL.md` 2. Replace the no-resume text — check: absent `There is no resume command` in `plugins/os-sdlc/skills/implement/SKILL.md` 3. Tell the orchestrator to relay the REROUTE block verbatim — check: present `REROUTE` in `plugins/os-sdlc/skills/implement/SKILL.md` 4. Name the reroute CLI in the escalation procedure — check: present `os-sdlc-reroute-request` in `plugins/os-sdlc/references/escalation-procedure.md` 5. Change the re-entry wording — check: present `chosen entry node` in `plugins/os-sdlc/references/escalation-procedure.md` 6. Pass a map name in the responsibility-refactor skill — check: absent `maps/poodr-ticket-implementation.yaml` in `plugins/os-sdlc/skills/responsibility-refactor/SKILL.md` 7. Delete the poodr-implementation substitution — check: absent `poodr-implementation` in `plugins/os-sdlc/skills/implement/SKILL.md` 8. Name the waiting node in the escalation procedure — check: present `needs-orchestrator` in `plugins/os-sdlc/references/escalation-procedure.md` 9. Remove the no-park claim from the state contract — check: absent `no park` in `plugins/os-sdlc/skills/pipeline-state-investigate/SKILL.md` Orchestrator work: run `bin/refresh-plugins` after merge. ## Acceptance criteria 1. Given the implement skill, when an orchestrator reads the Start section, then the implementation-open command passes a map name. 2. Given the implement skill, when an orchestrator reads the recovery text, then it names `os-sdlc-reroute-request` as a recovery on the same implementation. 3. Given the escalation procedure, when an orchestrator reads step 4, then it says to re-enter from the chosen entry node, says when to use `os-sdlc-reroute-request`, and still forbids merging freeform work. 4. Given the implement skill, when an orchestrator reads the Start section, then it names no substitute map for docs, config, ADR-only, or spike tickets. 5. Given the pipeline-state-investigate skill, when an investigator reads the state contract, then it names the waiting state at `needs-orchestrator` and its two exits. ## Owner sketch ```ruby # no new class: implement, responsibility-refactor, and pipeline-state-investigate SKILL.md files and escalation-procedure.md prose only ``` ## Origin - Trigger: user ruling on the map reroute design, 2026-10-01 (ADR-0258) - Improvised this session: none - Chain: orchestrator hand-finishes misfit runs ← procedure offers no reroute ← DESIGN (plugins/os-sdlc/references/escalation-procedure.md step 4) - Root candidate: #859 - Where: plugins/os-sdlc/references/escalation-procedure.md - Session: 55a56279-83ee-47d5-a21e-ee67f9e28abd - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/55a56279-83ee-47d5-a21e-ee67f9e28abd.jsonl Parent: #859 Blocked by: #873, #886, #869
Author
Owner

Not started in this session: blocked by #873, which waits for a ruling on ADR-0259 decision 9 (where the reroute gate gets map and node at gate time).

Not started in this session: blocked by #873, which waits for a ruling on ADR-0259 decision 9 (where the reroute gate gets map and node at gate time).
Author
Owner

Work started on branch ticket-874 (os-sdlc pipeline). #873 merged as d3f4888f.

Work started on branch ticket-874 (os-sdlc pipeline). #873 merged as d3f4888f.
Author
Owner

Resolution

Done: Hand-finished as commit 83f95bbc, not through the pipeline. Implementation 7 escalated (escalation 3, unexpected_pass:test-writer/diff-test): a prose-only ticket has no red path.

Evidence: Commit 83f95bbc; R1-R9 checks pass (R7 check fixed to bare poodr-implementation); bin/test: 9 suites passed

Follow-ups: #892

## Resolution **Done:** Hand-finished as commit 83f95bbc, not through the pipeline. Implementation 7 escalated (escalation 3, unexpected_pass:test-writer/diff-test): a prose-only ticket has no red path. **Evidence:** Commit 83f95bbc; R1-R9 checks pass (R7 check fixed to bare poodr-implementation); bin/test: 9 suites passed **Follow-ups:** #892
jared closed this issue 2026-10-01 20:25:03 +00:00
jared referenced this issue from a commit 2026-10-02 17:43:17 +00:00
Sign in to join this conversation.
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.

Reference
jared/cc-os#874
No description provided.