# Complete - m-workflow-core/03+01_failure_policy

## 완료 일시

2026-06-01

## 요약

Workflow failure metadata와 scheduler timeout/execution failure classification을 1회 리뷰 루프로 완료했다. 최종 판정은 PASS다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_cloud_G07_0.log` | `code_review_cloud_G07_0.log` | PASS | lifecycle failure metadata와 scheduler failure type classification이 계획 범위를 충족했다. |

## 구현/정리 내용

- `FailureType`, failure metadata keys, `FailureInput`, `FailTaskWithMetadata`를 추가하고 기존 `FailTask` 호환성을 유지했다.
- 실패 시 `agent_run_state`, `status_reason`, `failure_type`, `failed_at`를 canonical metadata로 남기고 `wait_type`을 해제하도록 했다.
- scheduler timeout은 `failure_type=timeout`, 일반 execution error는 `failure_type=execution`으로 분류하도록 연결했다.
- workflow/scheduler tests에 failure metadata, wait type 해제, timeout/execution classification 검증을 추가했다.

## 최종 검증

- `cd services/core && go test -count=1 ./internal/workflow` - PASS; `code_review_cloud_G07_0.log`에 workflow package fresh test 성공 출력 기록.
- `cd services/core && go test -count=1 ./internal/scheduler ./internal/workflow` - PASS; `code_review_cloud_G07_0.log`에 focused package fresh test 성공 출력 기록.
- `cd services/core && go test -count=1 ./internal/workflow ./internal/scheduler` - PASS; `code_review_cloud_G07_0.log`에 최종 focused test 성공 출력 기록.
- `cd services/core && go test -count=1 ./...` - PASS; `code_review_cloud_G07_0.log`에 core 전체 Go test 성공 출력 기록.
- Code-review rerun: BLOCKED; `agent-test/local/rules.md`가 현재 환경에서 새 테스트 실행을 금지해 리뷰어는 테스트를 재실행하지 않고 기록된 stdout/stderr와 실제 소스/테스트를 대조했다.

## Roadmap Completion

- Milestone: `agent-roadmap/phase/workflow-core/milestones/workflow-core.md`
- Completed task ids:
  - `failure-policy`: PASS; evidence=`agent-task/archive/2026/06/m-workflow-core/03+01_failure_policy/plan_cloud_G07_0.log`, `agent-task/archive/2026/06/m-workflow-core/03+01_failure_policy/code_review_cloud_G07_0.log`; verification=`cd services/core && go test -count=1 ./internal/workflow`, `cd services/core && go test -count=1 ./internal/scheduler ./internal/workflow`, `cd services/core && go test -count=1 ./internal/workflow ./internal/scheduler`, `cd services/core && go test -count=1 ./...`
- Not completed task ids: 없음

## 잔여 Nit

- `services/core/internal/workflow/model.go`와 `services/core/internal/workflow/lifecycle.go`는 다음 편집 시 `gofmt`로 빈 줄을 정리하면 된다.

## 후속 작업

- 없음
