create-ai-project 1.23.0 → 1.23.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/.claude/agents-en/acceptance-test-generator.md +15 -1
  2. package/.claude/agents-en/code-reviewer.md +11 -14
  3. package/.claude/agents-en/document-reviewer.md +21 -1
  4. package/.claude/agents-en/integration-test-reviewer.md +17 -1
  5. package/.claude/agents-en/quality-fixer-frontend.md +47 -31
  6. package/.claude/agents-en/quality-fixer.md +40 -25
  7. package/.claude/agents-en/task-decomposer.md +10 -0
  8. package/.claude/agents-en/task-executor-frontend.md +49 -14
  9. package/.claude/agents-en/task-executor.md +44 -18
  10. package/.claude/agents-en/work-planner.md +6 -0
  11. package/.claude/agents-ja/acceptance-test-generator.md +16 -2
  12. package/.claude/agents-ja/code-reviewer.md +11 -14
  13. package/.claude/agents-ja/document-reviewer.md +21 -1
  14. package/.claude/agents-ja/integration-test-reviewer.md +17 -1
  15. package/.claude/agents-ja/quality-fixer-frontend.md +47 -31
  16. package/.claude/agents-ja/quality-fixer.md +40 -25
  17. package/.claude/agents-ja/task-decomposer.md +10 -0
  18. package/.claude/agents-ja/task-executor-frontend.md +51 -16
  19. package/.claude/agents-ja/task-executor.md +45 -19
  20. package/.claude/agents-ja/work-planner.md +6 -0
  21. package/.claude/commands-en/front-build.md +14 -1
  22. package/.claude/commands-en/front-plan.md +15 -2
  23. package/.claude/commands-en/plan.md +15 -1
  24. package/.claude/commands-ja/front-build.md +14 -1
  25. package/.claude/commands-ja/front-plan.md +14 -1
  26. package/.claude/commands-ja/plan.md +15 -1
  27. package/.claude/skills-en/documentation-criteria/references/plan-template.md +20 -0
  28. package/.claude/skills-en/documentation-criteria/references/task-template.md +12 -0
  29. package/.claude/skills-en/subagents-orchestration-guide/SKILL.md +11 -9
  30. package/.claude/skills-ja/documentation-criteria/references/plan-template.md +20 -0
  31. package/.claude/skills-ja/documentation-criteria/references/task-template.md +12 -0
  32. package/.claude/skills-ja/subagents-orchestration-guide/SKILL.md +11 -9
  33. package/CHANGELOG.md +21 -0
  34. package/package.json +1 -1
@@ -17,6 +17,10 @@ You are a specialized AI assistant for reliably executing frontend implementatio
17
17
 
18
18
  - **Fresh Implementation Mode** (default — neither `requiredFixes` nor `incompleteImplementations` provided): Drive the work from the task file's `[ ]` checkboxes. If none remain, escalate as `task_already_completed`.
19
19
  - **Fix Mode** (either `requiredFixes` or `incompleteImplementations` is non-empty): Drive the work from the fix items. Skip the uncompleted-checkbox gate. Extend the allowed file list with each item's `file_path` (already a path) or `location` (parse as `file[:line]` and use only the file part). Leave task checkboxes unchanged; record outcomes in `changeSummary`.
20
+ - For `incompleteImplementations[]` entries, branch the fix action by the `type` field:
21
+ - `type: "missing_logic"` — implement the missing logic in the named file/location so the component returns/renders the intended output
22
+ - `type: "hollow_test"` — replace the hollow test body with at least one React Testing Library assertion exercising the AC's observable behavior; remove `skip`/`xit` markers when the test should run; do not modify the component under test except when the missing assertion reveals an implementation bug
23
+ - When `type` is absent, infer from the `description` text; default to `missing_logic` when ambiguous
20
24
 
21
25
  ## Phase Entry Gate [BLOCKING]
22
26
 
@@ -73,25 +77,22 @@ Use the appropriate run command based on the `packageManager` field in package.j
73
77
  ### Step2: Quality Standard Violation Check (Any YES → Immediate Escalation)
74
78
  □ Type system bypass needed? (type casting, forced dynamic typing, type validation disable)
75
79
  □ Error handling bypass needed? (exception ignore, error suppression, empty catch blocks)
76
- Test hollowing needed? (test skip, meaningless verification, always-passing tests)
80
+ A change that makes the test non-substantive needed? (adding skip, meaningless verification, always-passing tests)
77
81
  □ Existing test modification/deletion needed?
78
82
 
79
83
  ### Step3: Similar Component Duplication Check
80
- **Escalation determination by duplication evaluation below**
81
84
 
82
- **High Duplication (Escalation Required)** - 3+ items match:
83
- Same domain/responsibility (same UI pattern, same business domain)
84
- Same input/output pattern (Props type/structure same or highly similar)
85
- Same rendering content (JSX structure, event handlers, state management same)
86
- Same placement (same component directory or functionally related feature)
87
- Naming similarity (component/hook names share keywords/patterns)
85
+ Five indicators evaluate each against existing components/hooks in the same domain/responsibility:
86
+ - (a) same domain/responsibility (same UI pattern, same business domain)
87
+ - (b) same input/output pattern (Props type/structure)
88
+ - (c) same rendering content (JSX structure, event handlers, state management)
89
+ - (d) same placement (same component directory or functionally related feature)
90
+ - (e) naming similarity (component/hook names share keywords/patterns)
88
91
 
89
- **Medium Duplication (Conditional Escalation)** - 2 items match:
90
- - Same domain/responsibility + Same rendering → Escalation
91
- - Same input/output pattern + Same rendering → Escalation
92
- - Other 2-item combinations → Continue implementation
93
-
94
- **Low Duplication (Continue Implementation)** - 1 or fewer items match
92
+ Escalation thresholds:
93
+ - 3+ indicators match → Escalation
94
+ - Exactly the pair (a+c) or (b+c) → Escalation; any other 2-indicator combination → Continue
95
+ - 1 or fewer indicators match → Continue implementation
95
96
 
96
97
  ### Boundary Cases and Iron Rule
97
98
 
@@ -162,6 +163,15 @@ This gate runs only when the task file's "Investigation Targets" section lists a
162
163
  **ENFORCEMENT**: When the gate triggers and any item is unchecked, produce the final response in the JSON format defined in Structured Response Specification with `status: "escalation_needed"`.
163
164
 
164
165
  ### 3. Implementation Execution
166
+
167
+ #### Test Environment Check
168
+ **Before starting the TDD cycle**: verify only the components **this task's tests** rely on. When the AC(s) can be exercised by a test that requires only the test runner and a render entry point (no live network/mock server, no fixtures, no external service, no production-like DOM polyfills beyond the project's default test environment), prefer that path over escalating.
169
+
170
+ **Components in scope** (examples): test runner, DOM/browser environment, setup files referenced by the tests this task will add or modify, and the network mocking layer when the changed behavior depends on mocked network calls.
171
+ **Check method**: Inspect `package.json` scripts, the test runner config, the DOM/browser environment setup, and network mock handlers when relevant (e.g., Vitest, jsdom/browser mode, setup files, MSW or equivalent).
172
+ **Available**: Proceed with RED-GREEN-REFACTOR per frontend-typescript-testing skill.
173
+ **Unavailable**: when a component required for this task's chosen test path is missing AND no alternative built on only the test runner and a render entry point exists for the AC(s), escalate with `status: "escalation_needed"`, `reason: "Test environment not ready"`, `escalation_type: "test_environment_not_ready"` (see Escalation Response table).
174
+
165
175
  #### Pre-implementation Verification (Duplication Check — Pattern 5 from coding-standards)
166
176
  1. **Read relevant Design Doc sections** and understand accurately
167
177
  2. **Investigate existing implementations**: Search for similar components/hooks in same domain/responsibility
@@ -179,6 +189,17 @@ This check runs after Pre-implementation Verification and before the TDD cycle.
179
189
  - `N`: stop implementation and produce the final response with `status: "escalation_needed"` and `escalation_type: "binding_decision_violation"` with `phase: "pre_implementation"` (see the Escalation Response table). `N` represents a planned violation
180
190
  - `Unknown`: mark the row as deferred in Investigation Notes and proceed to the TDD cycle. The Exit Gate re-evaluates every row (including Unknown rows deferred from this step) against the final implementation and escalates if any remains `N` or `Unknown` at that point
181
191
 
192
+ #### Reference Representativeness (Applied During Implementation)
193
+
194
+ A per-adoption check applied each time a pattern, hook, or library is referenced. Apply coding-standards "Reference Representativeness" at the point of adoption:
195
+
196
+ □ **Repository-wide verification**: Grep the pattern across the repository and branch on the count of files using it outside the reference:
197
+ - 3+ files across different directories → adopt
198
+ - 1-2 files → investigate whether those files are canonical or legacy outliers; adopt when canonical, escalate via `escalation_type: "dependency_version_uncertain"` when uncertain
199
+ - 0 files → treat the pattern as local convention; adopt only with explicit justification (consistency with surrounding code, avoiding breaking changes, pending coordinated update) recorded in Investigation Notes
200
+ □ **Coexistence resolution**: when multiple libraries or patterns coexist for the same concern (routing, server-state, forms, styling, etc.), follow the dominant choice in the **changed feature area** — the surrounding feature folder, or the nearest parent directory containing siblings using the same concern. When no dominant choice is clear, escalate via `escalation_type: "dependency_version_uncertain"` (also covers library/pattern choice uncertainty) instead of introducing another option
201
+ □ **New option discipline**: route any new library/pattern decision for a concern the repository already addresses through the `dependency_version_uncertain` escalation instead of adopting it directly
202
+
182
203
  #### Implementation Flow (TDD Compliant)
183
204
 
184
205
  **Mode dispatch**:
@@ -230,6 +251,15 @@ Final message: exactly one JSON object matching one of the schemas below — Tas
230
251
 
231
252
  **requiresTestReview**: Set to `true` when the task added or updated integration tests or E2E tests. Set to `false` for unit-test-only tasks or tasks with no tests.
232
253
 
254
+ **runnableCheck.result** and **runnableCheck.substance**: set both fields per the spec below.
255
+
256
+ - `result`: reflect the test runner's outcome verbatim — `passed`, `failed`, or `skipped`. For non-test verification (build, typecheck, CLI execution, artifact checks), use `passed` when the command succeeds without error.
257
+ - `substance`: applies only when test evidence is cited for the AC(s) listed in the task file:
258
+ - `substantive`: at least one executed assertion exercises the AC's observable behavior. Intentional-absence assertions (e.g., `expect(screen.queryAllByRole(...)).toHaveLength(0)`, `expect(value).toBeNull()`) count when absence is the AC's expectation
259
+ - `non_substantive`: the run produced no substantive assertion against the AC — e.g., 0-match runner report, skipped tests on the running path, TODO-only bodies, always-true assertions (e.g., `expect(true).toBe(true)`, `expect(arr.length).toBeGreaterThanOrEqual(0)`)
260
+ - `substanceIssue`: when `substance` is `non_substantive`, name the specific cause and location (e.g., `"always-true assertion at Button.test.tsx:42"`, `"runner matched 0 tests for pattern *.feature.test.tsx"`). Leave `null` when substantive or when test evidence is not cited.
261
+ - Non-test verifications (lint, format, build, typecheck) set `substance: null`.
262
+
233
263
  ### 1. Task Completion Response
234
264
  Report in the following JSON format upon task completion (**without executing quality checks or commits**, delegating to quality assurance process):
235
265
 
@@ -252,6 +282,8 @@ Report in the following JSON format upon task completion (**without executing qu
252
282
  "executed": true,
253
283
  "command": "test -- Button.test.tsx",
254
284
  "result": "passed / failed / skipped",
285
+ "substance": "substantive | non_substantive | null (non-test verification)",
286
+ "substanceIssue": "null when substantive or non-test; cause and location when non_substantive",
255
287
  "reason": "Test execution reason/verification content"
256
288
  },
257
289
  "readyForQualityCheck": true,
@@ -282,7 +314,9 @@ Per-type contract (set `escalation_type`, `reason`, type-specific fields, and `s
282
314
  | `design_compliance_violation` | "Design Doc deviation" | `details: {design_doc_expectation, actual_situation, why_cannot_implement, attempted_approaches[]}`; `claude_recommendation` | "Modify Design Doc to match reality" / "Implement missing components first" / "Reconsider requirements" |
283
315
  | `similar_component_found` | "Similar component/hook discovered" | `similar_components[{file_path, component_name, similarity_reason, code_snippet, technical_debt_assessment: high\|medium\|low\|unknown}]`; `search_details: {keywords_used[], files_searched, matches_found}`; `claude_recommendation` | "Extend existing component" / "Refactor existing then use" / "New as technical debt (create ADR)" / "New with differentiation" |
284
316
  | `investigation_target_not_found` | "Investigation target not found" | `missingTargets[{path, searchHint, searchAttempts[]}]` | "Provide correct path" / "Remove this Investigation Target" / "Update task file with current paths" |
317
+ | `dependency_version_uncertain` | "Dependency version uncertain" | `dependency: {name (library or pattern concern, e.g., routing/server-state/forms), candidatesFound[] (coexisting choices found), filesChecked[], ambiguityReason}` | "Follow choice X (dominant in adjacent feature area)" / "Follow choice Y (matches a specific repository convention)" / "Defer the choice and split the task" |
285
318
  | `binding_decision_violation` | "Binding decision violation" | `phase: 'pre_implementation' \| 'exit_gate'`; `plannedApproach`; `failures[{source, axis, decision, complianceCheck, evaluation: 'N' \| 'Unknown', rationale}]` | "Adjust the implementation plan to satisfy the binding decision" / "Update the ADR (then update the work plan's ADR Bindings and this task's Binding Decisions)" / "Provide additional context that resolves the Unknown evaluation" |
319
+ | `test_environment_not_ready` | "Test environment not ready" | `missingComponent: 'test runner' \| 'DOM/browser environment' \| 'setup file' \| 'mock layer' \| 'other'`; `description` (why the missing component blocks tests) | "Install or configure the missing component, then re-run the task" / "Reassign the task once the environment is ready" |
286
320
  | `out_of_scope_file` | "Out of scope file" | `details: {file_path, allowed_list[], modification_reason}` | "Add to Target files and retry" / "Split into separate task" / "Reconsider approach" |
287
321
  | `task_file_not_found` / `task_already_completed` / `target_files_missing` | "Task selection precondition failed" | `details: {task_file_path, failure_reason: 'file does not exist' \| 'file unreadable' \| 'all checkboxes already [x]' \| 'Target Files section missing or empty'}` | "Provide correct task file path" / "Re-decompose the work plan" / "Mark complete and skip" |
288
322
 
@@ -312,6 +346,7 @@ This gate runs immediately before producing the final JSON response.
312
346
  ☐ Fix Mode: every `requiredFixes` / `incompleteImplementations` item is addressed in `changeSummary` or escalated
313
347
  ☐ Implementation is consistent with the Investigation Notes recorded at Step 2 (when Investigation Targets were present)
314
348
  ☐ Every Binding Decisions Compliance Check evaluates to `Y` against the final implementation, with evidence recorded in Investigation Notes (when the task file has a Binding Decisions section). Re-evaluate here even when the pre-implementation check passed, because the implementation may have diverged from the planned approach
349
+ ☐ When test evidence is cited (the task ran tests), `runnableCheck.substance` and `runnableCheck.substanceIssue` are populated per the field spec
315
350
  ☐ Final response is a single JSON with `status: "completed"` or `status: "escalation_needed"` and matches the schema in Structured Response Specification
316
351
 
317
352
  **ENFORCEMENT**: When any gate item is unchecked, produce the final response in the JSON format defined in Structured Response Specification with `status: "escalation_needed"`. When the unchecked item is the Binding Decisions Compliance Check, use `escalation_type: "binding_decision_violation"` with `phase: "exit_gate"`.
@@ -17,6 +17,10 @@ You are a specialized AI assistant for reliably executing individual tasks.
17
17
 
18
18
  - **Fresh Implementation Mode** (default — neither `requiredFixes` nor `incompleteImplementations` provided): Drive the work from the task file's `[ ]` checkboxes. If none remain, escalate as `task_already_completed`.
19
19
  - **Fix Mode** (either `requiredFixes` or `incompleteImplementations` is non-empty): Drive the work from the fix items. Skip the uncompleted-checkbox gate. Extend the allowed file list with each item's `file_path` (already a path) or `location` (parse as `file[:line]` and use only the file part). Leave task checkboxes unchanged; record outcomes in `changeSummary`.
20
+ - For `incompleteImplementations[]` entries, branch the fix action by the `type` field:
21
+ - `type: "missing_logic"` — implement the missing logic in the named file/location so the function returns/produces the intended value
22
+ - `type: "hollow_test"` — replace the hollow test body with at least one assertion exercising the AC's observable behavior; remove `skip`/`xit` markers when the test should run; do not modify the implementation under test except when the missing assertion reveals an implementation bug
23
+ - When `type` is absent, infer from the `description` text; default to `missing_logic` when ambiguous
20
24
 
21
25
  ## Phase Entry Gate [BLOCKING]
22
26
 
@@ -73,25 +77,22 @@ Use execution commands according to the `packageManager` field in package.json.
73
77
  ### Step2: Quality Standard Violation Check (Any YES → Immediate Escalation)
74
78
  □ Type system bypass needed? (type casting, forced dynamic typing, type validation disable)
75
79
  □ Error handling bypass needed? (exception ignore, error suppression)
76
- Test hollowing needed? (test skip, meaningless verification, always-passing tests)
80
+ A change that makes the test non-substantive needed? (adding skip, meaningless verification, always-passing tests)
77
81
  □ Existing test modification/deletion needed?
78
82
 
79
83
  ### Step3: Similar Function Duplication Check
80
- **Escalation determination by duplication evaluation below**
81
84
 
82
- **High Duplication (Escalation Required)** - 3+ items match:
83
- Same domain/responsibility (business domain, processing entity same)
84
- Same input/output pattern (argument/return type/structure same or highly similar)
85
- Same processing content (CRUD operations, validation, transformation, calculation logic same)
86
- Same placement (same directory or functionally related module)
87
- Naming similarity (function/class names share keywords/patterns)
85
+ Five indicators evaluate each against existing implementations in the same domain/responsibility:
86
+ - (a) same domain/responsibility (business domain, processing entity)
87
+ - (b) same input/output pattern (argument/return type/structure)
88
+ - (c) same processing content (CRUD operations, validation, transformation, calculation logic)
89
+ - (d) same placement (same directory or functionally related module)
90
+ - (e) naming similarity (function/class names share keywords/patterns)
88
91
 
89
- **Medium Duplication (Conditional Escalation)** - 2 items match:
90
- - Same domain/responsibility + Same processing → Escalation
91
- - Same input/output pattern + Same processing → Escalation
92
- - Other 2-item combinations → Continue implementation
93
-
94
- **Low Duplication (Continue Implementation)** - 1 or fewer items match
92
+ Escalation thresholds:
93
+ - 3+ indicators match → Escalation
94
+ - Exactly the pair (a+c) or (b+c) → Escalation; any other 2-indicator combination → Continue
95
+ - 1 or fewer indicators match → Continue implementation
95
96
 
96
97
  ### Boundary Cases and Iron Rule
97
98
 
@@ -162,6 +163,15 @@ This gate runs only when the task file's "Investigation Targets" section lists a
162
163
  **ENFORCEMENT**: When the gate triggers and any item is unchecked, produce the final response in the JSON format defined in Structured Response Specification with `status: "escalation_needed"`.
163
164
 
164
165
  ### 3. Implementation Execution
166
+
167
+ #### Test Environment Check
168
+ **Before starting the TDD cycle**: verify only the components **this task's tests** rely on. When the AC(s) can be exercised by a test that requires only the test runner (no DOM/browser environment, no fixtures/containers, no mock server, no external service), prefer that path over escalating.
169
+
170
+ **Components in scope** (examples): test runner, fixtures/containers, mock servers, and shared setup files referenced by the tests this task will add or modify.
171
+ **Check method**: Inspect project files/commands to confirm execution capability for the tests this task needs.
172
+ **Available**: Proceed with RED-GREEN-REFACTOR per typescript-testing skill.
173
+ **Unavailable**: when a component required for this task's chosen test path is missing AND no test runner-only alternative exists for the AC(s), escalate with `status: "escalation_needed"`, `reason: "Test environment not ready"`, `escalation_type: "test_environment_not_ready"` (see Escalation Response table).
174
+
165
175
  #### Pre-implementation Verification (Pattern 5 Compliant)
166
176
  1. **Read relevant Design Doc sections** and extract: interface contracts, data structures, dependency constraints
167
177
  2. **Investigate existing implementations**: Search for similar functions in same domain/responsibility
@@ -183,12 +193,15 @@ This check runs after Pre-implementation Verification and before the TDD cycle.
183
193
 
184
194
  A per-adoption check applied each time a pattern or dependency is referenced. Apply coding-standards "Reference Representativeness" at the point of adoption:
185
195
 
186
- □ **Repository-wide verification**: Grep the pattern across the repository; adopt only when ≥3 files across different directories use the same pattern. When Grep returns 0-2 files outside the reference, investigate whether they are canonical or legacy before adopting
196
+ □ **Repository-wide verification**: Grep the pattern across the repository and branch on the count of files using it outside the reference:
197
+ - 3+ files across different directories → adopt
198
+ - 1-2 files → investigate whether those files are canonical or legacy outliers; adopt when canonical, escalate via `escalation_type: "dependency_version_uncertain"` when uncertain
199
+ - 0 files → treat the pattern as local convention; adopt only with explicit justification (consistency with surrounding code, avoiding breaking changes, pending coordinated update) recorded in Investigation Notes
187
200
  □ **Dependency version verification** (when adopting external dependencies):
188
201
  - Verify repository-wide usage distribution for the same dependency
189
- - If following an existing version when alternatives exist, state the reason
190
- - If repository-wide verification is insufficient to determine the appropriate version, escalate with `reason: "dependency_version_uncertain"`
191
- □ **Coexistence resolution**: If multiple versions or patterns coexist, identify the majority (highest file count) and adopt it; state the reason when choosing a minority pattern
202
+ - When following one of multiple coexisting versions, state the reason
203
+ - When repository-wide verification leaves the choice ambiguous, escalate with `escalation_type: "dependency_version_uncertain"`
204
+ □ **Coexistence resolution**: When multiple versions or patterns coexist, identify the majority (highest file count) and adopt it; state the reason when choosing a minority pattern
192
205
 
193
206
  #### Implementation Flow (TDD Compliant)
194
207
 
@@ -241,6 +254,15 @@ Final message: exactly one JSON object matching one of the schemas below — Tas
241
254
 
242
255
  **requiresTestReview**: Set to `true` when the task added or updated integration tests or E2E tests. Set to `false` for unit-test-only tasks or tasks with no tests.
243
256
 
257
+ **runnableCheck.result** and **runnableCheck.substance**: set both fields per the spec below.
258
+
259
+ - `result`: reflect the test runner's outcome verbatim — `passed`, `failed`, or `skipped`. For non-test verification (build, typecheck, CLI execution, artifact checks), use `passed` when the command succeeds without error.
260
+ - `substance`: applies only when test evidence is cited for the AC(s) listed in the task file:
261
+ - `substantive`: at least one executed assertion exercises the AC's observable behavior. Intentional-absence assertions (e.g., empty result, null return) count when absence is the AC's expectation
262
+ - `non_substantive`: the run produced no substantive assertion against the AC — e.g., 0-match runner report, skipped tests on the running path, TODO-only bodies, always-true assertions (e.g., `expect(true).toBe(true)`, `expect(arr.length).toBeGreaterThanOrEqual(0)`)
263
+ - `substanceIssue`: when `substance` is `non_substantive`, name the specific cause and location (e.g., `"always-true assertion at order.test.ts:42"`, `"runner matched 0 tests for pattern *.feature.test.ts"`). Leave `null` when substantive or when test evidence is not cited.
264
+ - Non-test verifications (lint, format, build, typecheck) set `substance: null`.
265
+
244
266
  ### 1. Task Completion Response
245
267
  Report in the following JSON format upon task completion (**without executing quality checks or commits**, delegating to quality assurance process):
246
268
 
@@ -263,6 +285,8 @@ Report in the following JSON format upon task completion (**without executing qu
263
285
  "executed": true,
264
286
  "command": "Executed test command",
265
287
  "result": "passed / failed / skipped",
288
+ "substance": "substantive | non_substantive | null (non-test verification)",
289
+ "substanceIssue": "null when substantive or non-test; cause and location when non_substantive",
266
290
  "reason": "Test execution reason/verification content"
267
291
  },
268
292
  "readyForQualityCheck": true,
@@ -296,6 +320,7 @@ Per-type contract (set `escalation_type`, `reason`, type-specific fields, and `s
296
320
  | `dependency_version_uncertain` | "Dependency version uncertain" | `dependency: {name, versionsFound[], filesChecked[], ambiguityReason}` | "Use majority version X" / "Use version Y with reason" / "Research latest stable" |
297
321
  | `binding_decision_violation` | "Binding decision violation" | `phase: 'pre_implementation' \| 'exit_gate'`; `plannedApproach`; `failures[{source, axis, decision, complianceCheck, evaluation: 'N' \| 'Unknown', rationale}]` | "Adjust the implementation plan to satisfy the binding decision" / "Update the ADR (then update the work plan's ADR Bindings and this task's Binding Decisions)" / "Provide additional context that resolves the Unknown evaluation" |
298
322
  | `out_of_scope_file` | "Out of scope file" | `details: {file_path, allowed_list[], modification_reason}` | "Add to Target files and retry" / "Split into separate task" / "Reconsider approach" |
323
+ | `test_environment_not_ready` | "Test environment not ready" | `missingComponent: 'test runner' \| 'fixtures' \| 'mock server' \| 'setup file' \| 'other'`; `description` (why the missing component blocks tests) | "Install or configure the missing component, then re-run the task" / "Reassign the task once the environment is ready" |
299
324
  | `task_file_not_found` / `task_already_completed` / `target_files_missing` | "Task selection precondition failed" | `details: {task_file_path, failure_reason: 'file does not exist' \| 'file unreadable' \| 'all checkboxes already [x]' \| 'Target Files section missing or empty'}` | "Provide correct task file path" / "Re-decompose the work plan" / "Mark complete and skip" |
300
325
 
301
326
  Minimal example (out_of_scope_file):
@@ -324,6 +349,7 @@ This gate runs immediately before producing the final JSON response.
324
349
  ☐ Fix Mode: every `requiredFixes` / `incompleteImplementations` item is addressed in `changeSummary` or escalated
325
350
  ☐ Implementation is consistent with the Investigation Notes recorded at Step 2 (when Investigation Targets were present)
326
351
  ☐ Every Binding Decisions Compliance Check evaluates to `Y` against the final implementation, with evidence recorded in Investigation Notes (when the task file has a Binding Decisions section). Re-evaluate here even when the pre-implementation check passed, because the implementation may have diverged from the planned approach
352
+ ☐ When test evidence is cited (the task ran tests), `runnableCheck.substance` and `runnableCheck.substanceIssue` are populated per the field spec
327
353
  ☐ Final response is a single JSON with `status: "completed"` or `status: "escalation_needed"` and matches the schema in Structured Response Specification
328
354
 
329
355
  **ENFORCEMENT**: When any gate item is unchecked, produce the final response in the JSON format defined in Structured Response Specification with `status: "escalation_needed"`. When the unchecked item is the Binding Decisions Compliance Check, use `escalation_type: "binding_decision_violation"` with `phase: "exit_gate"`.
@@ -38,6 +38,9 @@ Choose Strategy A (TDD) if test skeletons are provided, Strategy B (implementati
38
38
  **Common rules (all approaches)**:
39
39
  - **Include Verification Strategy summary in work plan header** for downstream task reference
40
40
  - **Include adopted Quality Assurance Mechanisms in work plan header** for downstream task reference — list each adopted mechanism with tool name, what it enforces, configuration path, and covered files (literal file paths or directory prefixes from Design Doc, or "project-wide" if not scoped to specific files)
41
+ - **Include a Proof Strategy in the work plan header** (see plan template) — name the proof obligation source (test skeleton annotations when skeletons are provided, otherwise each AC's primary failure mode) and state that every claim-implementing task records Proof Obligations for downstream review
42
+ - **Record the Review Scope in the work plan header** — for a fresh pre-implementation plan, the planned-files scope derived from the Design Doc and task target files; for a revision plan over existing work, the base branch and diff range — so the work plan review and downstream verification share one scope
43
+ - **Include a Failure Mode Checklist in the work plan** (see plan template) — enumerate all eight domain-independent failure categories (same-value, no-op, empty input, invalid option, missing config, unavailable boundary, shared-state dependency, rollback-only visibility), mark which apply, and map each applicable one to its covering task(s), keeping entries free of project-specific names
41
44
  - Include verification tasks in the phase corresponding to Verification Strategy's verification timing
42
45
  - When test skeletons are provided, place integration test implementation in corresponding phases and E2E test execution in the final phase
43
46
  - When test skeletons are not provided, include test implementation tasks based on Design Doc acceptance criteria
@@ -364,6 +367,9 @@ When creating work plans, **Phase Structure Diagrams** and **Task Dependency Dia
364
367
  - [ ] Every row maps to at least one covering task
365
368
  - [ ] Plan header includes `Implementation Readiness: pending` (medium / large only)
366
369
  - [ ] Verification Strategy extracted from Design Doc and included in plan header
370
+ - [ ] Proof Strategy included in plan header (proof obligation source + per-task propagation rule)
371
+ - [ ] Review Scope recorded in plan header (base branch / diff range / changed-files scope)
372
+ - [ ] Failure Mode Checklist included, applicable categories mapped to covering tasks, free of project-specific names
367
373
  - [ ] Adopted Quality Assurance Mechanisms extracted from Design Doc and included in plan header
368
374
  - [ ] Phase structure matches implementation approach (vertical → value unit phases, horizontal → layer phases)
369
375
  - [ ] Early verification point placed in Phase 1 (when Verification Strategy specifies one)
@@ -174,18 +174,26 @@ describe('[機能名] Integration Test', () => {
174
174
  // @category: core-functionality
175
175
  // @dependency: PaymentService, OrderRepository, Database
176
176
  // @complexity: high
177
+ // 主要な故障モード: 決済は成功したのに注文行が存在しない、または永続化されていない
178
+ // 証明義務: 注文は決済成功後にのみ永続化される。モックしてよい境界は外部の決済ゲートウェイのみ
177
179
  it.todo('AC1: 決済成功で正しいステータスの注文が永続化される')
178
180
 
179
181
  // AC1-error: "決済失敗でユーザーフレンドリーなエラーメッセージを表示"
180
182
  // ROI: 23 (BV:8 × Freq:2 + Legal:0 + Defect:7)
181
- // 振る舞い: 決済失敗 → ユーザーに実行可能なエラー表示 → 注文未作成
183
+ // 振る舞い: 決済失敗 → ユーザーに対処可能なエラー表示 → 注文未作成
182
184
  // @category: core-functionality
183
185
  // @dependency: PaymentService, ErrorHandler
184
186
  // @complexity: medium
187
+ // 主要な故障モード: 決済失敗でも注文が作成される、またはエラーがユーザーに見える形で表示されず握り潰される
188
+ // 証明義務: 決済失敗時は対処可能なエラーを提示し、注文を永続化しない。モックしてよいのは決済ゲートウェイのみ
185
189
  it.todo('AC1-error: 決済失敗でエラー表示し注文を作成しない')
186
190
  })
187
191
  ```
188
192
 
193
+ **証明注釈**(すべてのスケルトンに、上記メタ情報とともに付与): 各 `it.todo` は証明コントラクトをテスト実装者と integration-test-reviewer に渡す2行のコメントを持つ(これらは task template の Proof Obligations フィールドに対応する):
194
+ - `主要な故障モード`: このテストをレッドにする具体的なリグレッション — ACが約束し、壊れると失われる振る舞い
195
+ - `証明義務`: 実装されたテストが主張を証明するためにアサートすべき内容 — 通過する境界、状態変更を伴うACでは操作前後の観測可能な状態、どの境界をなぜモックしてよいか。アサート対象を記述する設計意図として書き、実行可能なアサーションとモック設定は実装者が書く
196
+
189
197
  ### E2Eテストファイル群
190
198
 
191
199
  レーンごとに**別ファイル**で生成する: fixture-e2eは `*.fixture-e2e.test.[ext]`、service-integration-e2eは `*.service-e2e.test.[ext]`。各出力ファイルには下流エージェント(work-planner、task-decomposer、executor)が正しくルーティングできるよう `@lane:` ヘッダを必ず付与する。
@@ -207,6 +215,8 @@ describe('[機能名] fixture-e2e', () => {
207
215
  // @lane: fixture-e2e
208
216
  // @dependency: full-ui (mocked backend)
209
217
  // @complexity: medium
218
+ // 主要な故障モード: ジャーニー中のステップ遷移またはその観測可能な状態が失われる
219
+ // 証明義務: 各ステップの UI 遷移と結果状態を順に検証する。モックするのはバックエンドのみ(固定レスポンス)
210
220
  it.todo('ユーザージャーニー: モック決済でのカートから確認までのフロー')
211
221
  })
212
222
  ```
@@ -228,6 +238,8 @@ describe('[機能名] service-integration-e2e', () => {
228
238
  // @lane: service-integration-e2e
229
239
  // @dependency: full-system
230
240
  // @complexity: high
241
+ // 主要な故障モード: 実サービス間の購入後に注文行または下流イベントが存在しない
242
+ // 証明義務: DB行・発行イベント・キュー投入メールを実ローカルスタックに対して観測する。アサート対象の経路上は何もモックしない
231
243
  it.todo('ユーザージャーニー: 購入完了で注文が永続化され下流イベントが発行される')
232
244
  })
233
245
  ```
@@ -242,6 +254,8 @@ describe('[機能名] service-integration-e2e', () => {
242
254
  // ROI: [値] | テスト種別: property-based
243
255
  // @category: core-functionality
244
256
  // fast-check: fc.property(fc.constantFrom([入力バリエーション]), (input) => [不変条件])
257
+ // 主要な故障モード: 生成ドメイン内のある入力が記述された不変条件に違反する
258
+ // 証明義務: 生成された全入力で不変条件が成立する。境界はモックしない
245
259
  it.todo('[AC番号]-property: [不変条件を自然言語で記述]')
246
260
  ```
247
261
 
@@ -318,7 +332,7 @@ it.todo('[AC番号]-property: [不変条件を自然言語で記述]')
318
332
  ## 制約と品質基準
319
333
 
320
334
  **必須準拠事項**:
321
- - `it.todo`スケルトンのみ出力: 各スケルトン内にコメントとして検証観点、期待結果、合格基準を記述。
335
+ - `it.todo`スケルトンのみ出力: 各スケルトン内にコメントとして検証観点、期待結果、合格基準、主要な故障モード、証明義務を記述。
322
336
  実装コード、アサーション(`expect`)、モックセットアップは含めない — 下流の処理で`it.todo`の有無によりフェーズ配置やレビュー判定が行われる。
323
337
  - 各テストの検証観点、期待結果、合格基準を明確に記述
324
338
  - コメントに元のAC文を保持(トレーサビリティ確保)
@@ -96,11 +96,21 @@ Step 1で抽出した各識別子仕様(リソース名、エンドポイン
96
96
  #### 3-2. エラーハンドリング
97
97
  - エラーハンドリングパターン(try/catch、エラー返却、Result型 — プロジェクト言語に適応)をGrepで検索
98
98
  - 各エントリポイント: エラーケースが処理されており、黙殺されていないことを検証
99
- - エラーレスポンスが内部詳細を漏洩していないことを確認
99
+ - エラーレスポンスで内部詳細(スタックトレース、内部パス、PII)が伏せられていることを確認
100
100
 
101
101
  #### 3-3. 受入条件のテストカバレッジ
102
102
  - fulfilledと判定した各AC: Glob/Grepで対応するテストケースを検索
103
103
  - テストカバレッジのあるACとないACを記録
104
+ - **引用された各テストの実体性検証**:
105
+ - 適用対象: fulfilled と判定した AC のカバレッジとして主張されている各テスト
106
+ - カバレッジとして数える条件: テスト本体で実行されるアサーションのうち少なくとも1つが、AC の観測可能な振る舞いを検証している。意図的な不在を検証するアサーション(例: 空のリスト、null 結果)は、AC が不在を期待する場合に該当する
107
+ - 非実体的な例: 実行されるべきテストに `skip`/`xit` が残っている、TODO のみ・プレースホルダーのみの本体、常に真となるアサーション(例: `expect(true).toBe(true)`、`expect(arr.length).toBeGreaterThanOrEqual(0)`)
108
+ - 非実体的な場合のアクション: `coverage_gap` として記録し、rationale に該当する AC の参照と具体的な実体性の問題(file:line)を記載する
109
+ - **引用された各テストの証明検証(実体性を超えて)**:
110
+ - 適用対象: fulfilled と判定した AC の実体的なカバレッジとして数えられるテスト
111
+ - 主要な故障モードの出所: 主張に記録された Proof Obligation(タスクファイル)またはテストスケルトンの注釈を参照する。いずれも存在しない場合のみ AC から導出し、判定がテスト作成者の狙いと一致するようにする
112
+ - 証明として数える条件: テストがその主要な故障モードでレッドになり、主張された境界を直接通過する
113
+ - 未証明の場合のアクション: テストはパスするのに、主張された振る舞いがリグレッションしてもグリーンのまま → `coverage_gap` として記録し、rationale に未証明の故障モードを明記(file:line)
104
114
 
105
115
  #### 検出事項の分類
106
116
 
@@ -275,16 +285,3 @@ summary.findingsByCategory.coverage_gap: number (整数 >= 0)
275
285
  - パフォーマンス上の重大な問題を発見した場合
276
286
  - 実装が Design Doc の Minimal Surface Alternatives セクションに記載のない適用対象要素を導入している場合。適用対象集合はコンテキストごとに異なる: バックエンドでは永続状態、公開コントラクト要素(公開型、APIフィールド、関数シグネチャ、スキーマ定義)、モジュール/サービス境界を越えるフィールド、振る舞いモード/フラグ、再利用可能な抽象、フロントエンドでは永続化されるクライアント/サーバー状態、エクスポートされた再利用可能コンポーネントの公開 API Props、Context 値、所有境界を越えて持ち上げられた状態、観測可能な振る舞いを変える振る舞いモード/バリアント、再利用可能なコンポーネント分割(複数の親で利用するためのサブコンポーネント、カスタムフック、ユーティリティ)。1つの所有境界内に留まる通常の親→子の Props 伝達や、コンポーネントローカルの状態は適用対象外。
277
287
 
278
- ## 特別な考慮事項
279
-
280
- ### プロトタイプ/MVP の場合
281
- - 完全性より動作を優先的に評価
282
- - 将来の拡張性を考慮
283
-
284
- ### リファクタリングの場合
285
- - 既存機能の維持を最重要視
286
- - 改善度を定量的に評価
287
-
288
- ### 緊急修正の場合
289
- - 最小限の実装で問題解決しているか
290
- - 技術的負債の記録があるか
@@ -23,7 +23,7 @@ skills: documentation-criteria, technical-spec, project-context, typescript-rule
23
23
  - `composite`: 複合観点レビュー(推奨)- 構造・実装・完全性を一度に検証
24
24
  - 未指定時: 総合的レビュー
25
25
 
26
- - **doc_type**: ドキュメントタイプ(`PRD`/`UISpec`/`ADR`/`DesignDoc`)
26
+ - **doc_type**: ドキュメントタイプ(`PRD`/`UISpec`/`ADR`/`DesignDoc`/`WorkPlan`)
27
27
  - **target**: レビュー対象のドキュメントパス
28
28
 
29
29
  - **code_verification**: コード検証結果のJSON(任意)
@@ -34,6 +34,10 @@ skills: documentation-criteria, technical-spec, project-context, typescript-rule
34
34
  - 提供された場合、`focusAreas`をFact Dispositionカバレッジチェックの正典ソースとして使用
35
35
  - 未提供の場合、focusAreaの完全性は本レビューでは検証不能として扱う
36
36
 
37
+ - **design_doc**: Design Docのパス(任意、WorkPlanレビュー用)
38
+ - 提供された場合、計画に対するAC / コントラクト / 状態遷移のカバレッジチェックのソースとして読み込む
39
+ - 未提供の場合、作業計画書の「関連ドキュメント」セクションからDesign Docを解決する
40
+
37
41
  ## 作業フロー
38
42
 
39
43
  ### ステップ0: 入力コンテキスト分析(必須)
@@ -50,6 +54,7 @@ skills: documentation-criteria, technical-spec, project-context, typescript-rule
50
54
  - doc_typeに基づく特化した検証
51
55
  - DesignDocの場合:「適用基準」セクションの存在をexplicit/implicit分類付きで確認
52
56
  - 欠落・不完全 → `critical`、implicit基準の未確認 → `important`
57
+ - WorkPlanの場合: セマンティックゲートの判定対象となる成果物が計画に含まれることを確認 — 設計-計画トレーサビリティ、故障モードチェックリスト、レビュースコープ、検証戦略の要約、証明戦略。参照されているDesign Docを読み込み、AC / コントラクト / 状態遷移のカバレッジを計画のタスクに対して確認できるようにする
53
58
  - `code_verification`が提供された場合: 不整合リストと逆方向カバレッジのギャップを抽出し、Gate 1の事前検証エビデンスとして組み込む
54
59
  - `codebase_analysis`が提供された場合: `focusAreas`とその`evidence`値を抽出し、Gate 0 / Gate 1のFact Dispositionチェックに使用
55
60
 
@@ -71,6 +76,13 @@ DesignDocの場合、追加で以下を確認:
71
76
  - [ ] Fact Disposition TableセクションがDesign Docに存在する
72
77
  - [ ] Minimal Surface Alternatives セクションが存在し、新規に導入される適用対象要素(永続状態 / 公開コントラクト要素または境界を越えるフィールド・Props — バックエンドではモジュール/サービス境界を越えるフィールド、フロントエンドではエクスポートされた再利用可能コンポーネントの公開 API Props・Context 値・所有境界を越えて持ち上げられた状態 / 振る舞いモード・フラグ・バリアント / 再利用可能な抽象またはコンポーネント分割)ごとに1エントリ持つ(適用対象要素を導入する場合)。各エントリには5ステップの結果が含まれる(確定要件 — Design Docまたは参照PRD/UI SpecのAC参照(AC ID、AC見出し、EARS節、または制約ID)、削減的な代替案を1つ以上含む比較表、根拠付きの選定結果、不採用案の記録)
73
78
 
79
+ WorkPlanの場合、追加で以下を確認:
80
+ - [ ] レビュースコープが記録されている(変更予定ファイルの範囲、または改訂計画ではベースブランチ + diff範囲)
81
+ - [ ] 設計-計画トレーサビリティ表が存在し、各行がタスクにマッピングされているか正当化されたギャップを持つ
82
+ - [ ] 検証戦略の要約と証明戦略が存在する
83
+ - [ ] 故障モードチェックリストが存在する
84
+ - [ ] 最終フェーズに品質保証が含まれる(受入基準の達成、全テストのパス)
85
+
74
86
  #### Gate 1: 品質評価(Gate 0通過後のみ実施)
75
87
 
76
88
  **総合レビューモード**:
@@ -113,6 +125,14 @@ DesignDocの場合、追加で以下を確認:
113
125
  - (3) ステップ4 の根拠が、最小の代替案を選定するか、より小さい代替案では満たせない現要件を名指している — 「便利」「将来対応」「実装が楽」「ユーザーが欲しがるかも」が主たる根拠として使われている → `critical`(カテゴリ: `compliance`)。
114
126
  - (4) ステップ5 で不採用案が簡潔な根拠とともに記録されている — 不採用案ログの欠落 → `important`(カテゴリ: `completeness`)。注: 代替案ゼロのケースはサブチェック(2)で先に `critical` として検出される。サブチェック(4)は代替案は生成されたが記録が抜けているケースを検出する。
115
127
 
128
+ - **作業計画書セマンティックゲート**(doc_type WorkPlan):
129
+ - (1) カバレッジは各項目が計画内で存在する場所で確認する: 各受入基準がタスクでカバーされている — 設計-計画トレーサビリティの行がそのACをタスクにマッピングしているか、タスクの完了基準または Proof Obligations がそのACを参照していることで示される。各データコントラクトと状態遷移は、設計-計画トレーサビリティの行でタスクにマッピングされるか、明示的なスコープ外エントリを持つ。各品質保証メカニズムは、カバー対象ファイルとともに品質保証メカニズム表に現れる。いずれのカバレッジもない項目 → `critical`(カテゴリ: `completeness`)。カバーされない受入基準は原因を区別する: Design Docが裏付けるのにタスクがマッピングされていない(計画の漏れ、再計画で修正可能)→ `critical`、Design Docや入力に裏付けがない(再計画でも修正不能なギャップ)→ 下記Verdictマッピングの`rejected`トリガー
130
+ - (2) 早期検証ポイントが最終フェーズではなく早期フェーズに置かれている — 最終フェーズへの後回し → `important`(カテゴリ: `consistency`)
131
+ - (3) 境界横断・公開境界・永続状態の各変更が、それを実境界経由で検証するタスクを名指している — 欠落 → `important`(カテゴリ: `completeness`)
132
+ - (4) 存在する各トレーサビリティ表(設計-計画、UI Specコンポーネント、Connection Map、ADR Bindings)が対象タスクを解決できる粒度で埋められている — 粒度不足の行 → `important`(カテゴリ: `completeness`)
133
+ - (5) 故障モードチェックリストが計画の該当するドメイン非依存カテゴリ(same-value, no-op, empty input, invalid option, missing config, unavailable boundary, shared-state dependency, rollback-only visibility)をカバーしている — 該当カテゴリの欠落 → `recommended`(カテゴリ: `completeness`)
134
+ - Verdictマッピング(WorkPlan): セマンティックゲートの`critical`はいずれもverdictを最低でも`needs_revision`にする — ただしDesign Doc/入力要素の欠落や矛盾に起因するカバレッジギャップ(再計画で修正不能)→ `rejected`、`important`のみの場合はverdictを`approved_with_conditions`までに制限する
135
+
116
136
  **観点特化モード**:
117
137
  - 指定されたmodeとfocusに基づいてレビューを実施
118
138
 
@@ -63,6 +63,7 @@ skills: integration-e2e-testing, typescript-testing, project-context
63
63
  | 独立性 | テストごとに状態を分離(beforeEachでリセット) | テスト間で共有状態を変更 |
64
64
  | 再現性 | 決定論的な実行(必要に応じて時間/乱数をモック) | 非決定的要素あり |
65
65
  | 可読性 | テスト名と検証内容の一致 | 名前と内容が乖離 |
66
+ | 実体的なアサーション | 実行されたアサーションのうち少なくとも1つが、AC の観測可能な振る舞いを検証する。意図的な不在を検証するアサーション(例: `toHaveLength(0)`、`toBeNull()`)は、AC が不在を期待する場合に該当する | TODO のみの本体、実行されるべきテストへの `skip`/`xit` 残置、常真のアサーション(例: `expect(true).toBe(true)`、`expect(arr.length).toBeGreaterThanOrEqual(0)`) |
66
67
 
67
68
  ### 4. モック境界チェック(統合テストのみ)
68
69
 
@@ -72,6 +73,15 @@ skills: integration-e2e-testing, typescript-testing, project-context
72
73
  | 内部コンポーネント | 実物使用 | 不要なモック化 |
73
74
  | ログ出力検証 | vi.fn()使用 | 検証なしのモック |
74
75
 
76
+ ### 5. 主張証明の妥当性
77
+
78
+ 各ACの主要な故障モードと証明義務は、テストのスケルトン注釈(「主要な故障モード」/「証明義務」コメント)を出所とする — これらは task template の Proof Obligations フィールドに対応する。各テストが主張を証明していることを確認する: アサーションが約束された振る舞いを観測し、その振る舞いがリグレッションするとテストが失敗する。テストが未証明のまま残す各義務について `proof_insufficient` を記録する:
79
+ - テストが記録された主要な故障モードでレッドになる(アサーションがACの約束する具体的な振る舞いを観測するため、その振る舞いのリグレッションでテストが失敗する)。
80
+ - ACが公開境界または統合境界を主張する場合、テストはその境界を直接通過する。
81
+ - ACが状態変更・副作用・ロールバック・非変更モード・冪等性・永続化を主張する場合、テストは操作前の観測可能な状態、操作、操作後の観測可能な状態をアサートする。
82
+ - モックする各境界は外部依存であり、テスト対象の境界は実物のまま残し、その境界をモックしてよい理由をコメントで記録する。
83
+ - 統合テストとE2Eテストは範囲を限定した fixture を用い、共有状態・実データ量・実行順序によらず成立する結果をアサートする。
84
+
75
85
  ## 出力フォーマット
76
86
 
77
87
  ### 出力プロトコル
@@ -115,7 +125,7 @@ skills: integration-e2e-testing, typescript-testing, project-context
115
125
  "qualityIssues": [
116
126
  {
117
127
  "severity": "high | medium | low",
118
- "category": "aaa_structure | independence | reproducibility | mock_boundary | readability",
128
+ "category": "aaa_structure | independence | reproducibility | mock_boundary | proof_insufficient | readability",
119
129
  "location": "[ファイル:行番号]",
120
130
  "description": "[問題の説明]",
121
131
  "suggestion": "[具体的な修正提案]"
@@ -197,8 +207,14 @@ needs_revision判定時、後続処理で使用できる修正指示を出力:
197
207
  - 全コンポーネント実装完了後に実行されているか確認
198
208
  - クリティカルユーザージャーニーの網羅性を検証
199
209
 
210
+ ### 空虚またはプレースホルダーのアサーション
211
+
212
+ **問題**: テストはパスしているように見えるが、AC の観測可能な振る舞いを検証していない — 常真のアサーション、TODO のみの本体、実行されるべきテストへの `skip`/`xit` 残置のいずれか。
213
+ **修正**: AC の観測可能な振る舞いを検証するアサーションへ置き換える。実行すべきテストの場合は `skip`/`xit` を外す。AC の期待が真に不在である場合は、明示的な不在アサーション(`queryAllBy*`+`toHaveLength(0)`、`toBeNull()`)を使う。
214
+
200
215
  ## 完了条件
201
216
 
202
217
  - [ ] すべてのスケルトンコメントを実装と照合
203
218
  - [ ] 実装品質を評価
219
+ - [ ] 各テストがACの主張を証明している: 主要な故障モードでレッドになり、主張された境界を通過し、状態変更を伴う主張では操作前後の状態をアサートする
204
220
  - [ ] Mock境界を検証(統合テスト)