name: development-core
description: Shared development flow with injectable planning, testing, implementation, peer review, adjudication, verified remediation, and a final requirement check.
all_steps:
  rules:
    - ref: findings-handling
      position: before_instruction
    - ref: plain-terminology
      position: before_instruction

subworkflow:
  callable: true
  visibility: internal
  params:
    implementation_pool:
      type: facet_pool_ref
      default: coding-facets
    implementation_workflow:
      type: workflow_ref
      default: development-implement
    remediation_workflow:
      type: workflow_ref
      default: development-remediation
    implementation_companions:
      type: companion_ref[]
      default: []
    reviewer_suite:
      type: workflow_ref
      default: peer-review-suite-base
    peer_review_workflow:
      type: workflow_ref
      default: peer-review
    plan_policy:
      type: facet_ref[]
      facet_kind: policy
      default:
        - design-planning
    plan_knowledge:
      type: facet_ref[]
      facet_kind: knowledge
      default:
        - architecture
        - task-decomposition
    plan_instruction:
      type: facet_ref
      facet_kind: instruction
      default: plan
    plan_report_format:
      type: facet_ref
      facet_kind: report_format
      default: plan
    replan_instruction:
      type: facet_ref
      facet_kind: instruction
      default: replan-implementation
    testing_policy:
      type: facet_ref[]
      facet_kind: policy
      default:
        - coding
        - testing
    testing_knowledge:
      type: facet_ref[]
      facet_kind: knowledge
      default:
        - architecture
        - unit-testing
        - e2e-testing
    testing_instruction:
      type: facet_ref
      facet_kind: instruction
      default: write-tests-first
    testing_report_format:
      type: facet_ref
      facet_kind: report_format
      default: test-report
    development_policy:
      type: facet_ref[]
      facet_kind: policy
      default:
        - coding
        - testing
        - ai-antipattern
    development_knowledge:
      type: facet_ref[]
      facet_kind: knowledge
      default:
        - architecture
        - implementation-semantics
    implementation_instruction:
      type: facet_ref
      facet_kind: instruction
      default: development-implement-with-reports
    reimplementation_instruction:
      type: facet_ref
      facet_kind: instruction
      default: development-reimplement-with-reports
    scope_report_format:
      type: facet_ref
      facet_kind: report_format
      default: coder-scope
    review_policy_additions:
      type: facet_ref[]
      facet_kind: policy
      default: []
    review_policy:
      type: facet_ref[]
      facet_kind: policy
      default:
        - coding
        - testing
        - review
    review_knowledge:
      type: facet_ref[]
      facet_kind: knowledge
      default:
        - architecture
        - unit-testing
        - e2e-testing
    security_review_knowledge_additions:
      type: facet_ref[]
      facet_kind: knowledge
      default: []
    security_review_pool:
      type: facet_pool_ref
      default: security-review-facets
    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
initial_step: plan

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

steps:
  - name: plan
    capabilities:
      - readonly
      - enable-skills
    uses: development-core-plan
    with:
      plan_policy:
        $param: plan_policy
      plan_knowledge:
        $param: plan_knowledge
      plan_instruction:
        $param: plan_instruction
      plan_report_format:
        $param: plan_report_format
    rules:
      - condition: Requirements are clear and implementation is feasible
        next: write_tests
      - condition: The user is asking a question rather than requesting implementation
        next: COMPLETE
      - condition: Requirements are unclear or information is insufficient
        next: ABORT

  - name: replan
    tags:
      - plan
    edit: false
    capabilities: readonly
    persona: planner
    policy:
      - contract-change
      - $param: plan_policy
    knowledge:
      $param: plan_knowledge
    instruction:
      $param: replan_instruction
    output_contracts:
      report:
        - name: plan.md
          format:
            $param: plan_report_format
    rules:
      - condition: Without waiting for user input or an external action, a project-executable plan was defined for either (a) an untried change or investigation necessary to resolve an unmet requirement or changed contract of this task, with its verification steps, or (b) only a mandatory project-scoped verification required by this task remains unexecuted, with no accompanying code change, test change, or investigation, and its execution conditions were defined (excludes plans for unrelated pre-existing issues or out-of-scope work)
        next: implement
      - condition: The current implementation satisfies this task’s requirements and acceptance criteria, required project-scoped verification is complete, and no untried change or investigation necessary for this task remains (includes cases where only unrelated pre-existing issues or out-of-scope work remain; a plan entry or incomplete label alone does not make them mandatory)
        next: peer-review
      - condition: For a mandatory condition of this task, confirmed evidence shows that project-scoped changes or investigation cannot resolve the blocker, leaving only an external action or external answer, or confirming that the requirements are incompatible
        next: ABORT

  - name: write_tests
    capabilities:
      - edit
      - enable-skills
    uses: development-core-write-tests
    with:
      testing_policy:
        $param: testing_policy
      testing_knowledge:
        $param: testing_knowledge
      testing_instruction:
        $param: testing_instruction
      testing_report_format:
        $param: testing_report_format
    rules:
      - condition: Test creation is complete
        next: implement
      - condition: Test creation is skipped because the target is not implemented
        next: implement
      - condition: Test creation cannot proceed
        next: plan
      - condition: User input is required for a clarification
        next: write_tests
        requires_user_input: true
        interactive_only: true

  - name: implement
    kind: workflow_call
    call:
      $param: implementation_workflow
    args:
      implementation_pool:
        $param: implementation_pool
      implementation_companions:
        $param: implementation_companions
      development_policy:
        $param: development_policy
      development_knowledge:
        $param: development_knowledge
      implementation_instruction:
        $param: implementation_instruction
      reimplementation_instruction:
        $param: reimplementation_instruction
      scope_report_format:
        $param: scope_report_format
    rules:
      - condition: COMPLETE
        next: peer-review
      - condition: need_replan
        next: replan
      - condition: ABORT
        next: replan

  - name: peer-review
    kind: workflow_call
    call:
      $param: peer_review_workflow
    args:
      reviewer_suite:
        $param: reviewer_suite
      review_policy_additions:
        $param: review_policy_additions
      review_knowledge_additions:
        $param: review_knowledge
      security_review_knowledge_additions:
        $param: security_review_knowledge_additions
      security_review_pool:
        $param: security_review_pool
      fix_companions:
        $param: implementation_companions
      remediation_workflow:
        $param: remediation_workflow
      fix_pool:
        $param: implementation_pool
      plan_policy:
        $param: review_policy
      fix_policy:
        $param: development_policy
      fix_knowledge:
        $param: development_knowledge
      verification_knowledge:
        $param: review_knowledge
      verification_policy:
        $param: review_policy
      final_gate_policy:
        $param: review_policy
      fix_plan_instruction:
        $param: fix_plan_instruction
      fix_replan_instruction:
        $param: fix_replan_instruction
      fix_plan_report_format:
        $param: fix_plan_report_format
      final_gate_instruction:
        $param: final_gate_instruction
    rules:
      - condition: COMPLETE
        next: COMPLETE
      - condition: need_replan
        next: replan
      - condition: ABORT
        next: ABORT
