Teach test-writer the mutation handoff field and remove the dead already-satisfied route #877

Closed
opened 2026-10-01 15:26:44 +00:00 by jared · 2 comments
Owner

Problem

plugins/os-sdlc/agents/test-writer.md:46 tells test-writer to list a case that the current code already satisfies as already satisfied: <case> and says "The reviewer routes it." No reviewer or map edge routes that disclosure, so the route is dead. ADR-0258 decision 12 replaces it: on the guard map the test is green by design, and test-writer proves it with a mutation in the handoff (mutation: { path:, patch: }). test-writer.md does not describe that field.

Reproduce

n/a: prose change, nothing to reproduce.

Approach

Edit plugins/os-sdlc/agents/test-writer.md only. Keep it short.

  1. Delete the "already satisfied" paragraph at line 46 and the already-satisfied case text in the step 4 disclosures comment.
  2. Add the mutation field to the step 4 handoff shape. Say when to supply it: when the node instructions ask for a mutation (the guard map). path is one production file under the code path. patch is a unified diff against that file that breaks the behavior the new test guards. test-writer never applies the patch; the mutation gate applies and restores it.
  3. In step 3, say that the guard map expects the test gate green, and that the node instructions state the expected result.

Required work:

  1. Remove the dead route — check: absent already satisfied in plugins/os-sdlc/agents/test-writer.md
  2. Teach the mutation field — check: present mutation: in plugins/os-sdlc/agents/test-writer.md

Acceptance criteria

  1. Given the edited test-writer.md, when a reader looks for how to treat a case the code already satisfies, then the file gives no already satisfied disclosure route.
  2. Given the edited test-writer.md, when a reader composes a handoff on a node whose instructions ask for a mutation, then the handoff shape shows mutation: { path:, patch: } and says what each key holds.

Owner sketch

n/a: prose only (plugins/os-sdlc/agents/test-writer.md).

Authoring guidance (user ruling, verbatim)

Use existing project agents/skills (plugins/os-sdlc/agents/.md, plugins/os-sdlc/skills/) as examples, plus the orwell-writing skill, the os-sdlc:technical-communication skill, cc-architect (plugins/cc-architect, incl. references/conventions/cc-os-naming.md: never name: in SKILL.md frontmatter, no commands/ dir), and the mattpocock-skills:writing-for-agents skill, to guide language and structure.

Origin

  • Trigger: user ruling on the map reroute design, 2026-10-01 (ADR-0258 decision 12)
  • Improvised this session: none
  • Chain: guard tests escalate as unexpected_pass ← test-writer has no green-with-proof path ← DESIGN (docs/adr/0258)
  • Root candidate: #859
  • Where: plugins/os-sdlc/agents/test-writer.md
  • Improvised this session: none
  • Root candidate: #859
  • Session: 55a56279-83ee-47d5-a21e-ee67f9e28abd
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/55a56279-83ee-47d5-a21e-ee67f9e28abd.jsonl

Parent: #859
Blocked by: #875

## Problem `plugins/os-sdlc/agents/test-writer.md:46` tells test-writer to list a case that the current code already satisfies as `already satisfied: <case>` and says "The reviewer routes it." No reviewer or map edge routes that disclosure, so the route is dead. ADR-0258 decision 12 replaces it: on the guard map the test is green by design, and test-writer proves it with a mutation in the handoff (`mutation: { path:, patch: }`). test-writer.md does not describe that field. ## Reproduce n/a: prose change, nothing to reproduce. ## Approach Edit `plugins/os-sdlc/agents/test-writer.md` only. Keep it short. 1. Delete the "already satisfied" paragraph at line 46 and the `already-satisfied case` text in the step 4 `disclosures` comment. 2. Add the `mutation` field to the step 4 handoff shape. Say when to supply it: when the node instructions ask for a mutation (the guard map). `path` is one production file under the code path. `patch` is a unified diff against that file that breaks the behavior the new test guards. test-writer never applies the patch; the mutation gate applies and restores it. 3. In step 3, say that the guard map expects the test gate green, and that the node instructions state the expected result. Required work: 1. Remove the dead route — check: absent `already satisfied` in `plugins/os-sdlc/agents/test-writer.md` 2. Teach the mutation field — check: present `mutation:` in `plugins/os-sdlc/agents/test-writer.md` ## Acceptance criteria 1. Given the edited test-writer.md, when a reader looks for how to treat a case the code already satisfies, then the file gives no `already satisfied` disclosure route. 2. Given the edited test-writer.md, when a reader composes a handoff on a node whose instructions ask for a mutation, then the handoff shape shows `mutation: { path:, patch: }` and says what each key holds. ## Owner sketch n/a: prose only (`plugins/os-sdlc/agents/test-writer.md`). ## Authoring guidance (user ruling, verbatim) Use existing project agents/skills (plugins/os-sdlc/agents/*.md, plugins/os-sdlc/skills/*) as examples, plus the orwell-writing skill, the os-sdlc:technical-communication skill, cc-architect (plugins/cc-architect, incl. references/conventions/cc-os-naming.md: never `name:` in SKILL.md frontmatter, no commands/ dir), and the mattpocock-skills:writing-for-agents skill, to guide language and structure. ## Origin - Trigger: user ruling on the map reroute design, 2026-10-01 (ADR-0258 decision 12) - Improvised this session: none - Chain: guard tests escalate as unexpected_pass ← test-writer has no green-with-proof path ← DESIGN (docs/adr/0258) - Root candidate: #859 - Where: plugins/os-sdlc/agents/test-writer.md - Improvised this session: none - Root candidate: #859 - Session: 55a56279-83ee-47d5-a21e-ee67f9e28abd - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/55a56279-83ee-47d5-a21e-ee67f9e28abd.jsonl Parent: #859 Blocked by: #875
Author
Owner

Work started: os-sdlc pipeline on branch ticket-877 (worktree .claude/worktrees/ticket-877).

Work started: os-sdlc pipeline on branch ticket-877 (worktree .claude/worktrees/ticket-877).
Author
Owner

Resolution

Done: test-writer.md: removed the already-satisfied disclosure paragraph and its disclosures-comment text; added mutation: {path:, patch:} to the step 4 handoff shape with when to supply it and what each key holds; step 3 says the guard map expects the test gate green.

Evidence: Commit 1e6a5fc6 on main. Required-work checks: absent 'already satisfied' (grep -ci = 0), present 'mutation:' (line 141). bin/test 9 suites passed. Hand-finished: implementation 10 escalated unexpected_pass:test-writer/diff-test (escalation 4) because the ticket is prose-only (#892).

Follow-ups: none

## Resolution **Done:** test-writer.md: removed the already-satisfied disclosure paragraph and its disclosures-comment text; added mutation: {path:, patch:} to the step 4 handoff shape with when to supply it and what each key holds; step 3 says the guard map expects the test gate green. **Evidence:** Commit 1e6a5fc6 on main. Required-work checks: absent 'already satisfied' (grep -ci = 0), present 'mutation:' (line 141). bin/test 9 suites passed. Hand-finished: implementation 10 escalated unexpected_pass:test-writer/diff-test (escalation 4) because the ticket is prose-only (#892). **Follow-ups:** none
jared closed this issue 2026-10-01 21:00:46 +00:00
jared referenced this issue from a commit 2026-10-02 17:43:17 +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.

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