From 7ae4a788310e1a939b33098142bc84ad442bb4c0 Mon Sep 17 00:00:00 2001 From: nrslib <38722970+nrslib@users.noreply.github.com> Date: Sat, 7 Feb 2026 22:26:35 +0900 Subject: [PATCH] =?UTF-8?q?Output=20Contracts=20=E3=81=A8=20Quality=20Gate?= =?UTF-8?q?s=20=E3=81=AE=E5=AE=9F=E8=A3=85=20+=20=E6=9C=AA=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E3=82=B3=E3=83=BC=E3=83=89=E6=A4=9C=E5=87=BA=E3=83=9D?= =?UTF-8?q?=E3=83=AA=E3=82=B7=E3=83=BC=E5=8E=B3=E6=A0=BC=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Output Contracts を report 配下のネスト構造に変更し、Quality Gates をスキーマ・パーサーに追加。 未使用コード検出ポリシーから公開API例外ルールを削除し、AIが未使用コードを許容する抜け道を塞ぐ。 --- builtins/en/pieces/coding-hybrid-codex.yaml | 20 +++++---- builtins/en/pieces/coding.yaml | 20 +++++---- builtins/en/pieces/default-hybrid-codex.yaml | 35 +++++++++------- builtins/en/pieces/default.yaml | 35 +++++++++------- .../en/pieces/expert-cqrs-hybrid-codex.yaml | 40 ++++++++++-------- builtins/en/pieces/expert-cqrs.yaml | 40 ++++++++++-------- builtins/en/pieces/expert-hybrid-codex.yaml | 40 ++++++++++-------- builtins/en/pieces/expert.yaml | 40 ++++++++++-------- builtins/en/pieces/minimal-hybrid-codex.yaml | 15 ++++--- builtins/en/pieces/minimal.yaml | 15 ++++--- .../en/pieces/passthrough-hybrid-codex.yaml | 3 +- builtins/en/pieces/passthrough.yaml | 3 +- .../review-fix-minimal-hybrid-codex.yaml | 15 ++++--- builtins/en/pieces/review-fix-minimal.yaml | 15 ++++--- builtins/en/pieces/review-only.yaml | 18 ++++---- builtins/en/policies/ai-antipattern.md | 1 - builtins/ja/pieces/coding-hybrid-codex.yaml | 20 +++++---- builtins/ja/pieces/coding.yaml | 20 +++++---- builtins/ja/pieces/default-hybrid-codex.yaml | 35 +++++++++------- builtins/ja/pieces/default.yaml | 35 +++++++++------- .../ja/pieces/expert-cqrs-hybrid-codex.yaml | 40 ++++++++++-------- builtins/ja/pieces/expert-cqrs.yaml | 40 ++++++++++-------- builtins/ja/pieces/expert-hybrid-codex.yaml | 40 ++++++++++-------- builtins/ja/pieces/expert.yaml | 40 ++++++++++-------- builtins/ja/pieces/minimal-hybrid-codex.yaml | 15 ++++--- builtins/ja/pieces/minimal.yaml | 15 ++++--- .../ja/pieces/passthrough-hybrid-codex.yaml | 3 +- builtins/ja/pieces/passthrough.yaml | 3 +- .../review-fix-minimal-hybrid-codex.yaml | 15 ++++--- builtins/ja/pieces/review-fix-minimal.yaml | 15 ++++--- builtins/ja/pieces/review-only.yaml | 18 ++++---- builtins/ja/policies/ai-antipattern.md | 1 - builtins/skill/references/yaml-schema.md | 30 ++++++++------ docs/faceted-prompting.ja.md | 5 ++- docs/faceted-prompting.md | 7 ++-- src/__tests__/policy-persona.test.ts | 10 +++-- src/core/models/schemas.ts | 41 +++++++++++-------- src/core/piece/index.ts | 2 +- .../piece/instruction/InstructionBuilder.ts | 9 +--- src/core/piece/instruction/index.ts | 2 +- src/index.ts | 1 - src/infra/config/loaders/pieceParser.ts | 15 +++---- 42 files changed, 492 insertions(+), 340 deletions(-) diff --git a/builtins/en/pieces/coding-hybrid-codex.yaml b/builtins/en/pieces/coding-hybrid-codex.yaml index 6300f08..1e92a5c 100644 --- a/builtins/en/pieces/coding-hybrid-codex.yaml +++ b/builtins/en/pieces/coding-hybrid-codex.yaml @@ -42,8 +42,9 @@ movements: next: ABORT instruction: plan output_contracts: - - name: 00-plan.md - format: plan + report: + - name: 00-plan.md + format: plan - name: implement edit: true persona: coder @@ -76,8 +77,9 @@ movements: interactive_only: true instruction: implement output_contracts: - - Scope: 02-coder-scope.md - - Decisions: 03-coder-decisions.md + report: + - Scope: 02-coder-scope.md + - Decisions: 03-coder-decisions.md - name: reviewers parallel: - name: ai_review @@ -97,8 +99,9 @@ movements: - condition: AI-specific issues found instruction: ai-review output_contracts: - - name: 04-ai-review.md - format: ai-review + report: + - name: 04-ai-review.md + format: ai-review - name: arch-review edit: false persona: architecture-reviewer @@ -115,8 +118,9 @@ movements: - condition: needs_fix instruction: review-arch output_contracts: - - name: 05-architect-review.md - format: architecture-review + report: + - name: 05-architect-review.md + format: architecture-review rules: - condition: all("No AI-specific issues", "approved") next: COMPLETE diff --git a/builtins/en/pieces/coding.yaml b/builtins/en/pieces/coding.yaml index b27a9b8..6571911 100644 --- a/builtins/en/pieces/coding.yaml +++ b/builtins/en/pieces/coding.yaml @@ -40,8 +40,9 @@ movements: next: ABORT instruction: plan output_contracts: - - name: 00-plan.md - format: plan + report: + - name: 00-plan.md + format: plan - name: implement edit: true persona: coder @@ -73,8 +74,9 @@ movements: interactive_only: true instruction: implement output_contracts: - - Scope: 02-coder-scope.md - - Decisions: 03-coder-decisions.md + report: + - Scope: 02-coder-scope.md + - Decisions: 03-coder-decisions.md - name: reviewers parallel: - name: ai_review @@ -94,8 +96,9 @@ movements: - condition: AI-specific issues found instruction: ai-review output_contracts: - - name: 04-ai-review.md - format: ai-review + report: + - name: 04-ai-review.md + format: ai-review - name: arch-review edit: false persona: architecture-reviewer @@ -112,8 +115,9 @@ movements: - condition: needs_fix instruction: review-arch output_contracts: - - name: 05-architect-review.md - format: architecture-review + report: + - name: 05-architect-review.md + format: architecture-review rules: - condition: all("No AI-specific issues", "approved") next: COMPLETE diff --git a/builtins/en/pieces/default-hybrid-codex.yaml b/builtins/en/pieces/default-hybrid-codex.yaml index 8da3934..77d9f51 100644 --- a/builtins/en/pieces/default-hybrid-codex.yaml +++ b/builtins/en/pieces/default-hybrid-codex.yaml @@ -84,8 +84,9 @@ movements: - {Question 2} instruction: plan output_contracts: - - name: 00-plan.md - format: plan + report: + - name: 00-plan.md + format: plan - name: architect edit: false persona: architect-planner @@ -104,8 +105,9 @@ movements: next: ABORT instruction: architect output_contracts: - - name: 01-architecture.md - format: architecture-design + report: + - name: 01-architecture.md + format: architecture-design - name: implement edit: true persona: coder @@ -140,8 +142,9 @@ movements: interactive_only: true instruction: implement output_contracts: - - Scope: 02-coder-scope.md - - Decisions: 03-coder-decisions.md + report: + - Scope: 02-coder-scope.md + - Decisions: 03-coder-decisions.md - name: ai_review edit: false persona: ai-antipattern-reviewer @@ -161,8 +164,9 @@ movements: next: ai_fix instruction: ai-review output_contracts: - - name: 04-ai-review.md - format: ai-review + report: + - name: 04-ai-review.md + format: ai-review - name: ai_fix edit: true persona: coder @@ -226,8 +230,9 @@ movements: - condition: needs_fix instruction: review-arch output_contracts: - - name: 05-architect-review.md - format: architecture-review + report: + - name: 05-architect-review.md + format: architecture-review - name: qa-review edit: false persona: qa-reviewer @@ -245,8 +250,9 @@ movements: - condition: needs_fix instruction: review-qa output_contracts: - - name: 06-qa-review.md - format: qa-review + report: + - name: 06-qa-review.md + format: qa-review rules: - condition: all("approved") next: supervise @@ -296,8 +302,9 @@ movements: next: plan instruction: supervise output_contracts: - - Validation: 07-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 07-supervisor-validation.md + - Summary: summary.md policies: coding: ../policies/coding.md review: ../policies/review.md diff --git a/builtins/en/pieces/default.yaml b/builtins/en/pieces/default.yaml index f4d22f5..dc7b9fc 100644 --- a/builtins/en/pieces/default.yaml +++ b/builtins/en/pieces/default.yaml @@ -79,8 +79,9 @@ movements: - {Question 2} instruction: plan output_contracts: - - name: 00-plan.md - format: plan + report: + - name: 00-plan.md + format: plan - name: architect edit: false persona: architect-planner @@ -99,8 +100,9 @@ movements: next: ABORT instruction: architect output_contracts: - - name: 01-architecture.md - format: architecture-design + report: + - name: 01-architecture.md + format: architecture-design - name: implement edit: true persona: coder @@ -134,8 +136,9 @@ movements: interactive_only: true instruction: implement output_contracts: - - Scope: 02-coder-scope.md - - Decisions: 03-coder-decisions.md + report: + - Scope: 02-coder-scope.md + - Decisions: 03-coder-decisions.md - name: ai_review edit: false persona: ai-antipattern-reviewer @@ -155,8 +158,9 @@ movements: next: ai_fix instruction: ai-review output_contracts: - - name: 04-ai-review.md - format: ai-review + report: + - name: 04-ai-review.md + format: ai-review - name: ai_fix edit: true persona: coder @@ -219,8 +223,9 @@ movements: - condition: needs_fix instruction: review-arch output_contracts: - - name: 05-architect-review.md - format: architecture-review + report: + - name: 05-architect-review.md + format: architecture-review - name: qa-review edit: false persona: qa-reviewer @@ -238,8 +243,9 @@ movements: - condition: needs_fix instruction: review-qa output_contracts: - - name: 06-qa-review.md - format: qa-review + report: + - name: 06-qa-review.md + format: qa-review rules: - condition: all("approved") next: supervise @@ -288,8 +294,9 @@ movements: next: plan instruction: supervise output_contracts: - - Validation: 07-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 07-supervisor-validation.md + - Summary: summary.md report_formats: plan: ../output-contracts/plan.md architecture-design: ../output-contracts/architecture-design.md diff --git a/builtins/en/pieces/expert-cqrs-hybrid-codex.yaml b/builtins/en/pieces/expert-cqrs-hybrid-codex.yaml index 3480ef8..f778285 100644 --- a/builtins/en/pieces/expert-cqrs-hybrid-codex.yaml +++ b/builtins/en/pieces/expert-cqrs-hybrid-codex.yaml @@ -61,8 +61,9 @@ movements: - condition: Requirements are unclear and planning cannot proceed next: ABORT output_contracts: - - name: 00-plan.md - format: plan + report: + - name: 00-plan.md + format: plan - name: implement edit: true persona: coder @@ -99,8 +100,9 @@ movements: requires_user_input: true interactive_only: true output_contracts: - - Scope: 01-coder-scope.md - - Decisions: 02-coder-decisions.md + report: + - Scope: 01-coder-scope.md + - Decisions: 02-coder-decisions.md - name: ai_review edit: false persona: ai-antipattern-reviewer @@ -120,8 +122,9 @@ movements: - condition: AI-specific issues detected next: ai_fix output_contracts: - - name: 03-ai-review.md - format: ai-review + report: + - name: 03-ai-review.md + format: ai-review - name: ai_fix edit: true persona: coder @@ -187,8 +190,9 @@ movements: - condition: needs_fix instruction: review-cqrs-es output_contracts: - - name: 04-cqrs-es-review.md - format: cqrs-es-review + report: + - name: 04-cqrs-es-review.md + format: cqrs-es-review - name: frontend-review edit: false persona: frontend-reviewer @@ -205,8 +209,9 @@ movements: - condition: needs_fix instruction: review-frontend output_contracts: - - name: 05-frontend-review.md - format: frontend-review + report: + - name: 05-frontend-review.md + format: frontend-review - name: security-review edit: false persona: security-reviewer @@ -223,8 +228,9 @@ movements: - condition: needs_fix instruction: review-security output_contracts: - - name: 06-security-review.md - format: security-review + report: + - name: 06-security-review.md + format: security-review - name: qa-review edit: false persona: qa-reviewer @@ -242,8 +248,9 @@ movements: - condition: needs_fix instruction: review-qa output_contracts: - - name: 07-qa-review.md - format: qa-review + report: + - name: 07-qa-review.md + format: qa-review rules: - condition: all("approved") next: supervise @@ -295,8 +302,9 @@ movements: - condition: Issues detected during final review next: fix_supervisor output_contracts: - - Validation: 08-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 08-supervisor-validation.md + - Summary: summary.md - name: fix_supervisor edit: true persona: coder diff --git a/builtins/en/pieces/expert-cqrs.yaml b/builtins/en/pieces/expert-cqrs.yaml index 20dc455..1bacccb 100644 --- a/builtins/en/pieces/expert-cqrs.yaml +++ b/builtins/en/pieces/expert-cqrs.yaml @@ -55,8 +55,9 @@ movements: - condition: Requirements are unclear and planning cannot proceed next: ABORT output_contracts: - - name: 00-plan.md - format: plan + report: + - name: 00-plan.md + format: plan - name: implement edit: true persona: coder @@ -92,8 +93,9 @@ movements: requires_user_input: true interactive_only: true output_contracts: - - Scope: 01-coder-scope.md - - Decisions: 02-coder-decisions.md + report: + - Scope: 01-coder-scope.md + - Decisions: 02-coder-decisions.md - name: ai_review edit: false persona: ai-antipattern-reviewer @@ -113,8 +115,9 @@ movements: - condition: AI-specific issues detected next: ai_fix output_contracts: - - name: 03-ai-review.md - format: ai-review + report: + - name: 03-ai-review.md + format: ai-review - name: ai_fix edit: true persona: coder @@ -179,8 +182,9 @@ movements: - condition: needs_fix instruction: review-cqrs-es output_contracts: - - name: 04-cqrs-es-review.md - format: cqrs-es-review + report: + - name: 04-cqrs-es-review.md + format: cqrs-es-review - name: frontend-review edit: false persona: frontend-reviewer @@ -197,8 +201,9 @@ movements: - condition: needs_fix instruction: review-frontend output_contracts: - - name: 05-frontend-review.md - format: frontend-review + report: + - name: 05-frontend-review.md + format: frontend-review - name: security-review edit: false persona: security-reviewer @@ -215,8 +220,9 @@ movements: - condition: needs_fix instruction: review-security output_contracts: - - name: 06-security-review.md - format: security-review + report: + - name: 06-security-review.md + format: security-review - name: qa-review edit: false persona: qa-reviewer @@ -234,8 +240,9 @@ movements: - condition: needs_fix instruction: review-qa output_contracts: - - name: 07-qa-review.md - format: qa-review + report: + - name: 07-qa-review.md + format: qa-review rules: - condition: all("approved") next: supervise @@ -286,8 +293,9 @@ movements: - condition: Issues detected during final review next: fix_supervisor output_contracts: - - Validation: 08-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 08-supervisor-validation.md + - Summary: summary.md - name: fix_supervisor edit: true persona: coder diff --git a/builtins/en/pieces/expert-hybrid-codex.yaml b/builtins/en/pieces/expert-hybrid-codex.yaml index eef6157..d04f76c 100644 --- a/builtins/en/pieces/expert-hybrid-codex.yaml +++ b/builtins/en/pieces/expert-hybrid-codex.yaml @@ -59,8 +59,9 @@ movements: - condition: Requirements are unclear and planning cannot proceed next: ABORT output_contracts: - - name: 00-plan.md - format: plan + report: + - name: 00-plan.md + format: plan - name: implement edit: true persona: coder @@ -96,8 +97,9 @@ movements: requires_user_input: true interactive_only: true output_contracts: - - Scope: 01-coder-scope.md - - Decisions: 02-coder-decisions.md + report: + - Scope: 01-coder-scope.md + - Decisions: 02-coder-decisions.md - name: ai_review edit: false persona: ai-antipattern-reviewer @@ -117,8 +119,9 @@ movements: - condition: AI-specific issues detected next: ai_fix output_contracts: - - name: 03-ai-review.md - format: ai-review + report: + - name: 03-ai-review.md + format: ai-review - name: ai_fix edit: true persona: coder @@ -183,8 +186,9 @@ movements: - condition: needs_fix instruction: review-arch output_contracts: - - name: 04-architect-review.md - format: architecture-review + report: + - name: 04-architect-review.md + format: architecture-review - name: frontend-review edit: false persona: frontend-reviewer @@ -201,8 +205,9 @@ movements: - condition: needs_fix instruction: review-frontend output_contracts: - - name: 05-frontend-review.md - format: frontend-review + report: + - name: 05-frontend-review.md + format: frontend-review - name: security-review edit: false persona: security-reviewer @@ -219,8 +224,9 @@ movements: - condition: needs_fix instruction: review-security output_contracts: - - name: 06-security-review.md - format: security-review + report: + - name: 06-security-review.md + format: security-review - name: qa-review edit: false persona: qa-reviewer @@ -238,8 +244,9 @@ movements: - condition: needs_fix instruction: review-qa output_contracts: - - name: 07-qa-review.md - format: qa-review + report: + - name: 07-qa-review.md + format: qa-review rules: - condition: all("approved") next: supervise @@ -290,8 +297,9 @@ movements: - condition: Issues detected during final review next: fix_supervisor output_contracts: - - Validation: 08-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 08-supervisor-validation.md + - Summary: summary.md - name: fix_supervisor edit: true persona: coder diff --git a/builtins/en/pieces/expert.yaml b/builtins/en/pieces/expert.yaml index 7746af8..f99e71f 100644 --- a/builtins/en/pieces/expert.yaml +++ b/builtins/en/pieces/expert.yaml @@ -53,8 +53,9 @@ movements: - condition: Requirements are unclear and planning cannot proceed next: ABORT output_contracts: - - name: 00-plan.md - format: plan + report: + - name: 00-plan.md + format: plan - name: implement edit: true persona: coder @@ -89,8 +90,9 @@ movements: requires_user_input: true interactive_only: true output_contracts: - - Scope: 01-coder-scope.md - - Decisions: 02-coder-decisions.md + report: + - Scope: 01-coder-scope.md + - Decisions: 02-coder-decisions.md - name: ai_review edit: false persona: ai-antipattern-reviewer @@ -110,8 +112,9 @@ movements: - condition: AI-specific issues detected next: ai_fix output_contracts: - - name: 03-ai-review.md - format: ai-review + report: + - name: 03-ai-review.md + format: ai-review - name: ai_fix edit: true persona: coder @@ -175,8 +178,9 @@ movements: - condition: needs_fix instruction: review-arch output_contracts: - - name: 04-architect-review.md - format: architecture-review + report: + - name: 04-architect-review.md + format: architecture-review - name: frontend-review edit: false persona: frontend-reviewer @@ -193,8 +197,9 @@ movements: - condition: needs_fix instruction: review-frontend output_contracts: - - name: 05-frontend-review.md - format: frontend-review + report: + - name: 05-frontend-review.md + format: frontend-review - name: security-review edit: false persona: security-reviewer @@ -211,8 +216,9 @@ movements: - condition: needs_fix instruction: review-security output_contracts: - - name: 06-security-review.md - format: security-review + report: + - name: 06-security-review.md + format: security-review - name: qa-review edit: false persona: qa-reviewer @@ -230,8 +236,9 @@ movements: - condition: needs_fix instruction: review-qa output_contracts: - - name: 07-qa-review.md - format: qa-review + report: + - name: 07-qa-review.md + format: qa-review rules: - condition: all("approved") next: supervise @@ -281,8 +288,9 @@ movements: - condition: Issues detected during final review next: fix_supervisor output_contracts: - - Validation: 08-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 08-supervisor-validation.md + - Summary: summary.md - name: fix_supervisor edit: true persona: coder diff --git a/builtins/en/pieces/minimal-hybrid-codex.yaml b/builtins/en/pieces/minimal-hybrid-codex.yaml index 1340d1d..ace4007 100644 --- a/builtins/en/pieces/minimal-hybrid-codex.yaml +++ b/builtins/en/pieces/minimal-hybrid-codex.yaml @@ -46,8 +46,9 @@ movements: requires_user_input: true interactive_only: true output_contracts: - - Scope: 01-coder-scope.md - - Decisions: 02-coder-decisions.md + report: + - Scope: 01-coder-scope.md + - Decisions: 02-coder-decisions.md - name: reviewers parallel: - name: ai_review @@ -67,8 +68,9 @@ movements: - condition: No AI-specific issues - condition: AI-specific issues found output_contracts: - - name: 03-ai-review.md - format: ai-review + report: + - name: 03-ai-review.md + format: ai-review - name: supervise edit: false persona: supervisor @@ -85,8 +87,9 @@ movements: - condition: All checks passed - condition: Requirements unmet, tests failing output_contracts: - - Validation: 05-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 05-supervisor-validation.md + - Summary: summary.md rules: - condition: all("No AI-specific issues", "All checks passed") next: COMPLETE diff --git a/builtins/en/pieces/minimal.yaml b/builtins/en/pieces/minimal.yaml index 9ecac17..56c9f5b 100644 --- a/builtins/en/pieces/minimal.yaml +++ b/builtins/en/pieces/minimal.yaml @@ -45,8 +45,9 @@ movements: requires_user_input: true interactive_only: true output_contracts: - - Scope: 01-coder-scope.md - - Decisions: 02-coder-decisions.md + report: + - Scope: 01-coder-scope.md + - Decisions: 02-coder-decisions.md - name: reviewers parallel: - name: ai_review @@ -66,8 +67,9 @@ movements: - condition: No AI-specific issues - condition: AI-specific issues found output_contracts: - - name: 03-ai-review.md - format: ai-review + report: + - name: 03-ai-review.md + format: ai-review - name: supervise edit: false persona: supervisor @@ -84,8 +86,9 @@ movements: - condition: All checks passed - condition: Requirements unmet, tests failing output_contracts: - - Validation: 05-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 05-supervisor-validation.md + - Summary: summary.md rules: - condition: all("No AI-specific issues", "All checks passed") next: COMPLETE diff --git a/builtins/en/pieces/passthrough-hybrid-codex.yaml b/builtins/en/pieces/passthrough-hybrid-codex.yaml index bb10313..ac1f20a 100644 --- a/builtins/en/pieces/passthrough-hybrid-codex.yaml +++ b/builtins/en/pieces/passthrough-hybrid-codex.yaml @@ -37,7 +37,8 @@ movements: instruction_template: | Do the task. output_contracts: - - Summary: summary.md + report: + - Summary: summary.md policies: coding: ../policies/coding.md testing: ../policies/testing.md diff --git a/builtins/en/pieces/passthrough.yaml b/builtins/en/pieces/passthrough.yaml index fe58691..fba61cd 100644 --- a/builtins/en/pieces/passthrough.yaml +++ b/builtins/en/pieces/passthrough.yaml @@ -36,4 +36,5 @@ movements: instruction_template: | Do the task. output_contracts: - - Summary: summary.md + report: + - Summary: summary.md diff --git a/builtins/en/pieces/review-fix-minimal-hybrid-codex.yaml b/builtins/en/pieces/review-fix-minimal-hybrid-codex.yaml index 7cdcced..291fe0e 100644 --- a/builtins/en/pieces/review-fix-minimal-hybrid-codex.yaml +++ b/builtins/en/pieces/review-fix-minimal-hybrid-codex.yaml @@ -46,8 +46,9 @@ movements: requires_user_input: true interactive_only: true output_contracts: - - Scope: 01-coder-scope.md - - Decisions: 02-coder-decisions.md + report: + - Scope: 01-coder-scope.md + - Decisions: 02-coder-decisions.md - name: reviewers parallel: - name: ai_review @@ -67,8 +68,9 @@ movements: - condition: No AI-specific issues - condition: AI-specific issues found output_contracts: - - name: 03-ai-review.md - format: ai-review + report: + - name: 03-ai-review.md + format: ai-review - name: supervise edit: false persona: supervisor @@ -85,8 +87,9 @@ movements: - condition: All checks passed - condition: Requirements unmet, tests failing output_contracts: - - Validation: 05-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 05-supervisor-validation.md + - Summary: summary.md rules: - condition: all("No AI-specific issues", "All checks passed") next: COMPLETE diff --git a/builtins/en/pieces/review-fix-minimal.yaml b/builtins/en/pieces/review-fix-minimal.yaml index 0ec543b..d942be9 100644 --- a/builtins/en/pieces/review-fix-minimal.yaml +++ b/builtins/en/pieces/review-fix-minimal.yaml @@ -45,8 +45,9 @@ movements: requires_user_input: true interactive_only: true output_contracts: - - Scope: 01-coder-scope.md - - Decisions: 02-coder-decisions.md + report: + - Scope: 01-coder-scope.md + - Decisions: 02-coder-decisions.md - name: reviewers parallel: - name: ai_review @@ -66,8 +67,9 @@ movements: - condition: No AI-specific issues - condition: AI-specific issues found output_contracts: - - name: 03-ai-review.md - format: ai-review + report: + - name: 03-ai-review.md + format: ai-review - name: supervise edit: false persona: supervisor @@ -84,8 +86,9 @@ movements: - condition: All checks passed - condition: Requirements unmet, tests failing output_contracts: - - Validation: 05-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 05-supervisor-validation.md + - Summary: summary.md rules: - condition: all("No AI-specific issues", "All checks passed") next: COMPLETE diff --git a/builtins/en/pieces/review-only.yaml b/builtins/en/pieces/review-only.yaml index 33866cf..f547f95 100644 --- a/builtins/en/pieces/review-only.yaml +++ b/builtins/en/pieces/review-only.yaml @@ -72,8 +72,9 @@ movements: - condition: needs_fix instruction: review-arch output_contracts: - - name: 01-architect-review.md - format: architecture-review + report: + - name: 01-architect-review.md + format: architecture-review - name: security-review edit: false persona: security-reviewer @@ -90,8 +91,9 @@ movements: - condition: needs_fix instruction: review-security output_contracts: - - name: 02-security-review.md - format: security-review + report: + - name: 02-security-review.md + format: security-review - name: ai-review edit: false persona: ai-antipattern-reviewer @@ -109,8 +111,9 @@ movements: - condition: needs_fix instruction: review-ai output_contracts: - - name: 03-ai-review.md - format: ai-review + report: + - name: 03-ai-review.md + format: ai-review rules: - condition: all("approved") next: supervise @@ -175,7 +178,8 @@ movements: - {Consolidated suggestions from all reviews} ``` output_contracts: - - Review Summary: 04-review-summary.md + report: + - Review Summary: 04-review-summary.md - name: pr-comment edit: false persona: pr-commenter diff --git a/builtins/en/policies/ai-antipattern.md b/builtins/en/policies/ai-antipattern.md index 7252593..f943fce 100644 --- a/builtins/en/policies/ai-antipattern.md +++ b/builtins/en/policies/ai-antipattern.md @@ -156,7 +156,6 @@ AI tends to generate unnecessary code for "future extensibility", "symmetry", or | REJECT | Interfaces or options prepared for future extension | | REJECT | Exported but no usage found via grep | | OK | Implicitly called by framework (lifecycle hooks, etc.) | -| OK | Intentionally exposed as public package API | Verification approach: 1. Grep to confirm no references to changed/deleted code remain diff --git a/builtins/ja/pieces/coding-hybrid-codex.yaml b/builtins/ja/pieces/coding-hybrid-codex.yaml index 1b8d237..cc268be 100644 --- a/builtins/ja/pieces/coding-hybrid-codex.yaml +++ b/builtins/ja/pieces/coding-hybrid-codex.yaml @@ -42,8 +42,9 @@ movements: next: ABORT instruction: plan output_contracts: - - name: 00-plan.md - format: plan + report: + - name: 00-plan.md + format: plan - name: implement edit: true persona: coder @@ -76,8 +77,9 @@ movements: interactive_only: true instruction: implement output_contracts: - - Scope: 02-coder-scope.md - - Decisions: 03-coder-decisions.md + report: + - Scope: 02-coder-scope.md + - Decisions: 03-coder-decisions.md - name: reviewers parallel: - name: ai_review @@ -97,8 +99,9 @@ movements: - condition: AI特有の問題あり instruction: ai-review output_contracts: - - name: 04-ai-review.md - format: ai-review + report: + - name: 04-ai-review.md + format: ai-review - name: arch-review edit: false persona: architecture-reviewer @@ -115,8 +118,9 @@ movements: - condition: needs_fix instruction: review-arch output_contracts: - - name: 05-architect-review.md - format: architecture-review + report: + - name: 05-architect-review.md + format: architecture-review rules: - condition: all("AI特有の問題なし", "approved") next: COMPLETE diff --git a/builtins/ja/pieces/coding.yaml b/builtins/ja/pieces/coding.yaml index 5973141..b8bd33d 100644 --- a/builtins/ja/pieces/coding.yaml +++ b/builtins/ja/pieces/coding.yaml @@ -40,8 +40,9 @@ movements: next: ABORT instruction: plan output_contracts: - - name: 00-plan.md - format: plan + report: + - name: 00-plan.md + format: plan - name: implement edit: true persona: coder @@ -73,8 +74,9 @@ movements: interactive_only: true instruction: implement output_contracts: - - Scope: 02-coder-scope.md - - Decisions: 03-coder-decisions.md + report: + - Scope: 02-coder-scope.md + - Decisions: 03-coder-decisions.md - name: reviewers parallel: - name: ai_review @@ -94,8 +96,9 @@ movements: - condition: AI特有の問題あり instruction: ai-review output_contracts: - - name: 04-ai-review.md - format: ai-review + report: + - name: 04-ai-review.md + format: ai-review - name: arch-review edit: false persona: architecture-reviewer @@ -112,8 +115,9 @@ movements: - condition: needs_fix instruction: review-arch output_contracts: - - name: 05-architect-review.md - format: architecture-review + report: + - name: 05-architect-review.md + format: architecture-review rules: - condition: all("AI特有の問題なし", "approved") next: COMPLETE diff --git a/builtins/ja/pieces/default-hybrid-codex.yaml b/builtins/ja/pieces/default-hybrid-codex.yaml index a9749c8..291b330 100644 --- a/builtins/ja/pieces/default-hybrid-codex.yaml +++ b/builtins/ja/pieces/default-hybrid-codex.yaml @@ -84,8 +84,9 @@ movements: - {質問2} instruction: plan output_contracts: - - name: 00-plan.md - format: plan + report: + - name: 00-plan.md + format: plan - name: architect edit: false persona: architect-planner @@ -104,8 +105,9 @@ movements: next: ABORT instruction: architect output_contracts: - - name: 01-architecture.md - format: architecture-design + report: + - name: 01-architecture.md + format: architecture-design - name: implement edit: true persona: coder @@ -140,8 +142,9 @@ movements: interactive_only: true instruction: implement output_contracts: - - Scope: 02-coder-scope.md - - Decisions: 03-coder-decisions.md + report: + - Scope: 02-coder-scope.md + - Decisions: 03-coder-decisions.md - name: ai_review edit: false persona: ai-antipattern-reviewer @@ -161,8 +164,9 @@ movements: next: ai_fix instruction: ai-review output_contracts: - - name: 04-ai-review.md - format: ai-review + report: + - name: 04-ai-review.md + format: ai-review - name: ai_fix edit: true persona: coder @@ -226,8 +230,9 @@ movements: - condition: needs_fix instruction: review-arch output_contracts: - - name: 05-architect-review.md - format: architecture-review + report: + - name: 05-architect-review.md + format: architecture-review - name: qa-review edit: false persona: qa-reviewer @@ -245,8 +250,9 @@ movements: - condition: needs_fix instruction: review-qa output_contracts: - - name: 06-qa-review.md - format: qa-review + report: + - name: 06-qa-review.md + format: qa-review rules: - condition: all("approved") next: supervise @@ -296,8 +302,9 @@ movements: next: plan instruction: supervise output_contracts: - - Validation: 07-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 07-supervisor-validation.md + - Summary: summary.md policies: coding: ../policies/coding.md review: ../policies/review.md diff --git a/builtins/ja/pieces/default.yaml b/builtins/ja/pieces/default.yaml index d2a133c..496d4f1 100644 --- a/builtins/ja/pieces/default.yaml +++ b/builtins/ja/pieces/default.yaml @@ -79,8 +79,9 @@ movements: - {質問2} instruction: plan output_contracts: - - name: 00-plan.md - format: plan + report: + - name: 00-plan.md + format: plan - name: architect edit: false persona: architect-planner @@ -99,8 +100,9 @@ movements: next: ABORT instruction: architect output_contracts: - - name: 01-architecture.md - format: architecture-design + report: + - name: 01-architecture.md + format: architecture-design - name: implement edit: true persona: coder @@ -134,8 +136,9 @@ movements: interactive_only: true instruction: implement output_contracts: - - Scope: 02-coder-scope.md - - Decisions: 03-coder-decisions.md + report: + - Scope: 02-coder-scope.md + - Decisions: 03-coder-decisions.md - name: ai_review edit: false persona: ai-antipattern-reviewer @@ -155,8 +158,9 @@ movements: next: ai_fix instruction: ai-review output_contracts: - - name: 04-ai-review.md - format: ai-review + report: + - name: 04-ai-review.md + format: ai-review - name: ai_fix edit: true persona: coder @@ -219,8 +223,9 @@ movements: - condition: needs_fix instruction: review-arch output_contracts: - - name: 05-architect-review.md - format: architecture-review + report: + - name: 05-architect-review.md + format: architecture-review - name: qa-review edit: false persona: qa-reviewer @@ -238,8 +243,9 @@ movements: - condition: needs_fix instruction: review-qa output_contracts: - - name: 06-qa-review.md - format: qa-review + report: + - name: 06-qa-review.md + format: qa-review rules: - condition: all("approved") next: supervise @@ -288,8 +294,9 @@ movements: next: plan instruction: supervise output_contracts: - - Validation: 07-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 07-supervisor-validation.md + - Summary: summary.md report_formats: plan: ../output-contracts/plan.md architecture-design: ../output-contracts/architecture-design.md diff --git a/builtins/ja/pieces/expert-cqrs-hybrid-codex.yaml b/builtins/ja/pieces/expert-cqrs-hybrid-codex.yaml index f52fe68..ae78e99 100644 --- a/builtins/ja/pieces/expert-cqrs-hybrid-codex.yaml +++ b/builtins/ja/pieces/expert-cqrs-hybrid-codex.yaml @@ -61,8 +61,9 @@ movements: - condition: 要件が不明確で計画を立てられない next: ABORT output_contracts: - - name: 00-plan.md - format: plan + report: + - name: 00-plan.md + format: plan - name: implement edit: true persona: coder @@ -99,8 +100,9 @@ movements: requires_user_input: true interactive_only: true output_contracts: - - Scope: 01-coder-scope.md - - Decisions: 02-coder-decisions.md + report: + - Scope: 01-coder-scope.md + - Decisions: 02-coder-decisions.md - name: ai_review edit: false persona: ai-antipattern-reviewer @@ -120,8 +122,9 @@ movements: - condition: AI特有の問題が検出された next: ai_fix output_contracts: - - name: 03-ai-review.md - format: ai-review + report: + - name: 03-ai-review.md + format: ai-review - name: ai_fix edit: true persona: coder @@ -187,8 +190,9 @@ movements: - condition: needs_fix instruction: review-cqrs-es output_contracts: - - name: 04-cqrs-es-review.md - format: cqrs-es-review + report: + - name: 04-cqrs-es-review.md + format: cqrs-es-review - name: frontend-review edit: false persona: frontend-reviewer @@ -205,8 +209,9 @@ movements: - condition: needs_fix instruction: review-frontend output_contracts: - - name: 05-frontend-review.md - format: frontend-review + report: + - name: 05-frontend-review.md + format: frontend-review - name: security-review edit: false persona: security-reviewer @@ -223,8 +228,9 @@ movements: - condition: needs_fix instruction: review-security output_contracts: - - name: 06-security-review.md - format: security-review + report: + - name: 06-security-review.md + format: security-review - name: qa-review edit: false persona: qa-reviewer @@ -242,8 +248,9 @@ movements: - condition: needs_fix instruction: review-qa output_contracts: - - name: 07-qa-review.md - format: qa-review + report: + - name: 07-qa-review.md + format: qa-review rules: - condition: all("approved") next: supervise @@ -295,8 +302,9 @@ movements: - condition: 問題が検出された next: fix_supervisor output_contracts: - - Validation: 08-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 08-supervisor-validation.md + - Summary: summary.md - name: fix_supervisor edit: true persona: coder diff --git a/builtins/ja/pieces/expert-cqrs.yaml b/builtins/ja/pieces/expert-cqrs.yaml index cbc2697..130f81c 100644 --- a/builtins/ja/pieces/expert-cqrs.yaml +++ b/builtins/ja/pieces/expert-cqrs.yaml @@ -55,8 +55,9 @@ movements: - condition: 要件が不明確で計画を立てられない next: ABORT output_contracts: - - name: 00-plan.md - format: plan + report: + - name: 00-plan.md + format: plan - name: implement edit: true persona: coder @@ -92,8 +93,9 @@ movements: requires_user_input: true interactive_only: true output_contracts: - - Scope: 01-coder-scope.md - - Decisions: 02-coder-decisions.md + report: + - Scope: 01-coder-scope.md + - Decisions: 02-coder-decisions.md - name: ai_review edit: false persona: ai-antipattern-reviewer @@ -113,8 +115,9 @@ movements: - condition: AI特有の問題が検出された next: ai_fix output_contracts: - - name: 03-ai-review.md - format: ai-review + report: + - name: 03-ai-review.md + format: ai-review - name: ai_fix edit: true persona: coder @@ -179,8 +182,9 @@ movements: - condition: needs_fix instruction: review-cqrs-es output_contracts: - - name: 04-cqrs-es-review.md - format: cqrs-es-review + report: + - name: 04-cqrs-es-review.md + format: cqrs-es-review - name: frontend-review edit: false persona: frontend-reviewer @@ -197,8 +201,9 @@ movements: - condition: needs_fix instruction: review-frontend output_contracts: - - name: 05-frontend-review.md - format: frontend-review + report: + - name: 05-frontend-review.md + format: frontend-review - name: security-review edit: false persona: security-reviewer @@ -215,8 +220,9 @@ movements: - condition: needs_fix instruction: review-security output_contracts: - - name: 06-security-review.md - format: security-review + report: + - name: 06-security-review.md + format: security-review - name: qa-review edit: false persona: qa-reviewer @@ -234,8 +240,9 @@ movements: - condition: needs_fix instruction: review-qa output_contracts: - - name: 07-qa-review.md - format: qa-review + report: + - name: 07-qa-review.md + format: qa-review rules: - condition: all("approved") next: supervise @@ -286,8 +293,9 @@ movements: - condition: 問題が検出された next: fix_supervisor output_contracts: - - Validation: 08-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 08-supervisor-validation.md + - Summary: summary.md - name: fix_supervisor edit: true persona: coder diff --git a/builtins/ja/pieces/expert-hybrid-codex.yaml b/builtins/ja/pieces/expert-hybrid-codex.yaml index 7010391..3ed7a70 100644 --- a/builtins/ja/pieces/expert-hybrid-codex.yaml +++ b/builtins/ja/pieces/expert-hybrid-codex.yaml @@ -59,8 +59,9 @@ movements: - condition: 要件が不明確で計画を立てられない next: ABORT output_contracts: - - name: 00-plan.md - format: plan + report: + - name: 00-plan.md + format: plan - name: implement edit: true persona: coder @@ -96,8 +97,9 @@ movements: requires_user_input: true interactive_only: true output_contracts: - - Scope: 01-coder-scope.md - - Decisions: 02-coder-decisions.md + report: + - Scope: 01-coder-scope.md + - Decisions: 02-coder-decisions.md - name: ai_review edit: false persona: ai-antipattern-reviewer @@ -117,8 +119,9 @@ movements: - condition: AI特有の問題が検出された next: ai_fix output_contracts: - - name: 03-ai-review.md - format: ai-review + report: + - name: 03-ai-review.md + format: ai-review - name: ai_fix edit: true persona: coder @@ -183,8 +186,9 @@ movements: - condition: needs_fix instruction: review-arch output_contracts: - - name: 04-architect-review.md - format: architecture-review + report: + - name: 04-architect-review.md + format: architecture-review - name: frontend-review edit: false persona: frontend-reviewer @@ -201,8 +205,9 @@ movements: - condition: needs_fix instruction: review-frontend output_contracts: - - name: 05-frontend-review.md - format: frontend-review + report: + - name: 05-frontend-review.md + format: frontend-review - name: security-review edit: false persona: security-reviewer @@ -219,8 +224,9 @@ movements: - condition: needs_fix instruction: review-security output_contracts: - - name: 06-security-review.md - format: security-review + report: + - name: 06-security-review.md + format: security-review - name: qa-review edit: false persona: qa-reviewer @@ -238,8 +244,9 @@ movements: - condition: needs_fix instruction: review-qa output_contracts: - - name: 07-qa-review.md - format: qa-review + report: + - name: 07-qa-review.md + format: qa-review rules: - condition: all("approved") next: supervise @@ -290,8 +297,9 @@ movements: - condition: 問題が検出された next: fix_supervisor output_contracts: - - Validation: 08-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 08-supervisor-validation.md + - Summary: summary.md - name: fix_supervisor edit: true persona: coder diff --git a/builtins/ja/pieces/expert.yaml b/builtins/ja/pieces/expert.yaml index 234e8f0..ae8ffa8 100644 --- a/builtins/ja/pieces/expert.yaml +++ b/builtins/ja/pieces/expert.yaml @@ -53,8 +53,9 @@ movements: - condition: 要件が不明確で計画を立てられない next: ABORT output_contracts: - - name: 00-plan.md - format: plan + report: + - name: 00-plan.md + format: plan - name: implement edit: true persona: coder @@ -89,8 +90,9 @@ movements: requires_user_input: true interactive_only: true output_contracts: - - Scope: 01-coder-scope.md - - Decisions: 02-coder-decisions.md + report: + - Scope: 01-coder-scope.md + - Decisions: 02-coder-decisions.md - name: ai_review edit: false persona: ai-antipattern-reviewer @@ -110,8 +112,9 @@ movements: - condition: AI特有の問題が検出された next: ai_fix output_contracts: - - name: 03-ai-review.md - format: ai-review + report: + - name: 03-ai-review.md + format: ai-review - name: ai_fix edit: true persona: coder @@ -175,8 +178,9 @@ movements: - condition: needs_fix instruction: review-arch output_contracts: - - name: 04-architect-review.md - format: architecture-review + report: + - name: 04-architect-review.md + format: architecture-review - name: frontend-review edit: false persona: frontend-reviewer @@ -193,8 +197,9 @@ movements: - condition: needs_fix instruction: review-frontend output_contracts: - - name: 05-frontend-review.md - format: frontend-review + report: + - name: 05-frontend-review.md + format: frontend-review - name: security-review edit: false persona: security-reviewer @@ -211,8 +216,9 @@ movements: - condition: needs_fix instruction: review-security output_contracts: - - name: 06-security-review.md - format: security-review + report: + - name: 06-security-review.md + format: security-review - name: qa-review edit: false persona: qa-reviewer @@ -230,8 +236,9 @@ movements: - condition: needs_fix instruction: review-qa output_contracts: - - name: 07-qa-review.md - format: qa-review + report: + - name: 07-qa-review.md + format: qa-review rules: - condition: all("approved") next: supervise @@ -281,8 +288,9 @@ movements: - condition: 問題が検出された next: fix_supervisor output_contracts: - - Validation: 08-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 08-supervisor-validation.md + - Summary: summary.md - name: fix_supervisor edit: true persona: coder diff --git a/builtins/ja/pieces/minimal-hybrid-codex.yaml b/builtins/ja/pieces/minimal-hybrid-codex.yaml index 6f6146f..aaa011a 100644 --- a/builtins/ja/pieces/minimal-hybrid-codex.yaml +++ b/builtins/ja/pieces/minimal-hybrid-codex.yaml @@ -46,8 +46,9 @@ movements: requires_user_input: true interactive_only: true output_contracts: - - Scope: 01-coder-scope.md - - Decisions: 02-coder-decisions.md + report: + - Scope: 01-coder-scope.md + - Decisions: 02-coder-decisions.md - name: reviewers parallel: - name: ai_review @@ -67,8 +68,9 @@ movements: - condition: AI特有の問題なし - condition: AI特有の問題あり output_contracts: - - name: 03-ai-review.md - format: ai-review + report: + - name: 03-ai-review.md + format: ai-review - name: supervise edit: false persona: supervisor @@ -85,8 +87,9 @@ movements: - condition: すべて問題なし - condition: 要求未達成、テスト失敗、ビルドエラー output_contracts: - - Validation: 05-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 05-supervisor-validation.md + - Summary: summary.md rules: - condition: all("AI特有の問題なし", "すべて問題なし") next: COMPLETE diff --git a/builtins/ja/pieces/minimal.yaml b/builtins/ja/pieces/minimal.yaml index 5e73cbb..a0bfb8d 100644 --- a/builtins/ja/pieces/minimal.yaml +++ b/builtins/ja/pieces/minimal.yaml @@ -45,8 +45,9 @@ movements: requires_user_input: true interactive_only: true output_contracts: - - Scope: 01-coder-scope.md - - Decisions: 02-coder-decisions.md + report: + - Scope: 01-coder-scope.md + - Decisions: 02-coder-decisions.md - name: reviewers parallel: - name: ai_review @@ -66,8 +67,9 @@ movements: - condition: AI特有の問題なし - condition: AI特有の問題あり output_contracts: - - name: 03-ai-review.md - format: ai-review + report: + - name: 03-ai-review.md + format: ai-review - name: supervise edit: false persona: supervisor @@ -84,8 +86,9 @@ movements: - condition: すべて問題なし - condition: 要求未達成、テスト失敗、ビルドエラー output_contracts: - - Validation: 05-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 05-supervisor-validation.md + - Summary: summary.md rules: - condition: all("AI特有の問題なし", "すべて問題なし") next: COMPLETE diff --git a/builtins/ja/pieces/passthrough-hybrid-codex.yaml b/builtins/ja/pieces/passthrough-hybrid-codex.yaml index f6ef8a1..8ebc7ac 100644 --- a/builtins/ja/pieces/passthrough-hybrid-codex.yaml +++ b/builtins/ja/pieces/passthrough-hybrid-codex.yaml @@ -37,7 +37,8 @@ movements: instruction_template: | タスクをこなしてください。 output_contracts: - - Summary: summary.md + report: + - Summary: summary.md policies: coding: ../policies/coding.md testing: ../policies/testing.md diff --git a/builtins/ja/pieces/passthrough.yaml b/builtins/ja/pieces/passthrough.yaml index e4a7d64..1409cba 100644 --- a/builtins/ja/pieces/passthrough.yaml +++ b/builtins/ja/pieces/passthrough.yaml @@ -36,4 +36,5 @@ movements: instruction_template: | タスクをこなしてください。 output_contracts: - - Summary: summary.md + report: + - Summary: summary.md diff --git a/builtins/ja/pieces/review-fix-minimal-hybrid-codex.yaml b/builtins/ja/pieces/review-fix-minimal-hybrid-codex.yaml index 5a0bd60..3cb2f1a 100644 --- a/builtins/ja/pieces/review-fix-minimal-hybrid-codex.yaml +++ b/builtins/ja/pieces/review-fix-minimal-hybrid-codex.yaml @@ -46,8 +46,9 @@ movements: requires_user_input: true interactive_only: true output_contracts: - - Scope: 01-coder-scope.md - - Decisions: 02-coder-decisions.md + report: + - Scope: 01-coder-scope.md + - Decisions: 02-coder-decisions.md - name: reviewers parallel: - name: ai_review @@ -67,8 +68,9 @@ movements: - condition: AI特有の問題なし - condition: AI特有の問題あり output_contracts: - - name: 03-ai-review.md - format: ai-review + report: + - name: 03-ai-review.md + format: ai-review - name: supervise edit: false persona: supervisor @@ -85,8 +87,9 @@ movements: - condition: すべて問題なし - condition: 要求未達成、テスト失敗、ビルドエラー output_contracts: - - Validation: 05-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 05-supervisor-validation.md + - Summary: summary.md rules: - condition: all("AI特有の問題なし", "すべて問題なし") next: COMPLETE diff --git a/builtins/ja/pieces/review-fix-minimal.yaml b/builtins/ja/pieces/review-fix-minimal.yaml index 15e18c9..0c29773 100644 --- a/builtins/ja/pieces/review-fix-minimal.yaml +++ b/builtins/ja/pieces/review-fix-minimal.yaml @@ -45,8 +45,9 @@ movements: requires_user_input: true interactive_only: true output_contracts: - - Scope: 01-coder-scope.md - - Decisions: 02-coder-decisions.md + report: + - Scope: 01-coder-scope.md + - Decisions: 02-coder-decisions.md - name: reviewers parallel: - name: ai_review @@ -66,8 +67,9 @@ movements: - condition: AI特有の問題なし - condition: AI特有の問題あり output_contracts: - - name: 03-ai-review.md - format: ai-review + report: + - name: 03-ai-review.md + format: ai-review - name: supervise edit: false persona: supervisor @@ -84,8 +86,9 @@ movements: - condition: すべて問題なし - condition: 要求未達成、テスト失敗、ビルドエラー output_contracts: - - Validation: 05-supervisor-validation.md - - Summary: summary.md + report: + - Validation: 05-supervisor-validation.md + - Summary: summary.md rules: - condition: all("AI特有の問題なし", "すべて問題なし") next: COMPLETE diff --git a/builtins/ja/pieces/review-only.yaml b/builtins/ja/pieces/review-only.yaml index 3d9ade4..4075da0 100644 --- a/builtins/ja/pieces/review-only.yaml +++ b/builtins/ja/pieces/review-only.yaml @@ -72,8 +72,9 @@ movements: - condition: needs_fix instruction: review-arch output_contracts: - - name: 01-architect-review.md - format: architecture-review + report: + - name: 01-architect-review.md + format: architecture-review - name: security-review edit: false persona: security-reviewer @@ -90,8 +91,9 @@ movements: - condition: needs_fix instruction: review-security output_contracts: - - name: 02-security-review.md - format: security-review + report: + - name: 02-security-review.md + format: security-review - name: ai-review edit: false persona: ai-antipattern-reviewer @@ -109,8 +111,9 @@ movements: - condition: needs_fix instruction: review-ai output_contracts: - - name: 03-ai-review.md - format: ai-review + report: + - name: 03-ai-review.md + format: ai-review rules: - condition: all("approved") next: supervise @@ -176,7 +179,8 @@ movements: - {全レビューからの統合提案} ``` output_contracts: - - Review Summary: 04-review-summary.md + report: + - Review Summary: 04-review-summary.md - name: pr-comment edit: false persona: pr-commenter diff --git a/builtins/ja/policies/ai-antipattern.md b/builtins/ja/policies/ai-antipattern.md index 1c0ce3e..85f0618 100644 --- a/builtins/ja/policies/ai-antipattern.md +++ b/builtins/ja/policies/ai-antipattern.md @@ -156,7 +156,6 @@ AIは「将来の拡張性」「対称性」「念のため」で不要なコー | REJECT | 将来の拡張のために用意されたインターフェースやオプション | | REJECT | exportされているが、grep で使用箇所が見つからない | | OK | フレームワークが暗黙的に呼び出す(ライフサイクルフック等) | -| OK | 公開パッケージのAPIとして意図的に公開している | 検証アプローチ: 1. 変更・削除されたコードを参照している箇所がないか grep で確認 diff --git a/builtins/skill/references/yaml-schema.md b/builtins/skill/references/yaml-schema.md index af06e6e..250c5d7 100644 --- a/builtins/skill/references/yaml-schema.md +++ b/builtins/skill/references/yaml-schema.md @@ -76,8 +76,9 @@ movement 内では**キー名**で参照する(パスを直接書かない) edit: false instruction: review-arch output_contracts: - - name: 05-architect-review.md - format: architecture-review + report: + - name: 05-architect-review.md + format: architecture-review rules: - condition: "approved" - condition: "needs_fix" @@ -132,14 +133,15 @@ rules: ## Output Contracts 定義 -Movement の出力契約(レポート定義)。配列形式で指定する。 +Movement の出力契約(レポート定義)。`output_contracts.report` 配列形式で指定する。 ### 形式1: name + format(フォーマット参照) ```yaml output_contracts: - - name: 01-plan.md - format: plan # report_formats マップのキーを参照 + report: + - name: 01-plan.md + format: plan # report_formats マップのキーを参照 ``` `format` がキー文字列の場合、トップレベル `report_formats:` セクションから対応する .md ファイルを読み込み、出力契約指示として使用する。 @@ -148,20 +150,22 @@ output_contracts: ```yaml output_contracts: - - name: 01-plan.md - format: | # インラインでフォーマットを記述 - # レポートタイトル - ## セクション - {内容} + report: + - name: 01-plan.md + format: | # インラインでフォーマットを記述 + # レポートタイトル + ## セクション + {内容} ``` ### 形式2: label + path(ラベル付きパス) ```yaml output_contracts: - - Summary: summary.md - - Scope: 01-scope.md - - Decisions: 02-decisions.md + report: + - Summary: summary.md + - Scope: 01-scope.md + - Decisions: 02-decisions.md ``` 各要素のキーがレポート種別名(ラベル)、値がファイル名。 diff --git a/docs/faceted-prompting.ja.md b/docs/faceted-prompting.ja.md index 455801a..50014b8 100644 --- a/docs/faceted-prompting.ja.md +++ b/docs/faceted-prompting.ja.md @@ -370,8 +370,9 @@ movements: instruction: review # 異なる WHAT(共有も可能) knowledge: architecture # 同じ CONTEXT — 再利用 output_contracts: - - name: review.md - format: review # OUTPUT — report_formats.review を参照 + report: + - name: review.md + format: review # OUTPUT — report_formats.review を参照 edit: false rules: - condition: Approved diff --git a/docs/faceted-prompting.md b/docs/faceted-prompting.md index 3fa4609..e5e9f1a 100644 --- a/docs/faceted-prompting.md +++ b/docs/faceted-prompting.md @@ -369,9 +369,10 @@ movements: policy: review # Different RULES instruction: review # Different WHAT (but could share) knowledge: architecture # Same CONTEXT — reused - report: - name: review.md - format: review # OUTPUT — references output_contracts.review + output_contracts: + report: + - name: review.md + format: review # OUTPUT — references report_formats.review edit: false rules: - condition: Approved diff --git a/src/__tests__/policy-persona.test.ts b/src/__tests__/policy-persona.test.ts index 5cc9680..33a6236 100644 --- a/src/__tests__/policy-persona.test.ts +++ b/src/__tests__/policy-persona.test.ts @@ -556,10 +556,12 @@ describe('section reference resolution', () => { name: 'plan', persona: 'planner', instruction: '{task}', - output_contracts: [{ - name: '00-plan.md', - format: 'plan', - }], + output_contracts: { + report: [{ + name: '00-plan.md', + format: 'plan', + }], + }, }], }; diff --git a/src/core/models/schemas.ts b/src/core/models/schemas.ts index bfbfc14..0a7ef18 100644 --- a/src/core/models/schemas.ts +++ b/src/core/models/schemas.ts @@ -78,26 +78,35 @@ export const OutputContractItemSchema = z.object({ 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. * - * YAML formats: - * output_contracts: # array of label:path entries - * - Scope: 01-scope.md - * - Decisions: 02-decisions.md - * output_contracts: # array of objects (name + order + format) - * - name: 00-plan.md - * order: ... - * format: plan - * - * Array items can be single-key objects or full item objects. + * YAML format: + * output_contracts: + * report: # report array (required if output_contracts is specified) + * - Scope: 01-scope.md # label:path format + * - Decisions: 02-decisions.md + * output_contracts: + * report: + * - name: 00-plan.md # name + order + format format + * order: ... + * format: plan */ -export const OutputContractsFieldSchema = z.array( - z.union([ - z.record(z.string(), z.string()), // {Scope: "01-scope.md"} format - OutputContractItemSchema, // {name, order?, format?} format - ]) -).optional(); +export const OutputContractsFieldSchema = z.object({ + report: z.array(OutputContractEntrySchema).optional(), +}).optional(); /** Quality gates schema - AI directives for movement completion (string array) */ export const QualityGatesSchema = z.array(z.string()).optional(); diff --git a/src/core/piece/index.ts b/src/core/piece/index.ts index 600a67f..a2991e2 100644 --- a/src/core/piece/index.ts +++ b/src/core/piece/index.ts @@ -53,7 +53,7 @@ export { handleBlocked, type BlockedHandlerResult } from './engine/blocked-handl export { ParallelLogger } from './engine/parallel-logger.js'; // 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 { StatusJudgmentBuilder, type StatusJudgmentContext } from './instruction/StatusJudgmentBuilder.js'; export { buildEditRule, type InstructionContext } from './instruction/instruction-context.js'; diff --git a/src/core/piece/instruction/InstructionBuilder.ts b/src/core/piece/instruction/InstructionBuilder.ts index 4c6084d..0e73c00 100644 --- a/src/core/piece/instruction/InstructionBuilder.ts +++ b/src/core/piece/instruction/InstructionBuilder.ts @@ -5,7 +5,7 @@ * 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 { buildEditRule } from './instruction-context.js'; import { escapeTemplateChars, replaceTemplatePlaceholders } from './escape.js'; @@ -18,13 +18,6 @@ export function isOutputContractItem(entry: OutputContractEntry): entry is Outpu 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. * diff --git a/src/core/piece/instruction/index.ts b/src/core/piece/instruction/index.ts index 52be0d7..f8c1fe0 100644 --- a/src/core/piece/instruction/index.ts +++ b/src/core/piece/instruction/index.ts @@ -2,7 +2,7 @@ * 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 { StatusJudgmentBuilder, type StatusJudgmentContext } from './StatusJudgmentBuilder.js'; export { escapeTemplateChars, replaceTemplatePlaceholders } from './escape.js'; diff --git a/src/index.ts b/src/index.ts index 6f35dfd..3cbd6e3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -114,7 +114,6 @@ export { ParallelLogger, InstructionBuilder, isOutputContractItem, - isOutputContractLabelPath, ReportInstructionBuilder, StatusJudgmentBuilder, buildEditRule, diff --git a/src/infra/config/loaders/pieceParser.ts b/src/infra/config/loaders/pieceParser.ts index d6958d4..02da69f 100644 --- a/src/infra/config/loaders/pieceParser.ts +++ b/src/infra/config/loaders/pieceParser.ts @@ -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. * - * Input formats (YAML): + * Input format (YAML): * output_contracts: - * - Scope: 01-scope.md # label:path format - * - name: 00-plan.md # item format - * format: plan + * report: + * - Scope: 01-scope.md # label:path format + * - name: 00-plan.md # item format + * format: plan * * Output: OutputContractEntry[] */ function normalizeOutputContracts( - raw: Array | { name: string; order?: string; format?: string }> | undefined, + raw: { report?: Array | { name: string; order?: string; format?: string }> } | undefined, pieceDir: string, resolvedReportFormats?: Record, ): OutputContractEntry[] | undefined { - if (raw == null || raw.length === 0) return undefined; + if (raw?.report == null || raw.report.length === 0) return undefined; const result: OutputContractEntry[] = []; - for (const entry of raw) { + for (const entry of raw.report) { if (isOutputContractItem(entry)) { // Item format: {name, order?, format?} const item: OutputContractItem = {