# User Review Required - m-milestone-work-item-creation-sync/11_creation_sync_orchestrator

## 요청 일시

2026-06-14

## 상태

RESOLVED

## 해소 결과

- 해소일: 2026-06-14
- 최종 해소 판정: PASS/RESOLVED
- 사용자 결정: Gito proto-socket `branch.updated` backend bridge는 현재 task의 미완료로 남기지 않고, 별도 Milestone `agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/gito-branch-event-creation-sync-bridge.md`로 분리한다.
- 현재 task 완료 범위: matched develop scan/job 입력 이후의 creation sync orchestrator, River worker, server wiring, `EnqueueRoadmapCreationSync` seam까지로 축소해 닫는다.

## 사유

- 유형: implementation-blocked
- 현재 리뷰 회차: 1
- 최종 판정: FAIL
- 요약: creation sync orchestrator와 River worker/enqueue seam은 구현됐지만, 이를 실제로 호출할 develop scan producer가 repo에 없다. producer를 이번 slice에 포함할지와 트리거 메커니즘을 무엇으로 둘지는 public/internal API 경계와 proto-socket/REST 예외 판단에 걸려 있어 자동 follow-up이 임의 결정하지 않는다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_cloud_G07_0.log` | `code_review_cloud_G07_0.log` | FAIL | `EnqueueRoadmapCreationSync` caller가 없어 REVIEW_SYNC-2가 사용자 범위 결정 대기 상태로 남음 |
| `USER_REVIEW.md` | user decision | PASS/RESOLVED | Gito event consumer/producer bridge를 새 Milestone으로 분리하고 현재 task는 orchestrator/worker/enqueue seam 범위로 종료 |

## 차단 근거

- 문제: `services/core/internal/scheduler/river.go:99`에 enqueue seam이 있고 `services/core/internal/scheduler/roadmap_sync_jobs.go:18`은 develop-scan handoff가 호출한다고 설명하지만, 실제 repo에는 그 handoff/producer가 없다.
- 현재 archive plan: `plan_cloud_G07_0.log`
- 현재 archive review: `code_review_cloud_G07_0.log`
- 검증 명령: `rg --sort path "scheduler\\.New\\(|EnqueueRoadmapCreationSync|RoadmapCreationSync|CreationSyncRunner" services/core`
- 실제 출력: `EnqueueRoadmapCreationSync` 호출자는 `services/core/internal/scheduler/river.go`의 method 정의뿐이며, 나머지는 worker/job/test/주입 코드다. 추가 검증 `cd services/core && go test -count=1 ./...`, `cd services/core && go vet ./...`, `git diff --check`는 모두 PASS했다.
- 차단 판단 근거: 계획은 producer가 없으면 dead worker만으로 PASS하지 말고 "runtime scan producer 범위 결정 필요"를 사용자 리뷰 요청으로 남기라고 명시했다. 새 producer를 만들려면 callback route, scheduled scan, 기존 authoring handoff 확장 등 트리거 형태를 결정해야 하며, 이는 contracts/core domain boundary와 직결되는 범위 결정이다.

## 사용자 결정 필요

- [ ] 자동 follow-up plan/review를 계속 진행한다.
- [ ] 계획을 재작성한다.
- [ ] 테스트 환경, secret, 외부 서비스, SDK, 장비 조건을 준비한 뒤 재시도한다.
- [x] 작업 범위를 줄이거나 보류/폐기한다.

구체적으로 아래 중 하나가 필요하다.

- producer를 이번 slice에 포함하고, 선택한 트리거 메커니즘에서 `EnqueueRoadmapCreationSync`를 호출하도록 구현한다.
- producer를 이번 slice 범위에서 제외하고, 현재 worker/seam/server 주입과 단위 테스트만으로 이 task를 종료할지 결정한다.
- producer 설계를 별도 plan으로 재작성한다.

해소: producer 설계는 별도 Milestone으로 분리했고, 현재 task는 producer를 포함하지 않는 worker/seam/server wiring 범위로 종료한다.

## 재개 조건

- producer를 포함한다면 트리거 메커니즘이 정해져 있고, 해당 caller가 `RoadmapCreationSyncJobArgs`를 만들 수 있는 입력 출처가 정해져 있어야 한다.
- producer를 제외한다면 이번 task의 완료 범위를 worker/seam/server wiring으로 축소한다는 사용자 결정이 필요하다.
- 계획 재작성이라면 새 scope가 public HTTP, proto-socket, scheduled scan, 기존 authoring handoff 중 어느 경계를 사용할지 명시돼야 한다.

## 다음 실행 힌트

- 사용자 결정 후 `plan` 스킬로 이 `USER_REVIEW.md`를 `user_review_0.log`로 아카이브하고, 같은 task path에서 새 `PLAN-*-G??.md` / `CODE_REVIEW-*-G??.md`를 작성한다.
- producer 구현을 계속한다면 우선 `services/core/internal/authoring/result.go`, `services/core/internal/workitempipeline/service.go`, `services/core/internal/scheduler/river.go`, `services/core/internal/scheduler/roadmap_sync_jobs.go`의 책임 경계를 비교한다.

## 종료 규칙

- 사용자가 이 stop state를 완료/PASS로 해소하면 `USER_REVIEW.md`를 해소 상태로 갱신하고, `agent-ops/skills/common/code-review/templates/complete-log-template.md` 기준 `complete.log`를 작성한 뒤 task directory를 archive로 이동한다.
- 새 구현이 필요하면 `plan` 스킬이 `USER_REVIEW.md`를 `user_review_N.log`로 아카이브한 뒤 새 `PLAN-*-G??.md` / `CODE_REVIEW-*-G??.md`를 작성한다.
