implementation-open and change-auditor accept a ticket whose criteria span two targets #1109

Open
opened 2026-10-18 16:38:38 +00:00 by jared · 3 comments
Owner

Problem

implementation-open and the change-auditor Align step accept a ticket whose criteria name paths outside the bound target. The pipeline then cannot see the work, and the test-reviewer loops until bound_exhausted.

Observed

Implementation 65 of #1105 ran on target os-backlog.
Acceptance criterion 4 named os-sdlc work (plugins/os-sdlc/lib).
change-auditor and seam-designer passed.
test-writer wrote a test under plugins/os-sdlc/tests.
Brief::Facts#test_changes and the diff-test gate read only the bound target's test_paths, so the hunk never appeared in the facts.
test-reviewer kept the grounded objection open four rounds until bound_exhausted.
The writer claimed "addressed" three times.

Reproduce

n/a: design gap; see implementation 65 of #1105.

Approach

Add a deterministic check at implementation-open or in the change-auditor Align step. The check fails loudly when a Required work check path or an acceptance criterion names a path outside the bound target's code_path or test_paths. The error names the path and the target.

Required work: none beyond the acceptance criteria.

Acceptance criteria

  1. Given a ticket whose Required work check glob names a path outside the bound target's code_path and test_paths, when the ticket is opened, then the run fails and the error names the path and the target.
  2. Given a ticket whose acceptance criterion names a path outside the bound target, when the ticket is opened, then the run fails and the error names the path and the target.
  3. Given a ticket whose paths all lie inside the bound target, when the ticket is opened, then the check passes.

Origin

  • Trigger: implementation 65 of #1105 on target os-backlog
  • Improvised this session: none
  • Chain: bound_exhausted ← grounded test-reviewer objection unresolvable ← test hunk outside target test_paths absent from Brief::Facts#test_changes ← no cross-target check at implementation-open (DESIGN)
  • Root candidate: none
  • Where: plugins/os-sdlc (implementation-open, change-auditor, Brief::Facts#test_changes)
  • Session: 26783407-6911-48d5-a818-55fbfbc70108
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/26783407-6911-48d5-a818-55fbfbc70108.jsonl
## Problem `implementation-open` and the `change-auditor` Align step accept a ticket whose criteria name paths outside the bound target. The pipeline then cannot see the work, and the test-reviewer loops until `bound_exhausted`. ## Observed Implementation 65 of #1105 ran on target os-backlog. Acceptance criterion 4 named os-sdlc work (`plugins/os-sdlc/lib`). `change-auditor` and `seam-designer` passed. `test-writer` wrote a test under `plugins/os-sdlc/tests`. `Brief::Facts#test_changes` and the diff-test gate read only the bound target's `test_paths`, so the hunk never appeared in the facts. `test-reviewer` kept the grounded objection open four rounds until `bound_exhausted`. The writer claimed "addressed" three times. ## Reproduce n/a: design gap; see implementation 65 of #1105. ## Approach Add a deterministic check at `implementation-open` or in the `change-auditor` Align step. The check fails loudly when a Required work check path or an acceptance criterion names a path outside the bound target's `code_path` or `test_paths`. The error names the path and the target. Required work: none beyond the acceptance criteria. ## Acceptance criteria 1. Given a ticket whose Required work check glob names a path outside the bound target's `code_path` and `test_paths`, when the ticket is opened, then the run fails and the error names the path and the target. 2. Given a ticket whose acceptance criterion names a path outside the bound target, when the ticket is opened, then the run fails and the error names the path and the target. 3. Given a ticket whose paths all lie inside the bound target, when the ticket is opened, then the check passes. ## Origin - Trigger: implementation 65 of #1105 on target os-backlog - Improvised this session: none - Chain: bound_exhausted ← grounded test-reviewer objection unresolvable ← test hunk outside target test_paths absent from Brief::Facts#test_changes ← no cross-target check at implementation-open (DESIGN) - Root candidate: none - Where: plugins/os-sdlc (implementation-open, change-auditor, Brief::Facts#test_changes) - Session: 26783407-6911-48d5-a818-55fbfbc70108 - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/26783407-6911-48d5-a818-55fbfbc70108.jsonl
Author
Owner

Occurrence: Make the test-reviewer brief cover test edits outside the target plugin
Seen: plugins/os-sdlc/lib/os_sdlc/dispatch/brief/facts.rb:90 (Brief::Facts#test_changes uses changes.test_diff, scoped to the target test_path)
Run: implementation 165 (#1327, --target os-sdlc), session 9862c06a-9e09-46ea-9b37-b6563d3fb103, dispatches 1426, 1428, 1430
Adds: the ticket's Required work named tests in plugins/os-me/test/. Reviewer objection 152 (os-me diff missing from test_changes) could not be corrected by the writer, and dispatch 1430 returned verdict: error, which the map routes to implementation_failed. Option A to consider beside the refusal: widen test_changes to every plugin path the Required work names. Open question: a test that only tags existing behavior (os-me use_case block over a yielding shim) is green by design, but the round_tests rule requires red. Workaround: split #1327; os-me part is #1392.

Occurrence: Make the test-reviewer brief cover test edits outside the target plugin Seen: plugins/os-sdlc/lib/os_sdlc/dispatch/brief/facts.rb:90 (`Brief::Facts#test_changes` uses `changes.test_diff`, scoped to the target `test_path`) Run: implementation 165 (#1327, `--target os-sdlc`), session 9862c06a-9e09-46ea-9b37-b6563d3fb103, dispatches 1426, 1428, 1430 Adds: the ticket's Required work named tests in `plugins/os-me/test/`. Reviewer objection 152 (os-me diff missing from `test_changes`) could not be corrected by the writer, and dispatch 1430 returned `verdict: error`, which the map routes to `implementation_failed`. Option A to consider beside the refusal: widen `test_changes` to every plugin path the Required work names. Open question: a test that only tags existing behavior (os-me `use_case` block over a yielding shim) is green by design, but the `round_tests` rule requires red. Workaround: split #1327; os-me part is #1392.
Author
Owner

Occurrence: Let os-sdlc pipeline accept test changes across two project targets
Seen: plugins/os-sdlc test-reviewer dispatch / Runner; .sdlc/project.yaml
Run: Session 5b14a4ef-91b2-45c0-a729-baa17682a39a, implementation 244 (ticket #1589, target os-git)
Adds: Test-reviewer dispatch 2337 passed the 11 tests in plugins/os-git/tests but plugins/os/tests was not in test_changes, so it gave verdict error and the Runner ended as implementation_failed, verdict:error, though the work was sound. This ticket wants the pipeline to accept such a ticket, not only reject it at implementation-open. Context: implementations 242 and 243 (#1587, #1588) ended unexpected_pass and bound_exhausted:behavior-verifier/fail and were hand-finished; the audit of #1588 found 10 blockers the green suite missed.

Occurrence: Let os-sdlc pipeline accept test changes across two project targets Seen: plugins/os-sdlc test-reviewer dispatch / Runner; .sdlc/project.yaml Run: Session 5b14a4ef-91b2-45c0-a729-baa17682a39a, implementation 244 (ticket #1589, target os-git) Adds: Test-reviewer dispatch 2337 passed the 11 tests in plugins/os-git/tests but plugins/os/tests was not in test_changes, so it gave verdict error and the Runner ended as implementation_failed, verdict:error, though the work was sound. This ticket wants the pipeline to accept such a ticket, not only reject it at implementation-open. Context: implementations 242 and 243 (#1587, #1588) ended unexpected_pass and bound_exhausted:behavior-verifier/fail and were hand-finished; the audit of #1588 found 10 blockers the green suite missed.
Author
Owner

Occurrence: Refuse or widen an implementation whose tests span several targets
Seen: plugins/os-sdlc/lib/os_sdlc/dispatch/brief/facts.rb
Run: implementation 260 for #1623, escalation 119 (bound_exhausted:test-reviewer/fail), session 3db425a5-c68f-487d-a031-882da554ee65
Adds: a second case. #1623 changed tests in four targets (os-backlog, os-sdlc, takedown, os) and ran with --target os-backlog. 11 changed test files were outside the bound target, objection 379 stayed open for all five reviewer rounds, and test-lint showed {"files":[]} every round. ticket check and TicketShape#missing both passed the body. Recovery: orchestrator hand-finish.

Occurrence: Refuse or widen an implementation whose tests span several targets Seen: plugins/os-sdlc/lib/os_sdlc/dispatch/brief/facts.rb Run: implementation 260 for #1623, escalation 119 (bound_exhausted:test-reviewer/fail), session 3db425a5-c68f-487d-a031-882da554ee65 Adds: a second case. #1623 changed tests in four targets (os-backlog, os-sdlc, takedown, os) and ran with --target os-backlog. 11 changed test files were outside the bound target, objection 379 stayed open for all five reviewer rounds, and test-lint showed {"files":[]} every round. ticket check and TicketShape#missing both passed the body. Recovery: orchestrator hand-finish.
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#1109
No description provided.