<!-- task=m-gito-branch-event-creation-sync-bridge/01_event_client review=0 tag=GITO_EVENT_CLIENT -->

# Code Review: Gito Branch Event Client

## 리뷰 범위
- Roadmap milestone: `gito-branch-event-creation-sync-bridge`
- Task IDs:
  - `[contract-consume]`
  - `[core-client]`
  - `[branch-filter]`
- Plan: `PLAN-cloud-G07.md`

## 구현 항목별 완료 여부
- [x] Gito branch event 계약 소비 메모 보강 — `packages/contracts/notes/flutter-core-api-candidates.md` 1.8을 Flutter client wakeup(1.8.1)과 Core backend bridge(1.8.2)로 분리.
- [x] Core `gitoevents` DTO/파서 추가 — `services/core/internal/gitoevents/events.go` (`BranchUpdatedEvent`, `BuildSubscribeEnvelope`, `DecodeBranchUpdatedEnvelope`, `IsTarget`, `MilestoneChangedFiles`).
- [x] Core proto-socket event client seam 추가 — `services/core/internal/gitoevents/client.go` (`Transport` interface, `Client.Run`).
- [x] Gito endpoint/repo/branch 설정 추가 — `services/core/internal/config/config.go` (`GitoProtoSocketURL`, `GitoRepoID`, `GitoBranch`, `GitoBranchEventsEnabled()`).
- [x] branch/repo/path 필터 테스트 추가 — `events_test.go` (`IsTarget`, `MilestoneChangedFiles`, wrong action/channel/malformed reject).
- [x] client subscribe/dispatch 테스트 추가 — `client_test.go` (fake transport subscribe envelope 검증, on-target handler forward, off-target/malformed drop).
- [x] 전체 검증 통과 — 아래 검증 명령 4개 모두 통과.

## 리뷰 체크리스트
- [x] `branch.updated`가 wakeup-only semantics로만 사용되는가 — client는 decode된 event를 handler로 전달만 하고, Plane/roadmap mutation을 수행하지 않음. revision 검증은 후속 bridge로 분리(events.go 패키지 doc, 1.8.2 메모).
- [x] `changed_files`를 최종 truth로 신뢰하지 않는가 — `MilestoneChangedFiles`는 wakeup 관련성 힌트로만 노출되며, 동기화 결정 근거로 쓰지 않음. 계약 메모 1.8.2에 명시.
- [x] repo/branch/channel/action mismatch가 enqueue path로 흐르지 않는가 — `handleEnvelope`에서 wrong channel/action, off-target repo/branch, malformed payload는 log path로 처리하고 handler에 넘기지 않음. `TestClientDropsOffTargetAndMalformedEvents`로 고정.
- [x] endpoint 미설정 시 기존 Core 동작이 바뀌지 않는가 — config 필드 추가만 했고 server/scheduler wiring은 이 G07 범위 밖. `GitoBranchEventsEnabled()`는 endpoint+repo 모두 있어야 true. `TestConfigGitoBranchDefaultsAndDisabled`로 고정.
- [x] 계약 문서에 Flutter client 소비와 Core backend bridge 책임이 분리되어 있는가 — 1.8.1 / 1.8.2로 분리.

## 검증 명령
- [x] `cd services/core && go test -count=1 ./internal/gitoevents ./internal/config ./internal/protosocket` — ok (3 packages)
- [x] `cd services/core && go test -count=1 ./...` — ok (전체 통과)
- [x] `cd services/core && go vet ./...` — clean
- [x] `git diff --check` — clean

## 리뷰 결과
- Status: PASS
- Findings:
  - 차단 결함 없음. 3개 Task(`[contract-consume]`, `[core-client]`, `[branch-filter]`) 구현과 검증이 plan 완료 조건을 충족함.
  - 범위 메모: production `Transport`(실제 websocket 연결)과 server/scheduler lifecycle wiring, revision-scan/creation-enqueue는 후속 Task(`revision-scan`, `creation-enqueue`, `runtime-wiring`) 책임이며 본 G07 범위 밖.
  - 사용자 확인 대기: Gito 설정명(`GITO_PROTO_SOCKET_URL` / `GITO_REPO_ID` / `GITO_BRANCH`)이 운영 환경에 맞는지, wakeup-only + 후속 revision 검증 분리가 의도와 맞는지.

## 코드리뷰 결과

- 종합 판정: PASS
- 차원별 평가:
  - correctness: Pass
  - completeness: Pass
  - test coverage: Pass
  - API contract: Pass
  - code quality: Pass
  - plan deviation: Pass
  - verification trust: Pass
- 발견된 문제: 없음
- 다음 단계: PASS이므로 `complete.log` 작성 후 task directory를 archive로 이동한다. `m-gito-branch-event-creation-sync-bridge` 완료 이벤트 메타데이터를 보고하고, roadmap 수정은 런타임 책임으로 남긴다.

## 코드리뷰 전용 체크리스트

- [x] `코드리뷰 결과`에 `PASS`, `WARN`, `FAIL` 중 하나의 판정을 append한다.
- [x] 판정과 `차원별 평가`, Required/Suggested/Nit 분류가 서로 일치한다.
- [x] active `CODE_REVIEW-cloud-G07.md`를 `code_review_cloud_G07_0.log`로 아카이브한다.
- [x] active `PLAN-cloud-G07.md`를 `plan_cloud_G07_0.log`로 아카이브한다.
- [x] `.gitignore`의 Agent-Ops 관리 block이 `agent-task/**/*.md`와 `agent-task/**/*.log`를 unignore하고 `agent-roadmap/current.md`를 ignore하는지 확인한다.
- [x] PASS이므로 `agent-ops/skills/common/code-review/templates/complete-log-template.md` 기준으로 `complete.log`를 작성하고 active `.md` 파일을 남기지 않는다.
- [x] PASS이므로 active task directory `agent-task/m-gito-branch-event-creation-sync-bridge/01_event_client/`를 `agent-task/archive/2026/06/m-gito-branch-event-creation-sync-bridge/01_event_client/`로 이동한다.
- [x] PASS이고 task group이 `m-gito-branch-event-creation-sync-bridge`이므로 런타임이 읽을 완료 이벤트 메타데이터를 보고 대상으로 정리하고, roadmap 수정이나 `update-roadmap` 직접 호출을 하지 않는다.
- [x] PASS split 작업이며 active parent `agent-task/m-gito-branch-event-creation-sync-bridge/`는 sibling `02+01_creation_enqueue_bridge`가 남아 있어 유지한다.
