schema_version: 1
workflow_id: production_triage_handoff
vars:
  triage_name: prod-triage-{{ run_id }}
steps:
  - id: discover_issues
    capture_session: false
    command: |
      set -eu
      mkdir -p "{{ out_dir }}"
      # Replace this stub with your production detector, but keep the JSONL contract:
      #   ./scripts/discover-production-issues --jsonl > "{{ out_dir }}/issues.jsonl"
      python3 - <<'PY'
      import json
      from pathlib import Path
      out_dir = Path("{{ out_dir }}")
      issues = [
          {"id": "checkout-5xx-spike", "service": "checkout-api", "severity": "P1", "signal": "5xx rate above 4% for 15 minutes", "dashboard": "https://observability.example/checkout-api", "runbook": "docs/runbooks/checkout-api.md"},
          {"id": "worker-lag", "service": "billing-worker", "severity": "P2", "signal": "queue lag above 10000 jobs", "dashboard": "https://observability.example/billing-worker", "runbook": "docs/runbooks/billing-worker.md"},
      ]
      with (out_dir / "issues.jsonl").open("w", encoding="utf-8") as fh:
          for issue in issues:
              fh.write(json.dumps(issue, ensure_ascii=False) + "\n")
      item_placeholder = f"{chr(123) * 2}item{chr(125) * 2}"
      (out_dir / "triage_prompt.md").write_text(
          "You are taking over one production issue in a dedicated tmux pane.\n"
          "Keep this pane available for later session continuation; do not collapse history.\n"
          f"Issue JSON: {item_placeholder}\n\n"
          "Investigate the service, runbook, likely blast radius, immediate mitigations, and follow-up owners. "
          "Finish with a concise HANDOFF_SUMMARY and preserve any session id/artifact paths you create.\n",
          encoding="utf-8",
      )
      print(out_dir / "issues.jsonl")
      PY
  - id: start_tmux_handoff
    capture_session: false
    command: |
      set -eu
      ./.juno_task/scripts/parallel_runner.sh \
        --items-file "{{ out_dir }}/issues.jsonl" \
        --format jsonl \
        --prompt-file "{{ out_dir }}/triage_prompt.md" \
        --tmux panes \
        --tmux-handoff \
        --max-panes-per-session 4 \
        --parallel 4 \
        --name "{{ triage_name }}" \
        --output-dir "{{ out_dir }}/parallel"
  - id: handoff_summary
    capture_session: false
    command: |
      set -eu
      summary="{{ out_dir }}/handoff_summary.md"
      {
        printf '# Production triage handoff\n\n'
        printf 'Issues: `%s`\n\n' "{{ out_dir }}/issues.jsonl"
        printf 'Parallel artifacts: `%s`\n\n' "{{ out_dir }}/parallel"
        printf 'Attach with `tmux ls | grep pc-{{ triage_name }}` then `tmux attach -t <session>`.\n\n'
        printf 'Latest aggregation files preserve each final agent response, commit metadata, cost, and session id so later continuation does not need to reconstruct history from scrollback.\n\n'
        find "{{ out_dir }}/parallel" -name 'aggregation_*.json' -print 2>/dev/null | sort || true
      } | tee "$summary"
summary: |
  # Production triage handoff
  Discovery status: {{ steps.discover_issues.status }}
  Handoff status: {{ steps.start_tmux_handoff.status }}
  Summary artifact: {{ out_dir }}/handoff_summary.md
  Parallel artifacts: {{ out_dir }}/parallel
  Attach: tmux ls | grep pc-{{ triage_name }}
