update roadmap: archive agent-shell-package-iop-backend-boundary milestone, add branch-event-protosocket-interop-readiness milestone

This commit is contained in:
toki 2026-06-15 10:53:17 +09:00
parent 503e036aec
commit 5a15c1dfee
5 changed files with 88 additions and 12 deletions

View file

@ -14,7 +14,7 @@ Gito는 GitHub, GitLab, Gitea 같은 플랫폼에 묶이지 않는 Git control p
- [진행중] Control Plane Foundation - [진행중] Control Plane Foundation
- 경로: `agent-roadmap/phase/control-plane-foundation/PHASE.md` - 경로: `agent-roadmap/phase/control-plane-foundation/PHASE.md`
- 요약: platformless Git control plane의 모듈 경계, repo/workspace/operation/event 원장, proto-socket 우선 transport 기준을 build 가능한 baseline으로 닫는다. - 요약: platformless Git control plane의 모듈 경계, repo/workspace/operation/event 원장, proto-socket 우선 transport 기준을 build 가능한 baseline으로 닫는다.
- [계획] Agent Shell IOP Execution - [진행중] Agent Shell IOP Execution
- 경로: `agent-roadmap/phase/agent-shell-iop-execution/PHASE.md` - 경로: `agent-roadmap/phase/agent-shell-iop-execution/PHASE.md`
- 요약: `../agent-shell`은 Flutter agent UI/package로 사용하고, backend/runtime owner는 `../iop`로 지정해 Gito Git control plane과 연결한다. - 요약: `../agent-shell`은 Flutter agent UI/package로 사용하고, backend/runtime owner는 `../iop`로 지정해 Gito Git control plane과 연결한다.
- [계획] Provider Change Request Integration - [계획] Provider Change Request Integration

View file

@ -11,7 +11,7 @@ workspace 상위 sibling 프로젝트 `../agent-shell`을 제품 비종속 Flutt
## 상태 ## 상태
[검토중] [완료]
## 승격 조건 ## 승격 조건
@ -39,20 +39,20 @@ workspace 상위 sibling 프로젝트 `../agent-shell`을 제품 비종속 Flutt
- [x] [package-use] Gito/host Flutter surface가 `agent_shell: path: ../agent-shell`로 UI package를 사용하는 방향을 문서화한다. - [x] [package-use] Gito/host Flutter surface가 `agent_shell: path: ../agent-shell`로 UI package를 사용하는 방향을 문서화한다.
- [x] [iop-backend] `agent_shell` host의 backend/runtime owner를 `../iop` 프로젝트로 지정한다. - [x] [iop-backend] `agent_shell` host의 backend/runtime owner를 `../iop` 프로젝트로 지정한다.
- [x] [gito-boundary] Gito는 agent execution backend가 아니라 repo/workspace/operation/event control plane을 제공한다는 경계를 contracts와 docs에 반영한다. - [x] [gito-boundary] Gito는 agent execution backend가 아니라 repo/workspace/operation/event control plane을 제공한다는 경계를 contracts와 docs에 반영한다.
- [x] [scaffold-cleanup] 기존 Go `gito-shell`/`internal/agentshell` scaffold를 유지, rename, 제거 중 어떤 정리 경로로 둘지 후속 계획에 남긴다. 후속 계획: `agent-task/m-agent-shell-package-iop-backend-boundary/PLAN-local-G05.md` - [x] [scaffold-cleanup] 기존 Go `gito-shell`/`internal/agentshell` scaffold를 제거하는 경로로 확정하고, build/config/docs에서 legacy shell surface를 정리한다. 증거: `agent-task/archive/2026/06/m-agent-shell-package-iop-backend-boundary/complete.log`
## 완료 리뷰 ## 완료 리뷰
- 상태: 요청 - 상태: 승인
- 요청일: 2026-06-14 - 요청일: 2026-06-14
- 완료 근거: - 완료 근거:
- `README.md`, `docs/architecture.md`, `apps/client/README.md`, `packages/contracts/notes/gito-control-plane.md``agent_shell: path: ../agent-shell`, `../iop` backend/runtime owner, Gito control plane 경계를 반영했다. - `README.md`, `docs/architecture.md`, `apps/client/README.md`, `packages/contracts/notes/gito-control-plane.md``agent_shell: path: ../agent-shell`, `../iop` backend/runtime owner, Gito control plane 경계를 반영했다.
- legacy Go `gito-shell`/`internal/agentshell` scaffold 정리는 active 후속 plan `agent-task/m-agent-shell-package-iop-backend-boundary/PLAN-local-G05.md`와 review stub로 남겼다. - legacy Go `gito-shell`/`internal/agentshell` scaffold`agent-task/archive/2026/06/m-agent-shell-package-iop-backend-boundary/complete.log` 기준으로 제거 완료했고, `bin/build``gito-server`, `gito-worker`만 생성한다.
- local smoke search와 `git diff --check` 통과했다. - 코드 레벨 종료 검토에서 `cd services/core && go test ./...`, `bin/build`, docs/contracts smoke search, `test ! -e bin/gito-shell` 통과했다.
- 리뷰 필요: - 리뷰 필요:
- [ ] 사용자가 완료 결과를 확인했다 - [x] 사용자가 완료 결과를 확인했다
- [ ] archive 이동을 승인했다 - [x] archive 이동을 승인했다
- 리뷰 코멘트: 사용자 최종 확인 전까지 `[검토중]`으로 유지한다. - 리뷰 코멘트: 코드 레벨 종료 검토에서 추가 구현 이슈가 없어 완료 처리한다.
## 범위 제외 ## 범위 제외

View file

@ -2,7 +2,7 @@
## 상태 ## 상태
[계획] [진행중]
## 목표 ## 목표
@ -14,8 +14,8 @@ workspace 상위 sibling 프로젝트 `../agent-shell`을 제품 비종속 Flutt
완료, 검토중, 진행중, 계획, 스케치 순서로 두어 아래로 갈수록 미래 작업에 가까워지게 정렬한다. 완료, 검토중, 진행중, 계획, 스케치 순서로 두어 아래로 갈수록 미래 작업에 가까워지게 정렬한다.
스케치 Milestone은 아직 구현 가능한 계획이 아니므로 계획 Milestone보다 아래에 둔다. 스케치 Milestone은 아직 구현 가능한 계획이 아니므로 계획 Milestone보다 아래에 둔다.
- [계획] Agent Shell Package and IOP Backend Boundary - [완료] Agent Shell Package and IOP Backend Boundary
- 경로: `agent-roadmap/phase/agent-shell-iop-execution/milestones/agent-shell-package-iop-backend-boundary.md` - 경로: `agent-roadmap/archive/phase/agent-shell-iop-execution/milestones/agent-shell-package-iop-backend-boundary.md`
- 요약: `../agent-shell`은 Flutter agent UI/package로 사용하고, backend/runtime owner는 `../iop` 프로젝트로 지정한다. - 요약: `../agent-shell`은 Flutter agent UI/package로 사용하고, backend/runtime owner는 `../iop` 프로젝트로 지정한다.
- [계획] IOP Agent Run Bridge - [계획] IOP Agent Run Bridge

View file

@ -34,6 +34,10 @@ Gito의 초기 control plane을 build 가능한 modular monolith로 구성한다
- 경로: `agent-roadmap/phase/control-plane-foundation/milestones/runtime-scaffold-and-contract-baseline.md` - 경로: `agent-roadmap/phase/control-plane-foundation/milestones/runtime-scaffold-and-contract-baseline.md`
- 요약: Go command, Flutter control surface placeholder, contracts, agent-ops, README, architecture 문서를 실행 가능한 기준선으로 정리한다. - 요약: Go command, Flutter control surface placeholder, contracts, agent-ops, README, architecture 문서를 실행 가능한 기준선으로 정리한다.
- [계획] Branch Event Proto-Socket Interop Readiness
- 경로: `agent-roadmap/phase/control-plane-foundation/milestones/branch-event-protosocket-interop-readiness.md`
- 요약: `branch.updated` producer 계약을 실제 proto-socket binary wire format, consumer-neutral schema, 다중 소비자 호환 fixture 기준으로 굳힌다.
## Phase 경계 ## Phase 경계
- 이 Phase는 Gito 자체 control plane과 platformless Git 기반만 다룬다. - 이 Phase는 Gito 자체 control plane과 platformless Git 기반만 다룬다.

View file

@ -0,0 +1,72 @@
# Milestone: Branch Event Proto-Socket Interop Readiness
## 위치
- Roadmap: `agent-roadmap/ROADMAP.md`
- Phase: `agent-roadmap/phase/control-plane-foundation/PHASE.md`
## 목표
Forgejo push webhook에서 정규화된 `branch.updated` event를 여러 외부 consumer가 실제 Gito `/proto-socket` wire protocol로 구독하고 수신할 수 있음을 증명한다. 논리 JSON envelope 예시와 실제 proto-socket binary/protobuf frame 경계를 계약에 분리해 기록하고, base schema는 consumer-neutral하게 유지하며 consumer별 확장은 `metadata` 같은 optional custom field로만 다루는 기준을 남긴다.
## 상태
[계획]
## 승격 조건
- 없음
## 구현 잠금
- 상태: 해제
- 결정 필요: 없음
## 범위
- `gito.forgejo-branch-events.v1` 계약의 실제 `/proto-socket` wire format 명시
- `event.subscribe` request와 `branch.updated` broadcast의 channel/action/payload shape 고정
- NomadCode 전용 payload가 아닌 branch event 범용 base schema와 optional metadata/custom extension 경계
- proto-socket binary/protobuf client fixture로 Gito server producer 호환성 검증
- Forgejo webhook, branch listener, event fanout을 묶은 producer-side smoke 경로
- NomadCode를 초기 consumer smoke 대상으로 쓰되, 다른 consumer가 같은 schema를 재사용할 수 있는 운영 확인 절차
## 기능
### Epic: [branch-wire] Branch event wire interop
Gito가 제공하는 branch event producer 표면을 문서상 계약이 아니라 실제 proto-socket wire 호환 기준으로 고정하되, base event schema를 특정 consumer에 종속시키지 않는다.
- [ ] [wire-contract] `gito.forgejo-branch-events.v1``/proto-socket`이 binary protobuf frame을 사용하고 JSON은 논리 envelope 예시임을 명시한다. 검증: 계약 문서가 frame type, channel/action, payload 필드와 optional metadata/custom field 경계를 함께 설명한다.
- [ ] [schema-neutrality] `branch.updated` base payload를 repo, branch, revision, changed files 같은 범용 Git event 정보로 유지하고 consumer-specific field는 optional metadata/custom 영역으로만 허용한다. 검증: 계약 fixture에 NomadCode 전용 필수 필드가 없다.
- [ ] [producer-fixture] 실제 proto-socket Go client 또는 동등한 binary fixture로 `event.subscribe`를 보내고 `branch.updated`를 수신하는 producer-side 테스트를 추가한다. 검증: text JSON websocket client가 아니라 binary proto-socket 경로로 test가 통과한다.
- [ ] [webhook-smoke] Forgejo push webhook, watched branch listener, event outbox/fanout을 이어 `branch.updated`가 발행되는 smoke 절차를 남긴다. 검증: test 또는 dev smoke에서 `before`, `after`, `changed_files`가 consumer payload로 도달한다.
- [ ] [consumer-interop] NomadCode를 첫 smoke consumer로 사용하되 schema가 NomadCode 전용으로 좁아지지 않는 최소 interop 확인 절차를 기록한다. 검증: NomadCode dev consumer가 generic `branch.updated`를 받아 자기 내부 wakeup으로 매핑하고, base payload에는 NomadCode 전용 필수 필드가 없다.
- [ ] [ops-docs] listener bootstrap, `/proto-socket`, `/api/listeners/branches`, `/api/events` 운영 확인 절차를 README 또는 contract note에 보강한다. 검증: 필요한 endpoint와 env가 secret 없이 재현 가능하게 적힌다.
## 완료 리뷰
- 상태: 없음
- 요청일: 없음
- 완료 근거: 없음
- 리뷰 필요:
- [ ] 사용자가 완료 결과를 확인했다
- [ ] archive 이동을 승인했다
- 리뷰 코멘트: 없음
## 범위 제외
- NomadCode core consumer transport 구현
- NomadCode 전용 event schema 또는 필수 payload field 추가
- Plane creation sync enqueue 구현
- Forgejo provider delivery dedupe의 고도화
- provider PR/MR ChangeRequest adapter
- Flutter control surface 표시 기능
## 작업 컨텍스트
- 관련 경로: `agent-contract/provided/gito-forgejo-branch-events-v1.md`, `services/core/internal/protosocket/`, `services/core/internal/controlplane/`, `services/core/internal/provider/forgejo/`, `services/core/internal/events/`
- 표준선(선택): Gito `/proto-socket`의 source of truth는 proto-socket binary/protobuf transport이며, JSON envelope는 계약 이해를 돕는 논리 표현으로만 둔다. Event base schema는 consumer-neutral하게 유지하고, 특정 consumer에만 필요한 값은 optional `metadata` 또는 custom extension에만 둔다.
- 선행 작업: Forgejo Branch Event MVP
- 후속 작업: NomadCode `Gito Proto-Socket Consumer Wire Readiness`
- 확인 필요: 없음