<!-- task=m-scheduled-market-data-refresh/05+04_backtest_readiness plan=3 tag=REVIEW_REVIEW_REVIEW_cloud-G08 -->

# Plan - REVIEW_REVIEW_REVIEW_cloud-G08 Remote S05 Evidence Recovery

## 이 파일을 읽는 구현 에이전트에게

이 follow-up plan은 직전 code review FAIL의 Required finding 하나만 해결한다. 기본 범위는 코드 변경이 아니라 SDD S05 remote runner PASS evidence 수집이다. 사용자에게 직접 질문하지 말고, selected Milestone `구현 잠금 > 결정 필요` 항목이 실구현을 막는 경우에만 `CODE_REVIEW_cloud_G08.md`의 `사용자 리뷰 요청` 섹션을 채운다. remote endpoint, token, credential, 개인 host 원문은 tracked 파일에 기록하지 않는다.

## Roadmap Targets

- `agent-roadmap/phase/backtest-loop/milestones/scheduled-market-data-refresh.md`
  - Handoff epic: `[backtest-readiness] remote runner`

## Archive Evidence Snapshot

- Current archived plan: `agent-task/m-scheduled-market-data-refresh/05+04_backtest_readiness/plan_cloud_G08_2.log`
- Current archived review: `agent-task/m-scheduled-market-data-refresh/05+04_backtest_readiness/code_review_cloud_G08_2.log`
- Verdict: FAIL
- Required summary:
  - `code_review_cloud_G08_2.log`: `[REVIEW_REVIEW_cloud-G08-1]` remained unchecked and the recorded remote verification shows `ALT_OPERATOR_API_URL` unset, `scheduler_refresh_status` not run, and `scheduled_backtest_readiness` not run.
  - `agent-roadmap/sdd/backtest-loop/scheduled-market-data-refresh/SDD.md`: S05 requires remote runner smoke after scheduler tick and exit code `0` evidence for `[backtest-readiness]`.
- Affected files:
  - `agent-task/m-scheduled-market-data-refresh/05+04_backtest_readiness/CODE_REVIEW_cloud_G08.md`
  - No source file change is expected unless the remote run exposes a real code defect.
- Verification evidence from archived review and reviewer rerun:
  - `go test -count=1 ./apps/cli/internal/operator -run 'Test(ScheduledBacktestReadiness|RunScenarioRefreshStatus|HeadlessValidationHandoff|ExpectedOutputFixtures)'` passed locally in the implementation log.
  - Reviewer rerun of the same local guard passed: `ok git.toki-labs.com/toki/alt/apps/cli/internal/operator 0.017s`.
  - `ALT_OPERATOR_API_URL` was unset in the review environment, so replacement S05 remote evidence was not collected.
- Roadmap carryover:
  - Do not modify `agent-roadmap/**` in this follow-up. PASS completion metadata will carry `backtest-readiness`; runtime owns roadmap updates.
  - USER_REVIEW gate is not triggered by missing endpoint/secret/service setup or missing evidence; record the blocker and leave the task failing if S05 evidence still cannot be collected.
- Allowed narrow archive reread:
  - `agent-task/m-scheduled-market-data-refresh/05+04_backtest_readiness/plan_cloud_G08_2.log`
  - `agent-task/m-scheduled-market-data-refresh/05+04_backtest_readiness/code_review_cloud_G08_2.log`

## 구현 체크리스트

- [ ] [REVIEW_REVIEW_REVIEW_cloud-G08-1] scheduler-enabled remote runner에서 S05 `scheduler_refresh_status`와 `scheduled_backtest_readiness`를 exit code `0`으로 실행하고 sanitized transcript/artifact evidence를 기록한다.
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

## 구현 항목

### [REVIEW_REVIEW_REVIEW_cloud-G08-1] Remote S05 PASS evidence

- 문제: SDD S05 완료 증거는 scheduler tick 이후 remote runner smoke와 exit code `0` transcript인데, 직전 루프는 endpoint/runtime 미가용으로 두 remote scenario를 실행하지 못했다. 이 상태에서는 roadmap `[backtest-readiness]`를 완료로 볼 수 없다.
- 해결:
  - `ALT_OPERATOR_API_URL` 설정 여부를 raw 값을 출력하지 않는 방식으로 확인한다. 값이 있더라도 tracked 파일에는 raw endpoint, token, credential, 개인 host 원문을 쓰지 않는다.
  - scheduler-enabled remote worker/API runtime에서 scheduler tick 완료를 확인한다.
  - remote checkout root 기준으로 아래 두 명령을 실행한다.
  - Step 1은 `scheduler_status=success`, `imported_bar_count >= 1`, summary exit code `0`을 보여야 한다.
  - Step 2는 `scheduled_backtest_readiness` summary exit code `0`, backtest result evidence, process exit code `0`을 보여야 한다.
  - 성공하면 sanitized stdout/stderr 또는 artifact path를 `CODE_REVIEW_cloud_G08.md`에 기록하고 `[REVIEW_REVIEW_REVIEW_cloud-G08-1]`을 체크한다.
  - 여전히 remote access, endpoint, scheduler tick, provider delay, host-key trust 문제로 실행할 수 없으면 체크하지 않는다. 실제 명령, 실제 출력, 미실행 사유를 `검증 결과`에 남기고 USER_REVIEW는 요청하지 않는다.
- remote 검증:
  - `go run ./apps/cli/cmd/alt operator scenario run --file apps/cli/testdata/operator/scheduler_refresh_status.yaml --api-url "$ALT_OPERATOR_API_URL" --output jsonl`
  - `go run ./apps/cli/cmd/alt operator scenario run --file apps/cli/testdata/operator/scheduled_backtest_readiness.yaml --api-url "$ALT_OPERATOR_API_URL" --output jsonl`
- local guard:
  - `go test -count=1 ./apps/cli/internal/operator -run 'Test(ScheduledBacktestReadiness|RunScenarioRefreshStatus|HeadlessValidationHandoff|ExpectedOutputFixtures)'`

## 최종 검증

- `go test -count=1 ./apps/cli/internal/operator -run 'Test(ScheduledBacktestReadiness|RunScenarioRefreshStatus|HeadlessValidationHandoff|ExpectedOutputFixtures)'`
- `go run ./apps/cli/cmd/alt operator scenario run --file apps/cli/testdata/operator/scheduler_refresh_status.yaml --api-url "$ALT_OPERATOR_API_URL" --output jsonl`
- `go run ./apps/cli/cmd/alt operator scenario run --file apps/cli/testdata/operator/scheduled_backtest_readiness.yaml --api-url "$ALT_OPERATOR_API_URL" --output jsonl`

모든 증거 기록 완료 후 반드시 `CODE_REVIEW_cloud_G08.md`의 구현 에이전트 소유 섹션을 채운다. 이 파일 작성이 구현의 마지막 단계다.
