# Complete - m-remote-run-lifecycle/01_run_request_pipeline

## 완료 일시

2026-06-06

## 요약

원격 실행 job의 run request 저장, HTTP create/claim 계약, Dart claim result 파싱을 1회 리뷰로 PASS 완료.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_cloud_G07_0.log` | `code_review_cloud_G07_0.log` | PASS | Required/Suggested 이슈 없음; 계획된 서버 저장/claim/Dart 파싱 및 검증 통과 |

## 구현/정리 내용

- `cicdstate.Job`에 proto 비의존 `RunInput` 저장 모델과 deep copy 경계를 추가했다.
- job create/get 및 runner claim HTTP 계약에 `run_request` 저장, 노출, claim 응답 주입, invalid run input 거부를 연결했다.
- Dart `JobClaimResult`가 snake_case/camelCase `run_request`를 `oto.RunRequest`로 파싱하도록 확장하고 관련 smoke 테스트를 갱신했다.

## 최종 검증

- `cd services/core && go test ./...` - PASS; 전체 Go package 테스트 통과.
- `cd services/core && go test ./internal/cicdstate -run TestStoreCreatesJobWithRunInputCopy -count=1 -v` - PASS; 신규 RunInput deep copy 테스트 실제 실행 통과.
- `cd services/core && go test ./internal/httpserver -run 'RunRequest|RejectsInvalidRunInput|ClaimReturns|ClaimReport' -count=1 -v` - PASS; 신규/갱신 HTTP run_request 테스트 실제 실행 통과.
- `cd apps/runner && dart analyze` - PASS; `No issues found!`.
- `cd apps/runner && dart test test/oto_agent_registration_test.dart test/oto_server_connection_smoke_test.dart test/oto_application_test.dart test/oto_context_test.dart test/oto_core_test.dart` - PASS; `+83: All tests passed!`.

## 잔여 Nit

- 없음

## 후속 작업

- 없음
