name: takt-default-team-leader
description: TAKT development piece with team leader (plan → write tests → team-leader implement → AI antipattern review → 5-parallel review → fix → supervise → complete)
piece_config:
  provider_options:
    codex:
      network_access: true
    opencode:
      network_access: true
max_movements: 30
initial_movement: plan
loop_monitors:
  - cycle:
      - ai_review
      - ai_fix
    threshold: 3
    judge:
      persona: supervisor
      instruction_template: |
        The ai_review ↔ ai_fix loop has repeated {cycle_count} times.

        Review the reports from each cycle and determine whether this loop
        is healthy (making progress) or unproductive (repeating the same issues).

        **Reports to reference:**
        - AI Review results: {report:ai-review.md}

        **Judgment criteria:**
        - Are new issues being found/fixed in each cycle?
        - Are the same findings being repeated?
        - Are fixes actually being applied?
      rules:
        - condition: Healthy (making progress)
          next: ai_review
        - condition: Unproductive (no improvement)
          next: reviewers
  - cycle:
      - reviewers
      - fix
    threshold: 3
    judge:
      persona: supervisor
      instruction_template: loop-monitor-reviewers-fix
      rules:
        - condition: Healthy (findings decreasing, fixes applied)
          next: reviewers
        - condition: Unproductive (same findings repeating)
          next: supervise
movements:
  - name: plan
    edit: false
    persona: planner
    knowledge: architecture
    allowed_tools:
      - Read
      - Glob
      - Grep
      - Bash
      - WebSearch
      - WebFetch
    rules:
      - condition: Requirements are clear and implementable
        next: write_tests
      - condition: User is asking a question (not an implementation task)
        next: COMPLETE
      - condition: Requirements unclear, insufficient info
        next: ABORT
        appendix: |
          Clarifications needed:
          - {Question 1}
          - {Question 2}
    instruction: plan
    output_contracts:
      report:
        - name: plan.md
          format: plan
  - name: write_tests
    edit: true
    persona: coder
    policy:
      - coding
      - testing
    knowledge:
      - takt
      - architecture
    allowed_tools:
      - Read
      - Glob
      - Grep
      - Edit
      - Write
      - Bash
      - WebSearch
      - WebFetch
    required_permission_mode: edit
    instruction: write-tests-first
    rules:
      - condition: Tests written successfully
        next: implement
      - condition: Cannot proceed because the test target is not implemented yet, so skip test writing
        next: implement
      - condition: Cannot proceed with test writing
        next: ABORT
      - condition: User input needed for clarification
        next: write_tests
        requires_user_input: true
        interactive_only: true
    output_contracts:
      report:
        - name: test-scope.md
          format: coder-scope
        - name: test-decisions.md
          format: coder-decisions
  - name: implement
    edit: true
    persona: coder
    policy:
      - coding
      - testing
    session: refresh
    knowledge:
      - takt
      - architecture
    allowed_tools:
      - Read
      - Glob
      - Grep
      - Edit
      - Write
      - Bash
      - WebSearch
      - WebFetch
    required_permission_mode: edit
    team_leader:
      max_parts: 2
      part_persona: coder
      part_edit: true
      part_permission_mode: edit
      part_allowed_tools:
        - Read
        - Glob
        - Grep
        - Edit
        - Write
        - Bash
        - WebSearch
        - WebFetch
    instruction: team-leader-implement
    rules:
      - condition: Implementation complete
        next: ai_review
      - condition: No implementation (report only)
        next: ai_review
      - condition: Cannot proceed, insufficient info
        next: ai_review
      - condition: User input required
        next: implement
        requires_user_input: true
        interactive_only: true
    output_contracts:
      report:
        - name: coder-scope.md
          format: coder-scope
        - name: coder-decisions.md
          format: coder-decisions
  - name: ai_review
    edit: false
    persona: ai-antipattern-reviewer
    policy:
      - review
      - ai-antipattern
    allowed_tools:
      - Read
      - Glob
      - Grep
      - WebSearch
      - WebFetch
    rules:
      - condition: No AI-specific issues
        next: reviewers
      - condition: AI-specific issues found
        next: ai_fix
    instruction: ai-review
    output_contracts:
      report:
        - name: ai-review.md
          format: ai-review
  - name: ai_fix
    edit: true
    persona: coder
    policy:
      - coding
      - testing
    session: refresh
    knowledge:
      - takt
      - architecture
    allowed_tools:
      - Read
      - Glob
      - Grep
      - Edit
      - Write
      - Bash
      - WebSearch
      - WebFetch
    required_permission_mode: edit
    pass_previous_response: false
    rules:
      - condition: AI issues fixed
        next: ai_review
      - condition: No fix needed (verified target files/spec)
        next: ai_no_fix
      - condition: Cannot proceed, insufficient info
        next: ai_no_fix
    instruction: ai-fix
  - name: ai_no_fix
    edit: false
    persona: architecture-reviewer
    policy: review
    allowed_tools:
      - Read
      - Glob
      - Grep
    rules:
      - condition: ai_review's findings are valid (fix required)
        next: ai_fix
      - condition: ai_fix's judgment is valid (no fix needed)
        next: reviewers
    instruction: arbitrate
  - name: reviewers
    parallel:
      - name: arch-review
        edit: false
        persona: architecture-reviewer
        policy: review
        knowledge:
          - architecture
          - takt
        allowed_tools:
          - Read
          - Glob
          - Grep
          - Bash
          - WebSearch
          - WebFetch
        rules:
          - condition: approved
          - condition: needs_fix
        instruction: review-arch
        output_contracts:
          report:
            - name: architect-review.md
              format: architecture-review
      - name: security-review
        edit: false
        persona: security-reviewer
        policy: review
        knowledge: security
        allowed_tools:
          - Read
          - Glob
          - Grep
          - Bash
          - WebSearch
          - WebFetch
        rules:
          - condition: approved
          - condition: needs_fix
        instruction: review-security
        output_contracts:
          report:
            - name: security-review.md
              format: security-review
      - name: qa-review
        edit: false
        persona: qa-reviewer
        policy:
          - review
          - qa
        allowed_tools:
          - Read
          - Glob
          - Grep
          - Bash
          - WebSearch
          - WebFetch
        rules:
          - condition: approved
          - condition: needs_fix
        instruction: review-qa
        output_contracts:
          report:
            - name: qa-review.md
              format: qa-review
      - name: testing-review
        edit: false
        persona: testing-reviewer
        policy:
          - review
          - testing
        allowed_tools:
          - Read
          - Glob
          - Grep
          - Bash
          - WebSearch
          - WebFetch
        rules:
          - condition: approved
          - condition: needs_fix
        instruction: review-test
        output_contracts:
          report:
            - name: testing-review.md
              format: testing-review
      - name: requirements-review
        edit: false
        persona: requirements-reviewer
        policy: review
        allowed_tools:
          - Read
          - Glob
          - Grep
          - Bash
          - WebSearch
          - WebFetch
        rules:
          - condition: approved
          - condition: needs_fix
        instruction: review-requirements
        output_contracts:
          report:
            - name: requirements-review.md
              format: requirements-review
    rules:
      - condition: all("approved")
        next: supervise
      - condition: any("needs_fix")
        next: fix
  - name: fix
    edit: true
    persona: coder
    policy:
      - coding
      - testing
    knowledge:
      - takt
      - architecture
    allowed_tools:
      - Read
      - Glob
      - Grep
      - Edit
      - Write
      - Bash
      - WebSearch
      - WebFetch
    required_permission_mode: edit
    pass_previous_response: false
    rules:
      - condition: Fix complete
        next: reviewers
      - condition: Cannot proceed, insufficient info
        next: plan
    instruction: fix
  - name: supervise
    edit: false
    persona: supervisor
    policy: review
    allowed_tools:
      - Read
      - Glob
      - Grep
      - Bash
      - WebSearch
      - WebFetch
    pass_previous_response: false
    rules:
      - condition: All checks passed
        next: COMPLETE
      - condition: Requirements unmet, tests failing, build errors
        next: plan
    instruction: supervise
    output_contracts:
      report:
        - name: supervisor-validation.md
          format: supervisor-validation
        - name: summary.md
          format: summary
          use_judge: false
