Output Contracts と Quality Gates の実装 + 未使用コード検出ポリシー厳格化

Output Contracts を report 配下のネスト構造に変更し、Quality Gates をスキーマ・パーサーに追加。
未使用コード検出ポリシーから公開API例外ルールを削除し、AIが未使用コードを許容する抜け道を塞ぐ。
This commit is contained in:
nrslib 2026-02-07 22:26:35 +09:00
parent 487b8bf235
commit 7ae4a78831
42 changed files with 492 additions and 340 deletions

View File

@ -42,8 +42,9 @@ movements:
next: ABORT next: ABORT
instruction: plan instruction: plan
output_contracts: output_contracts:
- name: 00-plan.md report:
format: plan - name: 00-plan.md
format: plan
- name: implement - name: implement
edit: true edit: true
persona: coder persona: coder
@ -76,8 +77,9 @@ movements:
interactive_only: true interactive_only: true
instruction: implement instruction: implement
output_contracts: output_contracts:
- Scope: 02-coder-scope.md report:
- Decisions: 03-coder-decisions.md - Scope: 02-coder-scope.md
- Decisions: 03-coder-decisions.md
- name: reviewers - name: reviewers
parallel: parallel:
- name: ai_review - name: ai_review
@ -97,8 +99,9 @@ movements:
- condition: AI-specific issues found - condition: AI-specific issues found
instruction: ai-review instruction: ai-review
output_contracts: output_contracts:
- name: 04-ai-review.md report:
format: ai-review - name: 04-ai-review.md
format: ai-review
- name: arch-review - name: arch-review
edit: false edit: false
persona: architecture-reviewer persona: architecture-reviewer
@ -115,8 +118,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-arch instruction: review-arch
output_contracts: output_contracts:
- name: 05-architect-review.md report:
format: architecture-review - name: 05-architect-review.md
format: architecture-review
rules: rules:
- condition: all("No AI-specific issues", "approved") - condition: all("No AI-specific issues", "approved")
next: COMPLETE next: COMPLETE

View File

@ -40,8 +40,9 @@ movements:
next: ABORT next: ABORT
instruction: plan instruction: plan
output_contracts: output_contracts:
- name: 00-plan.md report:
format: plan - name: 00-plan.md
format: plan
- name: implement - name: implement
edit: true edit: true
persona: coder persona: coder
@ -73,8 +74,9 @@ movements:
interactive_only: true interactive_only: true
instruction: implement instruction: implement
output_contracts: output_contracts:
- Scope: 02-coder-scope.md report:
- Decisions: 03-coder-decisions.md - Scope: 02-coder-scope.md
- Decisions: 03-coder-decisions.md
- name: reviewers - name: reviewers
parallel: parallel:
- name: ai_review - name: ai_review
@ -94,8 +96,9 @@ movements:
- condition: AI-specific issues found - condition: AI-specific issues found
instruction: ai-review instruction: ai-review
output_contracts: output_contracts:
- name: 04-ai-review.md report:
format: ai-review - name: 04-ai-review.md
format: ai-review
- name: arch-review - name: arch-review
edit: false edit: false
persona: architecture-reviewer persona: architecture-reviewer
@ -112,8 +115,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-arch instruction: review-arch
output_contracts: output_contracts:
- name: 05-architect-review.md report:
format: architecture-review - name: 05-architect-review.md
format: architecture-review
rules: rules:
- condition: all("No AI-specific issues", "approved") - condition: all("No AI-specific issues", "approved")
next: COMPLETE next: COMPLETE

View File

@ -84,8 +84,9 @@ movements:
- {Question 2} - {Question 2}
instruction: plan instruction: plan
output_contracts: output_contracts:
- name: 00-plan.md report:
format: plan - name: 00-plan.md
format: plan
- name: architect - name: architect
edit: false edit: false
persona: architect-planner persona: architect-planner
@ -104,8 +105,9 @@ movements:
next: ABORT next: ABORT
instruction: architect instruction: architect
output_contracts: output_contracts:
- name: 01-architecture.md report:
format: architecture-design - name: 01-architecture.md
format: architecture-design
- name: implement - name: implement
edit: true edit: true
persona: coder persona: coder
@ -140,8 +142,9 @@ movements:
interactive_only: true interactive_only: true
instruction: implement instruction: implement
output_contracts: output_contracts:
- Scope: 02-coder-scope.md report:
- Decisions: 03-coder-decisions.md - Scope: 02-coder-scope.md
- Decisions: 03-coder-decisions.md
- name: ai_review - name: ai_review
edit: false edit: false
persona: ai-antipattern-reviewer persona: ai-antipattern-reviewer
@ -161,8 +164,9 @@ movements:
next: ai_fix next: ai_fix
instruction: ai-review instruction: ai-review
output_contracts: output_contracts:
- name: 04-ai-review.md report:
format: ai-review - name: 04-ai-review.md
format: ai-review
- name: ai_fix - name: ai_fix
edit: true edit: true
persona: coder persona: coder
@ -226,8 +230,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-arch instruction: review-arch
output_contracts: output_contracts:
- name: 05-architect-review.md report:
format: architecture-review - name: 05-architect-review.md
format: architecture-review
- name: qa-review - name: qa-review
edit: false edit: false
persona: qa-reviewer persona: qa-reviewer
@ -245,8 +250,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-qa instruction: review-qa
output_contracts: output_contracts:
- name: 06-qa-review.md report:
format: qa-review - name: 06-qa-review.md
format: qa-review
rules: rules:
- condition: all("approved") - condition: all("approved")
next: supervise next: supervise
@ -296,8 +302,9 @@ movements:
next: plan next: plan
instruction: supervise instruction: supervise
output_contracts: output_contracts:
- Validation: 07-supervisor-validation.md report:
- Summary: summary.md - Validation: 07-supervisor-validation.md
- Summary: summary.md
policies: policies:
coding: ../policies/coding.md coding: ../policies/coding.md
review: ../policies/review.md review: ../policies/review.md

View File

@ -79,8 +79,9 @@ movements:
- {Question 2} - {Question 2}
instruction: plan instruction: plan
output_contracts: output_contracts:
- name: 00-plan.md report:
format: plan - name: 00-plan.md
format: plan
- name: architect - name: architect
edit: false edit: false
persona: architect-planner persona: architect-planner
@ -99,8 +100,9 @@ movements:
next: ABORT next: ABORT
instruction: architect instruction: architect
output_contracts: output_contracts:
- name: 01-architecture.md report:
format: architecture-design - name: 01-architecture.md
format: architecture-design
- name: implement - name: implement
edit: true edit: true
persona: coder persona: coder
@ -134,8 +136,9 @@ movements:
interactive_only: true interactive_only: true
instruction: implement instruction: implement
output_contracts: output_contracts:
- Scope: 02-coder-scope.md report:
- Decisions: 03-coder-decisions.md - Scope: 02-coder-scope.md
- Decisions: 03-coder-decisions.md
- name: ai_review - name: ai_review
edit: false edit: false
persona: ai-antipattern-reviewer persona: ai-antipattern-reviewer
@ -155,8 +158,9 @@ movements:
next: ai_fix next: ai_fix
instruction: ai-review instruction: ai-review
output_contracts: output_contracts:
- name: 04-ai-review.md report:
format: ai-review - name: 04-ai-review.md
format: ai-review
- name: ai_fix - name: ai_fix
edit: true edit: true
persona: coder persona: coder
@ -219,8 +223,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-arch instruction: review-arch
output_contracts: output_contracts:
- name: 05-architect-review.md report:
format: architecture-review - name: 05-architect-review.md
format: architecture-review
- name: qa-review - name: qa-review
edit: false edit: false
persona: qa-reviewer persona: qa-reviewer
@ -238,8 +243,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-qa instruction: review-qa
output_contracts: output_contracts:
- name: 06-qa-review.md report:
format: qa-review - name: 06-qa-review.md
format: qa-review
rules: rules:
- condition: all("approved") - condition: all("approved")
next: supervise next: supervise
@ -288,8 +294,9 @@ movements:
next: plan next: plan
instruction: supervise instruction: supervise
output_contracts: output_contracts:
- Validation: 07-supervisor-validation.md report:
- Summary: summary.md - Validation: 07-supervisor-validation.md
- Summary: summary.md
report_formats: report_formats:
plan: ../output-contracts/plan.md plan: ../output-contracts/plan.md
architecture-design: ../output-contracts/architecture-design.md architecture-design: ../output-contracts/architecture-design.md

View File

@ -61,8 +61,9 @@ movements:
- condition: Requirements are unclear and planning cannot proceed - condition: Requirements are unclear and planning cannot proceed
next: ABORT next: ABORT
output_contracts: output_contracts:
- name: 00-plan.md report:
format: plan - name: 00-plan.md
format: plan
- name: implement - name: implement
edit: true edit: true
persona: coder persona: coder
@ -99,8 +100,9 @@ movements:
requires_user_input: true requires_user_input: true
interactive_only: true interactive_only: true
output_contracts: output_contracts:
- Scope: 01-coder-scope.md report:
- Decisions: 02-coder-decisions.md - Scope: 01-coder-scope.md
- Decisions: 02-coder-decisions.md
- name: ai_review - name: ai_review
edit: false edit: false
persona: ai-antipattern-reviewer persona: ai-antipattern-reviewer
@ -120,8 +122,9 @@ movements:
- condition: AI-specific issues detected - condition: AI-specific issues detected
next: ai_fix next: ai_fix
output_contracts: output_contracts:
- name: 03-ai-review.md report:
format: ai-review - name: 03-ai-review.md
format: ai-review
- name: ai_fix - name: ai_fix
edit: true edit: true
persona: coder persona: coder
@ -187,8 +190,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-cqrs-es instruction: review-cqrs-es
output_contracts: output_contracts:
- name: 04-cqrs-es-review.md report:
format: cqrs-es-review - name: 04-cqrs-es-review.md
format: cqrs-es-review
- name: frontend-review - name: frontend-review
edit: false edit: false
persona: frontend-reviewer persona: frontend-reviewer
@ -205,8 +209,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-frontend instruction: review-frontend
output_contracts: output_contracts:
- name: 05-frontend-review.md report:
format: frontend-review - name: 05-frontend-review.md
format: frontend-review
- name: security-review - name: security-review
edit: false edit: false
persona: security-reviewer persona: security-reviewer
@ -223,8 +228,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-security instruction: review-security
output_contracts: output_contracts:
- name: 06-security-review.md report:
format: security-review - name: 06-security-review.md
format: security-review
- name: qa-review - name: qa-review
edit: false edit: false
persona: qa-reviewer persona: qa-reviewer
@ -242,8 +248,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-qa instruction: review-qa
output_contracts: output_contracts:
- name: 07-qa-review.md report:
format: qa-review - name: 07-qa-review.md
format: qa-review
rules: rules:
- condition: all("approved") - condition: all("approved")
next: supervise next: supervise
@ -295,8 +302,9 @@ movements:
- condition: Issues detected during final review - condition: Issues detected during final review
next: fix_supervisor next: fix_supervisor
output_contracts: output_contracts:
- Validation: 08-supervisor-validation.md report:
- Summary: summary.md - Validation: 08-supervisor-validation.md
- Summary: summary.md
- name: fix_supervisor - name: fix_supervisor
edit: true edit: true
persona: coder persona: coder

View File

@ -55,8 +55,9 @@ movements:
- condition: Requirements are unclear and planning cannot proceed - condition: Requirements are unclear and planning cannot proceed
next: ABORT next: ABORT
output_contracts: output_contracts:
- name: 00-plan.md report:
format: plan - name: 00-plan.md
format: plan
- name: implement - name: implement
edit: true edit: true
persona: coder persona: coder
@ -92,8 +93,9 @@ movements:
requires_user_input: true requires_user_input: true
interactive_only: true interactive_only: true
output_contracts: output_contracts:
- Scope: 01-coder-scope.md report:
- Decisions: 02-coder-decisions.md - Scope: 01-coder-scope.md
- Decisions: 02-coder-decisions.md
- name: ai_review - name: ai_review
edit: false edit: false
persona: ai-antipattern-reviewer persona: ai-antipattern-reviewer
@ -113,8 +115,9 @@ movements:
- condition: AI-specific issues detected - condition: AI-specific issues detected
next: ai_fix next: ai_fix
output_contracts: output_contracts:
- name: 03-ai-review.md report:
format: ai-review - name: 03-ai-review.md
format: ai-review
- name: ai_fix - name: ai_fix
edit: true edit: true
persona: coder persona: coder
@ -179,8 +182,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-cqrs-es instruction: review-cqrs-es
output_contracts: output_contracts:
- name: 04-cqrs-es-review.md report:
format: cqrs-es-review - name: 04-cqrs-es-review.md
format: cqrs-es-review
- name: frontend-review - name: frontend-review
edit: false edit: false
persona: frontend-reviewer persona: frontend-reviewer
@ -197,8 +201,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-frontend instruction: review-frontend
output_contracts: output_contracts:
- name: 05-frontend-review.md report:
format: frontend-review - name: 05-frontend-review.md
format: frontend-review
- name: security-review - name: security-review
edit: false edit: false
persona: security-reviewer persona: security-reviewer
@ -215,8 +220,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-security instruction: review-security
output_contracts: output_contracts:
- name: 06-security-review.md report:
format: security-review - name: 06-security-review.md
format: security-review
- name: qa-review - name: qa-review
edit: false edit: false
persona: qa-reviewer persona: qa-reviewer
@ -234,8 +240,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-qa instruction: review-qa
output_contracts: output_contracts:
- name: 07-qa-review.md report:
format: qa-review - name: 07-qa-review.md
format: qa-review
rules: rules:
- condition: all("approved") - condition: all("approved")
next: supervise next: supervise
@ -286,8 +293,9 @@ movements:
- condition: Issues detected during final review - condition: Issues detected during final review
next: fix_supervisor next: fix_supervisor
output_contracts: output_contracts:
- Validation: 08-supervisor-validation.md report:
- Summary: summary.md - Validation: 08-supervisor-validation.md
- Summary: summary.md
- name: fix_supervisor - name: fix_supervisor
edit: true edit: true
persona: coder persona: coder

View File

@ -59,8 +59,9 @@ movements:
- condition: Requirements are unclear and planning cannot proceed - condition: Requirements are unclear and planning cannot proceed
next: ABORT next: ABORT
output_contracts: output_contracts:
- name: 00-plan.md report:
format: plan - name: 00-plan.md
format: plan
- name: implement - name: implement
edit: true edit: true
persona: coder persona: coder
@ -96,8 +97,9 @@ movements:
requires_user_input: true requires_user_input: true
interactive_only: true interactive_only: true
output_contracts: output_contracts:
- Scope: 01-coder-scope.md report:
- Decisions: 02-coder-decisions.md - Scope: 01-coder-scope.md
- Decisions: 02-coder-decisions.md
- name: ai_review - name: ai_review
edit: false edit: false
persona: ai-antipattern-reviewer persona: ai-antipattern-reviewer
@ -117,8 +119,9 @@ movements:
- condition: AI-specific issues detected - condition: AI-specific issues detected
next: ai_fix next: ai_fix
output_contracts: output_contracts:
- name: 03-ai-review.md report:
format: ai-review - name: 03-ai-review.md
format: ai-review
- name: ai_fix - name: ai_fix
edit: true edit: true
persona: coder persona: coder
@ -183,8 +186,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-arch instruction: review-arch
output_contracts: output_contracts:
- name: 04-architect-review.md report:
format: architecture-review - name: 04-architect-review.md
format: architecture-review
- name: frontend-review - name: frontend-review
edit: false edit: false
persona: frontend-reviewer persona: frontend-reviewer
@ -201,8 +205,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-frontend instruction: review-frontend
output_contracts: output_contracts:
- name: 05-frontend-review.md report:
format: frontend-review - name: 05-frontend-review.md
format: frontend-review
- name: security-review - name: security-review
edit: false edit: false
persona: security-reviewer persona: security-reviewer
@ -219,8 +224,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-security instruction: review-security
output_contracts: output_contracts:
- name: 06-security-review.md report:
format: security-review - name: 06-security-review.md
format: security-review
- name: qa-review - name: qa-review
edit: false edit: false
persona: qa-reviewer persona: qa-reviewer
@ -238,8 +244,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-qa instruction: review-qa
output_contracts: output_contracts:
- name: 07-qa-review.md report:
format: qa-review - name: 07-qa-review.md
format: qa-review
rules: rules:
- condition: all("approved") - condition: all("approved")
next: supervise next: supervise
@ -290,8 +297,9 @@ movements:
- condition: Issues detected during final review - condition: Issues detected during final review
next: fix_supervisor next: fix_supervisor
output_contracts: output_contracts:
- Validation: 08-supervisor-validation.md report:
- Summary: summary.md - Validation: 08-supervisor-validation.md
- Summary: summary.md
- name: fix_supervisor - name: fix_supervisor
edit: true edit: true
persona: coder persona: coder

View File

@ -53,8 +53,9 @@ movements:
- condition: Requirements are unclear and planning cannot proceed - condition: Requirements are unclear and planning cannot proceed
next: ABORT next: ABORT
output_contracts: output_contracts:
- name: 00-plan.md report:
format: plan - name: 00-plan.md
format: plan
- name: implement - name: implement
edit: true edit: true
persona: coder persona: coder
@ -89,8 +90,9 @@ movements:
requires_user_input: true requires_user_input: true
interactive_only: true interactive_only: true
output_contracts: output_contracts:
- Scope: 01-coder-scope.md report:
- Decisions: 02-coder-decisions.md - Scope: 01-coder-scope.md
- Decisions: 02-coder-decisions.md
- name: ai_review - name: ai_review
edit: false edit: false
persona: ai-antipattern-reviewer persona: ai-antipattern-reviewer
@ -110,8 +112,9 @@ movements:
- condition: AI-specific issues detected - condition: AI-specific issues detected
next: ai_fix next: ai_fix
output_contracts: output_contracts:
- name: 03-ai-review.md report:
format: ai-review - name: 03-ai-review.md
format: ai-review
- name: ai_fix - name: ai_fix
edit: true edit: true
persona: coder persona: coder
@ -175,8 +178,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-arch instruction: review-arch
output_contracts: output_contracts:
- name: 04-architect-review.md report:
format: architecture-review - name: 04-architect-review.md
format: architecture-review
- name: frontend-review - name: frontend-review
edit: false edit: false
persona: frontend-reviewer persona: frontend-reviewer
@ -193,8 +197,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-frontend instruction: review-frontend
output_contracts: output_contracts:
- name: 05-frontend-review.md report:
format: frontend-review - name: 05-frontend-review.md
format: frontend-review
- name: security-review - name: security-review
edit: false edit: false
persona: security-reviewer persona: security-reviewer
@ -211,8 +216,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-security instruction: review-security
output_contracts: output_contracts:
- name: 06-security-review.md report:
format: security-review - name: 06-security-review.md
format: security-review
- name: qa-review - name: qa-review
edit: false edit: false
persona: qa-reviewer persona: qa-reviewer
@ -230,8 +236,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-qa instruction: review-qa
output_contracts: output_contracts:
- name: 07-qa-review.md report:
format: qa-review - name: 07-qa-review.md
format: qa-review
rules: rules:
- condition: all("approved") - condition: all("approved")
next: supervise next: supervise
@ -281,8 +288,9 @@ movements:
- condition: Issues detected during final review - condition: Issues detected during final review
next: fix_supervisor next: fix_supervisor
output_contracts: output_contracts:
- Validation: 08-supervisor-validation.md report:
- Summary: summary.md - Validation: 08-supervisor-validation.md
- Summary: summary.md
- name: fix_supervisor - name: fix_supervisor
edit: true edit: true
persona: coder persona: coder

View File

@ -46,8 +46,9 @@ movements:
requires_user_input: true requires_user_input: true
interactive_only: true interactive_only: true
output_contracts: output_contracts:
- Scope: 01-coder-scope.md report:
- Decisions: 02-coder-decisions.md - Scope: 01-coder-scope.md
- Decisions: 02-coder-decisions.md
- name: reviewers - name: reviewers
parallel: parallel:
- name: ai_review - name: ai_review
@ -67,8 +68,9 @@ movements:
- condition: No AI-specific issues - condition: No AI-specific issues
- condition: AI-specific issues found - condition: AI-specific issues found
output_contracts: output_contracts:
- name: 03-ai-review.md report:
format: ai-review - name: 03-ai-review.md
format: ai-review
- name: supervise - name: supervise
edit: false edit: false
persona: supervisor persona: supervisor
@ -85,8 +87,9 @@ movements:
- condition: All checks passed - condition: All checks passed
- condition: Requirements unmet, tests failing - condition: Requirements unmet, tests failing
output_contracts: output_contracts:
- Validation: 05-supervisor-validation.md report:
- Summary: summary.md - Validation: 05-supervisor-validation.md
- Summary: summary.md
rules: rules:
- condition: all("No AI-specific issues", "All checks passed") - condition: all("No AI-specific issues", "All checks passed")
next: COMPLETE next: COMPLETE

View File

@ -45,8 +45,9 @@ movements:
requires_user_input: true requires_user_input: true
interactive_only: true interactive_only: true
output_contracts: output_contracts:
- Scope: 01-coder-scope.md report:
- Decisions: 02-coder-decisions.md - Scope: 01-coder-scope.md
- Decisions: 02-coder-decisions.md
- name: reviewers - name: reviewers
parallel: parallel:
- name: ai_review - name: ai_review
@ -66,8 +67,9 @@ movements:
- condition: No AI-specific issues - condition: No AI-specific issues
- condition: AI-specific issues found - condition: AI-specific issues found
output_contracts: output_contracts:
- name: 03-ai-review.md report:
format: ai-review - name: 03-ai-review.md
format: ai-review
- name: supervise - name: supervise
edit: false edit: false
persona: supervisor persona: supervisor
@ -84,8 +86,9 @@ movements:
- condition: All checks passed - condition: All checks passed
- condition: Requirements unmet, tests failing - condition: Requirements unmet, tests failing
output_contracts: output_contracts:
- Validation: 05-supervisor-validation.md report:
- Summary: summary.md - Validation: 05-supervisor-validation.md
- Summary: summary.md
rules: rules:
- condition: all("No AI-specific issues", "All checks passed") - condition: all("No AI-specific issues", "All checks passed")
next: COMPLETE next: COMPLETE

View File

@ -37,7 +37,8 @@ movements:
instruction_template: | instruction_template: |
Do the task. Do the task.
output_contracts: output_contracts:
- Summary: summary.md report:
- Summary: summary.md
policies: policies:
coding: ../policies/coding.md coding: ../policies/coding.md
testing: ../policies/testing.md testing: ../policies/testing.md

View File

@ -36,4 +36,5 @@ movements:
instruction_template: | instruction_template: |
Do the task. Do the task.
output_contracts: output_contracts:
- Summary: summary.md report:
- Summary: summary.md

View File

@ -46,8 +46,9 @@ movements:
requires_user_input: true requires_user_input: true
interactive_only: true interactive_only: true
output_contracts: output_contracts:
- Scope: 01-coder-scope.md report:
- Decisions: 02-coder-decisions.md - Scope: 01-coder-scope.md
- Decisions: 02-coder-decisions.md
- name: reviewers - name: reviewers
parallel: parallel:
- name: ai_review - name: ai_review
@ -67,8 +68,9 @@ movements:
- condition: No AI-specific issues - condition: No AI-specific issues
- condition: AI-specific issues found - condition: AI-specific issues found
output_contracts: output_contracts:
- name: 03-ai-review.md report:
format: ai-review - name: 03-ai-review.md
format: ai-review
- name: supervise - name: supervise
edit: false edit: false
persona: supervisor persona: supervisor
@ -85,8 +87,9 @@ movements:
- condition: All checks passed - condition: All checks passed
- condition: Requirements unmet, tests failing - condition: Requirements unmet, tests failing
output_contracts: output_contracts:
- Validation: 05-supervisor-validation.md report:
- Summary: summary.md - Validation: 05-supervisor-validation.md
- Summary: summary.md
rules: rules:
- condition: all("No AI-specific issues", "All checks passed") - condition: all("No AI-specific issues", "All checks passed")
next: COMPLETE next: COMPLETE

View File

@ -45,8 +45,9 @@ movements:
requires_user_input: true requires_user_input: true
interactive_only: true interactive_only: true
output_contracts: output_contracts:
- Scope: 01-coder-scope.md report:
- Decisions: 02-coder-decisions.md - Scope: 01-coder-scope.md
- Decisions: 02-coder-decisions.md
- name: reviewers - name: reviewers
parallel: parallel:
- name: ai_review - name: ai_review
@ -66,8 +67,9 @@ movements:
- condition: No AI-specific issues - condition: No AI-specific issues
- condition: AI-specific issues found - condition: AI-specific issues found
output_contracts: output_contracts:
- name: 03-ai-review.md report:
format: ai-review - name: 03-ai-review.md
format: ai-review
- name: supervise - name: supervise
edit: false edit: false
persona: supervisor persona: supervisor
@ -84,8 +86,9 @@ movements:
- condition: All checks passed - condition: All checks passed
- condition: Requirements unmet, tests failing - condition: Requirements unmet, tests failing
output_contracts: output_contracts:
- Validation: 05-supervisor-validation.md report:
- Summary: summary.md - Validation: 05-supervisor-validation.md
- Summary: summary.md
rules: rules:
- condition: all("No AI-specific issues", "All checks passed") - condition: all("No AI-specific issues", "All checks passed")
next: COMPLETE next: COMPLETE

View File

@ -72,8 +72,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-arch instruction: review-arch
output_contracts: output_contracts:
- name: 01-architect-review.md report:
format: architecture-review - name: 01-architect-review.md
format: architecture-review
- name: security-review - name: security-review
edit: false edit: false
persona: security-reviewer persona: security-reviewer
@ -90,8 +91,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-security instruction: review-security
output_contracts: output_contracts:
- name: 02-security-review.md report:
format: security-review - name: 02-security-review.md
format: security-review
- name: ai-review - name: ai-review
edit: false edit: false
persona: ai-antipattern-reviewer persona: ai-antipattern-reviewer
@ -109,8 +111,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-ai instruction: review-ai
output_contracts: output_contracts:
- name: 03-ai-review.md report:
format: ai-review - name: 03-ai-review.md
format: ai-review
rules: rules:
- condition: all("approved") - condition: all("approved")
next: supervise next: supervise
@ -175,7 +178,8 @@ movements:
- {Consolidated suggestions from all reviews} - {Consolidated suggestions from all reviews}
``` ```
output_contracts: output_contracts:
- Review Summary: 04-review-summary.md report:
- Review Summary: 04-review-summary.md
- name: pr-comment - name: pr-comment
edit: false edit: false
persona: pr-commenter persona: pr-commenter

View File

@ -156,7 +156,6 @@ AI tends to generate unnecessary code for "future extensibility", "symmetry", or
| REJECT | Interfaces or options prepared for future extension | | REJECT | Interfaces or options prepared for future extension |
| REJECT | Exported but no usage found via grep | | REJECT | Exported but no usage found via grep |
| OK | Implicitly called by framework (lifecycle hooks, etc.) | | OK | Implicitly called by framework (lifecycle hooks, etc.) |
| OK | Intentionally exposed as public package API |
Verification approach: Verification approach:
1. Grep to confirm no references to changed/deleted code remain 1. Grep to confirm no references to changed/deleted code remain

View File

@ -42,8 +42,9 @@ movements:
next: ABORT next: ABORT
instruction: plan instruction: plan
output_contracts: output_contracts:
- name: 00-plan.md report:
format: plan - name: 00-plan.md
format: plan
- name: implement - name: implement
edit: true edit: true
persona: coder persona: coder
@ -76,8 +77,9 @@ movements:
interactive_only: true interactive_only: true
instruction: implement instruction: implement
output_contracts: output_contracts:
- Scope: 02-coder-scope.md report:
- Decisions: 03-coder-decisions.md - Scope: 02-coder-scope.md
- Decisions: 03-coder-decisions.md
- name: reviewers - name: reviewers
parallel: parallel:
- name: ai_review - name: ai_review
@ -97,8 +99,9 @@ movements:
- condition: AI特有の問題あり - condition: AI特有の問題あり
instruction: ai-review instruction: ai-review
output_contracts: output_contracts:
- name: 04-ai-review.md report:
format: ai-review - name: 04-ai-review.md
format: ai-review
- name: arch-review - name: arch-review
edit: false edit: false
persona: architecture-reviewer persona: architecture-reviewer
@ -115,8 +118,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-arch instruction: review-arch
output_contracts: output_contracts:
- name: 05-architect-review.md report:
format: architecture-review - name: 05-architect-review.md
format: architecture-review
rules: rules:
- condition: all("AI特有の問題なし", "approved") - condition: all("AI特有の問題なし", "approved")
next: COMPLETE next: COMPLETE

View File

@ -40,8 +40,9 @@ movements:
next: ABORT next: ABORT
instruction: plan instruction: plan
output_contracts: output_contracts:
- name: 00-plan.md report:
format: plan - name: 00-plan.md
format: plan
- name: implement - name: implement
edit: true edit: true
persona: coder persona: coder
@ -73,8 +74,9 @@ movements:
interactive_only: true interactive_only: true
instruction: implement instruction: implement
output_contracts: output_contracts:
- Scope: 02-coder-scope.md report:
- Decisions: 03-coder-decisions.md - Scope: 02-coder-scope.md
- Decisions: 03-coder-decisions.md
- name: reviewers - name: reviewers
parallel: parallel:
- name: ai_review - name: ai_review
@ -94,8 +96,9 @@ movements:
- condition: AI特有の問題あり - condition: AI特有の問題あり
instruction: ai-review instruction: ai-review
output_contracts: output_contracts:
- name: 04-ai-review.md report:
format: ai-review - name: 04-ai-review.md
format: ai-review
- name: arch-review - name: arch-review
edit: false edit: false
persona: architecture-reviewer persona: architecture-reviewer
@ -112,8 +115,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-arch instruction: review-arch
output_contracts: output_contracts:
- name: 05-architect-review.md report:
format: architecture-review - name: 05-architect-review.md
format: architecture-review
rules: rules:
- condition: all("AI特有の問題なし", "approved") - condition: all("AI特有の問題なし", "approved")
next: COMPLETE next: COMPLETE

View File

@ -84,8 +84,9 @@ movements:
- {質問2} - {質問2}
instruction: plan instruction: plan
output_contracts: output_contracts:
- name: 00-plan.md report:
format: plan - name: 00-plan.md
format: plan
- name: architect - name: architect
edit: false edit: false
persona: architect-planner persona: architect-planner
@ -104,8 +105,9 @@ movements:
next: ABORT next: ABORT
instruction: architect instruction: architect
output_contracts: output_contracts:
- name: 01-architecture.md report:
format: architecture-design - name: 01-architecture.md
format: architecture-design
- name: implement - name: implement
edit: true edit: true
persona: coder persona: coder
@ -140,8 +142,9 @@ movements:
interactive_only: true interactive_only: true
instruction: implement instruction: implement
output_contracts: output_contracts:
- Scope: 02-coder-scope.md report:
- Decisions: 03-coder-decisions.md - Scope: 02-coder-scope.md
- Decisions: 03-coder-decisions.md
- name: ai_review - name: ai_review
edit: false edit: false
persona: ai-antipattern-reviewer persona: ai-antipattern-reviewer
@ -161,8 +164,9 @@ movements:
next: ai_fix next: ai_fix
instruction: ai-review instruction: ai-review
output_contracts: output_contracts:
- name: 04-ai-review.md report:
format: ai-review - name: 04-ai-review.md
format: ai-review
- name: ai_fix - name: ai_fix
edit: true edit: true
persona: coder persona: coder
@ -226,8 +230,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-arch instruction: review-arch
output_contracts: output_contracts:
- name: 05-architect-review.md report:
format: architecture-review - name: 05-architect-review.md
format: architecture-review
- name: qa-review - name: qa-review
edit: false edit: false
persona: qa-reviewer persona: qa-reviewer
@ -245,8 +250,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-qa instruction: review-qa
output_contracts: output_contracts:
- name: 06-qa-review.md report:
format: qa-review - name: 06-qa-review.md
format: qa-review
rules: rules:
- condition: all("approved") - condition: all("approved")
next: supervise next: supervise
@ -296,8 +302,9 @@ movements:
next: plan next: plan
instruction: supervise instruction: supervise
output_contracts: output_contracts:
- Validation: 07-supervisor-validation.md report:
- Summary: summary.md - Validation: 07-supervisor-validation.md
- Summary: summary.md
policies: policies:
coding: ../policies/coding.md coding: ../policies/coding.md
review: ../policies/review.md review: ../policies/review.md

View File

@ -79,8 +79,9 @@ movements:
- {質問2} - {質問2}
instruction: plan instruction: plan
output_contracts: output_contracts:
- name: 00-plan.md report:
format: plan - name: 00-plan.md
format: plan
- name: architect - name: architect
edit: false edit: false
persona: architect-planner persona: architect-planner
@ -99,8 +100,9 @@ movements:
next: ABORT next: ABORT
instruction: architect instruction: architect
output_contracts: output_contracts:
- name: 01-architecture.md report:
format: architecture-design - name: 01-architecture.md
format: architecture-design
- name: implement - name: implement
edit: true edit: true
persona: coder persona: coder
@ -134,8 +136,9 @@ movements:
interactive_only: true interactive_only: true
instruction: implement instruction: implement
output_contracts: output_contracts:
- Scope: 02-coder-scope.md report:
- Decisions: 03-coder-decisions.md - Scope: 02-coder-scope.md
- Decisions: 03-coder-decisions.md
- name: ai_review - name: ai_review
edit: false edit: false
persona: ai-antipattern-reviewer persona: ai-antipattern-reviewer
@ -155,8 +158,9 @@ movements:
next: ai_fix next: ai_fix
instruction: ai-review instruction: ai-review
output_contracts: output_contracts:
- name: 04-ai-review.md report:
format: ai-review - name: 04-ai-review.md
format: ai-review
- name: ai_fix - name: ai_fix
edit: true edit: true
persona: coder persona: coder
@ -219,8 +223,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-arch instruction: review-arch
output_contracts: output_contracts:
- name: 05-architect-review.md report:
format: architecture-review - name: 05-architect-review.md
format: architecture-review
- name: qa-review - name: qa-review
edit: false edit: false
persona: qa-reviewer persona: qa-reviewer
@ -238,8 +243,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-qa instruction: review-qa
output_contracts: output_contracts:
- name: 06-qa-review.md report:
format: qa-review - name: 06-qa-review.md
format: qa-review
rules: rules:
- condition: all("approved") - condition: all("approved")
next: supervise next: supervise
@ -288,8 +294,9 @@ movements:
next: plan next: plan
instruction: supervise instruction: supervise
output_contracts: output_contracts:
- Validation: 07-supervisor-validation.md report:
- Summary: summary.md - Validation: 07-supervisor-validation.md
- Summary: summary.md
report_formats: report_formats:
plan: ../output-contracts/plan.md plan: ../output-contracts/plan.md
architecture-design: ../output-contracts/architecture-design.md architecture-design: ../output-contracts/architecture-design.md

View File

@ -61,8 +61,9 @@ movements:
- condition: 要件が不明確で計画を立てられない - condition: 要件が不明確で計画を立てられない
next: ABORT next: ABORT
output_contracts: output_contracts:
- name: 00-plan.md report:
format: plan - name: 00-plan.md
format: plan
- name: implement - name: implement
edit: true edit: true
persona: coder persona: coder
@ -99,8 +100,9 @@ movements:
requires_user_input: true requires_user_input: true
interactive_only: true interactive_only: true
output_contracts: output_contracts:
- Scope: 01-coder-scope.md report:
- Decisions: 02-coder-decisions.md - Scope: 01-coder-scope.md
- Decisions: 02-coder-decisions.md
- name: ai_review - name: ai_review
edit: false edit: false
persona: ai-antipattern-reviewer persona: ai-antipattern-reviewer
@ -120,8 +122,9 @@ movements:
- condition: AI特有の問題が検出された - condition: AI特有の問題が検出された
next: ai_fix next: ai_fix
output_contracts: output_contracts:
- name: 03-ai-review.md report:
format: ai-review - name: 03-ai-review.md
format: ai-review
- name: ai_fix - name: ai_fix
edit: true edit: true
persona: coder persona: coder
@ -187,8 +190,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-cqrs-es instruction: review-cqrs-es
output_contracts: output_contracts:
- name: 04-cqrs-es-review.md report:
format: cqrs-es-review - name: 04-cqrs-es-review.md
format: cqrs-es-review
- name: frontend-review - name: frontend-review
edit: false edit: false
persona: frontend-reviewer persona: frontend-reviewer
@ -205,8 +209,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-frontend instruction: review-frontend
output_contracts: output_contracts:
- name: 05-frontend-review.md report:
format: frontend-review - name: 05-frontend-review.md
format: frontend-review
- name: security-review - name: security-review
edit: false edit: false
persona: security-reviewer persona: security-reviewer
@ -223,8 +228,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-security instruction: review-security
output_contracts: output_contracts:
- name: 06-security-review.md report:
format: security-review - name: 06-security-review.md
format: security-review
- name: qa-review - name: qa-review
edit: false edit: false
persona: qa-reviewer persona: qa-reviewer
@ -242,8 +248,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-qa instruction: review-qa
output_contracts: output_contracts:
- name: 07-qa-review.md report:
format: qa-review - name: 07-qa-review.md
format: qa-review
rules: rules:
- condition: all("approved") - condition: all("approved")
next: supervise next: supervise
@ -295,8 +302,9 @@ movements:
- condition: 問題が検出された - condition: 問題が検出された
next: fix_supervisor next: fix_supervisor
output_contracts: output_contracts:
- Validation: 08-supervisor-validation.md report:
- Summary: summary.md - Validation: 08-supervisor-validation.md
- Summary: summary.md
- name: fix_supervisor - name: fix_supervisor
edit: true edit: true
persona: coder persona: coder

View File

@ -55,8 +55,9 @@ movements:
- condition: 要件が不明確で計画を立てられない - condition: 要件が不明確で計画を立てられない
next: ABORT next: ABORT
output_contracts: output_contracts:
- name: 00-plan.md report:
format: plan - name: 00-plan.md
format: plan
- name: implement - name: implement
edit: true edit: true
persona: coder persona: coder
@ -92,8 +93,9 @@ movements:
requires_user_input: true requires_user_input: true
interactive_only: true interactive_only: true
output_contracts: output_contracts:
- Scope: 01-coder-scope.md report:
- Decisions: 02-coder-decisions.md - Scope: 01-coder-scope.md
- Decisions: 02-coder-decisions.md
- name: ai_review - name: ai_review
edit: false edit: false
persona: ai-antipattern-reviewer persona: ai-antipattern-reviewer
@ -113,8 +115,9 @@ movements:
- condition: AI特有の問題が検出された - condition: AI特有の問題が検出された
next: ai_fix next: ai_fix
output_contracts: output_contracts:
- name: 03-ai-review.md report:
format: ai-review - name: 03-ai-review.md
format: ai-review
- name: ai_fix - name: ai_fix
edit: true edit: true
persona: coder persona: coder
@ -179,8 +182,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-cqrs-es instruction: review-cqrs-es
output_contracts: output_contracts:
- name: 04-cqrs-es-review.md report:
format: cqrs-es-review - name: 04-cqrs-es-review.md
format: cqrs-es-review
- name: frontend-review - name: frontend-review
edit: false edit: false
persona: frontend-reviewer persona: frontend-reviewer
@ -197,8 +201,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-frontend instruction: review-frontend
output_contracts: output_contracts:
- name: 05-frontend-review.md report:
format: frontend-review - name: 05-frontend-review.md
format: frontend-review
- name: security-review - name: security-review
edit: false edit: false
persona: security-reviewer persona: security-reviewer
@ -215,8 +220,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-security instruction: review-security
output_contracts: output_contracts:
- name: 06-security-review.md report:
format: security-review - name: 06-security-review.md
format: security-review
- name: qa-review - name: qa-review
edit: false edit: false
persona: qa-reviewer persona: qa-reviewer
@ -234,8 +240,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-qa instruction: review-qa
output_contracts: output_contracts:
- name: 07-qa-review.md report:
format: qa-review - name: 07-qa-review.md
format: qa-review
rules: rules:
- condition: all("approved") - condition: all("approved")
next: supervise next: supervise
@ -286,8 +293,9 @@ movements:
- condition: 問題が検出された - condition: 問題が検出された
next: fix_supervisor next: fix_supervisor
output_contracts: output_contracts:
- Validation: 08-supervisor-validation.md report:
- Summary: summary.md - Validation: 08-supervisor-validation.md
- Summary: summary.md
- name: fix_supervisor - name: fix_supervisor
edit: true edit: true
persona: coder persona: coder

View File

@ -59,8 +59,9 @@ movements:
- condition: 要件が不明確で計画を立てられない - condition: 要件が不明確で計画を立てられない
next: ABORT next: ABORT
output_contracts: output_contracts:
- name: 00-plan.md report:
format: plan - name: 00-plan.md
format: plan
- name: implement - name: implement
edit: true edit: true
persona: coder persona: coder
@ -96,8 +97,9 @@ movements:
requires_user_input: true requires_user_input: true
interactive_only: true interactive_only: true
output_contracts: output_contracts:
- Scope: 01-coder-scope.md report:
- Decisions: 02-coder-decisions.md - Scope: 01-coder-scope.md
- Decisions: 02-coder-decisions.md
- name: ai_review - name: ai_review
edit: false edit: false
persona: ai-antipattern-reviewer persona: ai-antipattern-reviewer
@ -117,8 +119,9 @@ movements:
- condition: AI特有の問題が検出された - condition: AI特有の問題が検出された
next: ai_fix next: ai_fix
output_contracts: output_contracts:
- name: 03-ai-review.md report:
format: ai-review - name: 03-ai-review.md
format: ai-review
- name: ai_fix - name: ai_fix
edit: true edit: true
persona: coder persona: coder
@ -183,8 +186,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-arch instruction: review-arch
output_contracts: output_contracts:
- name: 04-architect-review.md report:
format: architecture-review - name: 04-architect-review.md
format: architecture-review
- name: frontend-review - name: frontend-review
edit: false edit: false
persona: frontend-reviewer persona: frontend-reviewer
@ -201,8 +205,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-frontend instruction: review-frontend
output_contracts: output_contracts:
- name: 05-frontend-review.md report:
format: frontend-review - name: 05-frontend-review.md
format: frontend-review
- name: security-review - name: security-review
edit: false edit: false
persona: security-reviewer persona: security-reviewer
@ -219,8 +224,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-security instruction: review-security
output_contracts: output_contracts:
- name: 06-security-review.md report:
format: security-review - name: 06-security-review.md
format: security-review
- name: qa-review - name: qa-review
edit: false edit: false
persona: qa-reviewer persona: qa-reviewer
@ -238,8 +244,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-qa instruction: review-qa
output_contracts: output_contracts:
- name: 07-qa-review.md report:
format: qa-review - name: 07-qa-review.md
format: qa-review
rules: rules:
- condition: all("approved") - condition: all("approved")
next: supervise next: supervise
@ -290,8 +297,9 @@ movements:
- condition: 問題が検出された - condition: 問題が検出された
next: fix_supervisor next: fix_supervisor
output_contracts: output_contracts:
- Validation: 08-supervisor-validation.md report:
- Summary: summary.md - Validation: 08-supervisor-validation.md
- Summary: summary.md
- name: fix_supervisor - name: fix_supervisor
edit: true edit: true
persona: coder persona: coder

View File

@ -53,8 +53,9 @@ movements:
- condition: 要件が不明確で計画を立てられない - condition: 要件が不明確で計画を立てられない
next: ABORT next: ABORT
output_contracts: output_contracts:
- name: 00-plan.md report:
format: plan - name: 00-plan.md
format: plan
- name: implement - name: implement
edit: true edit: true
persona: coder persona: coder
@ -89,8 +90,9 @@ movements:
requires_user_input: true requires_user_input: true
interactive_only: true interactive_only: true
output_contracts: output_contracts:
- Scope: 01-coder-scope.md report:
- Decisions: 02-coder-decisions.md - Scope: 01-coder-scope.md
- Decisions: 02-coder-decisions.md
- name: ai_review - name: ai_review
edit: false edit: false
persona: ai-antipattern-reviewer persona: ai-antipattern-reviewer
@ -110,8 +112,9 @@ movements:
- condition: AI特有の問題が検出された - condition: AI特有の問題が検出された
next: ai_fix next: ai_fix
output_contracts: output_contracts:
- name: 03-ai-review.md report:
format: ai-review - name: 03-ai-review.md
format: ai-review
- name: ai_fix - name: ai_fix
edit: true edit: true
persona: coder persona: coder
@ -175,8 +178,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-arch instruction: review-arch
output_contracts: output_contracts:
- name: 04-architect-review.md report:
format: architecture-review - name: 04-architect-review.md
format: architecture-review
- name: frontend-review - name: frontend-review
edit: false edit: false
persona: frontend-reviewer persona: frontend-reviewer
@ -193,8 +197,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-frontend instruction: review-frontend
output_contracts: output_contracts:
- name: 05-frontend-review.md report:
format: frontend-review - name: 05-frontend-review.md
format: frontend-review
- name: security-review - name: security-review
edit: false edit: false
persona: security-reviewer persona: security-reviewer
@ -211,8 +216,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-security instruction: review-security
output_contracts: output_contracts:
- name: 06-security-review.md report:
format: security-review - name: 06-security-review.md
format: security-review
- name: qa-review - name: qa-review
edit: false edit: false
persona: qa-reviewer persona: qa-reviewer
@ -230,8 +236,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-qa instruction: review-qa
output_contracts: output_contracts:
- name: 07-qa-review.md report:
format: qa-review - name: 07-qa-review.md
format: qa-review
rules: rules:
- condition: all("approved") - condition: all("approved")
next: supervise next: supervise
@ -281,8 +288,9 @@ movements:
- condition: 問題が検出された - condition: 問題が検出された
next: fix_supervisor next: fix_supervisor
output_contracts: output_contracts:
- Validation: 08-supervisor-validation.md report:
- Summary: summary.md - Validation: 08-supervisor-validation.md
- Summary: summary.md
- name: fix_supervisor - name: fix_supervisor
edit: true edit: true
persona: coder persona: coder

View File

@ -46,8 +46,9 @@ movements:
requires_user_input: true requires_user_input: true
interactive_only: true interactive_only: true
output_contracts: output_contracts:
- Scope: 01-coder-scope.md report:
- Decisions: 02-coder-decisions.md - Scope: 01-coder-scope.md
- Decisions: 02-coder-decisions.md
- name: reviewers - name: reviewers
parallel: parallel:
- name: ai_review - name: ai_review
@ -67,8 +68,9 @@ movements:
- condition: AI特有の問題なし - condition: AI特有の問題なし
- condition: AI特有の問題あり - condition: AI特有の問題あり
output_contracts: output_contracts:
- name: 03-ai-review.md report:
format: ai-review - name: 03-ai-review.md
format: ai-review
- name: supervise - name: supervise
edit: false edit: false
persona: supervisor persona: supervisor
@ -85,8 +87,9 @@ movements:
- condition: すべて問題なし - condition: すべて問題なし
- condition: 要求未達成、テスト失敗、ビルドエラー - condition: 要求未達成、テスト失敗、ビルドエラー
output_contracts: output_contracts:
- Validation: 05-supervisor-validation.md report:
- Summary: summary.md - Validation: 05-supervisor-validation.md
- Summary: summary.md
rules: rules:
- condition: all("AI特有の問題なし", "すべて問題なし") - condition: all("AI特有の問題なし", "すべて問題なし")
next: COMPLETE next: COMPLETE

View File

@ -45,8 +45,9 @@ movements:
requires_user_input: true requires_user_input: true
interactive_only: true interactive_only: true
output_contracts: output_contracts:
- Scope: 01-coder-scope.md report:
- Decisions: 02-coder-decisions.md - Scope: 01-coder-scope.md
- Decisions: 02-coder-decisions.md
- name: reviewers - name: reviewers
parallel: parallel:
- name: ai_review - name: ai_review
@ -66,8 +67,9 @@ movements:
- condition: AI特有の問題なし - condition: AI特有の問題なし
- condition: AI特有の問題あり - condition: AI特有の問題あり
output_contracts: output_contracts:
- name: 03-ai-review.md report:
format: ai-review - name: 03-ai-review.md
format: ai-review
- name: supervise - name: supervise
edit: false edit: false
persona: supervisor persona: supervisor
@ -84,8 +86,9 @@ movements:
- condition: すべて問題なし - condition: すべて問題なし
- condition: 要求未達成、テスト失敗、ビルドエラー - condition: 要求未達成、テスト失敗、ビルドエラー
output_contracts: output_contracts:
- Validation: 05-supervisor-validation.md report:
- Summary: summary.md - Validation: 05-supervisor-validation.md
- Summary: summary.md
rules: rules:
- condition: all("AI特有の問題なし", "すべて問題なし") - condition: all("AI特有の問題なし", "すべて問題なし")
next: COMPLETE next: COMPLETE

View File

@ -37,7 +37,8 @@ movements:
instruction_template: | instruction_template: |
タスクをこなしてください。 タスクをこなしてください。
output_contracts: output_contracts:
- Summary: summary.md report:
- Summary: summary.md
policies: policies:
coding: ../policies/coding.md coding: ../policies/coding.md
testing: ../policies/testing.md testing: ../policies/testing.md

View File

@ -36,4 +36,5 @@ movements:
instruction_template: | instruction_template: |
タスクをこなしてください。 タスクをこなしてください。
output_contracts: output_contracts:
- Summary: summary.md report:
- Summary: summary.md

View File

@ -46,8 +46,9 @@ movements:
requires_user_input: true requires_user_input: true
interactive_only: true interactive_only: true
output_contracts: output_contracts:
- Scope: 01-coder-scope.md report:
- Decisions: 02-coder-decisions.md - Scope: 01-coder-scope.md
- Decisions: 02-coder-decisions.md
- name: reviewers - name: reviewers
parallel: parallel:
- name: ai_review - name: ai_review
@ -67,8 +68,9 @@ movements:
- condition: AI特有の問題なし - condition: AI特有の問題なし
- condition: AI特有の問題あり - condition: AI特有の問題あり
output_contracts: output_contracts:
- name: 03-ai-review.md report:
format: ai-review - name: 03-ai-review.md
format: ai-review
- name: supervise - name: supervise
edit: false edit: false
persona: supervisor persona: supervisor
@ -85,8 +87,9 @@ movements:
- condition: すべて問題なし - condition: すべて問題なし
- condition: 要求未達成、テスト失敗、ビルドエラー - condition: 要求未達成、テスト失敗、ビルドエラー
output_contracts: output_contracts:
- Validation: 05-supervisor-validation.md report:
- Summary: summary.md - Validation: 05-supervisor-validation.md
- Summary: summary.md
rules: rules:
- condition: all("AI特有の問題なし", "すべて問題なし") - condition: all("AI特有の問題なし", "すべて問題なし")
next: COMPLETE next: COMPLETE

View File

@ -45,8 +45,9 @@ movements:
requires_user_input: true requires_user_input: true
interactive_only: true interactive_only: true
output_contracts: output_contracts:
- Scope: 01-coder-scope.md report:
- Decisions: 02-coder-decisions.md - Scope: 01-coder-scope.md
- Decisions: 02-coder-decisions.md
- name: reviewers - name: reviewers
parallel: parallel:
- name: ai_review - name: ai_review
@ -66,8 +67,9 @@ movements:
- condition: AI特有の問題なし - condition: AI特有の問題なし
- condition: AI特有の問題あり - condition: AI特有の問題あり
output_contracts: output_contracts:
- name: 03-ai-review.md report:
format: ai-review - name: 03-ai-review.md
format: ai-review
- name: supervise - name: supervise
edit: false edit: false
persona: supervisor persona: supervisor
@ -84,8 +86,9 @@ movements:
- condition: すべて問題なし - condition: すべて問題なし
- condition: 要求未達成、テスト失敗、ビルドエラー - condition: 要求未達成、テスト失敗、ビルドエラー
output_contracts: output_contracts:
- Validation: 05-supervisor-validation.md report:
- Summary: summary.md - Validation: 05-supervisor-validation.md
- Summary: summary.md
rules: rules:
- condition: all("AI特有の問題なし", "すべて問題なし") - condition: all("AI特有の問題なし", "すべて問題なし")
next: COMPLETE next: COMPLETE

View File

@ -72,8 +72,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-arch instruction: review-arch
output_contracts: output_contracts:
- name: 01-architect-review.md report:
format: architecture-review - name: 01-architect-review.md
format: architecture-review
- name: security-review - name: security-review
edit: false edit: false
persona: security-reviewer persona: security-reviewer
@ -90,8 +91,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-security instruction: review-security
output_contracts: output_contracts:
- name: 02-security-review.md report:
format: security-review - name: 02-security-review.md
format: security-review
- name: ai-review - name: ai-review
edit: false edit: false
persona: ai-antipattern-reviewer persona: ai-antipattern-reviewer
@ -109,8 +111,9 @@ movements:
- condition: needs_fix - condition: needs_fix
instruction: review-ai instruction: review-ai
output_contracts: output_contracts:
- name: 03-ai-review.md report:
format: ai-review - name: 03-ai-review.md
format: ai-review
rules: rules:
- condition: all("approved") - condition: all("approved")
next: supervise next: supervise
@ -176,7 +179,8 @@ movements:
- {全レビューからの統合提案} - {全レビューからの統合提案}
``` ```
output_contracts: output_contracts:
- Review Summary: 04-review-summary.md report:
- Review Summary: 04-review-summary.md
- name: pr-comment - name: pr-comment
edit: false edit: false
persona: pr-commenter persona: pr-commenter

View File

@ -156,7 +156,6 @@ AIは「将来の拡張性」「対称性」「念のため」で不要なコー
| REJECT | 将来の拡張のために用意されたインターフェースやオプション | | REJECT | 将来の拡張のために用意されたインターフェースやオプション |
| REJECT | exportされているが、grep で使用箇所が見つからない | | REJECT | exportされているが、grep で使用箇所が見つからない |
| OK | フレームワークが暗黙的に呼び出す(ライフサイクルフック等) | | OK | フレームワークが暗黙的に呼び出す(ライフサイクルフック等) |
| OK | 公開パッケージのAPIとして意図的に公開している |
検証アプローチ: 検証アプローチ:
1. 変更・削除されたコードを参照している箇所がないか grep で確認 1. 変更・削除されたコードを参照している箇所がないか grep で確認

View File

@ -76,8 +76,9 @@ movement 内では**キー名**で参照する(パスを直接書かない)
edit: false edit: false
instruction: review-arch instruction: review-arch
output_contracts: output_contracts:
- name: 05-architect-review.md report:
format: architecture-review - name: 05-architect-review.md
format: architecture-review
rules: rules:
- condition: "approved" - condition: "approved"
- condition: "needs_fix" - condition: "needs_fix"
@ -132,14 +133,15 @@ rules:
## Output Contracts 定義 ## Output Contracts 定義
Movement の出力契約(レポート定義)。配列形式で指定する。 Movement の出力契約(レポート定義)。`output_contracts.report` 配列形式で指定する。
### 形式1: name + formatフォーマット参照 ### 形式1: name + formatフォーマット参照
```yaml ```yaml
output_contracts: output_contracts:
- name: 01-plan.md report:
format: plan # report_formats マップのキーを参照 - name: 01-plan.md
format: plan # report_formats マップのキーを参照
``` ```
`format` がキー文字列の場合、トップレベル `report_formats:` セクションから対応する .md ファイルを読み込み、出力契約指示として使用する。 `format` がキー文字列の場合、トップレベル `report_formats:` セクションから対応する .md ファイルを読み込み、出力契約指示として使用する。
@ -148,20 +150,22 @@ output_contracts:
```yaml ```yaml
output_contracts: output_contracts:
- name: 01-plan.md report:
format: | # インラインでフォーマットを記述 - name: 01-plan.md
# レポートタイトル format: | # インラインでフォーマットを記述
## セクション # レポートタイトル
{内容} ## セクション
{内容}
``` ```
### 形式2: label + pathラベル付きパス ### 形式2: label + pathラベル付きパス
```yaml ```yaml
output_contracts: output_contracts:
- Summary: summary.md report:
- Scope: 01-scope.md - Summary: summary.md
- Decisions: 02-decisions.md - Scope: 01-scope.md
- Decisions: 02-decisions.md
``` ```
各要素のキーがレポート種別名(ラベル)、値がファイル名。 各要素のキーがレポート種別名(ラベル)、値がファイル名。

View File

@ -370,8 +370,9 @@ movements:
instruction: review # 異なる WHAT共有も可能 instruction: review # 異なる WHAT共有も可能
knowledge: architecture # 同じ CONTEXT — 再利用 knowledge: architecture # 同じ CONTEXT — 再利用
output_contracts: output_contracts:
- name: review.md report:
format: review # OUTPUT — report_formats.review を参照 - name: review.md
format: review # OUTPUT — report_formats.review を参照
edit: false edit: false
rules: rules:
- condition: Approved - condition: Approved

View File

@ -369,9 +369,10 @@ movements:
policy: review # Different RULES policy: review # Different RULES
instruction: review # Different WHAT (but could share) instruction: review # Different WHAT (but could share)
knowledge: architecture # Same CONTEXT — reused knowledge: architecture # Same CONTEXT — reused
report: output_contracts:
name: review.md report:
format: review # OUTPUT — references output_contracts.review - name: review.md
format: review # OUTPUT — references report_formats.review
edit: false edit: false
rules: rules:
- condition: Approved - condition: Approved

View File

@ -556,10 +556,12 @@ describe('section reference resolution', () => {
name: 'plan', name: 'plan',
persona: 'planner', persona: 'planner',
instruction: '{task}', instruction: '{task}',
output_contracts: [{ output_contracts: {
name: '00-plan.md', report: [{
format: 'plan', name: '00-plan.md',
}], format: 'plan',
}],
},
}], }],
}; };

View File

@ -78,26 +78,35 @@ export const OutputContractItemSchema = z.object({
format: z.string().optional(), format: z.string().optional(),
}); });
/**
* Raw output contract entry array item in output_contracts.report
*
* Supports:
* - Label:path format: { Scope: "01-scope.md" }
* - Item format: { name, order?, format? }
*/
export const OutputContractEntrySchema = z.union([
z.record(z.string(), z.string()), // {Scope: "01-scope.md"} format
OutputContractItemSchema, // {name, order?, format?} format
]);
/** /**
* Output contracts field schema for movement-level definition. * Output contracts field schema for movement-level definition.
* *
* YAML formats: * YAML format:
* output_contracts: # array of label:path entries * output_contracts:
* - Scope: 01-scope.md * report: # report array (required if output_contracts is specified)
* - Decisions: 02-decisions.md * - Scope: 01-scope.md # label:path format
* output_contracts: # array of objects (name + order + format) * - Decisions: 02-decisions.md
* - name: 00-plan.md * output_contracts:
* order: ... * report:
* format: plan * - name: 00-plan.md # name + order + format format
* * order: ...
* Array items can be single-key objects or full item objects. * format: plan
*/ */
export const OutputContractsFieldSchema = z.array( export const OutputContractsFieldSchema = z.object({
z.union([ report: z.array(OutputContractEntrySchema).optional(),
z.record(z.string(), z.string()), // {Scope: "01-scope.md"} format }).optional();
OutputContractItemSchema, // {name, order?, format?} format
])
).optional();
/** Quality gates schema - AI directives for movement completion (string array) */ /** Quality gates schema - AI directives for movement completion (string array) */
export const QualityGatesSchema = z.array(z.string()).optional(); export const QualityGatesSchema = z.array(z.string()).optional();

View File

@ -53,7 +53,7 @@ export { handleBlocked, type BlockedHandlerResult } from './engine/blocked-handl
export { ParallelLogger } from './engine/parallel-logger.js'; export { ParallelLogger } from './engine/parallel-logger.js';
// Instruction building // Instruction building
export { InstructionBuilder, isOutputContractItem, isOutputContractLabelPath } from './instruction/InstructionBuilder.js'; export { InstructionBuilder, isOutputContractItem } from './instruction/InstructionBuilder.js';
export { ReportInstructionBuilder, type ReportInstructionContext } from './instruction/ReportInstructionBuilder.js'; export { ReportInstructionBuilder, type ReportInstructionContext } from './instruction/ReportInstructionBuilder.js';
export { StatusJudgmentBuilder, type StatusJudgmentContext } from './instruction/StatusJudgmentBuilder.js'; export { StatusJudgmentBuilder, type StatusJudgmentContext } from './instruction/StatusJudgmentBuilder.js';
export { buildEditRule, type InstructionContext } from './instruction/instruction-context.js'; export { buildEditRule, type InstructionContext } from './instruction/instruction-context.js';

View File

@ -5,7 +5,7 @@
* Assembles template variables and renders a single complete template. * Assembles template variables and renders a single complete template.
*/ */
import type { PieceMovement, Language, OutputContractLabelPath, OutputContractItem, OutputContractEntry } from '../../models/types.js'; import type { PieceMovement, Language, OutputContractItem, OutputContractEntry } from '../../models/types.js';
import type { InstructionContext } from './instruction-context.js'; import type { InstructionContext } from './instruction-context.js';
import { buildEditRule } from './instruction-context.js'; import { buildEditRule } from './instruction-context.js';
import { escapeTemplateChars, replaceTemplatePlaceholders } from './escape.js'; import { escapeTemplateChars, replaceTemplatePlaceholders } from './escape.js';
@ -18,13 +18,6 @@ export function isOutputContractItem(entry: OutputContractEntry): entry is Outpu
return 'name' in entry; return 'name' in entry;
} }
/**
* Check if an output contract entry is the label-path form (OutputContractLabelPath).
*/
export function isOutputContractLabelPath(entry: OutputContractEntry): entry is OutputContractLabelPath {
return 'label' in entry && 'path' in entry;
}
/** /**
* Builds Phase 1 instructions for agent execution. * Builds Phase 1 instructions for agent execution.
* *

View File

@ -2,7 +2,7 @@
* Instruction builders - barrel exports * Instruction builders - barrel exports
*/ */
export { InstructionBuilder, isOutputContractItem, isOutputContractLabelPath, renderReportContext, renderReportOutputInstruction } from './InstructionBuilder.js'; export { InstructionBuilder, isOutputContractItem, renderReportContext, renderReportOutputInstruction } from './InstructionBuilder.js';
export { ReportInstructionBuilder, type ReportInstructionContext } from './ReportInstructionBuilder.js'; export { ReportInstructionBuilder, type ReportInstructionContext } from './ReportInstructionBuilder.js';
export { StatusJudgmentBuilder, type StatusJudgmentContext } from './StatusJudgmentBuilder.js'; export { StatusJudgmentBuilder, type StatusJudgmentContext } from './StatusJudgmentBuilder.js';
export { escapeTemplateChars, replaceTemplatePlaceholders } from './escape.js'; export { escapeTemplateChars, replaceTemplatePlaceholders } from './escape.js';

View File

@ -114,7 +114,6 @@ export {
ParallelLogger, ParallelLogger,
InstructionBuilder, InstructionBuilder,
isOutputContractItem, isOutputContractItem,
isOutputContractLabelPath,
ReportInstructionBuilder, ReportInstructionBuilder,
StatusJudgmentBuilder, StatusJudgmentBuilder,
buildEditRule, buildEditRule,

View File

@ -122,24 +122,25 @@ function isOutputContractItem(raw: unknown): raw is { name: string; order?: stri
/** /**
* Normalize the raw output_contracts field from YAML into internal format. * Normalize the raw output_contracts field from YAML into internal format.
* *
* Input formats (YAML): * Input format (YAML):
* output_contracts: * output_contracts:
* - Scope: 01-scope.md # label:path format * report:
* - name: 00-plan.md # item format * - Scope: 01-scope.md # label:path format
* format: plan * - name: 00-plan.md # item format
* format: plan
* *
* Output: OutputContractEntry[] * Output: OutputContractEntry[]
*/ */
function normalizeOutputContracts( function normalizeOutputContracts(
raw: Array<Record<string, string> | { name: string; order?: string; format?: string }> | undefined, raw: { report?: Array<Record<string, string> | { name: string; order?: string; format?: string }> } | undefined,
pieceDir: string, pieceDir: string,
resolvedReportFormats?: Record<string, string>, resolvedReportFormats?: Record<string, string>,
): OutputContractEntry[] | undefined { ): OutputContractEntry[] | undefined {
if (raw == null || raw.length === 0) return undefined; if (raw?.report == null || raw.report.length === 0) return undefined;
const result: OutputContractEntry[] = []; const result: OutputContractEntry[] = [];
for (const entry of raw) { for (const entry of raw.report) {
if (isOutputContractItem(entry)) { if (isOutputContractItem(entry)) {
// Item format: {name, order?, format?} // Item format: {name, order?, format?}
const item: OutputContractItem = { const item: OutputContractItem = {