# Complete - 09+07_cli_process_runtime_rollout

## 완료 일시

2026-05-21

## 요약

SYSTEM_RUNTIME_CLI_ROLLOUT을 2회 리뷰 루프로 완료했고 최종 판정은 PASS다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_cloud_G07_0.log` | `code_review_cloud_G07_0.log` | FAIL | Unix printer runtime 이전 후 CLI help가 byte list로 출력되는 회귀가 발견되어 follow-up을 생성함 |
| `plan_cloud_G07_1.log` | `code_review_cloud_G07_1.log` | PASS | Unix printer stdout/stderr decoding 복구와 regression test 보강이 확인됨 |

## 구현/정리 내용

- `Printer.windows()`/`Printer.unix()`와 `RegistPath.create()`에 `SystemRuntime` 주입 경로를 추가해 CLI process 실행을 fake runtime으로 검증 가능하게 했다.
- `RegistPath` macOS/Windows PATH 등록 보조 로직의 직접 process 호출을 `SystemRuntime`으로 이전했다.
- Unix `Printer`의 `runExecutable` 호출에 `stdoutEncoding: utf8`, `stderrEncoding: utf8`을 명시해 CLI help byte-list 출력 회귀를 복구했다.
- `test/oto_cli_runtime_test.dart`에 printer/regist path runtime fake 테스트와 Unix printer encoding 전달 검증을 추가했다.

## 최종 검증

- `dart format --output=none --set-exit-if-changed lib/cli/printer.dart test/oto_cli_runtime_test.dart` - PASS; `Formatted 2 files (0 changed) in 0.02 seconds.`
- `dart analyze` - PASS; `No issues found!`
- `dart test test/oto_cli_runtime_test.dart` - PASS; `+4: All tests passed!`
- `dart run bin/main.dart` - PASS; CLI help가 텍스트로 출력됨.
- `dart run bin/main.dart | rg "A command-line oto\\.|Usage:|Available Command:"` - PASS; help header, usage, command section을 찾음.
- `rg --sort path -n "ProcessExecutor\\.(start|run)|Process\\.run|Process\\.start" lib/cli/printer.dart lib/cli/commands/install/regist_path.dart` - PASS; stdout 없음.

## 잔여 Nit

- 없음

## 후속 작업

- 없음
