# Complete - execution_result_envelope/02+01_exe_json_cli

## 완료 일시

2026-05-22

## 요약

`oto exe -f <file> --json` 실행 결과 envelope 연결 작업을 1회 리뷰 루프로 완료했으며 최종 판정은 PASS입니다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_cloud_G07_0.log` | `code_review_cloud_G07_0.log` | PASS | JSON stdout, process exit code, scheduler 호환 수신 경로가 검증됨. |

## 구현/정리 내용

- `CommandExe` 인자 파싱을 `--json` 위치와 무관한 선파싱/후실행 구조로 정리하고, JSON 모드에서 `BuildResult.toJson()` envelope를 stdout에 출력하도록 연결함.
- isolate complete 이벤트가 Map envelope와 기존 int를 모두 처리하도록 하여 scheduler 호출 경로를 보존함.
- 실제 `dart run bin/main.dart exe -f <file> --json` smoke와 CommandExe JSON unit 테스트를 추가함.

## 최종 검증

- `dart analyze` - PASS; `No issues found!`
- `dart test test/oto_application_test.dart --plain-name "CommandExe"` - PASS; `All tests passed!`
- `dart test test/oto_application_test.dart --plain-name "actual bin exe --json"` - PASS; `All tests passed!`
- `dart test test/oto_application_test.dart` - PASS; `00:03 +29: All tests passed!`
- `dart test test/oto_validate_cli_test.dart test/oto_catalog_cli_test.dart test/oto_scheduler_runtime_test.dart` - PASS; `00:05 +19: All tests passed!`
- `dart run bin/main.dart exe -f <missing> --json` - PASS; process exit code 10 and JSON envelope `exitCode: 10` matched.

## 잔여 Nit

- `lib/cli/commands/command_exe.dart:215` EOF 여분 빈 줄 때문에 `git diff --check`가 `new blank line at EOF`를 보고함.
- `lib/oto/core/build_result.dart:34` EOF 여분 빈 줄 때문에 `git diff --check`가 `new blank line at EOF`를 보고함.

## 후속 작업

- 없음
