name: review-takt-default
description: TAKT開発向け多角レビュー（AIアンチパターン・コーディングレビューを含む）
all_steps:
  rules:
    - ref: findings-handling
      position: before_instruction
    - ref: plain-terminology
      position: before_instruction

max_steps: 10
facet_pools:
  takt-security-review-facets:
    uses: takt-security-review-facets
initial_step: gather

steps:
  - name: gather
    uses: review-gather-with-clarification-to-reviewers
    rules:
      - condition: レビュー対象の情報収集完了
        next: reviewers
      - condition: レビュー対象を特定できない、情報不足
        next: ABORT
        appendix: |
          確認事項:
          - {質問1}
          - {質問2}

  - name: reviewers
    description: TAKTの変更を複数の専門観点で並列レビューし、修正の要否を判定する
    tags:
      - review
    parallel:
      fixed:
        - name: arch-review
          description: 構造・責務・依存関係と呼び出し経路を確認し、設計上の問題を指摘する
          capabilities: readonly
          tags:
            - review
          edit: false
          persona: architecture-reviewer
          policy:
            - contract-change
            - review
            - architecture
            - takt
          knowledge:
            - architecture
            - takt
          instruction: review-arch
          output_contracts:
            report:
              - name: architecture-review.md
                format: architecture-review
          rules:
            - condition: approved
            - condition: needs_fix

        - name: testing-review
          description: テスト計画と実装を照合し、網羅性・独立性・検証方法の問題を指摘する
          capabilities: readonly
          tags:
            - review
          edit: false
          persona: testing-reviewer
          policy:
            - contract-change
            - review
            - testing
          knowledge:
            - unit-testing
            - e2e-testing
          instruction: review-test
          output_contracts:
            report:
              - name: testing-review.md
                format: testing-review
          rules:
            - condition: approved
            - condition: needs_fix

        - name: ai-antipattern-review-2nd
          description: 仮定の妥当性やAPIの実在性を確認し、過剰実装などAI特有の問題を報告する
          capabilities: readonly
          tags:
            - review
          edit: false
          persona: ai-antipattern-reviewer
          policy:
            - contract-change
            - review
            - ai-antipattern
          instruction: ai-antipattern-review
          output_contracts:
            report:
              - name: ai-antipattern-review.md
                format: ai-antipattern-review
          rules:
            - condition: approved
            - condition: needs_fix

        - name: coding-review
          description: 変更差分を要求と照合し、バグや既存動作の破壊、安全性やテストの不足を指摘する
          capabilities: readonly
          tags:
            - review
          edit: false
          persona: coding-reviewer
          policy:
            - contract-change
            - review
            - coding
          instruction: review-coding
          output_contracts:
            report:
              - name: coding-review.md
                format: coding-review
          rules:
            - condition: approved
            - condition: needs_fix

      pool:
        - name: security-review
          description: 秘密情報、外部入力、権限、外部との境界にかかわる変更を、セキュリティの観点でレビューする
          selection_hint: 既定では選ばない。(a) 変更が secret または credential の取扱い、外部入力の処理、process 実行、filesystem 操作、network または terminal の境界、sandbox、権限に影響し得る場合、または (b) 修正の規模が大きく、セキュリティへの影響がないと判断しきれない場合に選ぶ。ドキュメントのみ・コメントのみ・テストのみの変更や小さな局所修正でも、(a) または (b) に該当すれば選ぶ。どちらにも該当しなければ選ばない。
          capabilities: readonly
          tags:
            - review
          edit: false
          persona: security-reviewer
          policy:
            - contract-change
            - security-review
            - takt
          knowledge:
            - security
            - security-data
            - security-dependencies
            - takt
          dynamic_facets:
            pool: takt-security-review-facets
            selector:
              instruction: select-applicable-candidates
          instruction: review-security
          output_contracts:
            report:
              - name: security-review.md
                format: security-review
          rules:
            - condition: approved
            - condition: needs_fix
      selection:
        selector:
          instruction: select-applicable-candidates

    rules:
      - condition: any("error")
        next: reviewers
      - condition: all("approved")
        next: review-synthesis
      - condition: any("needs_fix")
        next: supervise

  - name: review-synthesis
    description: 各レビューの結果と指摘を統合し、総合判定と最終サマリーを作成する
    capabilities: readonly
    tags:
      - review
      - final-gate
      - supervise
    edit: false
    persona: supervisor
    policy:
      - contract-change
      - review
    pass_previous_response: false
    rules:
      - condition: APPROVE
        next: COMPLETE
      - condition: REJECT
        next: COMPLETE
    instruction: &review_synthesis_instruction |
      ## レビュー結果
      {previous_response}

      レビュー結果を統合し、最終サマリーを作成する役割です。

      **やること:**
      1. `review-target.md` と Report Directory に存在するすべてのレビュワーレポートを読む。任意のレビュワーが未選択の場合、そのレポートが存在すると仮定しない。
      2. 利用可能なすべてのレビュー結果を統合
      3. 統合レビューサマリーと総合判定を作成
    output_contracts: &review_synthesis_output_contracts
      report:
        - name: review-summary.md
          format: |
            ```markdown
            # レビューサマリー

            ## 総合判定: APPROVE / REJECT

            ## サマリー
            {2-3文で全レビュー結果を統合}

            ## レビュー結果
            | レビュー | 結果 | 主要な発見 |
            |---------|------|-----------|
            | 存在する各レビュー | APPROVE/REJECT | {概要} |

            ## 今回の指摘（new）
            | # | finding_id | 重大度 | ソース | 場所 | 問題 | 修正案 |
            |---|------------|--------|--------|------|------|--------|
            | 1 | SUM-NEW-src-file-L42 | High | セキュリティ | `file:line` | 説明 | 提案 |

            ## 継続指摘（persists）
            | # | finding_id | ソース | 前回根拠 | 今回根拠 | 問題 |
            |---|------------|--------|----------|----------|------|
            | 1 | SUM-PERSIST-src-file-L77 | アーキテクチャ | `file:line` | `file:line` | 説明 |

            ## 解消済み（resolved）
            | finding_id | ソース | 解消根拠 |
            |------------|--------|----------|
            | SUM-RESOLVED-src-file-L10 | テスト | `file:line` |

            ## 改善提案
            - {全レビューからの統合提案}

            ## REJECT判定条件
            - `new` または `persists` が1件以上ある場合のみ REJECT 可
            - `finding_id` なしの指摘は無効
            ```

  - name: supervise
    description: 各レビューの結果と指摘を統合し、総合判定と最終サマリーを作成する
    capabilities: readonly
    tags:
      - review
      - supervise
    edit: false
    persona: supervisor
    policy:
      - process-deviation
      - contract-change
      - review
    pass_previous_response: false
    rules:
      - condition: APPROVE
        next: COMPLETE
      - condition: REJECT
        next: COMPLETE
    instruction: *review_synthesis_instruction
    output_contracts: *review_synthesis_output_contracts
