os-sdlc map: route a red diff-test caused by a test-file change to a role that may edit tests #665

Closed
opened 2026-09-24 12:39:05 +00:00 by jared · 3 comments
Owner

Problem

After implementation, the os-sdlc map routes every red diff-test to programmer-repair. The programmer role may not edit tests. When the only remaining red is a test-file change that the ticket's Required work names, the pipeline runs two repair rounds with no progress and stops on the user's stop-and-ask rule. No route exists from a red test-file diff to a role that may edit tests (test-writer or wiring). This is an architecture-level change to the map and needs an ADR.

Observed

Session 007cbccc, ticket #641, implementation 18. Required work item 3 named the conversion of CliTestHelpers#run_cli in test/test_cli.rb and test/test_cli_edge_cases.rb from Open3.capture3 to in-process PluginConfig::Cli.run. The seam test test_only_smoke_test_file_uses_open3_across_test_cli_files stayed red. Programmer-repair ran twice and changed nothing. The session labeled #641 waiting. The user hand-finished #641 on 2026-09-24.

Reproduce

  • Run /os-sdlc:implement on a ticket whose Required work includes a post-implementation test-helper edit and whose test set asserts on test-file content.
  • Observe the red diff-test route to programmer-repair twice, then stop.

Origin

  • Trigger: os-sdlc implementation round 18 on ticket #641
  • Improvised this session: user hand-finished the ticket
  • Chain: red diff-test on test-file change ← os-sdlc map routes all red diff-tests to programmer-repair ← programmer role cannot edit tests
  • Root candidate: architecture change to os-sdlc map routing rules
  • Where: plugins/os-sdlc map (implementation node repair edges)
  • Session: 5bc3486e-d1a8-4574-b4fb-46b6e03c5de1
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os--claude-worktrees-ticket-641/5bc3486e-d1a8-4574-b4fb-46b6e03c5de1.jsonl
## Problem After implementation, the os-sdlc map routes every red diff-test to programmer-repair. The programmer role may not edit tests. When the only remaining red is a test-file change that the ticket's Required work names, the pipeline runs two repair rounds with no progress and stops on the user's stop-and-ask rule. No route exists from a red test-file diff to a role that may edit tests (test-writer or wiring). This is an architecture-level change to the map and needs an ADR. ## Observed Session 007cbccc, ticket #641, implementation 18. Required work item 3 named the conversion of `CliTestHelpers#run_cli` in `test/test_cli.rb` and `test/test_cli_edge_cases.rb` from `Open3.capture3` to in-process `PluginConfig::Cli.run`. The seam test `test_only_smoke_test_file_uses_open3_across_test_cli_files` stayed red. Programmer-repair ran twice and changed nothing. The session labeled #641 `waiting`. The user hand-finished #641 on 2026-09-24. ## Reproduce - [ ] Run `/os-sdlc:implement` on a ticket whose Required work includes a post-implementation test-helper edit and whose test set asserts on test-file content. - [ ] Observe the red diff-test route to programmer-repair twice, then stop. ## Origin - Trigger: os-sdlc implementation round 18 on ticket #641 - Improvised this session: user hand-finished the ticket - Chain: red diff-test on test-file change ← os-sdlc map routes all red diff-tests to programmer-repair ← programmer role cannot edit tests - Root candidate: architecture change to os-sdlc map routing rules - Where: plugins/os-sdlc map (implementation node repair edges) - Session: 5bc3486e-d1a8-4574-b4fb-46b6e03c5de1 - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os--claude-worktrees-ticket-641/5bc3486e-d1a8-4574-b4fb-46b6e03c5de1.jsonl
Author
Owner

New case 2026-09-25 (#712, implementation 47): #712 removed the spawner: and lifecycle: keywords; tests/lsp_probe/cli_test.rb and tests/model/implementation_complete_stamp_test.rb outside the diff still passed them, the gate went red in programmer-repair, and the map offered only programmer-repair again. The orchestrator hand-edited the tests. Ticket-skeptic verdict: DROP as a new ticket; same routing gap as this issue and #709.

New case 2026-09-25 (#712, implementation 47): #712 removed the spawner: and lifecycle: keywords; tests/lsp_probe/cli_test.rb and tests/model/implementation_complete_stamp_test.rb outside the diff still passed them, the gate went red in programmer-repair, and the map offered only programmer-repair again. The orchestrator hand-edited the tests. Ticket-skeptic verdict: DROP as a new ticket; same routing gap as this issue and #709.
Author
Owner

Another case on 2026-09-29, #802 implementation 77. The change-auditor PINS list and the test-writer both missed tests/ticket_573_lint_config_test.rb, which called Project::Lint.new(paths: []). suite-check returned error and the Runner went to implementation_failed. No node could edit the test, so the run was hand-finished (escalation step 4).

Another case on 2026-09-29, #802 implementation 77. The change-auditor PINS list and the test-writer both missed tests/ticket_573_lint_config_test.rb, which called Project::Lint.new(paths: []). suite-check returned error and the Runner went to implementation_failed. No node could edit the test, so the run was hand-finished (escalation step 4).
Author
Owner

Resolution

Done: Folded into #544 as evidence

Evidence: Same mechanism; see occurrence comment on #544

Follow-ups: none

## Resolution **Done:** Folded into #544 as evidence **Evidence:** Same mechanism; see occurrence comment on #544 **Follow-ups:** none
jared closed this issue 2026-10-18 18:59:19 +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.

Dependencies

No dependencies set

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