name: review-takt-default
description: "TAKT-focused multi-perspective review with AI antipattern and coding review"
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: Review target information gathered
        next: reviewers
      - condition: Cannot identify review target, insufficient info
        next: ABORT
        appendix: |
          Clarifications needed:
          - {Question 1}
          - {Question 2}

  - name: reviewers
    description: Review TAKT changes from multiple specialist perspectives in parallel to determine whether fixes are needed.
    tags:
      - review
    parallel:
      fixed:
        - name: arch-review
          description: Check structure, responsibilities, dependencies, and call paths, and report design problems.
          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: Compare test plans with implemented tests and report problems in coverage, independence, and verification methods.
          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: Check assumptions and API existence, and report AI-specific problems such as overengineering.
          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: Compare the diff against requirements and report bugs, regressions, security risks, and missing tests.
          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: Review changes involving secrets, external input, permissions, and external boundaries for security issues.
          selection_hint: Do not select by default. Select only when (a) the change may affect secret or credential handling, external-input handling, process execution, filesystem operations, network or terminal boundaries, sandboxing, or permissions, or (b) the change is large enough that security impact cannot be confidently ruled out. Even when the change is documentation-only, comment-only, test-only, or a small localized fix, select it if (a) or (b) applies. Do not select it if neither applies.
          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: Consolidate review results and findings into an overall verdict and final summary.
    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 |
      ## Review Results
      {previous_response}

      Your role is to synthesize the review results and produce a final summary.

      **Tasks:**
      1. Read `review-target.md` and every reviewer report present in the Report Directory. Do not assume an optional reviewer report exists.
      2. Synthesize all available review results
      3. Produce a consolidated review summary with overall verdict

      **Review Summary output contract:**
      ```markdown
      # Review Summary

      ## Overall Verdict: APPROVE / REJECT

      ## Summary
      {2-3 sentences consolidating all review results}

      ## Review Results
      | Review | Result | Key Findings |
      |--------|--------|--------------|
      | Each available review | APPROVE/REJECT | {Brief finding} |

      ## Issues Requiring Attention
      | # | Severity | Source | Location | Issue |
      |---|----------|--------|----------|-------|
      | 1 | High | Security | `file:line` | Description |

      ## Improvement Suggestions
      - {Consolidated suggestions from all reviews}
      ```
    output_contracts: &review_synthesis_output_contracts
      report:
        - name: review-summary.md
          format: |
            ```markdown
            # Review Summary

            ## Overall Verdict: APPROVE / REJECT

            ## Summary
            {2-3 sentences consolidating all review results}

            ## Review Results
            | Review | Result | Key Findings |
            |--------|--------|--------------|
            | Each available review | APPROVE/REJECT | {Overview} |

            ## Current Iteration Findings (new)
            | # | finding_id | Severity | Source | Location | Issue | Fix Suggestion |
            |---|------------|----------|--------|----------|-------|----------------|
            | 1 | SUM-NEW-src-file-L42 | High | Security | `file:line` | Description | Suggestion |

            ## Carry-over Findings (persists)
            | # | finding_id | Source | Previous Evidence | Current Evidence | Issue |
            |---|------------|--------|-------------------|------------------|-------|
            | 1 | SUM-PERSIST-src-file-L77 | Architecture | `file:line` | `file:line` | Description |

            ## Resolved Findings (resolved)
            | finding_id | Source | Resolution Evidence |
            |------------|--------|---------------------|
            | SUM-RESOLVED-src-file-L10 | Testing | `file:line` |

            ## Improvement Suggestions
            - {Consolidated suggestions from all reviews}

            ## Rejection Gate
            - REJECT is valid only when at least one finding exists in `new` or `persists`
            - Findings without `finding_id` are invalid
            ```

  - name: supervise
    description: Consolidate review results and findings into an overall verdict and final summary.
    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
