gito/agent-roadmap/phase/agent-shell-iop-execution/milestones/iop-agent-run-bridge.md

5.3 KiB

Milestone: IOP Agent Run Bridge

위치

  • Roadmap: agent-roadmap/ROADMAP.md
  • Phase: agent-roadmap/phase/agent-shell-iop-execution/PHASE.md

목표

../iop backend/runtime이 수행한 agent run을 Gito의 workspace operation과 Git revision event로 수렴시키는 계약을 만든다. ../agent-shell은 host UI/package로 남고, 실제 backend 실행과 IOP CLI/Edge/Node orchestration은 IOP 프로젝트가 소유한다. Gito와 IOP의 외부 연결은 HTTP dispatch/callback 경계로 두며, proto-socket은 사용하지 않는다. 성공 기준은 구조화 응답이 아니라 workspace의 실제 Git 상태와 push 결과로 확인한다.

상태

[검토중]

승격 조건

  • 없음

구현 잠금

  • 상태: 해제
  • 결정 필요: 없음
  • 해소 근거:
    • IOP CLI 실행 명령, profile/model 선택, 입력 파일 또는 stdin 계약은 Gito가 직접 확정하지 않고 IOP backend/runtime 소유로 둔다.
    • IOP credential과 workspace별 secret 주입 방식은 raw secret이 아니라 credential_ref/secret_ref 경계로만 연결하며, 세부 주입은 IOP 소유 또는 후속 provider/credential Milestone에서 다룬다.
    • Gito와 IOP의 외부 연결은 HTTP dispatch/callback 모델을 따른다. proto-socket은 외부 연결 규약이나 보조 transport로 사용하지 않는다.

범위

  • IOP backend invocation/result contract
  • IOP HTTP dispatch/callback boundary
  • workspace path, repo context, operation instruction 전달 경계
  • agent run state model
  • IOP run success/failure 판정
  • run 이후 Git status/diff/commit/push와 revision scan 연결

기능

Epic: [iop-run] IOP execution

IOP backend를 workspace operation 실행 통로로 연결한다.

  • [input] repo, branch, workspace path, user instruction, policy context를 IOP 입력으로 전달하는 형식을 정한다.
  • [invoke] Gito가 직접 IOP CLI를 실행하지 않고 IOP backend invocation/result 계약을 호출하거나 수신하는 형식을 정한다. 검증: fake IOP backend result가 operation log를 남긴다.
  • [state] queued, running, succeeded, failed, cancelled run state를 operation lifecycle에 매핑한다.
  • [result] run 이후 Git status와 revision diff로 성공 여부를 확인한다.

Epic: [git-result] Git result convergence

agent run 결과를 Git revision과 operation event로 수렴한다.

  • [dirty-guard] run 종료 후 dirty workspace 정책을 적용한다.
  • [commit-push] policy가 허용한 경우 commit/push operation으로 연결한다.
  • [revision-event] push 이후 revision scan event를 발행한다.

완료 리뷰

  • 상태: 요청됨
  • 요청일: 2026-06-16
  • 완료 근거: revision-event까지 PASS되어 모든 기능 Task가 충족됐다. 최종 근거는 agent-task/archive/2026/06/m-iop-agent-run-bridge/04+03_revision_scan_event/complete.log의 Roadmap Completion이며, 검증은 cd services/core && go test ./..., 계약 keyword scan, git diff --check PASS다.
  • 리뷰 필요:
    • 사용자가 완료 결과를 확인했다
    • archive 이동을 승인했다
  • 리뷰 코멘트: 사용자 승인 전까지 [검토중]으로 유지한다.

범위 제외

  • IOP 내부 모델 라우팅
  • IOP CLI 실행 명령, profile/model 선택, 입력 파일 또는 stdin 세부
  • IOP credential과 workspace별 raw secret 주입 세부
  • ../agent-shell package 내부 UI/domain 구현
  • provider PR/MR 생성
  • Plane/Jira work item lifecycle
  • Flutter UI

작업 컨텍스트

  • 관련 경로: services/core/internal/worker/, services/core/internal/gitengine/, services/core/internal/events/, packages/contracts/notes/gito-control-plane.md
  • 표준선(선택): IOP run 결과는 Git 상태와 operation event로 검증한다. Gito는 IOP CLI/secret 주입 세부를 직접 소유하지 않고 HTTP dispatch/callback과 credential_ref/secret_ref 경계만 다룬다.
  • 선행 작업: Agent Shell Package and IOP Backend Boundary
  • 후속 작업: Command Policy and Cancellation
  • 확인 필요: 사용자 완료 리뷰와 archive 승인
  • 방향성 정리: 외부 연결 규약에서 proto-socket을 제거하고 GitHub webhook과 유사한 HTTP webhook/callback 모델로 정렬했다.
  • 완료 근거: [input][state]packages/contracts/notes/gito-control-plane.mdIOP Agent Run Bridge 섹션에서 transport-independent AgentRunInput과 run state mapping으로 정리했다. [invoke]agent-task/archive/2026/06/m-iop-agent-run-bridge/01_iop_invocation_contract/complete.log의 PASS Roadmap Completion으로 확인했다. [result]agent-task/archive/2026/06/m-iop-agent-run-bridge/02+01_git_result_convergence/complete.log의 PASS Roadmap Completion으로 확인했다. [dirty-guard]services/core/internal/worker/runner.go의 dirty workspace failure policy와 TestRunnerRunOnceAgentRunFailsWhenGitEvidenceIsDirty 통과로 확인했다. [commit-push]agent-task/archive/2026/06/m-iop-agent-run-bridge/03_commit_push_policy/complete.log의 PASS Roadmap Completion으로 확인했다. [revision-event]agent-task/archive/2026/06/m-iop-agent-run-bridge/04+03_revision_scan_event/complete.log의 PASS Roadmap Completion과 TestRuntimeScanAgentRunRevisionPublishFailureDoesNotAdvanceDurableState, TestScanOperationEventAllowsNullOperationID, cd services/core && go test ./... 통과로 확인했다.