Spec: harden os-sdlc implement pipeline (first-run retro follow-ups) #197

Open
opened 2026-08-01 14:02:30 +00:00 by jared · 2 comments
Owner

Spec: harden os-sdlc implement pipeline (carved-down remainder after #195 overlap)

Migrated from jared/os-sdlc#36 (repo retired 2026-08-01). Originally a full first-run-retro
follow-up spec (Q1–Q7, B1–B5, token-routing fixes, post-agent housekeeping). Most of it has
since shipped or is now owned elsewhere; see the 2026-08-01 comment for the full carve-out
rationale. What's left, none of it touched by #195 (PRD: os-sdlc:implement v2):

Surviving scope

  1. Q5 — green-assert retry routing by failing-file path. SKILL.md step 5's Exit 1 branch
    unconditionally hands the failure to os-sdlc:programmer. It should route based on which
    path the failing file lives under: a failure whose origin is a file under the project's
    configured test_path routes to os-sdlc:test-writer; anything else routes to
    os-sdlc:programmer. This preserves the existing rule that the programmer never touches
    test files. (Phrase as a dispatch-target rule, not a resume — it must compose with #195's
    fresh-agent-every-round rule, not reintroduce resuming.)

  2. Q8 — default timeout + output redirection on gate-invoking Bash calls. Gate/lint/test
    Bash calls in the implement SKILL.md have no documented default timeout or
    redirect-and-tail convention, so a real Docker-backed test suite can blow the harness's
    default timeout and full gate output can bloat the orchestrator's context.

  3. Q9 — setup-project as an explicit prerequisite. SKILL.md doesn't state that
    setup-project must have already completed and been committed before implement is
    invoked, so project-config discovery/correction can happen unbudgeted mid-run.

  4. Post-agent housekeeping folded into workspace tooling. chmod +x on new bin/
    entrypoints an agent created, and cleaning generated tmp/ artifacts out of the tree
    before a diff is taken for review — neither is currently automated; both are currently
    left to the orchestrator's judgment even though subagents have no Bash tool to do either
    themselves.

Out of scope (carved out 2026-08-01)

  • All token-routing fixes (rubocop -a autocorrect pre-pass, fresh minimal agent for
    mechanical fixes, reviewer-on-Opus) — covered by #195 stories 1/7/8. Reviewer-on-Opus is
    already true today regardless (reviewer.md declares model: opus, no override in dispatch).
  • Q6 (name SendMessage in Setup alongside the resume-vs-respawn rule) — contradicts #195,
    which removes resume from the implement flow for test-writer/programmer/lint entirely.
  • Hand-assembling the review packet / hand-writing review.txt at SKILL.md step 8 — the CLI
    subcommands (review-packet, record-verdict --from-agent-output) already exist but
    aren't wired into the skill's own prose yet; that wiring is #195 stories 10/11.
  • B5 (rubocop config resolution: repo root first, falling back to code_path) — already
    tracked by open cc-os#196 and #215.
  • Everything else in the original spec (Q1–Q4, Q7, B1, B3/B4, setup-project
    execute-then-persist, disclose repeatable --note/--from-file, and story 22's distinct
    exit codes) has already shipped — verified directly against
    plugins/os-sdlc/lib/os_sdlc/workspace_preflight.rb, plugins/os-sdlc/bin/os-sdlc, and
    plugins/os-sdlc/agents/reviewer.md.
# Spec: harden os-sdlc implement pipeline (carved-down remainder after #195 overlap) Migrated from jared/os-sdlc#36 (repo retired 2026-08-01). Originally a full first-run-retro follow-up spec (Q1–Q7, B1–B5, token-routing fixes, post-agent housekeeping). Most of it has since shipped or is now owned elsewhere; see the 2026-08-01 comment for the full carve-out rationale. What's left, none of it touched by #195 (PRD: os-sdlc:implement v2): ## Surviving scope 1. **Q5 — green-assert retry routing by failing-file path.** SKILL.md step 5's Exit 1 branch unconditionally hands the failure to `os-sdlc:programmer`. It should route based on which path the failing file lives under: a failure whose origin is a file under the project's configured `test_path` routes to `os-sdlc:test-writer`; anything else routes to `os-sdlc:programmer`. This preserves the existing rule that the programmer never touches test files. (Phrase as a dispatch-target rule, not a resume — it must compose with #195's fresh-agent-every-round rule, not reintroduce resuming.) 2. **Q8 — default timeout + output redirection on gate-invoking Bash calls.** Gate/lint/test Bash calls in the implement SKILL.md have no documented default timeout or redirect-and-tail convention, so a real Docker-backed test suite can blow the harness's default timeout and full gate output can bloat the orchestrator's context. 3. **Q9 — setup-project as an explicit prerequisite.** SKILL.md doesn't state that `setup-project` must have already completed and been committed before `implement` is invoked, so project-config discovery/correction can happen unbudgeted mid-run. 4. **Post-agent housekeeping folded into workspace tooling.** `chmod +x` on new `bin/` entrypoints an agent created, and cleaning generated `tmp/` artifacts out of the tree before a diff is taken for review — neither is currently automated; both are currently left to the orchestrator's judgment even though subagents have no Bash tool to do either themselves. ## Out of scope (carved out 2026-08-01) - All token-routing fixes (rubocop -a autocorrect pre-pass, fresh minimal agent for mechanical fixes, reviewer-on-Opus) — covered by #195 stories 1/7/8. Reviewer-on-Opus is already true today regardless (reviewer.md declares `model: opus`, no override in dispatch). - Q6 (name SendMessage in Setup alongside the resume-vs-respawn rule) — contradicts #195, which removes resume from the implement flow for test-writer/programmer/lint entirely. - Hand-assembling the review packet / hand-writing review.txt at SKILL.md step 8 — the CLI subcommands (`review-packet`, `record-verdict --from-agent-output`) already exist but aren't wired into the skill's own prose yet; that wiring is #195 stories 10/11. - B5 (rubocop config resolution: repo root first, falling back to code_path) — already tracked by open cc-os#196 and #215. - Everything else in the original spec (Q1–Q4, Q7, B1, B3/B4, setup-project execute-then-persist, disclose repeatable `--note`/`--from-file`, and story 22's distinct exit codes) has already shipped — verified directly against `plugins/os-sdlc/lib/os_sdlc/workspace_preflight.rb`, `plugins/os-sdlc/bin/os-sdlc`, and `plugins/os-sdlc/agents/reviewer.md`.
Author
Owner

Carved down to the four items #195 does not cover: Q5 (test-vs-programmer retry routing by file path), Q8 (gate timeout/redirect convention), Q9 (setup-project prerequisite statement), and post-agent housekeeping (chmod +x, tmp/ cleanup). Cut: token-routing fixes and review-packet/verdict wiring (superseded by #195), Q6 SendMessage naming (contradicts #195's no-resume rule), B5 rubocop config resolution (tracked in #196/#215). Everything else in the original spec (Q1-Q4, Q7, B1, B3/B4, setup-project execute-then-persist, disclose repeatable flags, story 22 exit codes) already shipped.

Carved down to the four items #195 does not cover: Q5 (test-vs-programmer retry routing by file path), Q8 (gate timeout/redirect convention), Q9 (setup-project prerequisite statement), and post-agent housekeeping (chmod +x, tmp/ cleanup). Cut: token-routing fixes and review-packet/verdict wiring (superseded by #195), Q6 SendMessage naming (contradicts #195's no-resume rule), B5 rubocop config resolution (tracked in #196/#215). Everything else in the original spec (Q1-Q4, Q7, B1, B3/B4, setup-project execute-then-persist, disclose repeatable flags, story 22 exit codes) already shipped.
Author
Owner

Frozen in the 2026-08-16 backlog reset — see #419 for the expiry procedure. Do not work unless a live run rediscovers this issue.

Frozen in the 2026-08-16 backlog reset — see #419 for the expiry procedure. Do not work unless a live run rediscovers this issue.
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.

Dependencies

No dependencies set

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