phasegate 0.16.0 → 0.31.0

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 (215) hide show
  1. package/README.ja.md +71 -39
  2. package/README.md +69 -9
  3. package/docs/ADR/ADR-013-story-reflection-gate.md +100 -0
  4. package/docs/guide/configuration.md +244 -7
  5. package/package.json +4 -2
  6. package/scripts/harness/adr-foundation/domain/ports/adr-document-parser-port.ts +1 -0
  7. package/scripts/harness/adr-foundation/domain/ports/adr-frontmatter-parser-port.ts +1 -0
  8. package/scripts/harness/adr-foundation/domain/ports/adr-repository-port.ts +1 -0
  9. package/scripts/harness/adr-foundation/domain/value-objects/adr-status.ts +6 -6
  10. package/scripts/harness/agent-integration/application/dto/handle-pre-tool-use-dto.ts +3 -1
  11. package/scripts/harness/agent-integration/application/usecases/handle-pre-tool-use-usecase.ts +108 -2
  12. package/scripts/harness/agent-integration/domain/ports/config-query-port.ts +2 -0
  13. package/scripts/harness/agent-integration/domain/ports/phase-gate-query-port.ts +1 -1
  14. package/scripts/harness/agent-integration/domain/ports/story-reflection-query-port.ts +8 -0
  15. package/scripts/harness/agent-integration/domain/services/bash-write-target-extractor.ts +258 -0
  16. package/scripts/harness/agent-integration/domain/services/hook-to-cli-translator.ts +21 -4
  17. package/scripts/harness/agent-integration/domain/value-objects/protected-file-list.ts +20 -0
  18. package/scripts/harness/agent-integration/domain/value-objects/story-reflection-query-result.ts +63 -0
  19. package/scripts/harness/agent-integration/infrastructure/adapters/file-system-story-reflection-query-adapter.ts +122 -0
  20. package/scripts/harness/agent-integration/infrastructure/adapters/harness-config-config-query-adapter.ts +20 -0
  21. package/scripts/harness/agent-integration/infrastructure/adapters/phase-gate-query-adapter.ts +17 -3
  22. package/scripts/harness/agent-integration/presentation/pre-tool-use-hook.ts +29 -2
  23. package/scripts/harness/biome-ast-engine/domain/services/lint-runner.ts +24 -0
  24. package/scripts/harness/biome-ast-engine/domain/services/rule-definition-registry.ts +1 -1
  25. package/scripts/harness/biome-ast-engine/domain/value-objects/source-module-snapshot.ts +5 -2
  26. package/scripts/harness/biome-ast-engine/infrastructure/adapters/node-workspace-file-adapter.ts +1 -1
  27. package/scripts/harness/biome-ast-engine/infrastructure/adapters/typescript-source-module-analyzer-adapter.ts +1 -1
  28. package/scripts/harness/biome-ast-engine/infrastructure/parsers/unit-comment-parser.ts +12 -7
  29. package/scripts/harness/ci-governance/composition-root.ts +1 -0
  30. package/scripts/harness/config-foundation/application/mappers/phase-config-section-mapper.ts +44 -0
  31. package/scripts/harness/config-foundation/application/usecases/load-resolved-config-use-case.ts +20 -1
  32. package/scripts/harness/config-foundation/domain/harness-config.ts +2 -1
  33. package/scripts/harness/config-foundation/domain/value-objects/phase-dependencies-config.ts +18 -4
  34. package/scripts/harness/config-foundation/infrastructure/schemas/harness-config-v2.schema.json +185 -10
  35. package/scripts/harness/config-foundation/infrastructure/validators/ajv-config-schema-validator.ts +2 -1
  36. package/scripts/harness/harness-api/application/dto/command-dispatch-input.ts +1 -0
  37. package/scripts/harness/harness-api/application/dto/command-dispatch-output.ts +1 -0
  38. package/scripts/harness/harness-api/application/dto/exit-code-decision-input.ts +1 -0
  39. package/scripts/harness/harness-api/application/dto/exit-code-decision-output.ts +1 -0
  40. package/scripts/harness/harness-api/application/dto/harness-api-response-contract.ts +1 -0
  41. package/scripts/harness/harness-api/application/dto/initialize-registry-input.ts +1 -0
  42. package/scripts/harness/harness-api/application/dto/registry-summary-output.ts +1 -0
  43. package/scripts/harness/harness-api/application/dto/status-derivation-input.ts +1 -0
  44. package/scripts/harness/harness-api/application/mappers/harness-api-response-mapper.ts +1 -0
  45. package/scripts/harness/harness-api/application/usecases/decide-exit-code-usecase.ts +1 -0
  46. package/scripts/harness/harness-api/application/usecases/derive-harness-status-usecase.ts +1 -0
  47. package/scripts/harness/harness-api/application/usecases/dispatch-command-usecase.ts +1 -0
  48. package/scripts/harness/harness-api/application/usecases/initialize-command-registry-usecase.ts +1 -0
  49. package/scripts/harness/harness-api/composition-root.ts +1 -0
  50. package/scripts/harness/harness-api/domain/ports/artifact-scanner-port.ts +1 -0
  51. package/scripts/harness/harness-api/domain/ports/biome-lint-port.ts +1 -0
  52. package/scripts/harness/harness-api/domain/ports/config-query-port.ts +1 -0
  53. package/scripts/harness/harness-api/domain/ports/impact-analysis-port.ts +1 -0
  54. package/scripts/harness/harness-api/domain/ports/phase-gate-query-port.ts +1 -0
  55. package/scripts/harness/harness-api/domain/ports/validator-execution-port.ts +1 -0
  56. package/scripts/harness/harness-api/domain/services/command-dispatch-service.ts +1 -0
  57. package/scripts/harness/harness-api/domain/services/command-registry.ts +1 -0
  58. package/scripts/harness/harness-api/domain/services/status-derivation-service.ts +1 -0
  59. package/scripts/harness/harness-api/domain/value-objects/artifact-scan-result.ts +1 -0
  60. package/scripts/harness/harness-api/domain/value-objects/check-ready-result.ts +1 -0
  61. package/scripts/harness/harness-api/domain/value-objects/ci-check-result.ts +1 -0
  62. package/scripts/harness/harness-api/domain/value-objects/cli-command-definition.ts +1 -0
  63. package/scripts/harness/harness-api/domain/value-objects/command-input-spec.ts +1 -0
  64. package/scripts/harness/harness-api/domain/value-objects/drift-report-summary.ts +1 -0
  65. package/scripts/harness/harness-api/domain/value-objects/exit-code-spec.ts +1 -0
  66. package/scripts/harness/harness-api/domain/value-objects/harness-api-response.ts +1 -0
  67. package/scripts/harness/harness-api/domain/value-objects/harness-status-summary.ts +1 -0
  68. package/scripts/harness/harness-api/domain/value-objects/layer-health.ts +1 -0
  69. package/scripts/harness/harness-api/domain/value-objects/phase-info.ts +1 -0
  70. package/scripts/harness/harness-api/index.ts +1 -0
  71. package/scripts/harness/harness-api/infrastructure/adapters/biome-ast-engine-lint-adapter.ts +1 -0
  72. package/scripts/harness/harness-api/infrastructure/adapters/file-system-artifact-scanner-adapter.ts +1 -0
  73. package/scripts/harness/harness-api/infrastructure/adapters/harness-config-query-adapter.ts +1 -0
  74. package/scripts/harness/harness-api/infrastructure/adapters/nyquist-validation-impact-analysis-adapter.ts +1 -0
  75. package/scripts/harness/harness-api/infrastructure/adapters/phase-dependency-model-query-adapter.ts +1 -0
  76. package/scripts/harness/harness-api/infrastructure/adapters/validator-system-execution-adapter.ts +1 -0
  77. package/scripts/harness/harness-api/presentation/dto/cli-output-options.ts +1 -0
  78. package/scripts/harness/harness-api/presentation/formatters/harness-api-json-formatter.ts +1 -0
  79. package/scripts/harness/harness-api/presentation/handlers/check-phase-handler.ts +1 -0
  80. package/scripts/harness/harness-api/presentation/handlers/check-ready-handler.ts +1 -0
  81. package/scripts/harness/harness-api/presentation/handlers/ci-check-handler.ts +1 -0
  82. package/scripts/harness/harness-api/presentation/handlers/complete-check-handler.ts +1 -0
  83. package/scripts/harness/harness-api/presentation/handlers/detect-drift-handler.ts +1 -0
  84. package/scripts/harness/harness-api/presentation/handlers/impact-analysis-handler.ts +1 -0
  85. package/scripts/harness/harness-api/presentation/handlers/lint-handler.ts +1 -0
  86. package/scripts/harness/harness-api/presentation/handlers/status-handler.ts +1 -0
  87. package/scripts/harness/harness-error/infrastructure/adapters/legacy-error-reporter-adapter.ts +7 -1
  88. package/scripts/harness/integrations/pre-commit.ts +1 -0
  89. package/scripts/harness/main.ts +154 -34
  90. package/scripts/harness/phase-dependency-model/application/dto/resolve-gate-result-dto.ts +14 -0
  91. package/scripts/harness/phase-dependency-model/application/services/phase-gate-result-mapper.ts +20 -0
  92. package/scripts/harness/phase-dependency-model/application/usecases/check-story-reflection-usecase.ts +42 -0
  93. package/scripts/harness/phase-dependency-model/application/usecases/resolve-gate-usecase.ts +161 -0
  94. package/scripts/harness/phase-dependency-model/composition-root.ts +57 -1
  95. package/scripts/harness/phase-dependency-model/domain/definitions/{default-phase-dependencies.ts → full-phase-dependencies.ts} +3 -3
  96. package/scripts/harness/phase-dependency-model/domain/definitions/{default-phase-nodes.ts → full-phase-nodes.ts} +1 -1
  97. package/scripts/harness/phase-dependency-model/domain/definitions/full-story-reflection-defaults.ts +28 -0
  98. package/scripts/harness/phase-dependency-model/domain/definitions/minimal-phase-dependencies.ts +32 -0
  99. package/scripts/harness/phase-dependency-model/domain/definitions/minimal-phase-nodes.ts +50 -0
  100. package/scripts/harness/phase-dependency-model/domain/definitions/minimal-story-reflection-defaults.ts +8 -0
  101. package/scripts/harness/phase-dependency-model/domain/definitions/standard-phase-dependencies.ts +39 -0
  102. package/scripts/harness/phase-dependency-model/domain/definitions/standard-phase-nodes.ts +118 -0
  103. package/scripts/harness/phase-dependency-model/domain/definitions/standard-story-reflection-defaults.ts +23 -0
  104. package/scripts/harness/phase-dependency-model/domain/models/phase-structure.ts +95 -23
  105. package/scripts/harness/phase-dependency-model/domain/ports/glob-matcher-port.ts +8 -0
  106. package/scripts/harness/phase-dependency-model/domain/ports/phase-config-provider-port.ts +2 -0
  107. package/scripts/harness/phase-dependency-model/domain/ports/story-annotation-verifier-port.ts +14 -0
  108. package/scripts/harness/phase-dependency-model/domain/ports/story-reflection-file-system-port.ts +16 -0
  109. package/scripts/harness/phase-dependency-model/domain/services/gate-graph.ts +223 -0
  110. package/scripts/harness/phase-dependency-model/domain/services/story-reflection-checker.ts +66 -0
  111. package/scripts/harness/phase-dependency-model/domain/values/gate-definition.ts +127 -0
  112. package/scripts/harness/phase-dependency-model/domain/values/gate-name.ts +40 -0
  113. package/scripts/harness/phase-dependency-model/domain/values/gate-story-annotation.ts +39 -0
  114. package/scripts/harness/phase-dependency-model/domain/values/phase-customization-policy.ts +16 -4
  115. package/scripts/harness/phase-dependency-model/domain/values/story-reflection-config.ts +44 -0
  116. package/scripts/harness/phase-dependency-model/domain/values/story-reflection-mapping.ts +91 -0
  117. package/scripts/harness/phase-dependency-model/domain/values/story-reflection-result.ts +55 -0
  118. package/scripts/harness/phase-dependency-model/infrastructure/adapters/picomatch-glob-matcher.ts +17 -0
  119. package/scripts/harness/phase-dependency-model/infrastructure/adapters/story-annotation-verifier-adapter.ts +46 -0
  120. package/scripts/harness/phase-dependency-model/infrastructure/config/custom-gates-config-parser.ts +22 -0
  121. package/scripts/harness/phase-dependency-model/infrastructure/config/harness-config-phase-config-provider.ts +78 -2
  122. package/scripts/harness/phase-dependency-model/infrastructure/filesystem/file-system-story-reflection-adapter.ts +94 -0
  123. package/scripts/harness/phase-dependency-model/presentation/cli/check-phase-gate-command-handler.ts +12 -4
  124. package/scripts/harness/phase-dependency-model/presentation/cli/story-reflection-status-presenter.ts +87 -0
  125. package/scripts/harness/regression-suite/application/dto/analyze-migration-input.ts +1 -0
  126. package/scripts/harness/regression-suite/application/dto/analyze-migration-output.ts +1 -0
  127. package/scripts/harness/regression-suite/application/dto/configure-ci-gate-input.ts +1 -0
  128. package/scripts/harness/regression-suite/application/dto/configure-ci-gate-output.ts +1 -0
  129. package/scripts/harness/regression-suite/application/dto/migrate-v0-tests-input.ts +1 -0
  130. package/scripts/harness/regression-suite/application/dto/migrate-v0-tests-output.ts +1 -0
  131. package/scripts/harness/regression-suite/application/dto/run-regression-suite-input.ts +1 -0
  132. package/scripts/harness/regression-suite/application/dto/run-regression-suite-output.ts +1 -0
  133. package/scripts/harness/regression-suite/application/mappers/migration-mapping-mapper.ts +1 -0
  134. package/scripts/harness/regression-suite/application/mappers/test-execution-summary-mapper.ts +1 -0
  135. package/scripts/harness/regression-suite/application/usecases/analyze-v0-migration-usecase.ts +1 -0
  136. package/scripts/harness/regression-suite/application/usecases/configure-ci-gate-usecase.ts +1 -0
  137. package/scripts/harness/regression-suite/application/usecases/migrate-v0-tests-usecase.ts +1 -0
  138. package/scripts/harness/regression-suite/application/usecases/run-agent-independence-guard-usecase.ts +1 -0
  139. package/scripts/harness/regression-suite/application/usecases/run-gng-gate-regression-usecase.ts +1 -0
  140. package/scripts/harness/regression-suite/application/usecases/run-k-requirements-regression-usecase.ts +1 -0
  141. package/scripts/harness/regression-suite/application/usecases/run-k14-k15-regression-usecase.ts +1 -0
  142. package/scripts/harness/regression-suite/composition-root.ts +1 -0
  143. package/scripts/harness/regression-suite/domain/aggregates/v0-test-migration.ts +1 -0
  144. package/scripts/harness/regression-suite/domain/ports/ci-gate-result-writer-port.ts +1 -0
  145. package/scripts/harness/regression-suite/domain/ports/config-query-port.ts +1 -0
  146. package/scripts/harness/regression-suite/domain/ports/import-analyzer-port.ts +1 -0
  147. package/scripts/harness/regression-suite/domain/ports/migration-mapping-repository-port.ts +1 -0
  148. package/scripts/harness/regression-suite/domain/ports/suite-registry-port.ts +1 -0
  149. package/scripts/harness/regression-suite/domain/ports/test-runner-port.ts +1 -0
  150. package/scripts/harness/regression-suite/domain/ports/v0-spec-reader-port.ts +1 -0
  151. package/scripts/harness/regression-suite/domain/services/import-guard-service.ts +1 -0
  152. package/scripts/harness/regression-suite/domain/services/migration-analyzer.ts +1 -0
  153. package/scripts/harness/regression-suite/domain/services/regression-runner.ts +1 -0
  154. package/scripts/harness/regression-suite/domain/value-objects/agent-independence-test.ts +1 -0
  155. package/scripts/harness/regression-suite/domain/value-objects/biome-modification-spec.ts +1 -0
  156. package/scripts/harness/regression-suite/domain/value-objects/ci-gate-config.ts +1 -0
  157. package/scripts/harness/regression-suite/domain/value-objects/coverage-rate.ts +1 -0
  158. package/scripts/harness/regression-suite/domain/value-objects/gng-condition-test.ts +1 -0
  159. package/scripts/harness/regression-suite/domain/value-objects/import-violation.ts +1 -0
  160. package/scripts/harness/regression-suite/domain/value-objects/k-requirement-test.ts +1 -0
  161. package/scripts/harness/regression-suite/domain/value-objects/migration-mapping.ts +1 -0
  162. package/scripts/harness/regression-suite/domain/value-objects/regression-suite-definition.ts +1 -0
  163. package/scripts/harness/regression-suite/domain/value-objects/suite-id.ts +1 -0
  164. package/scripts/harness/regression-suite/domain/value-objects/test-execution-summary.ts +1 -0
  165. package/scripts/harness/regression-suite/domain/value-objects/test-failure-detail.ts +1 -0
  166. package/scripts/harness/regression-suite/domain/value-objects/v0-test-id.ts +1 -0
  167. package/scripts/harness/regression-suite/domain/value-objects/v1-test-path.ts +1 -0
  168. package/scripts/harness/regression-suite/infrastructure/adapters/biome-ast-import-analyzer-adapter.ts +1 -0
  169. package/scripts/harness/regression-suite/infrastructure/adapters/file-system-v0-spec-reader-adapter.ts +1 -0
  170. package/scripts/harness/regression-suite/infrastructure/adapters/harness-config-query-adapter.ts +1 -0
  171. package/scripts/harness/regression-suite/infrastructure/adapters/json-ci-gate-result-writer-adapter.ts +1 -0
  172. package/scripts/harness/regression-suite/infrastructure/adapters/markdown-migration-mapping-repository-adapter.ts +1 -0
  173. package/scripts/harness/regression-suite/infrastructure/adapters/static-suite-registry-adapter.ts +1 -0
  174. package/scripts/harness/regression-suite/infrastructure/adapters/vitest-test-runner-adapter.ts +1 -0
  175. package/scripts/harness/regression-suite/infrastructure/registry/agent-independence-suite-definition.ts +1 -0
  176. package/scripts/harness/regression-suite/infrastructure/registry/gng-gate-suite-definition.ts +1 -0
  177. package/scripts/harness/regression-suite/infrastructure/registry/k-requirements-suite-definition.ts +1 -0
  178. package/scripts/harness/regression-suite/infrastructure/registry/v0-migration-suite-definition.ts +1 -0
  179. package/scripts/harness/setup/skill-deployer.ts +82 -5
  180. package/scripts/harness/shared-kernel/harness-api.ts +1 -0
  181. package/scripts/harness/skill-quality/composition-root.ts +1 -0
  182. package/scripts/harness/skill-quality/infrastructure/adapters/ajv-lesson-artifact-schema-adapter.ts +5 -4
  183. package/scripts/harness/traceability-model/domain/services/metadata-validator.ts +12 -10
  184. package/scripts/harness/traceability-model/infrastructure/parsers/source-metadata-parser.ts +16 -2
  185. package/skills/cascade-updater/SKILL.md +16 -3
  186. package/skills/codebase-mapper/SKILL.md +9 -9
  187. package/skills/codex-delegator/SKILL.md +5 -56
  188. package/skills/consistency-checker/SKILL.md +5 -9
  189. package/skills/consistency-checker/references//343/203/201/343/202/247/343/203/203/343/202/257/343/203/252/343/202/271/343/203/210.md +6 -3
  190. package/skills/doc-freshness-checker/SKILL.md +6 -6
  191. package/skills/engineering-perspective/SKILL.md +2 -58
  192. package/skills/engineering-perspective/references/domain-model.md +4 -135
  193. package/skills/implementation-readiness-checker/SKILL.md +18 -72
  194. package/skills/it-test-designer/SKILL.md +25 -161
  195. package/skills/it-test-designer/references/it-test-design-template.md +131 -0
  196. package/skills/it-test-logic-designer/SKILL.md +13 -388
  197. package/skills/it-test-logic-designer/references/controller-test-patterns.md +100 -0
  198. package/skills/it-test-logic-designer/references/repository-test-patterns.md +206 -0
  199. package/skills/it-test-logic-designer/references/usecase-test-patterns.md +87 -0
  200. package/skills/pointer-validator/SKILL.md +4 -4
  201. package/skills/scenario-test-designer/SKILL.md +4 -68
  202. package/skills/scenario-test-designer/references/scenario-test-design-template.md +41 -0
  203. package/skills/scenario-test-designer/references/scenario-test-plan-template.md +35 -0
  204. package/skills/scenario-test-logic-designer/SKILL.md +21 -304
  205. package/skills/scenario-test-logic-designer/references/msw-patterns.md +36 -0
  206. package/skills/scenario-test-logic-designer/references/playwright-patterns.md +237 -0
  207. package/skills/test-coverage-checker/SKILL.md +39 -121
  208. package/skills/test-coverage-checker/references/coverage-report-template.md +99 -0
  209. package/skills/uiux-designer/SKILL.md +27 -92
  210. package/skills/uiux-designer/references/data-testid-convention.md +38 -0
  211. package/skills/uiux-designer/references/uiux-design-template.md +105 -0
  212. package/skills/unit-test-designer/SKILL.md +5 -106
  213. package/skills/unit-test-designer/references/unit-test-design-template.md +127 -0
  214. package/skills/unit-test-logic-designer/SKILL.md +28 -250
  215. package/skills/unit-test-logic-designer/references/test-patterns.md +207 -0
@@ -1,3 +1,4 @@
1
+ // @layer domain
1
2
  import type { SuiteId } from '../value-objects/suite-id.js';
2
3
  import { TestExecutionSummary } from '../value-objects/test-execution-summary.js';
3
4
  import { TestFailureDetail } from '../value-objects/test-failure-detail.js';
@@ -1,3 +1,4 @@
1
+ // @layer domain
1
2
  export interface AgentIndependenceTestProps {
2
3
  targetModule: string;
3
4
  forbiddenPatterns: string[];
@@ -1,3 +1,4 @@
1
+ // @layer domain
1
2
  export interface BiomeModificationSpecProps {
2
3
  targetApi: string;
3
4
  replacementApi: string;
@@ -1,3 +1,4 @@
1
+ // @layer domain
1
2
  import type { SuiteId } from './suite-id.js';
2
3
 
3
4
  export type ExecutionMode = 'parallel' | 'sequential';
@@ -1,3 +1,4 @@
1
+ // @layer domain
1
2
  export class CoverageRate {
2
3
  readonly value: number;
3
4
 
@@ -1,3 +1,4 @@
1
+ // @layer domain
1
2
  export interface GngConditionTestProps {
2
3
  gngNumber: string;
3
4
  targetUnit: string;
@@ -1,3 +1,4 @@
1
+ // @layer domain
1
2
  export interface ImportViolationProps {
2
3
  modulePath: string;
3
4
  forbiddenPackage: string;
@@ -1,3 +1,4 @@
1
+ // @layer domain
1
2
  export interface KRequirementTestProps {
2
3
  kNumber: string;
3
4
  targetUnit: string;
@@ -1,3 +1,4 @@
1
+ // @layer domain
1
2
  import type { V0TestId } from './v0-test-id.js';
2
3
  import type { V1TestPath } from './v1-test-path.js';
3
4
  import type { BiomeModificationSpec } from './biome-modification-spec.js';
@@ -1,3 +1,4 @@
1
+ // @layer domain
1
2
  import type { SuiteId } from './suite-id.js';
2
3
  import type { KRequirementTest } from './k-requirement-test.js';
3
4
  import type { GngConditionTest } from './gng-condition-test.js';
@@ -1,3 +1,4 @@
1
+ // @layer domain
1
2
  export type SuiteIdValue = 'k-requirements' | 'gng-gate' | 'v0-migration' | 'agent-independence';
2
3
 
3
4
  const VALID_SUITE_IDS: ReadonlySet<string> = new Set([
@@ -1,3 +1,4 @@
1
+ // @layer domain
1
2
  import type { CoverageRate } from './coverage-rate.js';
2
3
  import type { TestFailureDetail } from './test-failure-detail.js';
3
4
 
@@ -1,3 +1,4 @@
1
+ // @layer domain
1
2
  export interface TestFailureDetailProps {
2
3
  testCaseId: string;
3
4
  errorMessage: string;
@@ -1,3 +1,4 @@
1
+ // @layer domain
1
2
  export class V0TestId {
2
3
  readonly value: string;
3
4
 
@@ -1,3 +1,4 @@
1
+ // @layer domain
1
2
  export class V1TestPath {
2
3
  readonly value: string;
3
4
 
@@ -1,3 +1,4 @@
1
+ // @layer infrastructure
1
2
  import * as fs from 'node:fs/promises';
2
3
  import type { ImportAnalyzerPort } from '../../domain/ports/import-analyzer-port.js';
3
4
 
@@ -1,3 +1,4 @@
1
+ // @layer infrastructure
1
2
  import * as fs from 'node:fs/promises';
2
3
  import * as path from 'node:path';
3
4
  import { V0TestId } from '../../domain/value-objects/v0-test-id.js';
@@ -1,3 +1,4 @@
1
+ // @layer infrastructure
1
2
  import type { ConfigQueryPort } from '../../domain/ports/config-query-port.js';
2
3
 
3
4
  export class HarnessConfigQueryAdapter implements ConfigQueryPort {
@@ -1,3 +1,4 @@
1
+ // @layer infrastructure
1
2
  import * as fs from 'node:fs/promises';
2
3
  import * as path from 'node:path';
3
4
  import type { SuiteIdValue } from '../../domain/value-objects/suite-id.js';
@@ -1,3 +1,4 @@
1
+ // @layer infrastructure
1
2
  import * as fs from 'node:fs/promises';
2
3
  import * as path from 'node:path';
3
4
  import type { V0TestMigration } from '../../domain/aggregates/v0-test-migration.js';
@@ -1,3 +1,4 @@
1
+ // @layer infrastructure
1
2
  import type { SuiteId } from '../../domain/value-objects/suite-id.js';
2
3
  import type { RegressionSuiteDefinition } from '../../domain/value-objects/regression-suite-definition.js';
3
4
  import type { SuiteRegistryPort } from '../../domain/ports/suite-registry-port.js';
@@ -1,3 +1,4 @@
1
+ // @layer infrastructure
1
2
  import { execSync } from 'node:child_process';
2
3
  import { existsSync } from 'node:fs';
3
4
  import { join } from 'node:path';
@@ -1,3 +1,4 @@
1
+ // @layer infrastructure
1
2
  import { SuiteId } from '../../domain/value-objects/suite-id.js';
2
3
  import { RegressionSuiteDefinition } from '../../domain/value-objects/regression-suite-definition.js';
3
4
  import { AgentIndependenceTest } from '../../domain/value-objects/agent-independence-test.js';
@@ -1,3 +1,4 @@
1
+ // @layer infrastructure
1
2
  import { SuiteId } from '../../domain/value-objects/suite-id.js';
2
3
  import { RegressionSuiteDefinition } from '../../domain/value-objects/regression-suite-definition.js';
3
4
  import { GngConditionTest } from '../../domain/value-objects/gng-condition-test.js';
@@ -1,3 +1,4 @@
1
+ // @layer infrastructure
1
2
  import { SuiteId } from '../../domain/value-objects/suite-id.js';
2
3
  import { RegressionSuiteDefinition } from '../../domain/value-objects/regression-suite-definition.js';
3
4
  import { KRequirementTest } from '../../domain/value-objects/k-requirement-test.js';
@@ -1,3 +1,4 @@
1
+ // @layer infrastructure
1
2
  import { SuiteId } from '../../domain/value-objects/suite-id.js';
2
3
  import { RegressionSuiteDefinition } from '../../domain/value-objects/regression-suite-definition.js';
3
4
  import { KRequirementTest } from '../../domain/value-objects/k-requirement-test.js';
@@ -18,16 +18,86 @@ const HARNESS_CONFIG_FILE = 'phasegate.config.json';
18
18
  const HOOKS_TEMPLATE_DIR = join('templates', '.claude');
19
19
  const HOOKS_TARGET_DIR = '.claude';
20
20
 
21
+ // ── Skill Category Map ──
22
+
23
+ export type SkillCategory = 'core' | 'aidlc' | 'utility';
24
+ export type SkillSet = 'core' | 'all';
25
+
26
+ export const SKILL_CATEGORIES: Record<SkillCategory, readonly string[]> = {
27
+ core: [
28
+ 'cascade-updater',
29
+ 'codebase-mapper',
30
+ 'consistency-checker',
31
+ 'doc-freshness-checker',
32
+ 'engineering-perspective',
33
+ 'implementation-readiness-checker',
34
+ 'pointer-validator',
35
+ 'test-coverage-checker',
36
+ ],
37
+ aidlc: [
38
+ 'domain-designer',
39
+ 'environment-designer',
40
+ 'implementation-planner',
41
+ 'it-test-designer',
42
+ 'it-test-logic-designer',
43
+ 'logical-designer',
44
+ 'mock-designer',
45
+ 'product-architect',
46
+ 'quick-implementor',
47
+ 'scenario-test-designer',
48
+ 'scenario-test-logic-designer',
49
+ 'story-implementor',
50
+ 'story-mapper',
51
+ 'story-writer',
52
+ 'uiux-designer',
53
+ 'unit-designer',
54
+ 'unit-test-designer',
55
+ 'unit-test-logic-designer',
56
+ ],
57
+ utility: [
58
+ 'codex-delegator',
59
+ 'skill-creator',
60
+ ],
61
+ } as const;
62
+
63
+ /**
64
+ * 指定された SkillSet に含まれるスキル名の一覧を返す。
65
+ */
66
+ export function getSkillsForSet(skillSet: SkillSet): string[] {
67
+ if (skillSet === 'core') {
68
+ return [...SKILL_CATEGORIES.core];
69
+ }
70
+ return [
71
+ ...SKILL_CATEGORIES.core,
72
+ ...SKILL_CATEGORIES.aidlc,
73
+ ...SKILL_CATEGORIES.utility,
74
+ ];
75
+ }
76
+
77
+ /**
78
+ * スキル名からカテゴリを逆引きする。未知のスキルは null を返す。
79
+ */
80
+ export function getCategoryForSkill(skillName: string): SkillCategory | null {
81
+ for (const [category, skills] of Object.entries(SKILL_CATEGORIES)) {
82
+ if ((skills as readonly string[]).includes(skillName)) {
83
+ return category as SkillCategory;
84
+ }
85
+ }
86
+ return null;
87
+ }
88
+
21
89
  export interface DeployResult {
22
90
  deployedSkills: string[];
23
91
  targetDir: string;
24
92
  version: string;
25
93
  deployedAt: string;
94
+ skillSet: SkillSet;
26
95
  }
27
96
 
28
97
  export interface VersionInfo {
29
98
  version: string;
30
99
  deployedAt: string;
100
+ skillSet?: SkillSet;
31
101
  }
32
102
 
33
103
  interface PkgJson {
@@ -65,14 +135,20 @@ async function copyDirectory(src: string, dest: string): Promise<number> {
65
135
  * @param harnessRoot - harnessパッケージのルートディレクトリ(skills/がある場所)
66
136
  * @param projectRoot - デプロイ先プロジェクトのルートディレクトリ
67
137
  */
68
- export async function deploySkills(harnessRoot: string, projectRoot: string): Promise<DeployResult> {
138
+ export async function deploySkills(
139
+ harnessRoot: string,
140
+ projectRoot: string,
141
+ skillSet: SkillSet = 'all',
142
+ ): Promise<DeployResult> {
69
143
  const skillsSource = join(harnessRoot, SKILLS_SOURCE_DIR);
70
144
  const skillsTarget = join(projectRoot, SKILLS_TARGET_DIR);
71
145
  const version = await getHarnessVersion(harnessRoot);
72
146
  const deployedAt = new Date().toISOString();
73
147
 
74
148
  const skillDirs = await fs.readdir(skillsSource, { withFileTypes: true });
75
- const skills = skillDirs.filter((d) => d.isDirectory()).map((d) => d.name);
149
+ const allSkills = skillDirs.filter((d) => d.isDirectory()).map((d) => d.name);
150
+ const allowedSkills = getSkillsForSet(skillSet);
151
+ const skills = allSkills.filter((s) => allowedSkills.includes(s));
76
152
 
77
153
  await fs.mkdir(skillsTarget, { recursive: true });
78
154
 
@@ -82,14 +158,14 @@ export async function deploySkills(harnessRoot: string, projectRoot: string): Pr
82
158
  await copyDirectory(srcSkillDir, destSkillDir);
83
159
  }
84
160
 
85
- const versionInfo: VersionInfo = { version, deployedAt };
161
+ const versionInfo: VersionInfo = { version, deployedAt, skillSet };
86
162
  await fs.writeFile(
87
163
  join(skillsTarget, HARNESS_VERSION_FILE),
88
164
  JSON.stringify(versionInfo, null, 2) + '\n',
89
165
  'utf-8',
90
166
  );
91
167
 
92
- return { deployedSkills: skills, targetDir: skillsTarget, version, deployedAt };
168
+ return { deployedSkills: skills, targetDir: skillsTarget, version, deployedAt, skillSet };
93
169
  }
94
170
 
95
171
  /**
@@ -176,6 +252,7 @@ export async function deployHookScripts(
176
252
  export async function initHarnessConfig(
177
253
  projectRoot: string,
178
254
  projectName: string,
255
+ phasePreset?: 'full' | 'standard' | 'minimal' | 'custom',
179
256
  ): Promise<{ created: boolean; path: string }> {
180
257
  const configPath = join(projectRoot, HARNESS_CONFIG_FILE);
181
258
  try {
@@ -193,7 +270,7 @@ export async function initHarnessConfig(
193
270
  layers: {},
194
271
  quickMode: {},
195
272
  phaseDependencies: {
196
- preset: 'default',
273
+ preset: phasePreset ?? 'default',
197
274
  override: false,
198
275
  customRules: [],
199
276
  },
@@ -1,3 +1,4 @@
1
+ // @layer domain
1
2
  // harness-api.ts — Shared Kernel public entry for harness-api types
2
3
 
3
4
  export type { HarnessApiResponseContract } from '../harness-api/application/dto/harness-api-response-contract.js';
@@ -1,4 +1,5 @@
1
1
  /**
2
+ * @layer infrastructure
2
3
  * @unit skill-quality
3
4
  * Composition Root - wires all dependencies together
4
5
  */
@@ -2,7 +2,8 @@
2
2
  * @layer infrastructure
3
3
  * @unit skill-quality
4
4
  */
5
- import Ajv from 'ajv';
5
+ import AjvModule from 'ajv';
6
+ const Ajv = (AjvModule as any).default ?? AjvModule;
6
7
  import type { LessonArtifactSchemaPort } from '../../domain/ports/lesson-artifact-schema-port.js';
7
8
  import type { ValidationViolation } from '../../domain/types/validation-violation.js';
8
9
 
@@ -17,8 +18,8 @@ const LESSON_ARTIFACT_SCHEMA = {
17
18
  };
18
19
 
19
20
  export class AjvLessonArtifactSchemaAdapter implements LessonArtifactSchemaPort {
20
- private readonly ajv: Ajv;
21
- private readonly compiledValidator: ReturnType<Ajv['compile']>;
21
+ private readonly ajv: InstanceType<typeof Ajv>;
22
+ private readonly compiledValidator: ReturnType<InstanceType<typeof Ajv>["compile"]>;
22
23
 
23
24
  constructor() {
24
25
  this.ajv = new Ajv();
@@ -28,7 +29,7 @@ export class AjvLessonArtifactSchemaAdapter implements LessonArtifactSchemaPort
28
29
  async validate(json: unknown): Promise<readonly ValidationViolation[]> {
29
30
  const valid = this.compiledValidator(json);
30
31
  if (valid) return [];
31
- return (this.compiledValidator.errors ?? []).map((err) => ({
32
+ return (this.compiledValidator.errors ?? []).map((err: any) => ({
32
33
  ruleId: 'SCHEMA_VIOLATION',
33
34
  message: err.message ?? 'Schema validation error',
34
35
  location: err.instancePath,
@@ -80,10 +80,10 @@ export class MetadataValidator {
80
80
  }>;
81
81
  }): Promise<MetadataValidationResult> {
82
82
  const errors: TraceabilityHarnessError[] = [];
83
- const unitTag = input.tags.find((tag) => tag.type === '@unit');
83
+ const unitTags = input.tags.filter((tag) => tag.type === '@unit');
84
84
  const layerTag = input.tags.find((tag) => tag.type === '@layer');
85
85
 
86
- if (!unitTag) {
86
+ if (unitTags.length === 0) {
87
87
  errors.push(
88
88
  createError({
89
89
  message: '@unit が必要です',
@@ -111,14 +111,16 @@ export class MetadataValidator {
111
111
  );
112
112
  }
113
113
 
114
- if (unitTag && !(await hasUnit(this.unitDefinitionPort, unitTag.value))) {
115
- errors.push(
116
- createError({
117
- message: `@unit "${unitTag.value}" は unit 定義に存在しません`,
118
- suggestion: '登録済みの unit 名を指定してください',
119
- fixExample: '@unit traceability-model',
120
- }),
121
- );
114
+ for (const unitTag of unitTags) {
115
+ if (!(await hasUnit(this.unitDefinitionPort, unitTag.value))) {
116
+ errors.push(
117
+ createError({
118
+ message: `@unit "${unitTag.value}" は unit 定義に存在しません`,
119
+ suggestion: '登録済みの unit 名を指定してください',
120
+ fixExample: '@unit traceability-model',
121
+ }),
122
+ );
123
+ }
122
124
  }
123
125
 
124
126
  if (errors.length > 0) {
@@ -17,6 +17,20 @@ export interface ParsedMetadataTag {
17
17
  readonly lineNumber: number;
18
18
  }
19
19
 
20
+ function expandUnitTags(rawValue: string, lineNumber: number): ParsedMetadataTag[] {
21
+ if (!rawValue.includes(',')) {
22
+ return [{ type: '@unit', value: rawValue.trim(), lineNumber }];
23
+ }
24
+ return rawValue
25
+ .split(',')
26
+ .map((v) => ({
27
+ type: '@unit' as const,
28
+ value: v.trim(),
29
+ lineNumber,
30
+ }))
31
+ .filter((t) => t.value.length > 0);
32
+ }
33
+
20
34
  /**
21
35
  * 実装ファイル向けに @unit / @layer / @story-id を抽出する
22
36
  */
@@ -30,7 +44,7 @@ export function parseImplementationTags(content: string): readonly ParsedMetadat
30
44
 
31
45
  const unitMatch = UNIT_TAG_PATTERN.exec(line);
32
46
  if (unitMatch) {
33
- tags.push({ type: '@unit', value: unitMatch[1].trim(), lineNumber });
47
+ tags.push(...expandUnitTags(unitMatch[1], lineNumber));
34
48
  }
35
49
 
36
50
  const layerMatch = LAYER_TAG_PATTERN.exec(line);
@@ -80,7 +94,7 @@ export function parseAllTags(content: string): readonly ParsedMetadataTag[] {
80
94
 
81
95
  const unitMatch = UNIT_TAG_PATTERN.exec(line);
82
96
  if (unitMatch) {
83
- tags.push({ type: '@unit', value: unitMatch[1].trim(), lineNumber });
97
+ tags.push(...expandUnitTags(unitMatch[1], lineNumber));
84
98
  }
85
99
 
86
100
  const layerMatch = LAYER_TAG_PATTERN.exec(line);
@@ -9,6 +9,19 @@ review: opus
9
9
 
10
10
  下位フェーズでの発見・変更・人間からの指示を、正しいレイヤーの設計文書にフィードバックし、影響範囲を整合的に更新するスキル。
11
11
 
12
+ ## storyReflection ゲート通過の標準手段
13
+
14
+ `phaseDependencies.storyReflection`(ADR-013)は、`docs/inception/{unit}/{storyId}/` 配下の US/issue 設計が `docs/product/construction/{unit}/` の累積設計文書に反映されていない場合、`src/{unit}/*` および `scripts/harness/{unit}/*` への Write/Edit(Bash 迂回経由の書き込みも含む)を pre-tool-use hook でブロックする。
15
+
16
+ **cascade-updater はこの storyReflection ゲートを通過する標準手段である。**
17
+
18
+ - `full` / `standard` プリセットでは、inception の新規 US/issue を作成した後、実装着手前に cascade-updater を実行して product 文書に `@story-id {storyId}` を追記する
19
+ - cascade-updater を実行せずに実装へ進もうとすると `[L2-STORY-REFLECTION]` ブロックが発生する(エラー中で本スキルの実行が案内される)
20
+ - `minimal` プリセットでは storyReflection が無効化されるためゲート連動しないが、cascade-updater による設計整合性の維持は推奨される
21
+ - Quick Mode (`relaxedGates: ["phase-gate"]`) 時は storyReflection も緩和されるため、cascade-updater 実行の必須性は緩まる(ただし品質維持のため実行は推奨)
22
+
23
+ 詳細は ADR-013 および `docs/guide/configuration.md` の storyReflection セクションを参照。
24
+
12
25
  ## 前提条件チェック
13
26
 
14
27
  ### 必須インプット
@@ -21,10 +34,10 @@ review: opus
21
34
 
22
35
  **このスキルは3フェーズで実行する。**
23
36
  - **Phase 1(計画)**: Opus がスコープ・方針・不明点を整理し、人間の承認を得る
24
- - **Phase 2(実行)**: Sonnet 4.6 に委任して成果物を生成する(`scripts/delegate-sonnet.sh` 経由)
37
+ - **Phase 2(実行)**: プロジェクトのモデルルーティング設定に従い、実行モデルに委譲して成果物を生成する
25
38
  - **Phase 3(レビュー)**: Opus が成果物を検証し、問題があれば直接修正する
26
39
 
27
- **Phase 1/2/3を同時に実行してはならない。モデルルーティングの詳細は `docs/principles/model-routing.md` を参照。**
40
+ **Phase 1/2/3を同時に実行してはならない。**
28
41
 
29
42
  ---
30
43
 
@@ -110,7 +123,7 @@ review: opus
110
123
 
111
124
  ### レビュー手順
112
125
  1. Sonnetが出力したファイルを読み込む
113
- 2. `docs/principles/model-routing.md` のレビュー観点 R1〜R7 に沿って検証する
126
+ 2. プロジェクトのレビュー基準に沿って検証する
114
127
  3. **スキル固有レビュー観点**を検証する
115
128
  4. 判定結果を出力する
116
129
 
@@ -12,7 +12,7 @@ review: opus
12
12
 
13
13
  ## 出力物
14
14
 
15
- `docs/product/construction/codebase-map.md` — Unit・レイヤー分布・依存関係の可視化文書
15
+ `{constructionDir}/codebase-map.md` — Unit・レイヤー分布・依存関係の可視化文書(パスは `phasegate.config.json` で設定)
16
16
 
17
17
  ---
18
18
 
@@ -31,7 +31,7 @@ review: opus
31
31
  # Codebase Mapper 計画
32
32
 
33
33
  ## スキャン対象
34
- - ソースコード: scripts/harness/
34
+ - ソースコード: {phasegate.config.json の sourceDir}
35
35
  - 除外: __tests__/, node_modules/
36
36
 
37
37
  ## 出力粒度
@@ -41,7 +41,7 @@ review: opus
41
41
  - [ ] 循環依存検出
42
42
 
43
43
  ## 出力先
44
- docs/product/construction/codebase-map.md
44
+ {constructionDir}/codebase-map.md
45
45
 
46
46
  ## QA
47
47
  [Question] Q1: ...
@@ -58,7 +58,7 @@ docs/product/construction/codebase-map.md
58
58
 
59
59
  ### Step 1: @unit/@layer アノテーションの収集
60
60
 
61
- Glob + Read を使い、`scripts/harness/**/*.ts`(テスト・fixture除外)から:
61
+ Glob + Read を使い、`{sourceDir}/**/*.ts`(テスト・fixture除外)から:
62
62
 
63
63
  ```
64
64
  @unit {unit-name}
@@ -79,7 +79,7 @@ Unit間依存グラフを深さ優先探索でサイクル検出する。
79
79
 
80
80
  ### Step 4: マップ文書の生成
81
81
 
82
- `docs/product/construction/codebase-map.md` に出力。
82
+ `{constructionDir}/codebase-map.md` に出力。
83
83
 
84
84
  ---
85
85
 
@@ -89,7 +89,7 @@ Unit間依存グラフを深さ優先探索でサイクル検出する。
89
89
  # Codebase Map
90
90
 
91
91
  生成日時: {date}
92
- スキャン対象: scripts/harness/
92
+ スキャン対象: {sourceDir}
93
93
  総ファイル数: N(テスト除く)
94
94
 
95
95
  ---
@@ -137,8 +137,8 @@ validator-system
137
137
  ## アノテーション欠落の対処
138
138
 
139
139
  マップ生成後、`@unit`/`@layer` が欠落しているファイルが検出された場合:
140
- 1. `L1-001`(require-unit-comment)/ `L1-002`(require-layer-comment)の違反として報告
141
- 2. `quick-implementor` でアノテーションを追加
140
+ 1. Lintルール違反(require-unit-comment / require-layer-comment)として報告
141
+ 2. 欠落ファイル一覧を出力し、アノテーション追加を促す
142
142
 
143
143
  ---
144
144
 
@@ -146,6 +146,6 @@ validator-system
146
146
 
147
147
  | スキル/コマンド | 用途 |
148
148
  |--------------|------|
149
- | `pnpm run lint` | L1 archgateルールの全体スキャン |
149
+ | `npx phasegate lint` | L1 archgateルールの全体スキャン |
150
150
  | `consistency-checker` | マップ生成後の設計文書整合性確認 |
151
151
  | `doc-freshness-checker` | マップと設計文書の鮮度を合わせて確認 |
@@ -176,55 +176,18 @@ git diff HEAD~1
176
176
  git diff --name-only HEAD~1
177
177
  ```
178
178
 
179
- #### Step B.1: Tier 1 — 機械的チェック(スクリプト/grep)
179
+ #### Step B.1: Tier 1 — 機械的チェック
180
180
 
181
- Claude Codeがgrep・スクリプトで自動検証する。人間の判断不要な項目を高速に処理する。
182
-
183
- | ID | 次元 | 検証方法 | 重大度 |
184
- |----|------|---------|--------|
185
- | C1 | スコープ遵守 | `git diff --name-only` と指示ファイルリストの差分比較 | BLOCK |
186
- | C2 | 既存破壊なし | `pnpm test` 実行(既存テスト全パス確認) | BLOCK |
187
- | C3 | 命名一貫性 | grep: 日本語テスト名、`actual`変数、target/context構造 | BLOCK |
188
- | IM3 | レイヤー違反なし | grep: domain層ファイルからinfrastructure層へのimport検出 | BLOCK |
189
- | IM4 | 型安全性 | grep: 正当理由なき `any` / `as` の使用検出 | WARN |
190
- | TE1 | ケースID突合 | 設計文書のケースIDリスト vs テストファイル内のID(diff抽出) | BLOCK |
191
- | DP3 | 配置ルール準拠 | `git diff --name-only` とfolder_management_rules.mdのパス照合 | BLOCK |
192
-
193
- **Tier 1 判定**:
194
- ```
195
- BLOCK が1つでもFAIL → REJECT(Tier 2スキップ)→ Step Cへ
196
- 全PASS or WARNのみ → Tier 2へ進む
197
- ```
181
+ Claude Codeがgrep・スクリプトで自動検証する。共通次元(C1-C3: スコープ遵守・既存破壊なし・命名一貫性)+ タスクタイプ別次元(IM3/IM4, TE1/TE4, DP3)を適用。BLOCKが1つでもFAILならTier 2スキップで即REJECT。次元ID・検証方法の詳細は [references/review-dimensions.md](references/review-dimensions.md) の Tier 1 セクションを参照。
198
182
 
199
183
  #### Step B.2: Tier 2 — Sonnetによる設計突合チェック
200
184
 
201
- Agent tool(subagent_type未指定)でSonnetに以下の**最小限の入力**を渡してレビューさせる。
202
-
203
- **Tier 2への入力(これだけ)**:
185
+ Agent tool経由でSonnetに以下の**最小限の入力**を渡す:
204
186
  1. `git diff HEAD~1` の出力(変更差分のみ)
205
187
  2. Tier 1の結果サマリ(PASS/WARN一覧)
206
188
  3. 設計文書の**該当箇所の抜粋**(全文ではない)
207
189
 
208
- **Tier 2 レビュー次元**:
209
-
210
- | ID | 次元 | 検証内容 | 重大度 |
211
- |----|------|---------|--------|
212
- | C4 | 完了度 | 指示項目の欠落がないか | BLOCK |
213
- | DD1 | 計画との整合 | diffの内容が設計文書の方針と矛盾しないか | BLOCK |
214
- | DD2 | アーキテクチャ原則 | ヘキサゴナル・DDD原則に沿っているか | BLOCK |
215
- | DD4/IM-Y | YAGNI | 指示範囲外の「改善」「リファクタ」「将来への備え」がないか | BLOCK |
216
- | IM5 | DRY | 新規コードに既存コードとの重複がないか | WARN |
217
- | TE2 | 期待値突合 | Assertionの期待値が設計文書の期待結果と一致するか | BLOCK |
218
- | DD3 | トレーサビリティ | 各要素がストーリー/Unit要件に紐づいているか | WARN |
219
-
220
- 詳細は [references/review-dimensions.md](references/review-dimensions.md) を参照。
221
-
222
- **Tier 2 判定**:
223
- ```
224
- BLOCK が1つでもFAIL → REJECT → Step Cへ
225
- WARN のみ FAIL → CONDITIONAL_PASS(WARNをまとめて修正)
226
- 全PASS → PASS(完了)
227
- ```
190
+ 設計との整合(DD1/DD2)、YAGNI(DD4/IM-Y)、完了度(C4)、期待値突合(TE2)等を検証。BLOCKが1つでもFAILならREJECT、WARNのみならCONDITIONAL_PASS。次元ID・検証内容・判定ロジックの詳細は [references/review-dimensions.md](references/review-dimensions.md) の Tier 2 セクションを参照。
228
191
 
229
192
  ### Step C: 修正ループ(Fix Loop)
230
193
 
@@ -238,21 +201,7 @@ WARN のみ FAIL → CONDITIONAL_PASS(WARNをまとめて修正)
238
201
 
239
202
  #### 修正指示の構造(codex再委任時)
240
203
 
241
- ```
242
- ## 修正指示(Round N)
243
-
244
- ### 前回レビュー結果
245
- - FAIL次元: {ID}: {名前}
246
-
247
- ### 修正箇所
248
- #### [{次元ID}] {ファイルパス}:{行番号}
249
- - 現状: {問題の具体的記述}
250
- - 期待: {あるべき状態}
251
- - 修正方法: {具体的手順}
252
-
253
- ### 制約
254
- - 修正対象以外のコードに手を加えないこと
255
- ```
204
+ 修正指示テンプレート(Round N形式: FAIL次元・修正箇所・制約)は [references/prompt-patterns.md](references/prompt-patterns.md) の「修正指示テンプレート」セクションを参照。
256
205
 
257
206
  #### エスカレーション条件
258
207