# Complete - yaml_validation_contract/02+01_validate_cli

## 완료 일시

2026-05-22

## 요약

`oto validate -f <path> [--json]` CLI 표면 추가 작업을 1회 리뷰 루프로 완료했으며 최종 판정은 PASS다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_cloud_G07_0.log` | `code_review_cloud_G07_0.log` | PASS | 계획된 CLI command 등록, validation JSON contract, process exit code 전달, direct/bin smoke 테스트가 모두 충족됨. |

## 구현/정리 내용

- `CommandValidateCli`를 추가하고 `bin/main.dart`에 top-level `validate` command를 등록했다.
- YAML validation용 `Application.validateYamlContent` contract를 CLI에서 호출해 JSON/human 출력과 exit code를 전달하도록 했다.
- validate CLI direct/unit 테스트와 actual bin smoke 테스트를 추가했다.

## 최종 검증

- `dart analyze` - PASS; `No issues found!`
- `dart test test/oto_application_test.dart test/oto_core_test.dart test/oto_validate_cli_test.dart test/oto_catalog_cli_test.dart` - PASS; `+62: All tests passed!`
- `dart run bin/main.dart validate -f "$tmp" --json` - PASS; stdout은 parseable `yamlValidation` JSON이고 process exit code는 0.
- missing file, malformed YAML, invalid pipeline에 대한 `dart run bin/main.dart validate -f ... --json` - PASS; stdout은 validation JSON이고 process exit code는 10.

## 잔여 Nit

- 없음

## 후속 작업

- 없음
