{
  "task_id": "task-2467+3",
  "current_state": "DONE",
  "transitions": [
    {
      "from": null,
      "to": "CREATED",
      "ts": "2026-05-06T04:53:28Z",
      "actor": "jay <jonghyuk.jeon@gmail.com>",
      "command": "scripts/taskctl.py init task-2467+3",
      "exit_code": 0,
      "evidence_path": "/home/jay/workspace/.tasks/evidence/task-2467+3"
    },
    {
      "from": "CREATED",
      "to": "WORKTREE_READY",
      "ts": "2026-05-06T04:53:47Z",
      "actor": "jay <jonghyuk.jeon@gmail.com>",
      "command": "scripts/taskctl.py worktree-ready task-2467+3",
      "exit_code": 0,
      "evidence_path": "/home/jay/workspace/.tasks/evidence/task-2467+3"
    },
    {
      "from": "WORKTREE_READY",
      "to": "RUNNING",
      "ts": "2026-05-06T04:53:47Z",
      "actor": "jay <jonghyuk.jeon@gmail.com>",
      "command": "scripts/taskctl.py run task-2467+3",
      "exit_code": 0,
      "evidence_path": "/home/jay/workspace/.tasks/evidence/task-2467+3"
    },
    {
      "from": "RUNNING",
      "to": "COMMITTED",
      "ts": "2026-05-06T04:53:47Z",
      "actor": "jay <jonghyuk.jeon@gmail.com>",
      "command": "scripts/taskctl.py commit task-2467+3",
      "exit_code": 0,
      "evidence_path": "/home/jay/workspace/.tasks/evidence/task-2467+3"
    },
    {
      "from": "COMMITTED",
      "to": "ESCALATED",
      "ts": "2026-05-06T04:57:27Z",
      "actor": "jay <jonghyuk.jeon@gmail.com>",
      "command": "scripts/taskctl.py pr-open --auto task-2467+3",
      "exit_code": 0,
      "evidence_path": "/home/jay/workspace/.tasks/evidence/task-2467+3",
      "meta": {
        "reason": "pr_author_not_bot",
        "pr_author": "app/jeon-jonghyuk-taskctl-bot"
      }
    },
    {
      "from": "ESCALATED",
      "to": "COMMITTED",
      "actor": "jay <jonghyuk.jeon@gmail.com>",
      "ts": "2026-05-06T05:00:00Z",
      "meta": {
        "reason": "allowlist 보강 후 재시도",
        "manual_recovery": true
      }
    },
    {
      "from": "COMMITTED",
      "to": "PR_OPEN",
      "ts": "2026-05-06T04:59:23Z",
      "actor": "jay <jonghyuk.jeon@gmail.com>",
      "command": "scripts/taskctl.py pr-open --auto task-2467+3",
      "exit_code": 0,
      "evidence_path": "/home/jay/workspace/.tasks/evidence/task-2467+3",
      "meta": {
        "pr": 33
      }
    },
    {
      "from": "PR_OPEN",
      "to": "CI_PENDING",
      "ts": "2026-05-06T04:59:32Z",
      "actor": "jay <jonghyuk.jeon@gmail.com>",
      "command": "scripts/taskctl.py ci-check task-2467+3",
      "exit_code": 0,
      "evidence_path": "/home/jay/workspace/.tasks/evidence/task-2467+3",
      "meta": {
        "pr": 33
      }
    },
    {
      "from": "CI_PENDING",
      "to": "GEMINI_PENDING",
      "ts": "2026-05-06T04:59:36Z",
      "actor": "jay <jonghyuk.jeon@gmail.com>",
      "command": "scripts/taskctl.py gemini-evidence task-2467+3",
      "exit_code": 0,
      "evidence_path": "/home/jay/workspace/.tasks/evidence/task-2467+3",
      "meta": {
        "pr": 33
      }
    },
    {
      "from": "GEMINI_PENDING",
      "to": "REVIEW_READY",
      "ts": "2026-05-06T04:59:36Z",
      "actor": "jay <jonghyuk.jeon@gmail.com>",
      "command": "scripts/taskctl.py review-ready task-2467+3",
      "exit_code": 0,
      "evidence_path": "/home/jay/workspace/.tasks/evidence/task-2467+3"
    },
    {
      "from": "REVIEW_READY",
      "to": "GUARD_PASS",
      "ts": "2026-05-06T05:05:55Z",
      "actor": "jay <jonghyuk.jeon@gmail.com>",
      "command": "scripts/taskctl.py verify task-2467+3",
      "exit_code": 0,
      "evidence_path": "/home/jay/workspace/.tasks/evidence/task-2467+3",
      "meta": {
        "guard_sh": "PASS",
        "qc_report_guard": "PASS"
      }
    },
    {
      "from": "GUARD_PASS",
      "to": "HUMAN_APPROVED",
      "ts": "2026-05-06T05:06:41Z",
      "actor": "jay <jonghyuk.jeon@gmail.com>",
      "command": "scripts/taskctl.py approve --by JonghyukJeon task-2467+3",
      "exit_code": 0,
      "evidence_path": "/home/jay/workspace/.tasks/evidence/task-2467+3",
      "meta": {
        "approver": "JonghyukJeon"
      }
    },
    {
      "from": "HUMAN_APPROVED",
      "to": "MERGING",
      "ts": "2026-05-06T05:21:07Z",
      "actor": "jay <jonghyuk.jeon@gmail.com>",
      "command": "scripts/taskctl.py merge task-2467+3",
      "exit_code": 0,
      "evidence_path": "/home/jay/workspace/.tasks/evidence/task-2467+3",
      "meta": {
        "bypass": false,
        "admin": false
      }
    },
    {
      "from": "MERGING",
      "to": "FAILED",
      "ts": "2026-05-06T05:21:08Z",
      "actor": "jay <jonghyuk.jeon@gmail.com>",
      "command": "scripts/taskctl.py merge task-2467+3",
      "exit_code": 0,
      "evidence_path": "/home/jay/workspace/.tasks/evidence/task-2467+3",
      "forced": true,
      "meta": {
        "reason": "gh pr merge exit=1"
      }
    },
    {
      "from": "FAILED",
      "to": "HUMAN_APPROVED",
      "actor": "jay <jonghyuk.jeon@gmail.com>",
      "ts": "2026-05-06T05:25:00Z",
      "meta": {
        "reason": "gh pr merge base policy 차단 후 thread resolve 완료, retry"
      }
    },
    {
      "from": "HUMAN_APPROVED",
      "to": "MERGING",
      "ts": "2026-05-06T05:22:49Z",
      "actor": "jay <jonghyuk.jeon@gmail.com>",
      "command": "scripts/taskctl.py merge task-2467+3",
      "exit_code": 0,
      "evidence_path": "/home/jay/workspace/.tasks/evidence/task-2467+3",
      "meta": {
        "bypass": false,
        "admin": false
      }
    },
    {
      "from": "MERGING",
      "to": "MERGED",
      "ts": "2026-05-06T05:22:54Z",
      "actor": "jay <jonghyuk.jeon@gmail.com>",
      "command": "scripts/taskctl.py merge task-2467+3",
      "exit_code": 0,
      "evidence_path": "/home/jay/workspace/.tasks/evidence/task-2467+3",
      "meta": {
        "pr": 33,
        "bypass": false,
        "admin": false,
        "merge_commit_sha": "8d6670809e5b635b380b6a6e5566c979d10a8744"
      }
    },
    {
      "from": "MERGED",
      "to": "DONE",
      "ts": "2026-05-06T05:23:02Z",
      "actor": "jay <jonghyuk.jeon@gmail.com>",
      "command": "scripts/taskctl.py done task-2467+3",
      "exit_code": 0,
      "evidence_path": "/home/jay/workspace/.tasks/evidence/task-2467+3"
    }
  ],
  "evidence": {
    "git_diff_sha": "38bc6c515092e34dc8c8f915d968014861959e05",
    "changed_paths": [
      "memory/reports/task-2467+3.md",
      "memory/specs/pr-lifecycle-spec.md",
      "memory/specs/taskctl-state-machine-spec.md",
      "memory/tasks/task-2467+3.md",
      "scripts/anu_confirm_bot/main.py",
      "scripts/finish-task.sh",
      "scripts/git-hooks/pre-commit",
      "scripts/git-hooks/pre-push",
      "scripts/taskctl.py",
      "scripts/worktree_manager.py",
      "tests/state_machine/__init__.py",
      "tests/state_machine/test_transitions.py",
      "tests/taskctl/test_admin_override.py",
      "tests/taskctl/test_evidence.py",
      "tests/taskctl/test_hidden_path_audit.py",
      "tests/taskctl/test_lifecycle.py",
      "tests/taskctl/test_self_approve.py",
      "tests/test_taskctl.py"
    ],
    "branch": "task/task-2467+3-dev6",
    "pr_number": 33,
    "pr_state": "OPEN",
    "ci_checks": {
      "cancel-kill-switch": "SUCCESS",
      "qc-check": "SUCCESS",
      "hidden-path-audit": "SUCCESS",
      "lock-in-check": "SUCCESS",
      "merge-safety-check": "SUCCESS",
      "gemini-review-gate": "SUCCESS",
      "ci/guard": "SUCCESS",
      "guard": "SUCCESS"
    },
    "guard_sh_result": "PASS",
    "qc_report_guard_result": "PASS",
    "merge_timestamp": "2026-05-06T05:22:53Z",
    "exit_codes": {
      "verify_guard_sh": 0,
      "verify_qc_report_guard": 0,
      "verify": 0,
      "approve": 0,
      "merge": 0
    },
    "mergeable": "MERGEABLE",
    "merge_state_status": "CLEAN",
    "guard_sh_detail": {
      "result": "PASS",
      "exit_code": 0,
      "stdout_tail": "",
      "stderr_tail": "[pre-push-guard] task=task-2467+3\n  B-1 working tree clean    : PASS — 변경 없음 (clean)\n  B-2 ahead/behind          : PASS — ahead=12 behind=0 — push 가능\n  B-3 task scope 일치       : PASS — head_diff 18건 모두 scope 내\n  B-4 보고서/qc-result 일치 : PASS — JSON=PASS / report=PASS — 일치\n[pre-push-guard] OVERALL: PASS (rc=0)\n"
    },
    "qc_report_guard_detail": {
      "result": "PASS",
      "exit_code": 0,
      "stdout_tail": "",
      "stderr_tail": "[qc-report-guard] task=task-2467+3\n  qc-result JSON verdict : PASS\n  report verdict         : PASS  ← 출처 (frontmatter+## QC Verdict)\n  매칭 결과              : OK\n[qc-report-guard] OVERALL: PASS (rc=0)\n"
    },
    "guard_sh_detail_merge": {
      "result": "PASS",
      "exit_code": 0,
      "stdout_tail": "",
      "stderr_tail": "[pre-push-guard] task=task-2467+3\n  B-1 working tree clean    : PASS — 변경 없음 (clean)\n  B-2 ahead/behind          : PASS — ahead=12 behind=0 — push 가능\n  B-3 task scope 일치       : PASS — head_diff 18건 모두 scope 내\n  B-4 보고서/qc-result 일치 : PASS — JSON=PASS / report=PASS — 일치\n[pre-push-guard] OVERALL: PASS (rc=0)\n"
    },
    "qc_report_guard_detail_merge": {
      "result": "PASS",
      "exit_code": 0,
      "stdout_tail": "",
      "stderr_tail": "[qc-report-guard] task=task-2467+3\n  qc-result JSON verdict : PASS\n  report verdict         : PASS  ← 출처 (frontmatter+## QC Verdict)\n  매칭 결과              : OK\n[qc-report-guard] OVERALL: PASS (rc=0)\n"
    },
    "merge_subprocess": {
      "exit_code": 0,
      "stdout_tail": "",
      "stderr_tail": ""
    }
  },
  "human_approved": true,
  "bypass": {
    "used": false,
    "ts": null,
    "actor": null
  },
  "admin_override": {
    "used": false,
    "ts": null,
    "actor": null,
    "reason": null,
    "audit_log_offset": null
  },
  "_checksum": "35df09ebd889441a6b71e6f5bc8ec02d7f12438f253af7512f5512fd572c7650"
}