- PHASE.md: operation-event-outbox 상태 [진행중] → [검토중] 변경 - milestone: 완료 리뷰 섹션 작성 (상태: 요청됨, 요청일: 2026-06-14) - 완료 근거: complete.log event-store PASS, DB test SKIP 없이 PASS - 검증 완료: 원격 code-server compose에서 gito_test DB로 검증 완료 - event-store 체크박스 완료 체크
3.4 KiB
3.4 KiB
Milestone: Operation Event Outbox
위치
- Roadmap:
agent-roadmap/ROADMAP.md - Phase:
agent-roadmap/phase/control-plane-foundation/PHASE.md
목표
operation lifecycle과 normalized event를 PostgreSQL 원장에 기록하고, proto-socket event stream 또는 future Redis fanout이 읽을 수 있는 outbox 경계를 만든다. 재시도와 중복 적용은 idempotency key로 제어한다.
상태
[검토중]
승격 조건
- 없음
구현 잠금
- 상태: 해제
- 결정 필요: 없음
범위
- operation lifecycle model
- idempotency key와 duplicate guard
- operation event/outbox table
- worker가 pending operation을 pick하는 store boundary
- proto-socket event stream이 사용할 event shape
기능
Epic: [operation] Operation lifecycle
Git operation, agent run, provider projection을 같은 operation 원장으로 관리한다.
- [op-model] operation type/state/idempotency schema를 확정한다.
- [op-store] operation create/start/succeed/fail/cancel store boundary를 만든다. 검증: invalid transition과 idempotency duplicate를 테스트한다.
- [op-pick] worker가 pending operation을 안전하게 pick하는 기준을 만든다. 검증: 같은 operation이 중복 pick되지 않는다.
Epic: [outbox] Durable events
operation 결과를 durable event로 남기고 fanout 대상이 읽을 수 있게 한다.
- [event-model] normalized event type과 payload 저장 형식을 정리한다.
- [event-store] event append/list/mark-published boundary를 만든다. 검증: event order와 retry 가능한 publish 상태를 확인한다.
- [protosocket-events] proto-socket
eventchannel 후보와 outbox event mapping을 contracts에 기록한다.
완료 리뷰
- 상태: 요청됨
- 요청일: 2026-06-14
- 완료 근거:
agent-task/archive/2026/06/m-operation-event-outbox_1/complete.log의 Roadmap Completion이event-storePASS를 기록했다.- 원격 code-server compose의
code-server-postgres에gito_testDB를 만들고TestPostgresOperationEventStoreAppendsListsMarksPublishedAndValidates를SKIP없이 PASS했다. cd /config/workspace/gito/services/core && GITO_TEST_DATABASE_URL=<redacted> go test ./... -count=1이 PASS했다.
- 리뷰 필요:
- 사용자가 완료 결과를 확인했다
- archive 이동을 승인했다
- 리뷰 코멘트: 모든 기능 Task와 명시 검증이 evidence와 함께 충족되어 Milestone 완료 후보로 전환한다. 사용자 승인 후
[완료]및 archive 이동을 진행한다.
범위 제외
- Redis Streams 구현
- provider-specific projection
- Flutter event UI
- distributed scheduler 최적화
작업 컨텍스트
- 관련 경로:
services/core/internal/events/,services/core/internal/storage/,services/core/internal/worker/,services/core/migrations/ - 표준선(선택): Postgres outbox가 event source of truth이며 Redis는 optional acceleration이다.
- 현재 작업현황:
event-store구현과 DB-backed 검증이 완료되어 Milestone은 사용자 완료 확인 및 archive 승인 대기 상태다. - 검증 완료: 원격 code-server compose의
code-server-postgres에서gito_testDB를 사용해 event order, retry 가능한 pending publish 상태, mark-published 동작을 검증했다. - 선행 작업: Platformless Git Operation Engine
- 후속 작업: Agent Shell Runtime Channel
- 확인 필요: 사용자가 완료 결과를 확인하고 archive 이동 여부를 승인한다.