seam-designer must verify the named seam is public before emitting SEAM/TEST lines #596

Open
opened 2026-09-15 15:28:48 +00:00 by jared · 0 comments
Owner

seam-designer must verify the named seam is public before emitting SEAM/TEST lines [capture]

Context

Implementation 20 on ticket #594 (poodr-ticket-implementation map, target os-sdlc) ended bound_exhausted:test-reviewer/fail after three test-writer rounds. A handoff audit found the cause in the seam-designer output, not in the reviewer feedback or the test-writer.

Observed

Seam-designer dispatch 257 emitted SEAM and TEST lines naming a private method. That method is ProjectConfigCommand#test_command_clean_exit?, located under private in plugins/os-sdlc/lib/os_sdlc/project_config_command.rb. Its only caller is verified_test_command_options in the same class. The public entry point is #call. plugins/os-sdlc/agents/test-reviewer.md line 16 says "Reject private-method tests, implementation coupling, broad examples, and irrelevant failures." Round 1 (reviewer dispatch 259) rejected the private-method test. Rounds 2 and 3 moved the test to #call and then added two setup preconditions one at a time: the tmpdir needs a git repository, and a single-target project requires target: nil. The bound exhausted at round 3. plugins/os-sdlc/agents/seam-designer.md line 26 already requires the handoff to "name the selected public boundary"; the agent violated its own rule.

Reproduce

Run /os-sdlc:implement on a ticket whose Cases name a behavior implemented by a private helper method (for example #594 case 3 before the fix); inspect the seam-designer handoff for a private method in the SEAM line.

Expected

Before emitting SEAM/TEST lines, seam-designer checks that each named method is not below a private or protected keyword in its class (ast-grep or a grep of the file). If it is, seam-designer walks to the nearest public caller and names that as the seam. When a seam touches Project.load or Project.upsert, the handoff names the fixture preconditions: a VCS-backed directory and the target shape (target: nil for a single-target project).

Origin

  • Trigger: implementation 20 on #594, seam-designer dispatch 257, reviewer dispatches 259/261/264
  • Improvised this session: none
  • Chain: three reviewer rejections ← round 1 seam was a private method ← seam-designer did not check visibility before naming the seam. Stop: DESIGN, plugins/os-sdlc/agents/seam-designer.md
  • Root candidate: this ticket
  • Where: plugins/os-sdlc/agents/seam-designer.md
  • Session: b0afb79b-ca2f-425a-8701-d8cccbc2831a
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/b0afb79b-ca2f-425a-8701-d8cccbc2831a.jsonl
  • VERDICT: N/A — user approved this ticket by name this session; skeptic gate does not fire.
# seam-designer must verify the named seam is public before emitting SEAM/TEST lines [capture] ## Context Implementation 20 on ticket #594 (poodr-ticket-implementation map, target os-sdlc) ended `bound_exhausted:test-reviewer/fail` after three test-writer rounds. A handoff audit found the cause in the seam-designer output, not in the reviewer feedback or the test-writer. ## Observed Seam-designer dispatch 257 emitted SEAM and TEST lines naming a private method. That method is `ProjectConfigCommand#test_command_clean_exit?`, located under `private` in `plugins/os-sdlc/lib/os_sdlc/project_config_command.rb`. Its only caller is `verified_test_command_options` in the same class. The public entry point is `#call`. `plugins/os-sdlc/agents/test-reviewer.md` line 16 says "Reject private-method tests, implementation coupling, broad examples, and irrelevant failures." Round 1 (reviewer dispatch 259) rejected the private-method test. Rounds 2 and 3 moved the test to `#call` and then added two setup preconditions one at a time: the tmpdir needs a git repository, and a single-target project requires `target: nil`. The bound exhausted at round 3. `plugins/os-sdlc/agents/seam-designer.md` line 26 already requires the handoff to "name the selected public boundary"; the agent violated its own rule. ## Reproduce Run `/os-sdlc:implement` on a ticket whose Cases name a behavior implemented by a private helper method (for example #594 case 3 before the fix); inspect the seam-designer handoff for a private method in the SEAM line. ## Expected Before emitting SEAM/TEST lines, seam-designer checks that each named method is not below a `private` or `protected` keyword in its class (ast-grep or a grep of the file). If it is, seam-designer walks to the nearest public caller and names that as the seam. When a seam touches `Project.load` or `Project.upsert`, the handoff names the fixture preconditions: a VCS-backed directory and the target shape (`target: nil` for a single-target project). ## Origin - Trigger: implementation 20 on #594, seam-designer dispatch 257, reviewer dispatches 259/261/264 - Improvised this session: none - Chain: three reviewer rejections ← round 1 seam was a private method ← seam-designer did not check visibility before naming the seam. Stop: DESIGN, `plugins/os-sdlc/agents/seam-designer.md` - Root candidate: this ticket - Where: `plugins/os-sdlc/agents/seam-designer.md` - Session: b0afb79b-ca2f-425a-8701-d8cccbc2831a - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/b0afb79b-ca2f-425a-8701-d8cccbc2831a.jsonl - VERDICT: N/A — user approved this ticket by name this session; skeptic gate does not fire.
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#596
No description provided.