name: peer-review
description: Specialist parallel peer reviewers (+ ai-antipattern-review-2nd) -> finding adjudication -> shared remediation loop, followed by one supervisor that makes the final requirement-fulfillment decision.
all_steps:
  rules:
    - ref: findings-handling
      position: before_instruction
    - ref: plain-terminology
      position: before_instruction

subworkflow:
  callable: true
  visibility: internal
  returns:
    - need_replan
  params:
    reviewer_suite:
      type: workflow_ref
      default: peer-review-suite-base
    fix_companions:
      type: companion_ref[]
      default: []
    fix_pool:
      type: facet_pool_ref
      default: coding-facets
    remediation_workflow:
      type: workflow_ref
      default: development-remediation
    review_policy_additions:
      type: facet_ref[]
      facet_kind: policy
      default: []
    review_knowledge_additions:
      type: facet_ref[]
      facet_kind: knowledge
      default:
        - architecture
        - takt
    security_review_knowledge_additions:
      type: facet_ref[]
      facet_kind: knowledge
      default: []
    security_review_pool:
      type: facet_pool_ref
      default: security-review-facets
    fix_knowledge:
      type: facet_ref[]
      facet_kind: knowledge
      default:
        - takt
        - architecture
    verification_knowledge:
      type: facet_ref[]
      facet_kind: knowledge
      default:
        - takt
        - architecture
    plan_policy:
      type: facet_ref[]
      facet_kind: policy
      default:
        - coding
        - testing
        - review
    fix_policy:
      type: facet_ref[]
      facet_kind: policy
      default:
        - coding
        - testing
    verification_policy:
      type: facet_ref[]
      facet_kind: policy
      default:
        - coding
        - testing
        - review
    final_gate_policy:
      type: facet_ref[]
      facet_kind: policy
      default:
        - coding
        - testing
        - review
        - architecture
        - takt
    fix_plan_instruction:
      type: facet_ref
      facet_kind: instruction
      default: fix-plan-from-review-resolution
    fix_replan_instruction:
      type: facet_ref
      facet_kind: instruction
      default: fix-replan
    fix_plan_report_format:
      type: facet_ref
      facet_kind: report_format
      default: fix-plan
    final_gate_instruction:
      type: facet_ref
      facet_kind: instruction
      default: supervise-review-resolution
facet_pools:
  coding-facets:
    uses: coding-facets
  takt-coding-facets:
    uses: takt-coding-facets
  security-review-facets:
    uses: security-review-facets
  takt-security-review-facets:
    uses: takt-security-review-facets
initial_step: initial-reviewers
loop_monitors:
  - cycle:
      - reviewers
      - review-adjudication
      - remediation
    threshold: 3
    judge:
      persona: supervisor
      instruction: loop-monitor-reviewers-fix
      rules:
        - condition: Healthy (fixes progressing and report content converging)
          next: reviewers
        - condition: Implementation incomplete or report not converged, but the next review or fix can be performed
          next: reviewers
        - condition: The remediation assumptions must change and replanning can be performed
          next: remediation
        - condition: No feasible action can satisfy the requirements
          next: ABORT
  - cycle:
      - reviewers
      - review-adjudication
      - final-gate
      - remediation
    threshold: 3
    judge:
      persona: supervisor
      instruction: loop-monitor-reviewers-fix
      rules:
        - condition: Healthy (fixes progressing and report content converging)
          next: reviewers
        - condition: Implementation incomplete or report not converged, but the next review or fix can be performed
          next: reviewers
        - condition: The remediation assumptions must change and replanning can be performed
          next: remediation
        - condition: No feasible action can satisfy the requirements
          next: ABORT
steps:
  - name: initial-reviewers
    uses: peer-review-suite-call
    vars:
      review_mode: initial
    with:
      reviewer_suite:
        $param: reviewer_suite
      review_policy_additions:
        $param: review_policy_additions
      review_knowledge_additions:
        $param: review_knowledge_additions
      security_review_knowledge_additions:
        $param: security_review_knowledge_additions
      security_review_pool:
        $param: security_review_pool
      architecture_review_instruction: architecture-review
      security_review_instruction: security-review
      testing_review_instruction: testing-review
      coding_review_instruction: coding-review
      ai_antipattern_review_instruction: initial-ai-antipattern-review
      frontend_review_instruction: frontend-review
      cqrs_es_review_instruction: cqrs-es-review
    rules:
      - condition: COMPLETE
        next: review-adjudication
      - condition: needs_fix
        next: review-adjudication
  - name: reviewers
    uses: peer-review-suite-call
    vars:
      review_mode: follow_up
    with:
      reviewer_suite:
        $param: reviewer_suite
      review_policy_additions:
        $param: review_policy_additions
      review_knowledge_additions:
        $param: review_knowledge_additions
      security_review_knowledge_additions:
        $param: security_review_knowledge_additions
      security_review_pool:
        $param: security_review_pool
      architecture_review_instruction: follow-up-architecture-review
      security_review_instruction: follow-up-security-review
      testing_review_instruction: follow-up-testing-review
      coding_review_instruction: follow-up-coding-review
      ai_antipattern_review_instruction: follow-up-ai-antipattern-review
      frontend_review_instruction: follow-up-frontend-review
      cqrs_es_review_instruction: follow-up-cqrs-es-review
    rules:
      - condition: COMPLETE
        next: review-adjudication
      - condition: needs_fix
        next: review-adjudication
  - name: review-adjudication
    uses: peer-review-adjudication
    with:
      review_policy_additions:
        $param: review_policy_additions
      review_knowledge_additions:
        $param: review_knowledge_additions
    rules:
      - condition: Problems require repair
        next: remediation
      - condition: No problems require repair
        next: final-gate
      - condition: The entire task must be replanned
        return: need_replan
  - name: final-gate
    uses: peer-review-final-gate
    with:
      review_knowledge:
        $param: review_knowledge_additions
      final_gate_policy:
        $param: final_gate_policy
      final_gate_instruction:
        $param: final_gate_instruction
    rules:
      - condition: APPROVE
        next: COMPLETE
      - condition: REJECT
        next: remediation
      - condition: BLOCKED
        return: need_replan
  - name: remediation
    kind: workflow_call
    call:
      $param: remediation_workflow
    args:
      fix_pool:
        $param: fix_pool
      fix_companions:
        $param: fix_companions
      fix_policy:
        $param: fix_policy
      fix_knowledge:
        $param: fix_knowledge
      verification_knowledge:
        $param: verification_knowledge
      plan_policy:
        $param: plan_policy
      verification_policy:
        $param: verification_policy
      fix_plan_instruction:
        $param: fix_plan_instruction
      fix_replan_instruction:
        $param: fix_replan_instruction
      fix_plan_report_format:
        $param: fix_plan_report_format
    rules:
      - condition: COMPLETE
        next: reviewers
      - condition: need_replan
        return: need_replan
      - condition: ABORT
        next: ABORT
