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

Closed
opened 2026-09-15 15:28:48 +00:00 by jared · 1 comment
Owner

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

Problem

Implementation 20 on ticket #594 ended bound_exhausted:test-reviewer/fail after three test-writer rounds. Seam-designer dispatch 257 named a private method (ProjectConfigCommand#test_command_clean_exit?) as the seam, violating its own rule at plugins/os-sdlc/agents/seam-designer.md:26 to "name the selected public boundary." test-reviewer cannot read files, so it could reject but not correct the seam; three rounds were spent moving the test to the real public entry point and adding fixture preconditions before the dispatch bound exhausted.

Cases

  1. Given a ticket's Cases name a behavior implemented by a private helper method, when seam-designer emits SEAM/TEST lines, then the named method is public (not below private/protected, not a private_class_method).
  2. Given the named public method's seam touches Project.load or Project.upsert, when seam-designer emits the handoff, then it names the fixture preconditions (a VCS-backed directory and the target shape).

Approach

Add an explicit step to plugins/os-sdlc/agents/seam-designer.md, before emitting SEAM/TEST lines, to check with ast-grep or grep that the named method is not private/protected in its class; if it is, walk to the nearest public caller and name that instead.

Required work:

  1. Edit plugins/os-sdlc/agents/seam-designer.md to add the visibility-check step before SEAM/TEST emission
  2. Grep eval fixtures for pinned seam-designer output text and adjust if wording changed — check: grep -rln "seam-designer" plugins/os-sdlc/tests/eval* 2>/dev/null
  3. Add a History row to the seam-designer or os-sdlc implementation-status leaf

Acceptance criteria

  1. Given a Cases entry implemented only by a private method, when seam-designer runs, then its SEAM line names a public method.
  2. Given a seam touching Project.load or Project.upsert, when seam-designer emits the handoff, then it states the fixture preconditions.

Origin

  • Trigger: implementation 20 on #594, seam-designer dispatch 257, reviewer dispatches 259/261/264
  • 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
  • Where: plugins/os-sdlc/agents/seam-designer.md
  • Session: b0afb79b-ca2f-425a-8701-d8cccbc2831a
# seam-designer must verify the named seam is public before emitting SEAM/TEST lines ## Problem Implementation 20 on ticket #594 ended `bound_exhausted:test-reviewer/fail` after three test-writer rounds. Seam-designer dispatch 257 named a private method (`ProjectConfigCommand#test_command_clean_exit?`) as the seam, violating its own rule at plugins/os-sdlc/agents/seam-designer.md:26 to "name the selected public boundary." test-reviewer cannot read files, so it could reject but not correct the seam; three rounds were spent moving the test to the real public entry point and adding fixture preconditions before the dispatch bound exhausted. ## Cases 1. Given a ticket's Cases name a behavior implemented by a private helper method, when seam-designer emits SEAM/TEST lines, then the named method is public (not below `private`/`protected`, not a `private_class_method`). 2. Given the named public method's seam touches `Project.load` or `Project.upsert`, when seam-designer emits the handoff, then it names the fixture preconditions (a VCS-backed directory and the target shape). ## Approach Add an explicit step to plugins/os-sdlc/agents/seam-designer.md, before emitting SEAM/TEST lines, to check with ast-grep or grep that the named method is not private/protected in its class; if it is, walk to the nearest public caller and name that instead. Required work: 1. Edit plugins/os-sdlc/agents/seam-designer.md to add the visibility-check step before SEAM/TEST emission 2. Grep eval fixtures for pinned seam-designer output text and adjust if wording changed — check: `grep -rln "seam-designer" plugins/os-sdlc/tests/eval* 2>/dev/null` 3. Add a History row to the seam-designer or os-sdlc implementation-status leaf ## Acceptance criteria 1. Given a Cases entry implemented only by a private method, when seam-designer runs, then its SEAM line names a public method. 2. Given a seam touching `Project.load` or `Project.upsert`, when seam-designer emits the handoff, then it states the fixture preconditions. ## Origin - Trigger: implementation 20 on #594, seam-designer dispatch 257, reviewer dispatches 259/261/264 - 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 - Where: plugins/os-sdlc/agents/seam-designer.md - Session: b0afb79b-ca2f-425a-8701-d8cccbc2831a
Author
Owner

Resolution

Done: seam-designer charter step 5 checks the named method is public with Grep or ast-grep before emitting SEAM/TEST lines; read-only structure queries are now explicitly allowed

Evidence: commit a39fea80 amended as 3b68709c; seam_designer_agent_test 8 runs 0 failures

Follow-ups: none

## Resolution **Done:** seam-designer charter step 5 checks the named method is public with Grep or ast-grep before emitting SEAM/TEST lines; read-only structure queries are now explicitly allowed **Evidence:** commit a39fea80 amended as 3b68709c; seam_designer_agent_test 8 runs 0 failures **Follow-ups:** none
jared closed this issue 2026-09-24 20:34:23 +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#596
No description provided.