<!-- task=m-persistence-worker-backbone/02+01_worker_runtime plan=1 tag=REVIEW_WORKER -->

# Plan - REVIEW_WORKER

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

`CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션을 채우는 것이 구현의 마지막 필수 단계다. 구현 후 검증 명령을 실행하고 실제 출력과 구현 메모를 기록한 뒤 active 파일을 그대로 둔 채 리뷰 준비를 보고한다. 사용자만 결정할 수 있는 범위 변경, 외부 환경 준비, 또는 계획 충돌로 막히면 active review stub의 `사용자 리뷰 요청` 섹션에 정확한 증거와 재개 조건을 적고 멈춘다. 구현 에이전트는 `USER_REVIEW.md`, archive log, `complete.log`를 만들지 않는다.

## 배경

첫 번째 리뷰는 worker runtime 기능과 검증은 통과했지만, `services/worker/cmd/alt-worker/main.go`에 side-effect 없는 Postgres adapter blank import가 남아 있어 `WARN` 판정을 받았다. 현재 worker entrypoint는 config와 job runner bootstrap만 담당하므로, 실제 storage adapter를 구성하기 전까지 concrete Postgres package를 끌어오지 않는다.

## 사용자 리뷰 요청 흐름

구현 중 사용자 결정이나 외부 환경 준비가 필요하면 active `CODE_REVIEW-*-G??.md`의 `사용자 리뷰 요청` 섹션에 기록한다. 이 섹션은 `agent-ops/skills/common/_templates/implementation-user-review-request-section.md`에서 복사된 형식이며, code-review가 검증 후 실제 `USER_REVIEW.md` 작성 여부를 결정한다.

## 리뷰 근거

- Archived plan: `agent-task/m-persistence-worker-backbone/02+01_worker_runtime/plan_cloud_G07_0.log`
- Archived review: `agent-task/m-persistence-worker-backbone/02+01_worker_runtime/code_review_cloud_G07_0.log`
- 판정: WARN
- 문제: `services/worker/cmd/alt-worker/main.go:8`의 `_ "git.toki-labs.com/toki/alt/services/worker/internal/storage/postgres"`는 side effect가 없으므로 worker bootstrap에 불필요한 concrete storage dependency를 만든다.

## 구현 체크리스트

- [ ] [REVIEW_WORKER-1] No-op Postgres blank import를 worker entrypoint에서 제거하고 `alt-worker` dependency graph에 concrete Postgres adapter가 남지 않는지 검증한다.
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

## 의존 관계 및 구현 순서

같은 task directory의 archived `plan_cloud_G07_0.log`와 `code_review_cloud_G07_0.log`가 선행 리뷰 근거다. 새 외부 의존성이나 사용자 결정은 없다.

### [REVIEW_WORKER-1] Remove No-op Concrete Storage Import

#### 문제

`services/worker/cmd/alt-worker/main.go:8`이 `internal/storage/postgres`를 blank import한다. 해당 package는 registration 또는 `init` side effect가 없으므로 import 자체가 런타임 동작을 만들지 않는다. 대신 `alt-worker` binary가 concrete Postgres adapter와 그 dependency를 조기에 포함하게 된다.

Before:

```go
import (
	"log/slog"

	"git.toki-labs.com/toki/alt/services/worker/internal/config"
	"git.toki-labs.com/toki/alt/services/worker/internal/jobs"
	_ "git.toki-labs.com/toki/alt/services/worker/internal/storage/postgres"
)
```

After:

```go
import (
	"log/slog"

	"git.toki-labs.com/toki/alt/services/worker/internal/config"
	"git.toki-labs.com/toki/alt/services/worker/internal/jobs"
)
```

#### 해결 방법

- `services/worker/cmd/alt-worker/main.go`에서 no-op blank import만 제거한다.
- `jobs`, `storage`, `config`, `go.mod`에는 이 후속 계획에서 새 변경을 만들지 않는다.
- `go list -deps ./cmd/alt-worker` 결과에 `services/worker/internal/storage/postgres`가 없는지 검증한다.

#### 수정 파일 및 체크리스트

- [ ] `services/worker/cmd/alt-worker/main.go`: no-op blank import 제거.

#### 테스트 작성

- 신규 테스트 없음. 이 변경은 dependency graph cleanup이며 기존 compile/build 검증과 `go list -deps` 검증으로 충분하다.

#### 중간 검증

```bash
! (cd services/worker && go list -deps ./cmd/alt-worker | rg '^git\.toki-labs\.com/toki/alt/services/worker/internal/storage/postgres$')
```

예상 결과: 명령이 exit 0으로 끝나고 matching package 출력이 없다.

## 수정 파일 요약

| 파일 | 항목 |
|------|------|
| `services/worker/cmd/alt-worker/main.go` | REVIEW_WORKER-1 |

## 최종 검증

```bash
(cd services/worker && go test -count=1 ./cmd/alt-worker ./internal/jobs)
```

```bash
! (cd services/worker && go list -deps ./cmd/alt-worker | rg '^git\.toki-labs\.com/toki/alt/services/worker/internal/storage/postgres$')
```

```bash
bin/build
```

모든 코드 변경 완료 후 반드시 `CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션을 채운다. 이 파일 작성이 구현의 마지막 단계다.
