From 3155be0e275437a8eedc1aa93497955a7d30465b Mon Sep 17 00:00:00 2001 From: toki Date: Sat, 1 Aug 2026 09:07:17 +0900 Subject: [PATCH] =?UTF-8?q?docs(roadmap):=20Chronos=20=EC=84=A0=ED=96=89?= =?UTF-8?q?=20=EB=B6=84=EB=A6=AC=20=EA=B8=B0=EC=A4=80=EC=9D=84=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HANDOFF.md | 100 ++++++----- agent-roadmap/ROADMAP.md | 4 +- .../phase/automation-runtime-bridge/PHASE.md | 53 ++---- .../agent-workflow-loop-orchestration-mvp.md | 127 -------------- .../cli-agent-group-grade-routing.md | 112 ------------ .../milestones/flutter-desktop-control-ui.md | 87 ---------- ...iop-agent-chronos-extraction-decoupling.md | 80 +++++++++ .../oto-automation-scheduler-second-wave.md | 2 +- .../milestones/pi-cli-provider-integration.md | 4 +- ...r-usage-notification-operations-surface.md | 80 --------- ...remote-workspace-operations-environment.md | 72 -------- .../milestones/unity-3d-desktop-character.md | 88 ---------- .../iop-hot-path-one-shot-execution.md | 4 +- ...personal-local-edge-deployment-profiles.md | 2 +- agent-roadmap/priority-queue.md | 72 +++----- .../cli-agent-group-grade-routing/SDD.md | 160 ------------------ .../user_review_0.log | 41 ----- .../SDD.md | 106 ++++++++++++ .../USER_REVIEW.md | 37 ++++ 19 files changed, 318 insertions(+), 913 deletions(-) delete mode 100644 agent-roadmap/phase/automation-runtime-bridge/milestones/agent-workflow-loop-orchestration-mvp.md delete mode 100644 agent-roadmap/phase/automation-runtime-bridge/milestones/cli-agent-group-grade-routing.md delete mode 100644 agent-roadmap/phase/automation-runtime-bridge/milestones/flutter-desktop-control-ui.md create mode 100644 agent-roadmap/phase/automation-runtime-bridge/milestones/iop-agent-chronos-extraction-decoupling.md delete mode 100644 agent-roadmap/phase/automation-runtime-bridge/milestones/provider-usage-notification-operations-surface.md delete mode 100644 agent-roadmap/phase/automation-runtime-bridge/milestones/remote-workspace-operations-environment.md delete mode 100644 agent-roadmap/phase/automation-runtime-bridge/milestones/unity-3d-desktop-character.md delete mode 100644 agent-roadmap/sdd/automation-runtime-bridge/cli-agent-group-grade-routing/SDD.md delete mode 100644 agent-roadmap/sdd/automation-runtime-bridge/cli-agent-group-grade-routing/user_review_0.log create mode 100644 agent-roadmap/sdd/automation-runtime-bridge/iop-agent-chronos-extraction-decoupling/SDD.md create mode 100644 agent-roadmap/sdd/automation-runtime-bridge/iop-agent-chronos-extraction-decoupling/USER_REVIEW.md diff --git a/HANDOFF.md b/HANDOFF.md index e75376f..356b11d 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -1,19 +1,21 @@ # Handoff: Chronos Standalone Agent Runtime과 Node Domain-Agent Gateway +> 2026-08-01 책임 경계 정정: Chronos scaffold와 후속 Roadmap 문서는 생성됐지만, 완료된 `iop-agent`의 선별 이전과 IOP standalone 의존성 제거는 Chronos 작업이 아니라 IOP가 먼저 수행할 작업이다. 현재 source of truth와 첫 진입점은 [IOP 선행 분리 Milestone](agent-roadmap/phase/automation-runtime-bridge/milestones/iop-agent-chronos-extraction-decoupling.md)이며, [Chronos Roadmap](../chronos/agent-roadmap/ROADMAP.md)은 이 Milestone 완료 전까지 외부 잠금 상태다. 아래 최초 설계 narrative의 “새 저장소 미생성” 문구는 historical context로만 읽는다. + - 작성일: 2026-07-31 -- 현재 타겟: 새 `Chronos` 프로젝트의 최종 아키텍처 확정안 검토와 이후 Milestone 설계 준비 -- 다음 세션 첫 진입점: 이 문서 -- 상태: 프로젝트명·저장소 경계·gateway 방향 확정, 새 저장소·구현·이전·로드맵 생성 미착수 -- 기록 위치: Chronos 저장소가 아직 없으므로 이 파일만 `iop` 루트에 임시 handoff로 둔다. Chronos 초기화 후 canonical handoff와 Roadmap은 Chronos로 옮긴다. +- 현재 타겟: IOP에서 Chronos-owned 자산을 선별 이전하고 standalone 의존성을 제거하는 선행 Milestone 검토 +- 다음 세션 첫 진입점: [IOP 선행 분리 Milestone](agent-roadmap/phase/automation-runtime-bridge/milestones/iop-agent-chronos-extraction-decoupling.md)과 [SDD User Review](agent-roadmap/sdd/automation-runtime-bridge/iop-agent-chronos-extraction-decoupling/USER_REVIEW.md) +- 상태: Chronos scaffold·Agent-Ops·후속 Roadmap 생성 완료, IOP source 선별 이전·제거 미착수, Chronos Roadmap 외부 잠금 +- 기록 위치: IOP 선행 분리의 원본은 IOP Roadmap/SDD에, 완료 뒤 제품 개발 원본은 Chronos Roadmap에 둔다. ## 사용자 확정 사항 -1. 현재 `/config/workspace/iop-s0`의 `IOP Agent CLI Runtime` Milestone은 기존 범위대로 끝까지 완료한다. 지금 구조를 중간에 재편하거나 새 원격 gateway 범위를 끌어오지 않는다. +1. `/config/workspace/iop-s0`에서 진행했던 `IOP Agent CLI Runtime` Milestone은 기존 범위대로 완료됐다. 완료 범위를 다시 열지 않고, 현재 `/config/workspace/iop`에 통합된 source와 계약을 선별 이전 기준선으로 사용한다. 2. `agentic-framework`는 문서·셸 중심의 가벼운 공통 agent-ops 프레임워크로 그대로 유지한다. 어디든 설치 가능한 현재 성격을 보존하고 application runtime을 추가하지 않는다. 3. 새 독립 프로젝트의 이름은 `Chronos`로 확정한다. 저장소·CLI·daemon의 기본 이름은 각각 `chronos`, `chronos`, `chronosd`로 사용한다. -4. 아래의 단계 2 이후 작업은 새 `Chronos` 프로젝트를 장기 기준 저장소이자 Roadmap/Milestone source of truth로 삼는다. -5. 다음 세션은 우선 Chronos의 최종 아키텍처와 책임 경계만 확정한다. 이 handoff에서는 새 저장소, Milestone, 구현 plan, 코드 이전을 생성하지 않는다. -6. 확정안이 정리된 뒤 Chronos 저장소에 Roadmap/Milestone을 만들고, IOP·OTO 코드 변경은 해당 Milestone이 가리키는 cross-repo 구현 작업으로 관리한다. +4. 단계 2의 완료된 `iop-agent` 선별 이전과 IOP standalone 의존성 제거는 [IOP 선행 분리 Milestone](agent-roadmap/phase/automation-runtime-bridge/milestones/iop-agent-chronos-extraction-decoupling.md)이 유일한 실행 source of truth다. +5. Chronos scaffold와 후속 Roadmap은 미리 둘 수 있지만, IOP 선행 Milestone이 완료되어 workspace 잠금이 해제되기 전에는 Chronos의 아키텍처 리뷰, 구현 plan 또는 product code 작업을 시작하지 않는다. +6. 선행 분리 완료 뒤 Chronos 제품 작업은 Chronos Roadmap에서 이어간다. 이후 IOP·OTO repository 코드를 바꾸는 기능은 해당 repository의 local Milestone과 Chronos Milestone을 명시적으로 연결해 실행 책임과 완료 evidence를 분리한다. ## 프로젝트 이름과 상징 @@ -37,7 +39,7 @@ Chronos가 작업을 `Plan → Work → Review → Recovery` 순서로 계속 ## 최종 방향 -현재 `/config/workspace/iop-s0`에서 완성할 `iop-agent` 구현을 선행 source로 삼아, 완료 후 standalone daemon/runtime의 제품 소유권을 새 Chronos 프로젝트로 이전한다. Chronos는 Node에 내장하지 않는다. 로컬 사용에서 Node는 필수가 아니다. IOP 관리 환경에서만 Node가 선택적 `domain-agent gateway`가 되어 기존 outbound Edge 연결과 로컬 Chronos 연결을 중계한다. +현재 `/config/workspace/iop`에 통합된 완료 `iop-agent` 구현을 선행 source로 삼아 standalone daemon/runtime의 제품 소유권을 Chronos 프로젝트로 이전한다. `/config/workspace/iop-s0`는 완료 당시 snapshot 참고 경로로만 사용한다. Chronos는 Node에 내장하지 않는다. 로컬 사용에서 Node는 필수가 아니다. IOP 관리 환경에서만 Node가 선택적 `domain-agent gateway`가 되어 기존 outbound Edge 연결과 로컬 Chronos 연결을 중계한다. ```text Local standalone @@ -173,12 +175,17 @@ production remote mutation 전 필수 gate: 이전 대화에서 사용한 번호는 다음을 뜻한다. -1. `/config/workspace/iop-s0`의 현재 `IOP Agent CLI Runtime` 완료 -2. `Agent Runtime Ownership Extraction` - - 완료된 standalone runtime 소유권을 새 Chronos 프로젝트로 이전 - - 제품·CLI·daemon 명칭을 `chronos`, `chronos`, `chronosd`로 정리 - - local CLI/socket/offline 사용성 보존 - - versioned control contract/SDK 경계 고정 +1. 현재 IOP에 통합된 `IOP Agent CLI Runtime` 완료 기준선 +2. `Agent Runtime Ownership Transition` + - `2A — IOP-owned selective transfer and decoupling` + - 완료된 standalone runtime에서 Chronos-owned source·contract fixture·behavior input만 독립 staging baseline으로 선별 이전 + - versioned legacy-state export 또는 clean-start marker와 ambiguous-state blocker manifest 생성 + - IOP의 standalone host·workflow·client lifecycle·전용 surface와 Chronos application dependency 제거 + - IOP Node의 finite model/API/CLI provider 실행과 Edge wire 회귀, Chronos 잠금 해제용 transfer receipt 생성 + - `2B — Chronos-owned baseline adoption` + - transfer receipt와 staging baseline acceptance, 최종 ownership architecture 확정 + - Chronos-owned local control contract와 package·binary·state namespace 수립 + - legacy-state export의 실제 import 또는 clean start, local/offline parity와 adoption receipt 검증 3. `Scoped Agent Task Execution Surface` - Plan/Review, Milestone, Roadmap 범위별 독립 실행과 종료 경계 4. `Node External Agent Provider Foundation` @@ -190,26 +197,18 @@ production remote mutation 전 필수 gate: 7. `OTO Provider Adapter` 8. `Remote User-Agent Workflow Bridge` -2번 이후 Roadmap/Milestone은 새 Chronos 저장소에서 관리한다. 4, 5, 7번은 구현 파일이 IOP/OTO에 있더라도 Chronos Milestone에서 cross-repo 대상과 검증을 명시한다. +2A는 IOP Roadmap에서 먼저 완료한다. workspace 잠금 해제 뒤 2B와 3번 이후 제품 Roadmap은 Chronos가 소유한다. 4, 5, 7번처럼 구현 파일이 IOP/OTO에 있는 작업은 `[계획]` 승격 전에 각 repository-local Milestone과 Chronos Milestone 사이의 명시적 잠금으로 연결한다. 3번과 6번의 local lifecycle 설계는 Node gateway와 독립적으로 진행할 수 있다. 원격 mutation만 5번 보안 gate를 선행한다. ## 다음 세션 실행 순서 -1. 이 문서와 아래 `필수 탐색 경로`만 먼저 읽는다. -2. `agentic-framework`는 변경하지 않고 경량 공통 프레임워크로 유지한다. Chronos runtime, Roadmap, project rule을 이 저장소에 추가하지 않는다. -3. 새 Chronos 저장소의 위치·module namespace·초기 scaffold는 최종 아키텍처 확정 뒤 결정한다. 아직 `/config/workspace/chronos`가 존재한다고 가정하지 않는다. -4. 최종 아키텍처 문서에서 다음을 결정 가능한 형태로 고정한다. - - component/process topology - - repository와 package ownership - - versioned contract source와 generated SDK 배포 - - local/managed deployment mode - - identity/authorization - - command/event/replay/cancel failure semantics - - Node/Edge/agent disconnect 시 lifecycle -5. 사용자에게 최종안을 확인받은 뒤 Chronos 저장소를 초기화하고 `create-roadmap`을 사용해 2번 이후 Milestone을 생성한다. -6. Chronos 저장소가 생기면 이 문서의 확정 사항을 그 저장소의 canonical handoff/architecture 입력으로 이전한다. `agentic-framework`에는 Chronos runtime·Roadmap을 남기지 않는다. -7. 현재 `/config/workspace/iop-s0` checkout은 Milestone 완료 정합화 전까지 수정, 이동, 정리하지 않는다. 1번 완료 evidence가 생긴 뒤 extraction 범위를 산정한다. +1. [IOP 선행 분리 Milestone](agent-roadmap/phase/automation-runtime-bridge/milestones/iop-agent-chronos-extraction-decoupling.md), [SDD](agent-roadmap/sdd/automation-runtime-bridge/iop-agent-chronos-extraction-decoupling/SDD.md)와 [SDD User Review](agent-roadmap/sdd/automation-runtime-bridge/iop-agent-chronos-extraction-decoupling/USER_REVIEW.md)를 먼저 읽는다. +2. 기존 project/config/state의 versioned export 범위에 대한 사용자 결정을 SDD에 반영하고 IOP Milestone을 `[계획]`으로 승격한다. +3. IOP task group에서 source revision과 disposition manifest를 고정하고, Chronos staging baseline·legacy-state export 전달 → destination 독립 검증 → IOP standalone 제거 → 잔류 Node/provider 회귀 순서로 실행한다. +4. transfer receipt와 양쪽 검증 evidence로 IOP Milestone 완료 검토를 통과시키고 `.agent-roadmap-sync/locks.yaml`의 Chronos 선행 조건을 동기화한다. +5. 잠금 해제 뒤에만 [Chronos 아키텍처 Milestone](../chronos/agent-roadmap/phase/runtime-ownership-transition/milestones/chronos-architecture-ownership-boundary.md)과 해당 managed connector 검토 항목으로 이동한다. +6. `agentic-framework`는 경량 공통 프레임워크로 유지하고 Chronos application runtime 또는 Roadmap을 추가하지 않는다. ## 필수 탐색 경로 @@ -221,24 +220,24 @@ production remote mutation 전 필수 gate: ### 현재 `iop-agent` 구현과 계약 -- [`../iop-s0/agent-roadmap/phase/automation-runtime-bridge/milestones/iop-agent-cli-runtime.md`](../iop-s0/agent-roadmap/phase/automation-runtime-bridge/milestones/iop-agent-cli-runtime.md): 현재 Milestone 범위, 제외 항목, 완료 전 남은 작업. -- [`../iop-s0/agent-contract/inner/iop-agent-cli-runtime.md`](../iop-s0/agent-contract/inner/iop-agent-cli-runtime.md): standalone/local control 계약. -- [`../iop-s0/proto/iop/agent.proto`](../iop-s0/proto/iop/agent.proto): typed envelope, `command_id`, snapshot, event sequence와 replay. -- [`../iop-s0/apps/agent/internal/localcontrol/server.go`](../iop-s0/apps/agent/internal/localcontrol/server.go): Unix socket, permission, same-UID peer credential 경계. -- [`../iop-s0/apps/agent/internal/localcontrol/service.go`](../iop-s0/apps/agent/internal/localcontrol/service.go): status와 project start/stop/resume port. -- [`../iop-s0/apps/agent/internal/taskloop/workflow.go`](../iop-s0/apps/agent/internal/taskloop/workflow.go): agent-ops Plan/Review/Milestone artifact 의존성이 집중된 workflow adapter. -- [`../iop-s0/packages/go/agentruntime/types.go`](../iop-s0/packages/go/agentruntime/types.go): 기존 유한 실행 Provider와 agent durable control의 의미 차이. +- [`agent-contract/inner/iop-agent-cli-runtime.md`](agent-contract/inner/iop-agent-cli-runtime.md): 완료된 standalone runtime의 현재 구현 계약과 책임 경계. 원래 Milestone 문서는 active Roadmap에서 제거된 과거 근거다. +- [`../iop-s0/agent-contract/inner/iop-agent-cli-runtime.md`](../iop-s0/agent-contract/inner/iop-agent-cli-runtime.md): extraction source revision으로 고정했던 checkout의 standalone/local control 계약 snapshot. +- [`proto/iop/agent.proto`](proto/iop/agent.proto): typed envelope, `command_id`, snapshot, event sequence와 replay. +- [`apps/agent/internal/localcontrol/server.go`](apps/agent/internal/localcontrol/server.go): Unix socket, permission, same-UID peer credential 경계. +- [`apps/agent/internal/localcontrol/service.go`](apps/agent/internal/localcontrol/service.go): status와 project start/stop/resume port. +- [`apps/agent/internal/taskloop/workflow.go`](apps/agent/internal/taskloop/workflow.go): agent-ops Plan/Review/Milestone artifact 의존성이 집중된 workflow adapter. +- [`packages/go/agentruntime/types.go`](packages/go/agentruntime/types.go): 기존 유한 실행 Provider와 agent durable control의 의미 차이. ### IOP Node/Edge gateway 후보 -- [`../iop-s0/apps/node/README.md`](../iop-s0/apps/node/README.md): 기존 Edge–Node transport, logical session, mTLS 미연결 상태. -- [`../iop-s0/proto/iop/runtime.proto`](../iop-s0/proto/iop/runtime.proto): `RunRequest`, `RunEvent`, `NodeCommand`, `ProviderTunnel`; 새 durable agent control을 억지로 넣지 않아야 하는 기존 wire. -- [`../iop-s0/apps/node/internal/transport/session.go`](../iop-s0/apps/node/internal/transport/session.go): 기존 단일 Edge–Node session의 message family multiplex. -- [`../iop-s0/proto/iop/control.proto`](../iop-s0/proto/iop/control.proto): `EdgeDomainAgentSummary`, `EdgeCommandRequest/Response/Event` scaffold. -- [`../iop-s0/apps/edge/internal/service/status_provider.go`](../iop-s0/apps/edge/internal/service/status_provider.go): `GetDomainAgents()`가 현재 비어 있는 integration point. -- [`../iop-s0/apps/edge/internal/service/control_command.go`](../iop-s0/apps/edge/internal/service/control_command.go): 현재 `agent.command`가 제한적 scaffold인 상태. -- [`../iop-s0/agent-roadmap/phase/control-plane-portal-ops/milestones/multi-edge-operations.md`](../iop-s0/agent-roadmap/phase/control-plane-portal-ops/milestones/multi-edge-operations.md): OTO/build-deploy를 Edge-owned domain-agent summary로 노출한다는 기존 결정. -- [`../iop-s0/agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md`](../iop-s0/agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md): remote terminal을 별도 기능으로 유지하는 경계. +- [`apps/node/README.md`](apps/node/README.md): 기존 Edge–Node transport, logical session, mTLS 미연결 상태. +- [`proto/iop/runtime.proto`](proto/iop/runtime.proto): `RunRequest`, `RunEvent`, `NodeCommand`, `ProviderTunnel`; 새 durable agent control을 억지로 넣지 않아야 하는 기존 wire. +- [`apps/node/internal/transport/session.go`](apps/node/internal/transport/session.go): 기존 단일 Edge–Node session의 message family multiplex. +- [`proto/iop/control.proto`](proto/iop/control.proto): `EdgeDomainAgentSummary`, `EdgeCommandRequest/Response/Event` scaffold. +- [`apps/edge/internal/service/status_provider.go`](apps/edge/internal/service/status_provider.go): `GetDomainAgents()`가 현재 비어 있는 integration point. +- [`apps/edge/internal/service/control_command.go`](apps/edge/internal/service/control_command.go): 현재 `agent.command`가 제한적 scaffold인 상태. +- [`agent-roadmap/phase/control-plane-portal-ops/milestones/multi-edge-operations.md`](agent-roadmap/phase/control-plane-portal-ops/milestones/multi-edge-operations.md): OTO/build-deploy를 Edge-owned domain-agent summary로 노출한다는 기존 결정. +- [`agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md`](agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md): remote terminal을 별도 기능으로 유지하는 경계. ### OTO 연결 패턴 @@ -256,10 +255,7 @@ production remote mutation 전 필수 gate: ## 작업 상태와 검증 -- 이번 세션에서 구현, migration, Milestone/SDD/contract 생성은 하지 않았다. -- `/config/workspace/agentic-framework`는 `main`, 기준 commit `afd34c3`이며 handoff 이동 후 clean 상태다. -- `/config/workspace/iop`는 `feature/provider-usage-attribution-hot-path`이며 이동 전 clean 상태였다. 현재 변경은 untracked `HANDOFF.md` 한 건뿐이다. -- 새 Chronos 저장소는 아직 생성하지 않았다. -- `/config/workspace/iop-s0`는 `feature/iop-agent-cli-runtime`, HEAD `4e420910`이며 원격 브랜치와 동일한 clean 상태다. Milestone 완료 정합화 전에는 해당 checkout을 임의로 수정하거나 이동하지 않는다. -- `/config/workspace/oto`는 `master`, 기준 commit `ae2b14f`였고 확인 당시 clean 상태였다. -- 문서 작업이므로 코드 테스트는 실행하지 않는다. `git diff --check`만 검증한다. +- `/config/workspace/chronos`에는 최소 Go scaffold, Agent-Ops와 후속 Roadmap이 생성되어 있지만 application runtime 구현은 시작하지 않았다. +- `/config/workspace/iop`의 현재 완료된 `iop-agent` code와 [IOP Agent CLI Runtime 계약](agent-contract/inner/iop-agent-cli-runtime.md)을 선별 이전 source로 사용한다. `/config/workspace/iop-s0`는 과거 완료 snapshot 참고 경로일 뿐 이번 선행 Milestone의 실행 owner가 아니다. +- 이번 정정은 Roadmap·Milestone·SDD·handoff와 workspace lock만 갱신하며 code transfer와 삭제는 수행하지 않는다. +- 문서 작업이므로 code test는 실행하지 않고 링크·Roadmap 구조·workspace lock과 `git diff --check`를 검증한다. diff --git a/agent-roadmap/ROADMAP.md b/agent-roadmap/ROADMAP.md index 1e33c4c..f135db4 100644 --- a/agent-roadmap/ROADMAP.md +++ b/agent-roadmap/ROADMAP.md @@ -34,7 +34,7 @@ RAG, context 구성/압축, web search, MCP 정책, tool policy, output validati ## MVP 경계 -1차 MVP는 다중 Node/디바이스의 model group queue와 추가 provider 검증, 운영을 위한 CLI Agent 사용량/알림, 사용자/토큰/사용량/로그 추적, provider catalog와 로컬 디바이스 상태 관찰, 단계 호출과 runtime schema 검증의 최소 실행 모드를 기준으로 둔다. +1차 MVP는 다중 Node/디바이스의 model group queue와 추가 provider 검증, provider 요청 사용량·실행 로그와 운영 관측, 사용자/토큰/credential 추적, provider catalog와 로컬 디바이스 상태 관찰, 단계 호출과 runtime schema 검증의 최소 실행 모드를 기준으로 둔다. standalone workflow 알림과 desktop delivery 이력은 Chronos Roadmap이 소유한다. provider/device/model별 qualification report와 모델 lifecycle 관리는 provider serving 경로와 capacity/concurrency 기준선이 잡힌 뒤 `운영 관측과 Provider 관리` Phase의 후반부에서 깊게 구체화한다. `(2차)`로 분류한 누적 요청 컨텍스트 최적화, 장기 기억/RAG update loop, advisor와 Context Hook, 특정 Node CLI agent의 원격 터널링, oto 기반 자동화 scheduler/CI-CD, cross-Edge/cloud fallback 고도화는 MVP 이후 스케치로 잠근다. 새로 추가되는 MVP/2차 Milestone은 모두 사용자 검토 전까지 `구현 잠금: 잠금` 상태를 유지하고, 구현 계획이나 세부 API 확정은 별도 구체화 요청에서 다룬다. @@ -76,7 +76,7 @@ Phase는 실행 순서가 아니라 도메인/책임 영역의 구조적 지도 - [진행중] Automation Runtime과 Bridge 확장 - 경로: [PHASE.md](phase/automation-runtime-bridge/PHASE.md) - - 요약: 정적 lane/G 이후의 시간대·quota 기반 선택과 failover를 공통 Go Agent Task runtime으로 확장해 Node와 독립 `iop-agent` CLI가 공유하고, 현재 Python 감시 루프를 전체 동등성 기준에서 이전한다. Flutter Desktop Control UI와 Unity 3D Desktop Character는 CLI 이후 별도 Milestone으로 두고, provider/grade routing은 같은 공통 경계에 연결하며 원격 터널링과 oto scheduler/CI-CD는 2차로 잠근다. + - 요약: 완료된 `iop-agent`의 Chronos-owned 자산 선별 이전, IOP standalone surface 제거와 잔류 Node/provider 회귀를 IOP의 최우선 선행 Milestone으로 수행한다. 이 완료 evidence가 Chronos Roadmap의 외부 잠금을 해제한 뒤에만 scoped workflow, local control, managed bridge와 client 제품 작업을 Chronos에서 시작하며, IOP에는 finite provider 실행과 repository-local managed integration 경계만 남긴다. - [계획] 지식과 도구 최적화 확장 - 경로: [PHASE.md](phase/knowledge-tool-optimization-extension/PHASE.md) diff --git a/agent-roadmap/phase/automation-runtime-bridge/PHASE.md b/agent-roadmap/phase/automation-runtime-bridge/PHASE.md index c54e775..8ddf0bb 100644 --- a/agent-roadmap/phase/automation-runtime-bridge/PHASE.md +++ b/agent-roadmap/phase/automation-runtime-bridge/PHASE.md @@ -8,7 +8,7 @@ Runtime과 Automation 실행 흐름을 공통화하고, agent 설치형 대상과 비설치형 대상의 제어 경로를 분리해 확장한다. CLI 실행, specialized agent 등록, bootstrap/enrollment, OpenAI-compatible workspace agent 실행 계약을 서로 충돌하지 않는 운영 경로로 정리했다. -NomadCode가 IOP를 실행 백엔드로 사용할 수 있도록 하는 Responses 기반 workspace agent 실행 계약과 정적 lane/G 결과를 시간대·quota·실행 상태와 결합하는 Agent Task 동적 실행 Target Selector를 완료했다. 후속으로 Node와 독립 `iop-agent` CLI가 함께 사용하는 공통 Go Agent Task runtime으로 현재 Python 감시 루프를 전체 동등성 기준에서 이전하고 provider/grade routing을 같은 공통 경계에 연결한다. 개인 장비의 단일 `iop-agent`가 여러 project와 Flutter·Unity client subprocess를 소유하며, Flutter Desktop Control UI와 Unity 3D Desktop Character 구현은 CLI 이후의 별도 Milestone으로 둔다. +NomadCode가 IOP를 실행 백엔드로 사용할 수 있도록 하는 Responses 기반 workspace agent 실행 계약과 정적 lane/G 결과를 시간대·quota·실행 상태와 결합하는 Agent Task 동적 실행 Target Selector를 완료했다. 완료된 `iop-agent`는 현재 IOP가 소유하는 선별 이전 source이며, [IOP Agent Runtime의 Chronos 선별 이전과 IOP 의존성 제거](milestones/iop-agent-chronos-extraction-decoupling.md)가 필요한 자산 전달, IOP standalone 제거와 잔류 provider 회귀를 먼저 닫는다. 이 Milestone 완료 전에는 Chronos Roadmap을 시작하지 않으며, 이후 scoped workflow, task-file grade routing policy, Provider 알림, 원격 workspace와 Flutter·Unity 제품 작업은 Chronos가 소유한다. 원격 터미널/CLI 터널링과 oto scheduler/CI-CD 자동화는 2차 스케치로 잠그고, 현재 활성 구현 범위로 끌어오지 않는다. ## Milestone 흐름 @@ -64,7 +64,7 @@ Phase를 가로지르는 실제 다음 작업 선택은 [전역 마일스톤 실 - [폐기] 공통 Agent Task Runtime과 Desktop Agent - 경로: [shared-agent-task-runtime-desktop-agent](../../archive/phase/automation-runtime-bridge/milestones/shared-agent-task-runtime-desktop-agent.md) - - 요약: 공통 runtime·Desktop host·Flutter 배포를 결합한 기존 범위는 IOP Agent CLI Runtime과 후속 Flutter·Unity Milestone으로 분할·대체되어 독립 구현 단위로 폐기했다. + - 요약: 공통 runtime·Desktop host·Flutter 배포를 결합한 기존 범위는 IOP Agent CLI Runtime으로 분할한 뒤 후속 Flutter·Unity 제품 계획을 Chronos로 이전해 독립 구현 단위로 폐기했다. - [완료] 워크스페이스 포트/환경 표준화 - 경로: [workspace-port-env-standardization](../../archive/phase/automation-runtime-bridge/milestones/workspace-port-env-standardization.md) @@ -94,33 +94,13 @@ Phase를 가로지르는 실제 다음 작업 선택은 [전역 마일스톤 실 - 경로: [pi-cli-provider-integration](milestones/pi-cli-provider-integration.md) - 요약: Node CLI adapter의 실행 profile 후보에 Pi를 추가하고, Pi JSON stream 출력 파서, config 예시, OpenAI-compatible route smoke를 통해 `adapter=cli,target=pi`를 안정적으로 사용할 수 있게 한다. -- [계획] CLI Agent Group Grade Routing - - 경로: [cli-agent-group-grade-routing](milestones/cli-agent-group-grade-routing.md) - - 요약: `PLAN-local-G08.md`, `CODE_REVIEW-cloud-G07.md` 같은 예약어/lane/grade 파일명을 기준으로 CLI provider agent를 목적별 agent group에 라우팅하고, 수동/자동 grade range assignment와 OpenAI-compatible `metadata.agent_group.task_file` 계약을 정리한다. - - [완료] IOP Agent CLI Runtime - 경로: [iop-agent-cli-runtime](../../archive/phase/automation-runtime-bridge/milestones/iop-agent-cli-runtime.md) - 요약: Python 감시·dispatcher와 Node CLI runtime 동등성을 공통 Go CLI Provider·AgentTaskManager 및 개인 장비당 단일 `iop-agent` binary로 이전하고, 다중 project 관측·수동 시작/자동 재개·client subprocess 소유 경계를 완료했다. -- [스케치] Flutter Desktop Control UI - - 경로: [flutter-desktop-control-ui](milestones/flutter-desktop-control-ui.md) - - 요약: `iop-agent`가 소유·실행하고 local proto-socket으로 연결하는 Flutter subprocess에서 공통/로컬 설정, project registry, 실행 상태·오류·로그를 제공하는 전체 설정·운영 UI를 스케치한다. - -- [스케치] Unity 3D Desktop Character - - 경로: [unity-3d-desktop-character](milestones/unity-3d-desktop-character.md) - - 요약: `iop-agent`가 소유·실행하고 local proto-socket으로 연결하는 Unity subprocess에서 작업 상태를 3D 캐릭터로 표현하며, 간단한 메뉴에서 상세 Flutter UI 표시를 요청하는 macOS client를 스케치한다. - -- [스케치] 에이전트 작업 루프 오케스트레이션 MVP - - 경로: [agent-workflow-loop-orchestration-mvp](milestones/agent-workflow-loop-orchestration-mvp.md) - - 요약: 교체 가능한 최초 요청 라우터가 코딩·저장소 조회·일반 요청을 direct, Plan, Milestone과 lane/G0X로 분류하고, 사용자 agent의 tool call로 작업 파일을 만든 뒤 파일 상태, 하이브리드 실행과 상위 모델 리뷰를 연결하는 작업 루프를 스케치한다. - -- [스케치] Provider 사용량 알림과 운영 표면 - - 경로: [provider-usage-notification-operations-surface](milestones/provider-usage-notification-operations-surface.md) - - 요약: 공통 runtime의 quota/status/failure event를 소비해 macOS·Desktop·후속 외부 채널에 전달하고 selection/failover를 중복하지 않는 운영 알림 표면을 스케치한다. - -- [스케치] 원격 코딩/유지보수 작업 환경 - - 경로: [remote-workspace-operations-environment](milestones/remote-workspace-operations-environment.md) - - 요약: CLI Agent와 workspace-bound execution을 이용한 원격 코딩/유지보수 환경의 운영 경계를 스케치한다. +- [스케치] IOP Agent Runtime의 Chronos 선별 이전과 IOP 의존성 제거 + - 경로: [IOP Agent Runtime의 Chronos 선별 이전과 IOP 의존성 제거](milestones/iop-agent-chronos-extraction-decoupling.md) + - 요약: 완료된 `iop-agent`에서 Chronos-owned source와 fixture만 전달하고 IOP standalone surface를 제거한 뒤 잔류 Node/provider 회귀와 downstream 잠금 해제 evidence를 남긴다. - [스케치] oto 자동화 스케줄러와 CI-CD 연동 (2차) - 경로: [oto-automation-scheduler-second-wave](milestones/oto-automation-scheduler-second-wave.md) @@ -134,23 +114,14 @@ Phase를 가로지르는 실제 다음 작업 선택은 [전역 마일스톤 실 - OpenAI-compatible API와 A2A API에 terminal 제어 기능을 억지로 싣지 않는다. - Edge는 실행 요청의 broker 역할을 하고, Node는 대상 transport 실행자 역할을 유지한다. -- `iop-agent`는 Edge를 포함하거나 요구하지 않는 독립 headless CLI이며, 개인 장비의 소유 OS 사용자 범위에서 하나의 active supervisor process만 실행한다. Node와 동일한 공통 Go CLI Provider·AgentTaskManager를 host adapter로 소비하되 Node process가 두 번째 `iop-agent` supervisor가 되지는 않는다. -- 단일 `iop-agent`는 여러 등록 project를 관측하고, Flutter·Unity client를 subprocess로 시작·중단·복구하며, 같은 OS 사용자에게 제한된 local proto-socket에서 이들을 신뢰한다. -- Unity의 상세 UI 요청은 Unity가 Flutter를 직접 실행하지 않고 `iop-agent`가 Flutter를 표시하거나 시작하는 command로 처리한다. +- 완료된 `iop-agent`의 Edge 비의존 headless CLI, 단일 active supervisor와 same-user local-control 동작은 선별 이전 source invariant다. IOP 선행 분리 Milestone이 끝나면 IOP에는 해당 standalone binary와 supervisor/client lifecycle 소유권을 남기지 않는다. +- 단일 `iop-agent`의 기존 project 관측·client process 기능은 IOP 선행 Milestone의 transfer manifest와 behavior fixture 입력으로만 취급하고, 새 client lifecycle·local control 기능은 IOP에 추가하지 않는다. - 설치 가능한 대상은 bootstrap/enrollment 경로로, 설치가 어렵거나 일회성 유지보수 대상은 remote terminal bridge 경로로 구분한다. - OpenAI-compatible Responses 표면은 외부 모델 호출 호환을 위한 입력 표면이며, IOP 고유 운영 제어는 native protocol이나 명시 운영 API로 분리한다. - NomadCode 지원을 위한 `metadata.workspace` 실행 계약은 provider 확장, Lemonade 추가, remote terminal bridge보다 먼저 닫는다. -- Agent Task runtime은 사용자 workspace의 Milestone/Plan/Review/work-log 파일을 durable source of truth로 사용한다. repo-global 설정은 비밀정보 없는 공통 기본값·정책 템플릿을 버전 관리하고 runtime은 읽기만 하며, user-local store는 장비별 project registry·override·경로와 최소 checkpoint/lease/client process 상태를 소유한다. -- 에이전트 작업 루프 오케스트레이션은 사용자가 agent-ops 스킬을 직접 실행하지 않은 일반 요청을 direct, Plan, Milestone으로 분류하고, Plan/Milestone이면 사용자 agent의 tool call로 작업 파일을 만들고 그 파일 상태를 연결하는 상위 IOP 기능으로 별도 소유한다. -- 외부 `model=iop`으로 명시 선택되는 [IOP Hot Path One-shot 실행 경로](../knowledge-tool-optimization-extension/milestones/iop-hot-path-one-shot-execution.md)는 Gemini 3.6 Flash와 `ornith-fast`를 한 요청 안에서 조합하는 독립 경로다. 작업 루프 오케스트레이션의 direct/Plan/Milestone 분류, durable artifact, continuation과 완료 상태를 거치거나 공유하지 않는다. -- 공통 Agent Task runtime은 위 오케스트레이션과 Node/`iop-agent` host가 공통으로 소비하는 provider 실행·선택·관측·복구 기반이며, 최초 요청 분류와 작업 파일 생성의 의미를 대체하지 않는다. -- Python dispatcher/selector는 스킬 기반 1차 테스트를 거쳐 안정화된 동작·정책·오류 evidence의 참조로만 사용하며 production runtime에서 실행하거나 가져오지 않는다. Go parity와 cutover evidence를 확보한 뒤 IOP Agent CLI Runtime Milestone 완료 전환 시 Python 구현을 폐기한다. -- provider 실행, quota/status, stream/session, failure와 AgentTaskManager는 공통 Go package가 단일 구현으로 소유한다. Node와 `iop-agent` host에 이를 복사하거나 중복 선언하지 않는다. Flutter와 Unity는 후속 client이며 이 실행 로직을 소유하지 않는다. -- 새 Milestone 선택과 최초 시작은 항상 수동이며, 시작 기록이 있는 중단 작업만 기본적으로 자동 재개한다. 자동 재개 여부는 local 설정으로 조정한다. -- 사용자가 등록한 canonical workspace는 해당 폴더 범위의 agent 작업을 사전 승인한 것으로 본다. `iop-agent`는 dispatch 전에 workspace boundary와 provider의 unattended/approval-bypass capability를 검증하고, 충족하지 않으면 실행하지 않은 채 설정 안내 알림을 낸다. -- task dependency는 명시된 predecessor만 사용하고 숫자 순서에서 암묵 의존성을 추론하지 않는다. 서로 다른 project/workspace instance는 병렬 실행한다. -- 같은 canonical workspace의 dependency-ready 작업은 pinned base snapshot 위에 작업별 copy-on-write writable layer를 부여해 병렬 실행하고 canonical base를 직접 변경하지 않는다. 완료 작업은 immutable change set으로 동결하며 `iop-agent`가 결정적 순서로 하나씩 검증·통합한다. -- 충돌 없는 통합은 자동 승인하고 merge conflict, 검증 실패 또는 관리되지 않은 base drift는 해당 작업만 blocker로 남긴다. 실제 branch/index/commit 의미가 필요한 도구에는 격리된 worktree 또는 full clone을 fallback으로 사용한다. -- 선택 엔진은 하나의 provider/model을 반환하는 공통 evaluator와 host별 정책 입력을 분리하며, app 기본값 뒤 project override와 ordered rule priority를 적용한다. -- Provider 사용량 알림은 공통 runtime의 quota/status/failure event를 소비하는 운영 표면으로 두고, provider 선택·retry/failover·task continuation을 다시 구현하지 않는다. +- 완료된 `iop-agent`와 공통 Agent Task runtime의 workspace guard, selection, recovery와 상태 동작은 IOP 선행 Milestone에서 Chronos-owned/IOP-retained로 분류한다. 전달된 standalone 동작은 Chronos가 이어받고, IOP에는 잔류 finite provider 실행에 필요한 코드만 유지한다. +- Plan/Review·Milestone·Roadmap lifecycle, 일반 요청 triage, task filename lane/grade 해석과 route policy는 Chronos가 소유한다. IOP provider host는 Chronos가 고정한 typed `adapter + target`을 실행할 뿐 artifact 원문이나 filename 의미를 재해석하지 않는다. +- provider 실행, quota/status, stream/session과 finite retry/failure capability는 선별 이전 전후 모두 IOP가 유지한다. 선행 Milestone 완료 뒤에는 IOP에 standalone workflow state, client lifecycle, forwarding runtime 또는 Chronos application runtime dependency를 남기지 않는다. +- 외부 `model=iop`으로 명시 선택되는 [IOP Hot Path One-shot 실행 경로](../knowledge-tool-optimization-extension/milestones/iop-hot-path-one-shot-execution.md)는 IOP가 계속 소유하는 독립 경로이며 Chronos의 direct/Plan/Milestone 분류, durable artifact와 continuation을 거치거나 공유하지 않는다. +- IOP가 quota/status/failure event를 제공할 수는 있지만 macOS/Desktop 알림 delivery와 이력은 Chronos가 소유한다. - 원격 터미널/CLI 터널링 POC와 oto scheduler/CI-CD 연동은 현재 활성 작업에서 제외하고, provider 상태/capacity queue와 운영 관측 MVP 이후 재개 후보로 둔다. diff --git a/agent-roadmap/phase/automation-runtime-bridge/milestones/agent-workflow-loop-orchestration-mvp.md b/agent-roadmap/phase/automation-runtime-bridge/milestones/agent-workflow-loop-orchestration-mvp.md deleted file mode 100644 index b25a395..0000000 --- a/agent-roadmap/phase/automation-runtime-bridge/milestones/agent-workflow-loop-orchestration-mvp.md +++ /dev/null @@ -1,127 +0,0 @@ -# Milestone: 에이전트 작업 루프 오케스트레이션 MVP - -## 위치 - -- Roadmap: [ROADMAP.md](../../../ROADMAP.md) -- Phase: [PHASE.md](../PHASE.md) - -## 목표 - -사용자는 일반적인 바이브코딩처럼 한 번 요청하고, IOP는 코딩·저장소 조회·일반 질의를 direct, Plan, Milestone 단위로 분류해 필요한 작업 파일 생성, 실행 모델 라우팅, 상위 모델 리뷰, 후속 작업 연결을 자동으로 반복하는 방향을 스케치한다. -MVP는 사용자 로컬 workspace를 작업 상태의 원본으로 유지하고, 지원 대상을 좁힌 agent-family protocol과 event-aware passthrough를 이용해 한 사이클이 완료될 때까지 이어지는 구조를 검증한다. 최초 요청 판정은 교체 가능한 독립 라우팅 모듈로 분리하고 초기에는 상위 cloud 모델을 사용하되, 구체적인 판단 계약과 구현 방식은 이 Milestone을 계획으로 승격할 때 재설계한다. -외부 `model=iop`으로 명시 선택되는 [IOP Hot Path One-shot 실행 경로](../../knowledge-tool-optimization-extension/milestones/iop-hot-path-one-shot-execution.md)는 이 라우터를 거치거나 작업 루프로 승격되지 않는 별도 제품 경로다. - -## 상태 - -[스케치] - -## 승격 조건 - -- [ ] direct, Plan, Milestone 분류부터 완료 알림까지 한 사이클의 상태와 종료 조건을 확정한다. -- [ ] 최초 지원할 agent family와 각 family의 stream, tool call, tool result, continuation capability 경계를 정한다. -- [ ] 로컬 workspace 파일 상태와 IOP가 보유할 최소 in-flight 상태의 책임 경계를 확정한다. -- [ ] terminal event 대체와 합성 tool call을 포함한 event-aware passthrough의 protocol별 동작과 실패 경계를 정한다. -- [ ] Plan/Milestone 작업의 실행 모델 라우팅, 상위 모델 리뷰, 보완 반복의 횟수·비용·중단 기준을 정한다. -- [ ] 최초 요청 라우터와 orchestration, agent-family codec, provider dispatch의 책임 경계를 정하고 라우팅 결과의 최소 의미 계약을 결정한다. -- [ ] direct가 작업 파일 없이 현재 호출에서 종료되는 경계와 Plan/Milestone 작업으로 전환되는 경계를 정하고, 별도 `model=iop` Hot Path 요청은 분류 대상에서 제외한다. -- [ ] MVP 한 사이클과 후속 재개/복구 Milestone의 범위를 분리한다. -- [ ] API/stream/tool/lifecycle 계약 구현으로 승격할 때 SDD와 후속 구현 Milestone 구성을 확정한다. - -## 구현 잠금 - -- 상태: 잠금 -- SDD: 불필요 -- SDD 문서: 없음 -- SDD 사유: 현재 Milestone은 작업 루프의 제품·런타임 방향을 정리하는 스케치이며, API/stream/tool/lifecycle 계약을 구현 가능한 계획으로 승격할 때 SDD를 작성한다. -- 잠금 해제 조건: 아래 체크리스트 - - [ ] 승격 조건의 미정 항목이 사용자 검토로 해소되어 있다. - - [ ] 구현 가능한 MVP 범위와 후속 Milestone이 분리되어 있다. -- 결정 필요: 아래 체크리스트 - - [ ] MVP에서 우선 지원할 agent family 조합과 protocol capability 기준을 결정한다. - - [ ] 사용자에게 그대로 노출할 중간 stream과 IOP가 교체할 terminal tail의 경계를 결정한다. - - [ ] direct 요청의 현재 호출 종료 조건과 Plan/Milestone 전환 조건을 결정하고, 별도 `model=iop` Hot Path 진입을 이 라우터가 재분류하지 않는 경계를 결정한다. - - [ ] 라우팅 모듈이 반환할 분류, lane, grade, capability, confidence/abstain 의미와 invalid/low-confidence fallback 경계를 결정한다. - - [ ] 자동 리뷰·보완 반복의 최대 횟수, 비용 예산, 사용자 중단 조건을 결정한다. - - [ ] 완료 알림과 실패·부분 완료 상태를 사용자에게 표현하는 최소 UX를 결정한다. - -## 범위 - -- orchestration, agent-family codec, provider dispatch와 분리된 교체 가능한 진입 라우팅 모듈의 컨셉. 초기 구현은 성능이 좋은 cloud 모델을 사용하되 구체 계약과 내부 설계는 계획 승격 시 재검토한다. -- 최초 요청을 direct, Plan, Milestone으로 분류하고, Plan/Milestone 작업에는 local/cloud lane, G0X grade, 필요한 capability와 위임 여부를 판정하는 방향 -- direct 요청은 Milestone/Plan 생성 없이 현재 호출의 선택된 응답으로 종료하며, Gemini와 `ornith-fast`를 조합하는 `model=iop` Hot Path의 등급·micro-plan·review/correction을 소유하지 않는 경계 -- 코딩 작업뿐 아니라 저장소 단순 조회, 일반 지식 응답, web/tool capability가 필요한 요청을 direct 후보로 다루는 방향 -- Plan/Milestone 작업은 IOP가 사용자 로컬 경로를 포함한 지시를 주입하고, 모델 stream과 write/edit tool call을 로컬 agent에 전달해 작업 파일을 로컬 workspace에 생성하는 경로 -- [Stream Evidence Gate Core](../../../archive/phase/knowledge-tool-optimization-extension/milestones/stream-evidence-gate-core.md)의 normalized event/release contract를 소비해 확정된 선행 stream은 지연 없이 전달하고 판정이 필요한 bounded tail만 보류한 뒤, 정상 terminal event를 억제하고 로컬 파일 read tool call로 대체할 수 있는 event-aware passthrough -- tool result가 새 HTTP 요청으로 돌아오더라도 같은 logical workflow/session으로 이어지는 continuation 경계 -- `agent-task/m-*`, 순번 task directory, `PLAN-{lane}-GNN.md`, archive 이동을 이용한 filesystem-backed 작업 상태 판독 -- IOP가 보유하는 session/call id 매핑과 active provider call 같은 최소 in-flight 상태 -- Plan에 기록된 lane/grade에 따른 하이브리드 실행 라우팅과 상위 모델의 독립 리뷰, 보완 작업 재라우팅 -- 모든 task가 닫히면 Milestone 완료와 사용자 complete/알림으로 끝나는 단일 작업 사이클 -- Claude, Codex, Pi, OpenCode 같은 대중적 agent 후보를 제품명이 아니라 stream/tool/continuation capability family별 codec으로 지원하는 방향 - -## 기능 - -### Epic: [entry-route] 요청 분류와 Direct 종료 - -사용자가 orchestration 지식을 몰라도 요청 규모에 따라 현재 호출을 종료하거나 durable 작업 경로를 선택하는 진입 capability를 묶는다. - -- [ ] [router-boundary] 최초 요청 라우터가 orchestration, agent-family codec, provider dispatch와 분리된 교체 가능한 모듈이며 초기 cloud 구현과 후속 local 구현이 같은 의미 계약을 사용할 수 있는 방향이 정리되어 있다. -- [ ] [request-triage] 상위 cloud 라우터가 코딩·저장소 조회·일반 요청을 direct, Plan, Milestone으로 분류하고 lane, grade, 필요한 capability, confidence/abstain을 함께 판정하는 컨셉이 정리되어 있다. -- [ ] [direct-fastpath] direct는 작업 파일을 만들지 않고 현재 호출의 선택된 응답으로 종료하는 방식으로 정의하며, 별도 `model=iop` Hot Path의 Gemini triage, micro-plan, `ornith-fast` 실행과 review/correction을 재구현하지 않는 경계가 정리되어 있다. -- [ ] [route-fallback] capability·privacy·tool·schema·context 제약과 invalid/low-confidence 판정을 안전하게 처리하고 상위 cloud 라우터로 fallback할 수 있는 방향이 정리되어 있다. -- [ ] [work-decompose] Plan과 Milestone 요청은 로컬 작업 파일을 기준으로 task를 순차 실행할 수 있게 분해되는 구조가 정리되어 있다. - -### Epic: [agent-bridge] Agent Bridge와 Stream Hook - -로컬 agent가 파일과 tool 실행 주체로 남으면서 IOP가 다음 작업을 연결할 수 있는 통신 경계를 묶는다. - -- [ ] [family-codec] 지원 agent를 stream terminal, tool call/result, continuation capability family로 묶고 공통 workflow와 분리하는 경계가 정리되어 있다. -- [ ] [terminal-hook] `workflow_terminal_hook`이 [Stream Evidence Gate Core](../../../archive/phase/knowledge-tool-optimization-extension/milestones/stream-evidence-gate-core.md)의 `Filter`/normalized event/`FilterObservation` contract를 소비해 다른 활성 filter와 동일 terminal batch에서 병렬 평가되고 replacement decision과 sanitized reason만 반환하도록 정리되어 있다. 이미 보낸 content는 보존하고 terminal이 commit되기 전에만 protocol-safe replacement를 append하며, all-complete Arbiter, response staging/commit과 dispatch를 재구현하지 않는다. -- [ ] [workspace-state] 로컬 workspace 파일이 durable source of truth가 되고 IOP는 최소 in-flight 상태만 보유하는 책임 경계가 정리되어 있다. - -### Epic: [review-loop] 라우팅·리뷰·완료 루프 - -작은 모델과 로컬 모델의 실행 비용 이점을 유지하면서 상위 모델 리뷰로 품질을 닫는 capability를 묶는다. - -- [ ] [task-route] Plan의 lane/grade와 agent capability에 따라 cloud/local 실행 후보로 task를 라우팅하는 구조가 정리되어 있다. -- [ ] [frontier-review] 구현 agent의 자가 검증이 아니라 독립된 상위 모델 리뷰가 통과·보완·중단을 판정하는 구조가 정리되어 있다. -- [ ] [cycle-complete] 한 사이클에서 모든 task와 Milestone 종료를 판정하고 사용자에게 complete와 알림을 보내는 구조가 정리되어 있다. - -## 완료 리뷰 - -- 상태: 없음 -- 요청일: 없음 -- 완료 근거: 방향성 스케치이며 승격 조건과 기능 경계가 아직 확정되지 않았다. -- 검토 항목: 없음 -- agent-ui 상태 반영: 해당 없음 -- 리뷰 코멘트: 없음 - -## 범위 제외 - -- 중단 후 자동 재개, filesystem 정합성 복구, local model 기반 continuation point 판정 -- 동시에 같은 작업을 실행하는 사용자 요청의 중복 방지, distributed lock, lease, idempotent replay -- 모든 agent와 모든 provider protocol을 MVP에서 한 번에 지원하는 작업 -- Milestone/Plan/Review 파일 원문과 전체 stream history를 IOP 중앙 저장소에 영구 캐시하는 구조 -- 누적 message, tool 결과, 검색/RAG 자료의 선택·정렬·압축과 target별 context package 최적화 -- 장기 기억, RAG, 자동 policy self-mutation, 학습 기반 route threshold 자동 승격 -- 라우터 teaching, shadow/canary, offline replay, 증류·튜닝과 특정 local model에 종속된 판단 구현 -- weighted scorer 세부식, 분석기 조합, 모델별 threshold와 provider별 실행 정책의 조기 확정 -- 세부 API field, event schema, 파일 위치, 패키지 구조의 구현 확정 -- 외부 `model=iop`에서 Gemini 3.6 Flash와 `ornith-fast`를 조합하는 [IOP Hot Path One-shot 실행 경로](../../knowledge-tool-optimization-extension/milestones/iop-hot-path-one-shot-execution.md) - -## 작업 컨텍스트 - -- 관련 경로: `apps/edge/internal/openai`, `apps/edge/internal/service`, `apps/node/internal/runtime`, `apps/node/internal/adapters/cli`, `agent-task` -- 표준선(선택): workflow 의미와 다음 단계 replacement directive는 orchestration filter가 소유한다. Core는 bounded tail, terminal batch의 all-complete evaluation과 `stream_open` 뒤 기존 content를 되돌리지 않는 pre-terminal replacement 적용을 담당하며 terminal commit 뒤 replacement는 거부한다. 외부 caller는 replacement를 지정하지 않는다. -- 표준선(선택): 이 consumer의 stable filter id는 `workflow_terminal_hook`이며 sanitized workflow decision/replacement reason만 Core `FilterObservation`에 제공한다. terminal hook은 raw stream buffer, ingress snapshot, request rebuild, retry loop, 공개 오류 사슬 직렬화를 소유하지 않는다. 후속 recovery dispatch가 필요한 기능으로 승격하면 Core `RecoveryPlan`과 strategy/request-total cap, bounded ingress snapshot을 사용하고, 실패는 sanitized `FailureCauseChain`으로 전달해 endpoint host가 외부 오류 하나만 직렬화한다. -- 표준선(선택): durable workflow 상태는 사용자 로컬 workspace 파일에 두고, IOP는 재구성 가능한 내용을 별도 workflow DB나 파일 캐시로 복제하지 않는다. -- 표준선(선택): SSE 연결 하나를 양방향 세션으로 가정하지 않는다. tool result는 새 HTTP 요청으로 돌아올 수 있으며 logical workflow/session identity로 연결한다. -- 표준선(선택): direct는 작업 artifact와 continuation을 만들지 않고 현재 호출의 선택된 응답으로 종료한다. `model=iop` Hot Path는 이 라우터보다 먼저 별도 route로 확정되며 direct/Plan/Milestone으로 재분류하지 않는다. -- 표준선(선택): 라우팅 모듈은 계획 승격 시 재설계하며, 현재 스케치에서는 교체 가능 경계와 분류·lane·grade·capability·confidence/abstain 의미만 후보로 둔다. -- 표준선(선택): 생성된 Plan의 lane/grade는 다시 추론하지 않고 실행 라우팅 입력으로 소비하며, route outcome 관측은 별도 Usage Ledger가 소비할 수 있는 접점까지만 둔다. -- 표준선(선택): provider/model 선택, CLI process, stream/session, quota, failure와 cancellation은 [IOP Agent CLI Runtime](iop-agent-cli-runtime.md)의 실행 경계를 소비한다. 이 Milestone은 일반 요청 분류, IOP 소유 Plan/Milestone 작업 의미, 사용자 agent tool call 주입과 workflow 단계 연결을 소유한다. -- 표준선(선택): [IOP Hot Path One-shot 실행 경로](../../knowledge-tool-optimization-extension/milestones/iop-hot-path-one-shot-execution.md)와는 provider 호출·관측 같은 하위 capability만 공유할 수 있으며, Hot Path의 등급, micro-plan, 단일 review/correction과 terminal 결과는 이 작업 루프의 상태·artifact·review 의미에 포함하지 않는다. -- 큐 배치: [IOP Agent CLI Runtime](iop-agent-cli-runtime.md) 뒤, [Provider 사용량 알림과 운영 표면](provider-usage-notification-operations-surface.md) 앞 -- 선행 작업: [IOP Agent CLI Runtime](iop-agent-cli-runtime.md), [CLI Agent Group Grade Routing](cli-agent-group-grade-routing.md), [Stream Evidence Gate Core](../../../archive/phase/knowledge-tool-optimization-extension/milestones/stream-evidence-gate-core.md), [OpenAI-compatible 출력 검증 필터](../../knowledge-tool-optimization-extension/milestones/openai-compatible-output-validation-filters.md) -- 후속 작업: 중단 후 재개와 filesystem 정합성 복구, agent family 확대, 운영 관측과 비용 예산 정책 -- 확인 필요: `구현 잠금 > 결정 필요`와 승격 조건 diff --git a/agent-roadmap/phase/automation-runtime-bridge/milestones/cli-agent-group-grade-routing.md b/agent-roadmap/phase/automation-runtime-bridge/milestones/cli-agent-group-grade-routing.md deleted file mode 100644 index b1d9c22..0000000 --- a/agent-roadmap/phase/automation-runtime-bridge/milestones/cli-agent-group-grade-routing.md +++ /dev/null @@ -1,112 +0,0 @@ -# Milestone: CLI Agent Group Grade Routing - -## 위치 - -- Roadmap: [ROADMAP.md](../../../ROADMAP.md) -- Phase: [PHASE.md](../PHASE.md) - -## 목표 - -CLI provider에 등록된 agent를 목적별 agent group으로 묶고, `PLAN-local-G08.md`, `CODE_REVIEW-cloud-G07.md`, `DOC-local-G04.md` 같은 예약어/lane/grade 파일명을 기준으로 실행 agent를 결정한다. -예약어 설정은 기본 실행자를 직접 agent id 또는 `auto`로 고를 수 있고, `auto`일 때만 선택된 agent group의 수동/자동 grade routing을 사용한다. -OpenAI-compatible 호출은 파일 내용을 prompt 본문에 섞지 않고 `metadata.agent_group.task_file`로 절대 또는 workspace-relative task file 경로를 전달한다. - -## 상태 - -[계획] - -## 승격 조건 - -- 없음 - -## 구현 잠금 - -- 상태: 해제 -- SDD: 필요 -- SDD 문서: [SDD.md](../../../sdd/automation-runtime-bridge/cli-agent-group-grade-routing/SDD.md) -- SDD 사유: CLI provider agent catalog, agent group grade assignment, OpenAI-compatible metadata schema, config schema, request routing, usage/resource based selection, route audit log가 runtime/API 계약에 직접 닿는다. -- 잠금 해제 조건: - - [x] SDD 잠금이 해제되어 있다 - - [x] SDD 사용자 리뷰가 없거나 승인/해결되었다 - - [x] Acceptance Scenario가 Milestone 기능 Task와 연결되어 있다 - - [x] Evidence Map이 완료 시 `Roadmap Completion`과 최종 검증 evidence로 검증 가능하게 연결되어 있다 -- 결정 필요: 없음 - -## 범위 - -- CLI provider에 나열된 agent를 routing 가능한 실행 단위로 보고, 각 agent가 참조하는 adapter/target, `native_lane`, 처리 가능한 lane 목록, local/cloud provider 성격, subscription/quota/resource metric source를 config로 표현한다. -- agent group은 목적별 그룹이다. 기본 agent group은 `coding`이며, `docs`는 문서/테스트용 추가 기본 후보로 둔다. 그 밖의 목적 그룹도 확장 가능하게 둔다. -- agent group은 `assignment_mode=manual|auto`, `purpose`, benchmark profile, agent id 목록, lane별 grade coverage, overlap 정책, 수동 range 또는 자동 산출 range를 가진다. -- agent group 안에서도 local lane과 cloud lane assignment table은 분리한다. cloud-capable agent는 local lane coverage에 포함될 수 있지만, local-only agent는 cloud lane coverage에 포함될 수 없다. -- agent group의 agent id 목록 변경 감지는 순서가 아니라 contain 기준이다. 신규 auto group은 최초 자동 설정 대상이며, 기존 group은 같은 agent id 집합을 재정렬한 변경을 자동 재정렬 트리거로 보지 않고 agent id가 추가/삭제/교체된 경우에만 자동 설정 재계산 대상으로 본다. 이 비교는 group 추가/수정 저장 시점에 이전 agent id set과 현재 agent id set을 메모리에서 비교하는 방식이면 충분하며, hash/cache 기반 변경 감지를 요구하지 않는다. -- 수동 설정에서는 lane별로 `G01`~`G10` coverage가 모두 채워져야 하며, grade range overlap을 허용한다. overlap 후보는 local device resource 여유와 cloud subscription/quota 잔여량을 포함한 route score로 선택한다. -- cloud agent는 local lane 작업 후보가 될 수 있지만, local-only agent는 cloud lane 작업 후보가 될 수 없다. 따라서 local lane coverage는 local agent와 cloud-capable agent가 함께 채울 수 있고, cloud lane coverage는 cloud-capable agent만 채운다. -- grade overlap은 group 설정으로 표현한다. 예를 들어 overlap 폭이 `2`이면 각 grade의 상위/하위 2개 grade까지 인접 후보가 겹쳐 처리 가능하도록 range assignment를 산출하거나 검증한다. -- 자동 설정에서는 group의 purpose에 맞는 benchmark profile, auto assignment evaluator, 사용자 설정 benchmark sorting prompt를 사용해 group 안의 agent를 정렬하고 grade range assignment schema를 생성한다. coding group은 coding benchmark, docs group은 documentation benchmark를 기준으로 삼고, evaluator가 반환한 자동 assignment 결과는 output schema 검증을 통과한 뒤 `auto_ranges`로 저장한다. -- 예약어 설정은 사용자 추가가 가능하며, 예약어별 `default_agent`, `prompt_template`, `user_params_schema`, `file_payload_policy=path`를 가진다. `agent_group`은 `default_agent=auto`일 때만 노출/필수인 하위 설정이다. -- 예약어의 `default_agent=auto`는 해당 예약어가 참조하는 `agent_group` routing을 사용한다는 뜻이다. `default_agent`가 특정 cli provider agent id이면 agent group routing을 타지 않고 해당 agent를 기본 실행자로 사용하되, 파일명 lane/grade와 agent capability가 맞지 않으면 실패한다. -- agent group routing이 걸린 요청은 task file basename에서 예약어, lane, grade를 파싱한다. 예약어 prefix는 basename에서 마지막 `-{lane}-GNN.md` suffix를 제거한 왼쪽 전체 값이며, 형식 불일치, 미등록 예약어, lane/grade 범위 불일치, group coverage gap은 실패로 반환한다. -- OpenAI-compatible 호출은 `metadata.agent_group.task_file`과 `metadata.agent_group.params`를 사용한다. `agent_route_prefix` 같은 중복 필드는 만들지 않고, 예약어/lane/grade는 task file basename에서만 얻는다. -- task file 경로는 절대 경로와 상대 경로를 모두 지원한다. 상대 경로는 OpenAI-compatible CLI route에서 `metadata.workspace` 기준으로 해석하고, 상대 경로인데 workspace가 없으면 routing input error로 실패한다. -- 예약어 prompt는 task file 내용을 inline으로 붙이지 않고 task file 경로와 사용자 parameter만 전달한다. provider/adapter별 renderer는 같은 의미를 유지한 채 CLI별 인자나 prompt 형태로 변환할 수 있다. -- route request log는 request/execution id, task file, parsed prefix/lane/grade, 예약어 설정, group 또는 default agent, 후보 agent, 탈락 사유, 선택 agent, resource/quota snapshot, 실패 원인을 남긴다. - -## 기능 - -### Epic: [config] Agent Group 설정 계약 - -CLI provider agent와 목적별 agent group, 예약어 설정을 runtime이 해석 가능한 config 계약으로 고정한다. - -- [ ] [provider-agent] CLI provider agent catalog가 agent id, adapter, target, local/cloud provider 성격, `native_lane`, 처리 가능 lane 목록, subscription/quota/resource metric source를 표현한다. 검증: local-only agent가 cloud lane 후보로 들어가면 config validation이 실패하고, cloud-capable agent가 local lane 후보로 들어가는 설정은 통과한다. -- [ ] [group-schema] agent group schema가 `purpose`, `assignment_mode`, benchmark profile, auto assignment evaluator, benchmark sorting prompt, auto assignment output schema, agent id 목록, lane별 grade coverage, overlap 폭, 수동/자동 assignment 결과를 표현한다. 검증: lane별 `G01`~`G10` coverage gap은 실패하고, 같은 agent id 집합의 순서만 바뀐 저장은 자동 재계산 트리거로 기록되지 않으며, overlap 폭이 산출 range에 반영된다. -- [ ] [prefix-schema] 예약어 설정이 사용자 추가 가능한 `prefix`, `default_agent=auto|`, 조건부 `agent_group`, `prompt_template`, `user_params_schema`, `file_payload_policy=path`를 표현한다. 검증: `default_agent=auto`인데 `agent_group`이 없으면 실패하고, direct `default_agent`가 cli provider agent catalog에 없으면 실패하며, direct mode에서는 `agent_group`이 필수가 아니다. -- [ ] [metadata-contract] OpenAI-compatible 계약이 `metadata.agent_group.task_file`과 `metadata.agent_group.params`를 지원하고, `agent_route_prefix` 없이 task file basename에서 예약어/lane/grade를 파싱한다. 검증: 절대 경로와 `metadata.workspace` 기준 상대 경로가 통과하고, 상대 경로인데 workspace가 없으면 실패하며, prompt 본문에만 파일명을 넣은 요청은 agent group routing 입력으로 사용되지 않는다. - -### Epic: [routing] Grade 기반 실행 라우팅 - -예약어, lane, grade, agent group assignment, resource/quota 상태를 조합해 실행 agent를 결정한다. - -- [ ] [filename-parse] agent group routing 요청은 task file basename의 예약어, lane, grade 형식을 엄격히 검증한다. 검증: `PLAN-local-G08.md`, `CODE_REVIEW-cloud-G07.md`, `DOC-local-G04.md`는 통과하고, lane 누락, `G11`, 미등록 prefix, 잘못된 grade 표기는 실패하며, prefix는 마지막 `-{lane}-GNN.md` suffix 왼쪽 전체로 해석된다. -- [ ] [default-agent] 예약어의 `default_agent`가 `auto`이면 agent group routing을 사용하고, 특정 cli provider agent id이면 그 agent를 직접 선택한다. 검증: direct default agent가 파일명의 lane/grade를 처리할 수 없으면 routing error를 반환한다. -- [ ] [manual-routing] 수동 assignment는 lane별 grade range와 overlap을 허용하고, 겹치는 후보는 local resource 여유 또는 cloud subscription/quota 잔여량을 포함한 route score로 선택한다. 검증: 같은 grade를 처리하는 agent가 둘 이상일 때 resource/quota 상태가 더 좋은 후보가 선택된다. -- [ ] [auto-routing] 자동 assignment는 group purpose에 맞는 benchmark profile, auto assignment evaluator, 사용자가 설정한 benchmark sorting prompt를 사용해 agent 순위와 lane별 grade range를 산출한다. 검증: coding group은 coding benchmark profile, docs group은 documentation benchmark profile을 사용하고, evaluator 응답이 output schema와 lane별 coverage, cloud/local capability 규칙을 통과한 경우에만 저장된다. -- [ ] [route-log] routing 요청마다 request/execution id, task file, parsed prefix/lane/grade, 예약어, group/default agent, 후보/탈락/선택 agent, resource/quota snapshot, 실패 원인이 로그에 남는다. 검증: 성공과 routing error 모두 route log에서 같은 request id로 추적된다. - -### Epic: [docs-tests] 문서와 검증 - -구현자가 라우팅 규칙을 재현하고 운영자가 설정 오류를 고칠 수 있도록 문서와 테스트 근거를 남긴다. - -- [ ] [contract-docs] OpenAI-compatible 계약 문서와 Edge 운영 문서가 `metadata.agent_group.task_file`, `metadata.agent_group.params`, 예약어 파일명 계약, path-only payload 정책을 설명한다. -- [ ] [config-examples] 기본 `coding` agent group, 문서/테스트용 `docs` agent group, manual assignment, auto assignment, `PLAN`, `CODE_REVIEW`, `DOC` 예약어 설정 예시가 config sample에 추가된다. -- [ ] [routing-tests] config validation, filename parsing, manual routing, auto assignment result validation, direct default agent, metadata path error, route log 테스트가 추가된다. - -## 완료 리뷰 - -- 상태: 없음 -- 요청일: 없음 -- 완료 근거: 기능 Task는 아직 충족되지 않았지만 D01 결정이 반영되어 SDD와 구현 잠금은 해제되었다. -- 검토 항목: - - [x] SDD 사용자 리뷰가 해결되고 SDD 잠금이 해제되었다 - - [ ] 모든 기능 Task와 Task 안의 검증이 충족되었다 - - [ ] OpenAI-compatible 계약 문서와 config 예시가 실제 구현과 일치한다 -- agent-ui 상태 반영: 해당 없음 -- 리뷰 코멘트: 없음 - -## 범위 제외 - -- 선택 이후의 retry/failover, context transfer, failure budget과 중복 실행 방지 상태 머신. 이 Milestone은 provider/agent 하나와 route evidence만 반환하고 후속 실행 정책은 공통 AgentTaskManager runtime이 소유한다. -- agent benchmark를 실제로 실행해 점수를 산출하는 benchmark runner 구축. 이번 범위는 benchmark profile/prompt와 LLM 기반 assignment 결과 schema/validation이다. -- 모든 cloud provider의 subscription API 연동. MVP는 사용 가능 quota/remaining metric source가 있으면 route score에 사용하고, 없으면 설정된 fallback weight를 사용한다. -- GUI/Client 설정 화면 완성. config/API 계약과 운영 문서 예시를 우선한다. -- 원격 터미널/CLI 터널링, oto scheduler/CI-CD 자동화, 장기 기억/RAG/tool policy routing. - -## 작업 컨텍스트 - -- 관련 경로: [openai-compatible-api.md](../../../../agent-contract/outer/openai-compatible-api.md), `apps/edge/internal/openai`, `apps/edge/internal/service`, `apps/node/internal/adapters/cli`, `packages/go/config`, `configs`, [README.md](../../../../apps/edge/README.md) -- 표준선(선택): 내부 실행 개념은 `adapter + target`을 유지하고, OpenAI-compatible 경계의 agent group routing 문맥은 `metadata.agent_group` 아래에 둔다. 파일명은 routing 계약의 source of truth이며 prefix/lane/grade 중복 metadata는 만들지 않는다. -- 표준선(선택): selector는 provider/agent 하나만 반환한다. known failure의 retry/failover는 공통 runtime이 소유하고 unknown 오류는 추정 복구 없이 표면화한다. -- 표준선(선택): 같은 provider credential/profile의 cloud quota는 project별로 분할하지 않는 app-global 공유 snapshot이며 group routing은 공통 quota 입력을 읽기만 한다. -- 선행 작업: CLI Automation Runtime 안정화, OpenAI Responses Input Surface, OpenAI Workspace Agent Execution Contract -- 관련 공통화 작업: [IOP Agent CLI Runtime](iop-agent-cli-runtime.md) -- 후속 작업: [Provider 사용량 알림과 운영 표면](provider-usage-notification-operations-surface.md) -- 확인 필요: 없음 diff --git a/agent-roadmap/phase/automation-runtime-bridge/milestones/flutter-desktop-control-ui.md b/agent-roadmap/phase/automation-runtime-bridge/milestones/flutter-desktop-control-ui.md deleted file mode 100644 index 0d8c2db..0000000 --- a/agent-roadmap/phase/automation-runtime-bridge/milestones/flutter-desktop-control-ui.md +++ /dev/null @@ -1,87 +0,0 @@ -# Milestone: Flutter Desktop Control UI - -## 위치 - -- Roadmap: [ROADMAP.md](../../../ROADMAP.md) -- Phase: [PHASE.md](../PHASE.md) - -## 목표 - -`iop-agent`의 전체 YAML 설정과 실행 상태를 macOS Flutter 앱에서 관리할 수 있는 설정·운영 표면을 제공한다. -단일 `iop-agent`가 소유·실행하는 subprocess로 local proto-socket을 소비하고 Flutter에 provider 선택, 작업 실행, 복구 또는 daemon lifecycle을 복제하지 않은 채 설치 가능한 Desktop 제품으로 패키징한다. - -## 상태 - -[스케치] - -## 승격 조건 - -- [ ] [IOP Agent CLI Runtime](iop-agent-cli-runtime.md)의 config/status/event/control 계약과 macOS binary lifecycle 경계가 구현 계획의 입력으로 고정되어 있다. -- [ ] YAML 전체 설정, project registry, 실행 상태와 오류 표면을 agent-ui 화면 정의로 옮길 수 있도록 UI 정보 구조와 상태 목록을 확정한다. -- [ ] macOS app bundle, background 실행, 종료, 재연결과 실제 로그인 환경 smoke 범위를 기능 Task와 연결한다. - -## 구현 잠금 - -- 상태: 잠금 -- SDD: 불필요 -- SDD 문서: 없음 -- SDD 사유: 현재는 확정된 `iop-agent` local 계약을 소비할 Flutter client 범위를 나누는 스케치이며, process lifecycle·config write·배포 계약을 구현 가능한 계획으로 승격할 때 SDD 필요 여부를 다시 판정한다. -- 잠금 해제 조건: 아래 체크리스트 - - [ ] 승격 조건을 모두 충족해 `[계획]`으로 전환되어 있다. - - [ ] agent-ui 정의와 구현 계획이 binary 계약 및 기능 Task에 연결되어 있다. -- 결정 필요: 없음 - -## 범위 - -- macOS 우선 Flutter 설정·운영 UI와 설치 가능한 `.app` shell -- binary 측 local proto-socket을 통한 provider/project 조회, repo-global read-only 설정과 user-local 설정의 구분 표시·편집, 실행 상태·event·control 소비 -- provider 공통 기본값, project override, ordered selection rule, 수동 Milestone 선택·시작과 자동 재개 설정 전체의 UI 표면 -- `iop-agent`가 관리하는 Flutter subprocess의 재연결, background lifecycle, tray/menu와 project별 상태·오류·로그 표면 - -## 기능 - -### Epic: [config-ops-ui] 설정과 운영 표면 - -CLI 사용 없이 runtime 설정과 project 작업 상태를 관리하는 UI capability를 묶는다. - -- [ ] [config-parity] UI가 현재 YAML schema의 모든 사용자 설정을 손실 없이 조회·편집·검증하고 project override와 ordered rule priority를 보존한다. -- [ ] [project-registry] 명시 등록 project와 workspace instance를 조회·추가·수정·제거하고 clone/worktree/branch 식별 정보를 표시한다. -- [ ] [runtime-control] project별 Milestone 선택·수동 start, stop, resume, 중단 작업 자동 재개 설정과 task overlay·통합 대기·merge blocker 상태를 local control 계약으로 관리한다. -- [ ] [ops-surface] provider/model, quota/status, 작업 loop, 오류와 project-local log 위치를 현재 runtime 관측 수준보다 축소하지 않고 표시하며, workspace grant·unattended/approval-bypass preflight 또는 change-set 통합 실패 시 실행 불가 원인과 설정·해결 안내를 제공한다. - -### Epic: [macos-delivery] macOS 제품 수명주기 - -Flutter shell과 `iop-agent` binary를 하나의 설치·실행 경험으로 제공하는 산출물을 묶는다. - -- [ ] [managed-client-lifecycle] `iop-agent`가 Flutter를 단일 client subprocess로 시작·표시·종료하며 창 종료, 재실행과 비정상 종료에서 daemon 소유권 역전이나 중복 process를 만들지 않는다. -- [ ] [desktop-shell] 설정 창, background/tray 진입점과 최소 상태·오류 surface가 macOS app bundle로 패키징된다. -- [ ] [reconnect] socket 단절, binary 재시작과 config revision 변경 후 UI가 마지막 확인 상태를 오인하지 않고 재동기화한다. -- [ ] [logged-smoke] 실제 로그인된 macOS 환경에서 설치, 최초 실행, YAML import/편집, 다중 project 제어, 종료·재시작과 오류 표면화를 검증한다. - -## 완료 리뷰 - -- 상태: 없음 -- 요청일: 없음 -- 완료 근거: 후속 Flutter 제품 범위를 분리한 최초 스케치이며 승격 조건과 구현 gate가 남아 있다. -- 검토 항목: 없음 -- agent-ui 상태 반영: 해당 없음 -- 리뷰 코멘트: 없음 - -## 범위 제외 - -- Unity 3D Character, transparent character window와 animation -- provider credential 로그인, token 저장과 계정 전환 -- provider 선택, retry/failover, AgentTaskManager와 workflow 상태 머신의 Flutter 재구현 -- Edge/Control Plane 포함, Windows/Linux packaging과 배포 채널 운영 - -## 작업 컨텍스트 - -- 관련 경로: `apps/desktop-agent-ui`, `apps/desktop-agent`, `packages/go`, `proto/iop`, `agent-ui` -- 표준선(선택): Flutter는 `iop-agent`가 소유하는 client subprocess이며 설정 원본, config validation, provider 실행, 작업 상태 전이와 daemon lifecycle은 `iop-agent`가 소유한다. -- 표준선(선택): Flutter 종료는 UI만 닫고 daemon과 진행 중 project 작업을 종료하지 않는다. Unity의 상세 보기 요청은 `iop-agent`가 Flutter를 시작하거나 전면 표시하는 command로 처리한다. -- 표준선(선택): 화면 설정은 YAML의 부분집합이 아니라 전체 사용자 설정을 다루며, binary 조회 결과로 안전한 초기값을 제안하되 project override를 명시적으로 보존한다. -- 표준선(선택): macOS를 최초 지원 플랫폼으로 고정하고 Windows/Linux는 별도 후속 범위로 둔다. -- 큐 배치: [oto 자동화 스케줄러와 CI-CD 연동 (2차)](oto-automation-scheduler-second-wave.md) 뒤, [Unity 3D Desktop Character](unity-3d-desktop-character.md) 앞 -- 선행 작업: [IOP Agent CLI Runtime](iop-agent-cli-runtime.md) -- 후속 작업: [Unity 3D Desktop Character](unity-3d-desktop-character.md), Windows/Linux Desktop packaging -- 확인 필요: 없음 diff --git a/agent-roadmap/phase/automation-runtime-bridge/milestones/iop-agent-chronos-extraction-decoupling.md b/agent-roadmap/phase/automation-runtime-bridge/milestones/iop-agent-chronos-extraction-decoupling.md new file mode 100644 index 0000000..aed3c7b --- /dev/null +++ b/agent-roadmap/phase/automation-runtime-bridge/milestones/iop-agent-chronos-extraction-decoupling.md @@ -0,0 +1,80 @@ +# Milestone: IOP Agent Runtime의 Chronos 선별 이전과 IOP 의존성 제거 + +## 위치 + +- Roadmap: [ROADMAP.md](../../../ROADMAP.md) +- Phase: [PHASE.md](../PHASE.md) + +## 목표 + +완료된 `iop-agent`에서 Chronos가 소유해야 할 standalone workflow, durable state, workspace와 local-control 자산만 Chronos 저장소로 선별 이전하고, IOP에서는 standalone host·client lifecycle·workflow 의존성을 제거한다. IOP Node의 finite model/API/CLI provider 실행은 보존하며, 이 Milestone의 전달·회귀 evidence가 완료되어야 Chronos Roadmap을 시작할 수 있다. + +## 상태 + +[스케치] + +## 승격 조건 + +- [ ] 현재 IOP source revision과 파일별 `transfer | retain | remove | reference` disposition이 확정되어 있다. +- [ ] Chronos로 전달할 최소 buildable baseline과 IOP에서 보존할 provider 경계가 구분되어 있다. +- [ ] 기존 config/state의 versioned export 범위에 대한 사용자 결정이 SDD에 반영되어 있다. +- [ ] 양쪽 repository 검증과 Chronos 잠금 해제 evidence가 정의되어 있다. + +## 구현 잠금 + +- 상태: 잠금 +- SDD: 필요 +- SDD 문서: [SDD.md](../../../sdd/automation-runtime-bridge/iop-agent-chronos-extraction-decoupling/SDD.md) +- SDD 사유: cross-repo 코드 이전과 삭제, legacy state export, 잔류 IOP provider 회귀 및 외부 Milestone 잠금 해제를 함께 다룬다. +- 잠금 해제 조건: + - [ ] SDD 사용자 리뷰가 해결되어 있다. + - [ ] SDD 상태가 `[승인됨]`이고 SDD 잠금이 해제되어 있다. + - [ ] Acceptance Scenario가 Milestone 기능 Task와 연결되어 있다. + - [ ] Evidence Map이 IOP 완료 검토와 Chronos workspace 잠금 해제 근거로 연결되어 있다. +- 결정 필요: + - [ ] 기존 `iop-agent`의 유효한 project registration, user-local config와 durable state 중 Chronos가 이후 import할 versioned export 입력 범위를 확정한다. + +## 범위 + +- 현재 IOP `iop-agent` source·contract·test·config·build·document surface의 ownership/disposition manifest +- Chronos가 소유할 standalone runtime source, behavior fixture와 versioned legacy-state export 입력의 선별 이전 +- IOP standalone binary·host·workflow·client lifecycle surface와 전용 의존성 제거 +- IOP Node가 계속 소유할 finite model/API/CLI provider runtime과 Edge wire 회귀 검증 +- cross-repo 전달 receipt, rollback 근거와 Chronos 시작 잠금 해제 handoff + +## 기능 + +### Epic: [separation] 선별 이전과 책임 분리 + +- [ ] [inventory] 현재 source revision을 고정하고 code·config·proto·build·test·docs를 `transfer | retain | remove | reference` 중 하나로 분류한 ownership manifest를 만든다. 검증: manifest에 미분류 활성 파일과 양쪽 product source of truth 중복이 없어야 한다. +- [ ] [transfer] manifest의 Chronos-owned source·contract fixture·behavior test와 승인된 legacy-state export 입력을 Chronos repository의 독립 staging baseline으로 전달한다. 검증: staging baseline이 IOP application/runtime package import 없이 독립 build되고 기존 behavior test가 통과하며 전달 목록과 실제 target이 일치해야 한다. +- [ ] [decouple] IOP의 standalone binary·host·workflow·client lifecycle 및 전용 config/proto/build/document surface를 manifest대로 제거한다. 검증: 제거 대상 잔존 참조와 Chronos application runtime import가 없어야 한다. +- [ ] [retain-node] IOP에 남는 finite model/API/CLI provider execution, Node adapter와 Edge wire가 standalone 제거 뒤에도 동작하도록 경계를 보존한다. 검증: 관련 build·contract·focused regression이 통과해야 한다. +- [ ] [handoff-gate] versioned legacy-state export 결과 또는 명시적 clean-start 결정, 양쪽 검증 결과, rollback 지점과 downstream lock identity를 포함한 transfer receipt를 남긴다. 검증: receipt가 모든 이전·제거 항목과 Chronos 잠금 해제 조건을 추적할 수 있어야 한다. + +## 완료 리뷰 + +- 상태: 없음 +- 요청일: 없음 +- 완료 근거: IOP가 소유할 선행 분리 작업과 Chronos 시작 gate를 구체화하는 스케치다. +- 검토 항목: ownership manifest, 양쪽 독립 build, IOP 잔류 provider 회귀와 workspace lock 동기화 +- 리뷰 코멘트: 없음 + +## 범위 제외 + +- Chronos 제품 아키텍처의 후속 확정과 Chronos-owned local control v1 설계 +- Plan·Milestone·Roadmap workflow 신규 기능 구현 +- IOP Node `agent_bridge`, Edge managed routing와 remote mutation 구현 +- OTO adapter와 Flutter·Unity application 구현 +- IOP에 forwarding standalone runtime이나 Chronos application runtime dependency를 남기는 호환 계층 + +## 작업 컨텍스트 + +- 관련 경로: [IOP Agent CLI Runtime 계약](../../../../agent-contract/inner/iop-agent-cli-runtime.md), `apps/agent`, `packages/go/agent*`, `proto/iop/agent.proto`, `Makefile`, `scripts/e2e-iop-agent-logged-smoke.sh`, `../chronos` +- 표준선(선택): 이 Milestone이 선별 이전과 IOP 제거의 유일한 실행 owner다. source 삭제 전 destination baseline의 독립 build와 behavior fixture 수용을 확인하고, 삭제 뒤에는 git revision과 transfer receipt로만 rollback한다. +- 표준선(선택): IOP는 finite provider 실행을 유지하되 standalone workflow/state/client lifecycle을 보유하거나 Chronos application runtime을 import하지 않는다. +- 표준선(선택): IOP는 legacy state를 versioned export 입력과 blocker manifest로만 전달한다. Chronos state root로의 실제 import·활성화와 이후 write ownership은 외부 잠금 해제 뒤 Chronos 수용 Milestone이 수행한다. +- 큐 배치: Chronos 전체 Roadmap의 선행 gate이므로 전역 실행 순서 1번이다. +- 선행 작업: 완료된 [IOP Agent CLI Runtime 계약](../../../../agent-contract/inner/iop-agent-cli-runtime.md) +- 후속 작업: [Chronos 아키텍처와 프로젝트 소유권 경계 확정](../../../../../chronos/agent-roadmap/phase/runtime-ownership-transition/milestones/chronos-architecture-ownership-boundary.md) +- 확인 필요: [USER_REVIEW.md](../../../sdd/automation-runtime-bridge/iop-agent-chronos-extraction-decoupling/USER_REVIEW.md) diff --git a/agent-roadmap/phase/automation-runtime-bridge/milestones/oto-automation-scheduler-second-wave.md b/agent-roadmap/phase/automation-runtime-bridge/milestones/oto-automation-scheduler-second-wave.md index 4c069b9..cbf0192 100644 --- a/agent-roadmap/phase/automation-runtime-bridge/milestones/oto-automation-scheduler-second-wave.md +++ b/agent-roadmap/phase/automation-runtime-bridge/milestones/oto-automation-scheduler-second-wave.md @@ -66,6 +66,6 @@ MVP 이후 자동화 scheduler와 CI-CD 연동 방향을 검토하기 위한 최 - 관련 경로: `packages/go/jobs`, `apps/control-plane`, `apps/edge`, `apps/worker` - 표준선(선택): 현재 Worker 구조는 각 Go 서비스 내부 공통 모듈을 우선하고, `apps/worker`는 placeholder 상태이므로 본격 구현 전 별도 domain rule 또는 구체화가 필요하다. -- 선행 작업: [Provider 사용량 알림과 운영 표면](provider-usage-notification-operations-surface.md), 운영 관측과 Provider 관리 +- 선행 작업: 운영 관측과 Provider 관리 - 후속 작업: CI-CD provider integration, scheduler runtime, approval/audit 제품화 - 확인 필요: oto 책임 경계, trigger 우선순위, safety 기본값 diff --git a/agent-roadmap/phase/automation-runtime-bridge/milestones/pi-cli-provider-integration.md b/agent-roadmap/phase/automation-runtime-bridge/milestones/pi-cli-provider-integration.md index 7f12d87..9e528f6 100644 --- a/agent-roadmap/phase/automation-runtime-bridge/milestones/pi-cli-provider-integration.md +++ b/agent-roadmap/phase/automation-runtime-bridge/milestones/pi-cli-provider-integration.md @@ -77,12 +77,12 @@ Pi headless JSON 출력 이벤트를 IOP runtime event로 변환해 기존 CLI s - Pi 자체 provider/model 설정 파일의 소유권 이전 또는 자동 생성. Pi 설정은 Pi가 소유하고 IOP는 실행 profile과 route만 소유한다. - Pi TUI 화면 렌더링을 IOP terminal bridge로 중계하는 기능. - Pi 내부 tool 목록, MCP 정책, auth/provider 설정을 IOP schema로 재정의하는 기능. -- CLI Agent Group Grade Routing의 agent group assignment 정책. Pi는 이 Milestone에서 routing 가능한 CLI target으로 준비하고, grade routing 편입은 후속 Milestone에서 다룬다. +- Chronos가 소유하는 task-file agent group assignment 정책. Pi는 이 Milestone에서 typed CLI target으로 준비하고, Chronos route catalog 편입은 해당 Chronos Milestone의 cross-repo 작업으로 다룬다. ## 작업 컨텍스트 - 관련 경로: `apps/node/internal/adapters/cli`, `packages/go/config`, `configs/edge.yaml`, `configs/edge-compose.yaml.tmpl`, [README.md](../../../../apps/edge/README.md), [openai-compatible-api.md](../../../../agent-contract/outer/openai-compatible-api.md) - 표준선(선택): 내부 실행 개념은 기존처럼 `adapter + target`을 유지한다. Pi는 새 top-level adapter가 아니라 `cli` adapter의 target/profile로 추가한다. - 선행 작업: CLI Automation Runtime 안정화, OpenAI Workspace Agent Execution Contract -- 후속 작업: CLI Agent Group Grade Routing에서 Pi target을 agent group 후보로 포함한다. +- 후속 작업: Chronos의 작업 파일 Lane·Grade 기반 Agent Group 실행 라우팅에서 Pi target을 후보로 포함한다. - 확인 필요: 없음 diff --git a/agent-roadmap/phase/automation-runtime-bridge/milestones/provider-usage-notification-operations-surface.md b/agent-roadmap/phase/automation-runtime-bridge/milestones/provider-usage-notification-operations-surface.md deleted file mode 100644 index 235699f..0000000 --- a/agent-roadmap/phase/automation-runtime-bridge/milestones/provider-usage-notification-operations-surface.md +++ /dev/null @@ -1,80 +0,0 @@ -# Milestone: Provider 사용량 알림과 운영 표면 - -## 위치 - -- Roadmap: [ROADMAP.md](../../../ROADMAP.md) -- Phase: [PHASE.md](../PHASE.md) - -## 목표 - -공통 Agent Task runtime이 생성하는 provider quota/status, 선택, retry/failover와 terminal error event를 운영자가 놓치지 않도록 Desktop과 후속 외부 채널에 전달하는 알림·이력 표면을 스케치한다. -작업 이어받기, provider 재선택과 실패 복구 상태 머신은 [IOP Agent CLI Runtime](iop-agent-cli-runtime.md)이 소유하며, 이 Milestone은 그 동작을 중복 구현하지 않는 event consumer다. - -## 상태 - -[스케치] - -## 승격 조건 - -- [ ] 최초 알림 표면을 macOS native notification, Desktop in-app history, Control Plane, webhook/메신저 중 어디까지 포함할지 정한다. -- [ ] 동일 quota/error event의 dedupe, 반복 알림, 확인/해제와 보존 기간의 사용자 경험을 정한다. -- [ ] project, provider/model/profile, quota snapshot과 failure evidence 중 사용자에게 보여줄 최소·민감정보 제외 필드를 정한다. -- [ ] 공통 runtime event/config 계약을 그대로 소비하고 selection/failover를 재구현하지 않는 경계를 확인한다. - -## 구현 잠금 - -- 상태: 잠금 -- SDD: 불필요 -- SDD 문서: 없음 -- SDD 사유: 현재는 공통 runtime event의 후속 알림 표면을 정하는 스케치이며 실제 notification schema·delivery lifecycle 구현으로 승격할 때 SDD 필요 여부를 다시 판정한다. -- 잠금 해제 조건: 아래 체크리스트 - - [ ] 승격 조건의 알림 표면과 delivery UX 범위가 정리되어 있다. - - [ ] 공통 runtime과의 event consumer 경계가 유지된다. -- 결정 필요: 아래 체크리스트 - - [ ] 최초 제공할 알림 채널과 channel별 기본 on/off를 결정한다. - - [ ] 같은 quota/error 상태의 dedupe window, 반복 주기와 사용자 확인 의미를 결정한다. - -## 범위 - -- 공통 runtime의 app-global provider quota/status snapshot, retry/failover, stopped/failed event를 읽는 notification consumer -- `codex/gpt-5.6-sol-xhigh` 같은 provider/model/profile 이름과 관련 project를 사용자가 식별할 수 있는 알림 payload -- macOS native notification과 Desktop in-app history를 1차 후보로 두고 Control Plane, webhook/메신저는 후속 채널 후보로 분리하는 방향 -- quota exhausted/unknown 회복, provider readiness 변경과 terminal error의 dedupe·반복·확인 상태 후보 -- project `agent-log`의 execution identity를 알림 상세 evidence로 연결하되 credential, raw prompt/output과 secret은 복제하지 않는 경계 - -## 기능 - -### Epic: [provider-notify] Provider Operations Notification - -공통 runtime event를 선택·복구와 분리된 운영 알림으로 전달하는 capability를 묶는다. - -- [ ] [event-input] 알림이 소비할 quota/status/failure/runtime event와 최소 provider/project identity가 정리되어 있다. -- [ ] [channel-surface] macOS native, Desktop history, Control Plane, webhook/메신저 후보의 1차·후속 범위와 기본 on/off가 정리되어 있다. -- [ ] [delivery-policy] dedupe, 반복, 확인/해제, 보존 기간과 민감정보 제외 정책이 정리되어 있다. -- [ ] [runtime-boundary] notification consumer가 selector, retry/failover, task continuation과 project log source of truth를 재구현하지 않는 경계가 정리되어 있다. - -## 완료 리뷰 - -- 상태: 없음 -- 요청일: 없음 -- 완료 근거: 후속 알림 표면의 방향성 스케치이며 승격 조건과 기능 경계가 아직 확정되지 않았다. -- 검토 항목: 없음 -- agent-ui 상태 반영: 해당 없음 -- 리뷰 코멘트: 없음 - -## 범위 제외 - -- provider/agent 선택, task route pin, retry/failover, context transfer와 중복 실행 방지 -- CLI 로그인, credential/token 저장, 계정 회전과 billing 구매 자동화 -- 공통 runtime이 이미 project `agent-log`에 남기는 전체 execution log의 별도 중앙 복제 -- oto scheduler/CI-CD와 원격 terminal tunnel - -## 작업 컨텍스트 - -- 관련 경로: `packages/go/agentruntime`, `apps/desktop-agent`, `apps/desktop-agent-ui`, `apps/control-plane`, `agent-log` -- 표준선(선택): quota는 provider credential/profile 기준 app-global 공유 상태이며 알림은 project별 선택 결과와 같은 snapshot identity를 참조한다. -- 표준선(선택): 사용자 표면은 provider/model/profile 공식 계열 이름을 사용하고 generic `cli` adapter id를 주 식별자로 보여주지 않는다. -- 표준선(선택): known failure의 retry/failover와 unknown terminal error 결정은 공통 runtime이 먼저 끝낸다. 알림은 확정 event를 소비할 뿐 실행 동작을 바꾸지 않는다. -- 선행 작업: [IOP Agent CLI Runtime](iop-agent-cli-runtime.md) -- 후속 작업: Control Plane 운영 알림, 외부 webhook/메신저 delivery, 사용량 dashboard -- 확인 필요: `구현 잠금 > 결정 필요` 항목 diff --git a/agent-roadmap/phase/automation-runtime-bridge/milestones/remote-workspace-operations-environment.md b/agent-roadmap/phase/automation-runtime-bridge/milestones/remote-workspace-operations-environment.md deleted file mode 100644 index acb15f1..0000000 --- a/agent-roadmap/phase/automation-runtime-bridge/milestones/remote-workspace-operations-environment.md +++ /dev/null @@ -1,72 +0,0 @@ -# Milestone: 원격 코딩/유지보수 작업 환경 - -## 위치 - -- Roadmap: [ROADMAP.md](../../../ROADMAP.md) -- Phase: [PHASE.md](../PHASE.md) - -## 목표 - -CLI Agent와 workspace-bound execution을 이용해 원격 코딩 환경과 원격 유지보수 환경을 운영할 수 있는 경계를 스케치한다. -이미 완료된 OpenAI-compatible workspace agent 계약을 기준으로 삼되, 실제 제품 UX와 보안/권한 정책은 별도 검토 전까지 확정하지 않는다. - -## 상태 - -[스케치] - -## 승격 조건 - -- [ ] 원격 코딩과 원격 유지보수 중 1차 MVP에서 우선할 사용 사례를 결정한다. -- [ ] workspace 접근, artifact, 승인, 취소, 결과 회수의 최소 운영 흐름을 정리한다. -- [ ] Control Plane/Client/Edge CLI 중 어떤 표면을 MVP에 포함할지 결정한다. -- [ ] 원격 터미널/CLI 터널링 POC와의 경계를 정리한다. - -## 구현 잠금 - -- 상태: 잠금 -- 결정 필요: 아래 체크리스트 - - [ ] 원격 코딩과 원격 유지보수 중 우선순위를 결정한다. - - [ ] workspace 접근 권한과 승인 정책의 MVP 기준을 결정한다. - - [ ] 결과 확인과 artifact 회수 표면을 어디에 둘지 결정한다. - -## 범위 - -- workspace-bound CLI Agent 실행 기반 원격 작업 환경 -- 원격 코딩, 유지보수, 결과 확인, artifact 회수의 MVP 흐름 후보 -- OpenAI-compatible `metadata.workspace` 계약과 IOP native 운영 표면의 책임 분리 -- 원격 터미널/CLI 터널링과 겹치지 않는 작업 위임 방식 정리 - -## 기능 - -### Epic: [remote-workspace] Remote Workspace Operations - -원격 작업을 세션과 workspace 중심으로 운영하기 위한 최소 산출물을 묶는다. - -- [ ] [use-case] 원격 코딩/유지보수 MVP 사용 사례와 제외 범위가 정리되어 있다. -- [ ] [workspace-flow] workspace 접근, 승인, 취소, artifact 회수 흐름 후보가 정리되어 있다. -- [ ] [surface-boundary] OpenAI-compatible 호출 표면과 IOP native 운영 표면의 책임 경계가 정리되어 있다. -- [ ] [ops-review] 사용자가 원격 작업 환경 MVP 범위와 2차 후보를 검토했다. - -## 완료 리뷰 - -- 상태: 없음 -- 요청일: 없음 -- 완료 근거: 스케치 Milestone이며 기능 Task가 아직 충족되지 않았다. -- 리뷰 필요: - - [ ] 사용자가 완료 결과를 확인했다 - - [ ] archive 이동을 승인했다 -- 리뷰 코멘트: 없음 - -## 범위 제외 - -- Agent를 설치할 수 없는 host/device의 terminal tunneling -- 모든 IDE/SCM/CI 시스템 통합 -- 상세 권한/audit schema 구현 - -## 작업 컨텍스트 - -- 관련 경로: `apps/edge`, `apps/node`, `apps/control-plane`, `apps/client`, [openai-compatible-api.md](../../../../agent-contract/outer/openai-compatible-api.md) -- 표준선(선택): 외부 실행 호출은 OpenAI-compatible shape와 `metadata.workspace`를 유지하고, lifecycle/artifact/approval은 IOP native 운영 표면에서 다룬다. -- 선행 작업: OpenAI Workspace Agent Execution Contract -- 후속 작업: 원격 터미널/CLI 터널링 POC, 정책/이력/감사 -- 확인 필요: 우선 사용 사례, 권한/승인 기준, 결과 회수 표면 diff --git a/agent-roadmap/phase/automation-runtime-bridge/milestones/unity-3d-desktop-character.md b/agent-roadmap/phase/automation-runtime-bridge/milestones/unity-3d-desktop-character.md deleted file mode 100644 index 50d2309..0000000 --- a/agent-roadmap/phase/automation-runtime-bridge/milestones/unity-3d-desktop-character.md +++ /dev/null @@ -1,88 +0,0 @@ -# Milestone: Unity 3D Desktop Character - -## 위치 - -- Roadmap: [ROADMAP.md](../../../ROADMAP.md) -- Phase: [PHASE.md](../PHASE.md) - -## 목표 - -`iop-agent`의 작업 상태를 투명 배경의 3D 캐릭터로 표현하는 macOS Unity client를 제공한다. -단일 `iop-agent`가 소유·실행하는 subprocess로 같은 local proto-socket을 소비하고, 작업 실행 로직을 중복하지 않으면서 간단한 메뉴에서 상세 Flutter UI 표시를 요청할 수 있는 데스크톱 캐릭터 표면으로 구현한다. - -## 상태 - -[스케치] - -## 승격 조건 - -- [ ] [IOP Agent CLI Runtime](iop-agent-cli-runtime.md)의 client-neutral status/event/control 계약에서 캐릭터가 소비할 상태와 재연결 규칙을 확정한다. -- [ ] idle, working, reviewing, waiting, error와 completed 상태를 교체 가능한 3D avatar·animation state로 매핑하고 transparent window 상호작용 범위를 정리한다. -- [ ] macOS transparent rendering, click-through, drag, always-on-top, resource budget과 실제 로그인 환경 smoke를 기능 Task와 연결한다. - -## 구현 잠금 - -- 상태: 잠금 -- SDD: 불필요 -- SDD 문서: 없음 -- SDD 사유: 현재는 확정된 local event 계약을 소비할 독립 Unity client의 제품 범위를 나누는 스케치이며, native window plugin·process lifecycle·배포 계약을 구현 가능한 계획으로 승격할 때 SDD 필요 여부를 다시 판정한다. -- 잠금 해제 조건: 아래 체크리스트 - - [ ] 승격 조건을 모두 충족해 `[계획]`으로 전환되어 있다. - - [ ] avatar 상태 모델과 macOS window/platform 검증 계획이 기능 Task에 연결되어 있다. -- 결정 필요: 없음 - -## 범위 - -- macOS 우선 Unity 3D client와 transparent·frameless character window -- binary 측 local proto-socket을 통한 runtime 상태·event 소비와 연결 상태 표시 -- idle, working, reviewing, waiting, error, completed를 표현하는 avatar·animation state machine -- drag, click/click-through, always-on-top, 위치 저장, 간단한 runtime 메뉴와 binary 단절·재연결 동작 -- 상세 설정·운영 화면이 필요할 때 Unity가 local control command를 보내고 `iop-agent`가 Flutter를 시작하거나 전면 표시하는 경계 - -## 기능 - -### Epic: [character-runtime] 캐릭터 상태 client - -runtime event를 안정된 3D 표현 상태로 바꾸는 client capability를 묶는다. - -- [ ] [socket-client] Unity client가 Flutter와 독립적으로 `iop-agent`에 연결하고 snapshot 이후 event를 순서대로 소비하며 재연결 시 상태를 재동기화한다. -- [ ] [state-mapping] provider/model 내부 세부를 캐릭터에 하드코딩하지 않고 runtime 상태를 idle, working, reviewing, waiting, error와 completed animation으로 결정적으로 매핑한다. -- [ ] [avatar-contract] 교체 가능한 avatar, animation clip과 상태 transition 계약을 제공해 특정 캐릭터 asset에 runtime을 종속시키지 않는다. -- [ ] [error-surface] 인증·provider·quota·workspace grant·unattended/approval-bypass preflight·change-set merge conflict·작업 오류와 binary 연결 실패를 정상 작업 animation으로 오인하지 않고 명시적인 상태로 표현하며 상세 설정은 Flutter 표시 command로 연결한다. - -### Epic: [transparent-delivery] 투명 창과 macOS 배포 - -- [ ] [detail-ui-command] 간단한 Unity 메뉴의 상세 보기 요청이 Flutter 직접 실행 없이 `iop-agent` command를 통해 Flutter start/focus로 중계된다. -3D 캐릭터를 데스크톱 표면에 안정적으로 표시하는 플랫폼 산출물을 묶는다. - -- [ ] [transparent-window] alpha 투명 배경, frameless·always-on-top 창과 다중 모니터 좌표를 macOS에서 제공한다. -- [ ] [pointer-policy] 캐릭터 hit 영역의 click/drag와 배경 click-through를 전환 가능하게 제공하고 사용자가 언제든 창을 이동·숨김·종료할 수 있다. -- [ ] [lifecycle-budget] `iop-agent`가 소유하는 client subprocess로 연결·종료하며 daemon이나 Flutter를 직접 실행하지 않고 idle/active resource budget과 animation throttling을 지킨다. -- [ ] [logged-smoke] 실제 로그인된 macOS 환경에서 투명 렌더링, 입력, animation, socket 재연결, sleep/wake와 다중 모니터 동작을 검증한다. - -## 완료 리뷰 - -- 상태: 없음 -- 요청일: 없음 -- 완료 근거: 후속 Unity 캐릭터 범위를 분리한 최초 스케치이며 승격 조건과 구현 gate가 남아 있다. -- 검토 항목: 없음 -- agent-ui 상태 반영: 해당 없음 -- 리뷰 코멘트: 없음 - -## 범위 제외 - -- Flutter 설정·운영 화면과 YAML 편집 기능 -- provider 선택, task orchestration, retry/failover와 binary lifecycle의 Unity 재구현 -- 최종 캐릭터 IP·아트 스타일 확정과 대규모 avatar marketplace -- Windows/Linux transparent window와 mobile/web 배포 - -## 작업 컨텍스트 - -- 관련 경로: `apps/desktop-character`, `packages/go`, `proto/iop`, `agent-ui` -- 표준선(선택): Unity는 `iop-agent`가 소유하는 표시 client subprocess이며 `iop-agent`가 상태·event 원본, control 권한과 client lifecycle을 소유한다. -- 표준선(선택): Flutter와 Unity는 서로의 process나 protocol을 소유하지 않고 같은 client-neutral local proto-socket을 각각 소비한다. Unity의 상세 보기 요청은 `iop-agent`를 통해 Flutter start/focus로 중계한다. -- 표준선(선택): 첫 avatar는 교체 가능한 검증 asset으로 두고 최종 캐릭터 디자인은 runtime·window capability와 분리한다. -- 큐 배치: [Flutter Desktop Control UI](flutter-desktop-control-ui.md) 뒤, 전역 큐 마지막 -- 선행 작업: [IOP Agent CLI Runtime](iop-agent-cli-runtime.md) -- 후속 작업: Windows/Linux Character packaging과 avatar content 확장 -- 확인 필요: 없음 diff --git a/agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/iop-hot-path-one-shot-execution.md b/agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/iop-hot-path-one-shot-execution.md index 3ea33cf..097061d 100644 --- a/agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/iop-hot-path-one-shot-execution.md +++ b/agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/iop-hot-path-one-shot-execution.md @@ -114,9 +114,9 @@ Hot Path가 최대 품질 경쟁이 아니라 빠른 실용 경로라는 목표 - 표준선(선택): `Gemini 3.6 Flash`와 `ornith-fast`는 Hot Path baseline target으로 설정에서 명시하고, core 내부에는 외부 `model` id와 provider id, target 문자열의 의미를 섞어 하드코딩하지 않는다. - 표준선(선택): end-to-end 속도와 bounded completion이 1차 최적화 목표이며, 품질은 정한 하한을 만족하는 범위에서 최대한 확보한다. 미미한 품질 향상을 위해 stage 수를 늘리지 않는다. - 표준선(선택): micro-plan은 한 요청 안의 transient directive이며 durable Plan/Milestone artifact가 아니다. review와 correction을 포함해 전체 실행은 one-shot terminal lifecycle 안에서 닫힌다. -- 표준선(선택): Hot Path는 [에이전트 작업 루프 오케스트레이션 MVP](../../automation-runtime-bridge/milestones/agent-workflow-loop-orchestration-mvp.md)와 요청 분류, artifact, continuation, retry와 완료 상태를 공유하지 않는다. provider 호출, admission, cancellation, 출력 검증과 관측 같은 하위 runtime capability만 재사용할 수 있다. +- 표준선(선택): Hot Path는 Chronos의 일반 요청 triage/scoped workflow와 요청 분류, artifact, continuation, retry와 완료 상태를 공유하지 않는다. provider 호출, admission, cancellation, 출력 검증과 관측 같은 하위 runtime capability만 재사용할 수 있다. - 표준선(선택): [단계 호출과 검증 최적화 MVP](knowledge-tool-validation-optimization.md)는 범용 staged validation mode 후보이고, Hot Path는 고정 target 조합과 latency budget을 소유하는 별도 제품 경로다. -- 큐 배치: 사용자 우선순위 미지정으로 전역 실행 순서 끝에 추가한다. +- 큐 배치: IOP Agent Runtime 선행 분리 Milestone 추가에 따라 현재 전역 실행 순서 4번이다. 이 번호는 dependency가 아니라 기본 선택 우선순위다. - 선행 작업: 없음 - 참조·연결 작업: [단계 호출과 검증 최적화 MVP](knowledge-tool-validation-optimization.md), [요청 실행 로그와 Usage Ledger 기반](../../operational-observability-provider-management/milestones/request-execution-log-usage-ledger-foundation.md) - 후속 작업: Hot Path 구현 계획과 SDD, target·endpoint 확대, 평가 기반 threshold 조정 diff --git a/agent-roadmap/phase/personal-edge-packaging-deployment/milestones/personal-local-edge-deployment-profiles.md b/agent-roadmap/phase/personal-edge-packaging-deployment/milestones/personal-local-edge-deployment-profiles.md index 3e7aaaf..3b61de6 100644 --- a/agent-roadmap/phase/personal-edge-packaging-deployment/milestones/personal-local-edge-deployment-profiles.md +++ b/agent-roadmap/phase/personal-edge-packaging-deployment/milestones/personal-local-edge-deployment-profiles.md @@ -107,6 +107,6 @@ server/team mode와 personal Edge의 enrollment 및 후속 구현 경계를 묶 - 표준선(선택): personal/local mode의 사용자 경험은 Node bootstrap이 아니라 provider plug-in과 localhost OpenAI-compatible endpoint를 기본으로 둔다. - 표준선(선택): 개인 배포의 기본은 macOS/Windows/Linux native package이며, Docker는 서버/팀 배포와 개발/격리 실행의 우선 경로로 둔다. - 표준선(선택): local mode에서도 보안을 제거하지 않고 localhost bind, local API token, credential storage, 최소 usage ledger 기준을 둔다. -- 선행 작업: [Update Plane 안정 프로토콜](../../update-plane-self-update-foundation/milestones/update-plane-stable-protocol.md), [Host-local Manager 기반 자체 업데이트](../../update-plane-self-update-foundation/milestones/host-local-manager-self-update.md), [에이전트 작업 루프 오케스트레이션 MVP](../../automation-runtime-bridge/milestones/agent-workflow-loop-orchestration-mvp.md) +- 선행 작업: [Update Plane 안정 프로토콜](../../update-plane-self-update-foundation/milestones/update-plane-stable-protocol.md), [Host-local Manager 기반 자체 업데이트](../../update-plane-self-update-foundation/milestones/host-local-manager-self-update.md) - 후속 작업: personal Edge installer 구현, deployment mode config schema, local provider setup wizard, Control Plane optional enrollment - 확인 필요: `구현 잠금 > 결정 필요` 항목 diff --git a/agent-roadmap/priority-queue.md b/agent-roadmap/priority-queue.md index b54ae67..f496a7b 100644 --- a/agent-roadmap/priority-queue.md +++ b/agent-roadmap/priority-queue.md @@ -4,92 +4,74 @@ ## 실행 순서 -1. [다중 Provider Protocol Profile과 Native Anthropic Messages](phase/operational-observability-provider-management/milestones/multi-provider-protocol-profile-native-messages.md) +1. [IOP Agent Runtime의 Chronos 선별 이전과 IOP 의존성 제거](phase/automation-runtime-bridge/milestones/iop-agent-chronos-extraction-decoupling.md) + 완료된 `iop-agent`에서 Chronos-owned 자산을 선별 전달하고 IOP standalone 의존성을 제거한 뒤 잔류 Node/provider 회귀와 Chronos 시작 잠금 해제 evidence를 남긴다. + +2. [다중 Provider Protocol Profile과 Native Anthropic Messages](phase/operational-observability-provider-management/milestones/multi-provider-protocol-profile-native-messages.md) Chat Completions 공통 driver와 provider profile을 정리하고 Edge가 Anthropic Messages를 직접 흡수해 Claude Code가 agent-client 없이 IOP를 호출하게 한다. -2. [사용자별 Provider Credential Slot과 Alias Routing](phase/operational-observability-provider-management/milestones/principal-provider-credential-slot-routing.md) +3. [사용자별 Provider Credential Slot과 Alias Routing](phase/operational-observability-provider-management/milestones/principal-provider-credential-slot-routing.md) Control Plane이 principal token과 provider credential을 소유하고 사용자별 multi-token slot과 명시적 model route/alias를 안전하게 실행 credential로 연결한다. -3. [IOP Agent CLI Runtime](phase/automation-runtime-bridge/milestones/iop-agent-cli-runtime.md) - 현재 Python 감시·dispatcher와 Node CLI runtime의 전체 동등성을 단일 Go CLI Provider·AgentTaskManager 및 독립 `iop-agent` binary로 이전한다. +4. [IOP Hot Path One-shot 실행 경로](phase/knowledge-tool-optimization-extension/milestones/iop-hot-path-one-shot-execution.md) + 외부 `model=iop` 요청을 Gemini 3.6 Flash와 RTX 5090 `ornith-fast`의 bounded one-shot 경로로 처리해 최대 속도와 실사용 품질의 균형을 맞춘다. -4. [OpenAI-compatible 출력 검증 필터](phase/knowledge-tool-optimization-extension/milestones/openai-compatible-output-validation-filters.md) +5. [OpenAI-compatible 출력 검증 필터](phase/knowledge-tool-optimization-extension/milestones/openai-compatible-output-validation-filters.md) 실제 의미 필터 전에 deterministic diagnostic mock으로 실제 Stream Evidence Gate의 pass·observe-only·blocking recovery를 관측하는 smoke를 통과시키고, OpenAI-compatible single-stream 반복과 incoming request history에 누적된 assistant 반복, JSON contract 검증/repair 경로를 안정화한다. -5. [OpenAI-compatible Incomplete Tool Call Syntax Gate](phase/knowledge-tool-optimization-extension/milestones/openai-compatible-incomplete-tool-call-syntax-gate.md) +6. [OpenAI-compatible Incomplete Tool Call Syntax Gate](phase/knowledge-tool-optimization-extension/milestones/openai-compatible-incomplete-tool-call-syntax-gate.md) terminal provider 응답의 incomplete tool-call syntax를 deterministic하게 판정한다. -6. [OpenAI-compatible Runtime Output Integrity Filter](phase/knowledge-tool-optimization-extension/milestones/openai-compatible-runtime-output-integrity-filter.md) +7. [OpenAI-compatible Runtime Output Integrity Filter](phase/knowledge-tool-optimization-extension/milestones/openai-compatible-runtime-output-integrity-filter.md) terminal output invariant와 공통 filter/retry pipeline을 정의한다. -7. [LLM 판별 기반 Missing Tool Call 재시도 Gate](phase/knowledge-tool-optimization-extension/milestones/llm-judged-missing-tool-call-retry-gate.md) +8. [LLM 판별 기반 Missing Tool Call 재시도 Gate](phase/knowledge-tool-optimization-extension/milestones/llm-judged-missing-tool-call-retry-gate.md) tool 사용 의도 누락 케이스를 LLM judge와 buffered retry 후보로 검토한다. -8. [Tool Call 판정 모델 Gate 리뷰](phase/knowledge-tool-optimization-extension/milestones/tool-call-validator-model-gate-review.md) +9. [Tool Call 판정 모델 Gate 리뷰](phase/knowledge-tool-optimization-extension/milestones/tool-call-validator-model-gate-review.md) schema만으로 어려운 tool-call 후보에 validator 모델을 쓸지 검토한다. -9. [Provider 부하 메트릭과 Live Queue Dashboard](phase/operational-observability-provider-management/milestones/provider-load-metrics-queue-dashboard.md) +10. [Provider 부하 메트릭과 Live Queue Dashboard](phase/operational-observability-provider-management/milestones/provider-load-metrics-queue-dashboard.md) Edge provider-pool의 capacity, in-flight, queued와 queue wait를 Prometheus/Grafana로 관측해 provider별 live 부하와 적체·회복을 분석한다. -10. [Pi CLI Provider Integration](phase/automation-runtime-bridge/milestones/pi-cli-provider-integration.md) +11. [Pi CLI Provider Integration](phase/automation-runtime-bridge/milestones/pi-cli-provider-integration.md) Pi를 Node CLI provider 실행 후보에 추가하고 OpenAI-compatible route smoke로 안정화한다. -11. [CLI Agent Group Grade Routing](phase/automation-runtime-bridge/milestones/cli-agent-group-grade-routing.md) - lane/grade 파일명과 `metadata.agent_group.task_file` 기반 CLI agent group 라우팅 계약을 정리한다. - -12. [에이전트 작업 루프 오케스트레이션 MVP](phase/automation-runtime-bridge/milestones/agent-workflow-loop-orchestration-mvp.md) - 일반 사용자 요청을 direct/Plan/Milestone으로 분류하고, 사용자 agent의 tool call로 만든 작업 파일을 IOP가 읽어 다음 실행·리뷰·완료 단계까지 연결한다. - -13. [Provider 사용량 알림과 운영 표면](phase/automation-runtime-bridge/milestones/provider-usage-notification-operations-surface.md) - 공통 runtime의 quota/status/failure event를 소비해 macOS·Desktop·후속 외부 채널에 전달하는 알림과 이력 표면을 스케치한다. - -14. [단계 호출과 검증 최적화 MVP](phase/knowledge-tool-optimization-extension/milestones/knowledge-tool-validation-optimization.md) +12. [단계 호출과 검증 최적화 MVP](phase/knowledge-tool-optimization-extension/milestones/knowledge-tool-validation-optimization.md) planner/generator/verifier 단계 호출과 runtime schema 검증 실행 모드를 스케치한다. -15. [원격 코딩/유지보수 작업 환경](phase/automation-runtime-bridge/milestones/remote-workspace-operations-environment.md) - workspace-bound execution 기반 원격 코딩/유지보수 운영 경계를 스케치한다. - -16. [Personal Local Edge 패키징과 배포 모드 프로파일](phase/personal-edge-packaging-deployment/milestones/personal-local-edge-deployment-profiles.md) +13. [Personal Local Edge 패키징과 배포 모드 프로파일](phase/personal-edge-packaging-deployment/milestones/personal-local-edge-deployment-profiles.md) personal/server/fleet 배포 모드와 capability gate 경계를 스케치한다. -17. [요청 실행 로그와 Usage Ledger 기반](phase/operational-observability-provider-management/milestones/request-execution-log-usage-ledger-foundation.md) +14. [요청 실행 로그와 Usage Ledger 기반](phase/operational-observability-provider-management/milestones/request-execution-log-usage-ledger-foundation.md) 요청별 provider/model 선택, timing, token, status/error를 구조화된 ledger로 남기는 기반을 스케치한다. -18. [Update Plane 안정 프로토콜](phase/update-plane-self-update-foundation/milestones/update-plane-stable-protocol.md) +15. [Update Plane 안정 프로토콜](phase/update-plane-self-update-foundation/milestones/update-plane-stable-protocol.md) hello/status, manifest, command, event, recovery 최소 계약을 스케치한다. -19. [Host-local Manager 기반 자체 업데이트](phase/update-plane-self-update-foundation/milestones/host-local-manager-self-update.md) +16. [Host-local Manager 기반 자체 업데이트](phase/update-plane-self-update-foundation/milestones/host-local-manager-self-update.md) manager/updater의 release staging, 검증, restart, rollback 실행 모델을 정리한다. -20. [Edge/Node 롤아웃과 복구 정책](phase/update-plane-self-update-foundation/milestones/edge-node-rollout-recovery-policy.md) +17. [Edge/Node 롤아웃과 복구 정책](phase/update-plane-self-update-foundation/milestones/edge-node-rollout-recovery-policy.md) Edge/Node rolling update, 실패/재연결/rollback 보고 정책을 스케치한다. -21. [Provider Runtime 설정과 모델 획득 오케스트레이션](phase/operational-observability-provider-management/milestones/provider-runtime-model-acquisition-orchestration.md) +18. [Provider Runtime 설정과 모델 획득 오케스트레이션](phase/operational-observability-provider-management/milestones/provider-runtime-model-acquisition-orchestration.md) provider runtime launch/profile, model download/cache/verification 경계를 스케치한다. -22. [Provider-Device-Model Qualification 리포트와 Lifecycle 관리](phase/operational-observability-provider-management/milestones/provider-device-model-qualification-report.md) +19. [Provider-Device-Model Qualification 리포트와 Lifecycle 관리](phase/operational-observability-provider-management/milestones/provider-device-model-qualification-report.md) provider/device/model별 compatibility, performance, quality, lifecycle 리포트 경계를 정리한다. -23. [Provider 입력 컨텍스트 선택과 축소](phase/knowledge-tool-optimization-extension/milestones/request-context-assembly-optimization.md) +20. [Provider 입력 컨텍스트 선택과 축소](phase/knowledge-tool-optimization-extension/milestones/request-context-assembly-optimization.md) provider dispatch 전에 무관한 과거 요청-답변 단위를 제거하고, 유지한 답변·tool/search 결과 안에서도 필요한 문단·코드 블록·구간만 남기는 입력 context 최적화를 스케치한다. -24. [장기 기억과 RAG 업데이트 사이클 (2차)](phase/knowledge-tool-optimization-extension/milestones/long-term-memory-rag-second-wave.md) +21. [장기 기억과 RAG 업데이트 사이클 (2차)](phase/knowledge-tool-optimization-extension/milestones/long-term-memory-rag-second-wave.md) repo 장기 기억, RAG 저장소, update cycle, MCP 기반 context 절약 후보를 스케치한다. -25. [Advisor와 Context Hook 확장 (2차)](phase/knowledge-tool-optimization-extension/milestones/advisor-context-hook-second-wave.md) +22. [Advisor와 Context Hook 확장 (2차)](phase/knowledge-tool-optimization-extension/milestones/advisor-context-hook-second-wave.md) advisor 역할과 여러 기능을 실행 흐름에 연결하는 Context Hook 경계를 스케치한다. -26. [oto 자동화 스케줄러와 CI-CD 연동 (2차)](phase/automation-runtime-bridge/milestones/oto-automation-scheduler-second-wave.md) +23. [oto 자동화 스케줄러와 CI-CD 연동 (2차)](phase/automation-runtime-bridge/milestones/oto-automation-scheduler-second-wave.md) oto 기반 자동화, scheduler, CI-CD 연동 후보를 스케치한다. -27. [Flutter Desktop Control UI](phase/automation-runtime-bridge/milestones/flutter-desktop-control-ui.md) - `iop-agent` local proto-socket을 소비해 YAML 전체 설정과 project·실행·오류·로그를 관리하는 macOS Flutter 설정·운영 UI를 제공한다. - -28. [Unity 3D Desktop Character](phase/automation-runtime-bridge/milestones/unity-3d-desktop-character.md) - 같은 local proto-socket을 독립적으로 소비하고 작업 상태를 투명 배경 3D 캐릭터와 animation으로 표현하는 macOS Unity client를 제공한다. - -29. [IOP Hot Path One-shot 실행 경로](phase/knowledge-tool-optimization-extension/milestones/iop-hot-path-one-shot-execution.md) - 외부 `model=iop` 요청을 Gemini 3.6 Flash와 RTX 5090 `ornith-fast`의 bounded one-shot 경로로 처리해 최대 속도와 실사용 품질의 균형을 맞춘다. - -30. [Node Provider 실행 Liveness 관측과 안전 복구](phase/operational-observability-provider-management/milestones/node-provider-execution-liveness-recovery.md) +24. [Node Provider 실행 Liveness 관측과 안전 복구](phase/operational-observability-provider-management/milestones/node-provider-execution-liveness-recovery.md) Node가 5분간 provider 진행이 없는 request를 health와 분리 판정하고 local attempt를 fence한 뒤 기존 recovery owner가 안전한 요청만 공통 budget 안에서 재실행한다. diff --git a/agent-roadmap/sdd/automation-runtime-bridge/cli-agent-group-grade-routing/SDD.md b/agent-roadmap/sdd/automation-runtime-bridge/cli-agent-group-grade-routing/SDD.md deleted file mode 100644 index 84f8a2c..0000000 --- a/agent-roadmap/sdd/automation-runtime-bridge/cli-agent-group-grade-routing/SDD.md +++ /dev/null @@ -1,160 +0,0 @@ -# SDD: CLI Agent Group Grade Routing - -## 위치 - -- Milestone: [cli-agent-group-grade-routing](../../../phase/automation-runtime-bridge/milestones/cli-agent-group-grade-routing.md) -- Phase: [PHASE.md](../../../phase/automation-runtime-bridge/PHASE.md) - -## 상태 - -[승인됨] - -## SDD 잠금 - -- 상태: 해제 -- 사용자 리뷰: 없음 -- 잠금 항목: - - 없음 - -## 문제 / 비목표 - -- 문제: plan/code-review/doc 같은 파일 기반 agent-task는 이미 `PLAN-{lane}-GNN.md`, `CODE_REVIEW-{lane}-GNN.md` naming contract로 lane과 grade를 표현하지만, runtime이 이 정보를 CLI provider agent, 목적별 agent group, local/cloud capability, resource/quota 상태에 연결하는 계약이 없다. 이 SDD는 예약어 설정, agent group assignment, OpenAI-compatible metadata 입력, route log, validation 경계를 고정한다. -- 비목표: - - 선택 이후의 retry/failover, context transfer, failure budget과 중복 실행 방지 상태 머신은 이 Milestone에서 구현하지 않는다. selector는 provider/agent 하나와 route evidence만 반환하며 공통 AgentTaskManager runtime이 known failure 정책을 적용하고 unknown 오류를 표면화한다. - - benchmark runner 자체를 구현하지 않는다. 자동 설정은 benchmark profile, prompt, LLM 산출 schema, validation 경계까지만 다룬다. - - 원격 터미널/CLI 터널링, oto scheduler/CI-CD, RAG/tool policy routing은 다루지 않는다. - - 파일 내용을 OpenAI-compatible prompt 본문에 inline으로 넣는 입력 방식은 채택하지 않는다. - -## Source of Truth - -| 영역 | 기준 | 메모 | -|------|------|------| -| Roadmap | [cli-agent-group-grade-routing](../../../phase/automation-runtime-bridge/milestones/cli-agent-group-grade-routing.md) | 목표, 기능 Task, 잠금 항목, 범위 제외 기준 | -| Contract | [openai-compatible-api.md](../../../../agent-contract/outer/openai-compatible-api.md) | OpenAI-compatible `metadata.agent_group.task_file`와 `metadata.agent_group.params` 계약을 추가할 원문 | -| Code | `packages/go/config`, `apps/edge/internal/openai`, `apps/edge/internal/service`, `apps/node/internal/adapters/cli`, `configs` | config schema, OpenAI metadata parsing, routing decision, CLI adapter execution 연결 기준 | -| External Provider | CLI provider agent catalog | opencode/codex/claude/gemini 등 provider-specific 실행 대상은 cli provider agent id로 참조한다 | -| User Decision | [user_review_0.log](user_review_0.log) | 단일 선택은 group router가, known failure retry/failover는 공통 runtime이 소유하고 unknown 오류는 terminal error로 표면화한다 | - -## State Machine - -| 상태 | 진입 조건 | 다음 상태 | 근거 | -|------|-----------|-----------|------| -| `prefix-configured` | 예약어 config가 `prefix`, `default_agent`, `prompt_template`, `file_payload_policy=path`를 가진다 | `request-received` | Edge config 또는 config refresh 결과 | -| `group-configured` | agent group이 `purpose`, `assignment_mode`, agent id set, lane별 coverage 또는 auto assignment profile을 가진다 | `request-received` | Edge config 또는 config refresh 결과 | -| `auto-assignment-needed` | 신규 auto group이 저장되었거나 기존 group이 수정되고 agent id contain set이 이전 저장값과 다르며 `assignment_mode=auto`다 | `auto-assignment-validated` 또는 `routing-config-error` | group edit/save event의 이전/현재 agent id set 비교 | -| `auto-assignment-validated` | auto assignment evaluator가 benchmark profile, benchmark sorting prompt, agent catalog를 입력으로 만든 assignment 결과가 output schema, lane coverage, local/cloud capability validator를 통과한다 | `group-configured` | auto assignment output schema | -| `request-received` | OpenAI-compatible 또는 native run request가 `metadata.agent_group.task_file` 또는 동등한 native field를 가진다 | `filename-parsed` 또는 `routing-input-error` | request metadata | -| `filename-parsed` | task file basename에서 등록 prefix, `local|cloud`, `G01`~`G10`을 파싱했다. prefix는 마지막 `-{lane}-GNN.md` suffix 왼쪽 전체다 | `direct-agent-selected` 또는 `group-routing` | filename contract | -| `direct-agent-selected` | 예약어 `default_agent`가 cli provider agent id이고 lane/grade capability가 맞다 | `execution-dispatched` | route prefix config | -| `group-routing` | 예약어 `default_agent=auto`이고 참조 agent group이 존재한다 | `candidate-selected` 또는 `routing-config-error` | route prefix config와 group assignment | -| `candidate-selected` | lane/grade 후보 중 route score가 가장 높은 agent를 골랐다 | `execution-dispatched` | resource/quota snapshot, coverage table | -| `execution-dispatched` | prompt template과 task file path를 CLI adapter/provider에 전달했다 | `execution-complete` 또는 `execution-failed` | RunRequest/execution id | -| `execution-failed` | 선택 이후 provider 실행이 known 또는 unknown failure로 종료됐다 | `runtime-policy-handoff` 또는 terminal error | known failure는 공통 runtime 정책 입력으로 넘기고 unknown은 표면화한다 | -| `runtime-policy-handoff` | known failure class와 route evidence가 공통 runtime에 전달됐다 | 이 Milestone의 terminal handoff | retry/failover 상태 전이는 공통 AgentTaskManager SDD가 소유한다 | -| `routing-input-error` | task file, filename, prefix, lane/grade가 유효하지 않다 | terminal error | OpenAI-compatible error 또는 native error | -| `routing-config-error` | group coverage gap, capability mismatch, missing default agent/group이 있다 | terminal error | config validation 또는 route validation | - -## Interface Contract - -- 계약 원문: [openai-compatible-api.md](../../../../agent-contract/outer/openai-compatible-api.md) -- 입력: - - `metadata.agent_group.task_file`: agent group routing에 사용할 task file 경로다. 절대 경로와 상대 경로를 모두 허용한다. OpenAI-compatible CLI route에서 상대 경로는 `metadata.workspace` 기준으로 해석하고, 상대 경로인데 `metadata.workspace`가 없으면 실패한다. - - `metadata.agent_group.params`: 예약어 `user_params_schema`로 검증한 사용자 parameter 객체다. 예약어 prompt renderer가 CLI별 prompt 또는 argument로 변환할 수 있다. - - `route_prefixes[].prefix`: 사용자 추가 가능한 예약어다. task file basename에서 마지막 `-{lane}-GNN.md` suffix를 제거한 왼쪽 전체 값과 일치해야 한다. - - `route_prefixes[].default_agent`: `auto` 또는 cli provider agent id다. `auto`면 `agent_group`을 사용하고, 특정 id면 agent group routing 없이 그 agent를 직접 선택한다. - - `route_prefixes[].agent_group`: `default_agent=auto`일 때만 노출/필수인 목적별 agent group id다. `default_agent`가 특정 cli provider agent id이면 필수가 아니며 direct mode routing에 사용하지 않는다. - - `route_prefixes[].prompt_template`: agent에게 전달할 최초 prompt template이다. 구현자/리뷰어/문서 작성자 같은 역할 지시를 여기에 둔다. - - `route_prefixes[].user_params_schema`: `metadata.agent_group.params` 검증 schema다. - - `route_prefixes[].file_payload_policy`: 이번 Milestone에서는 `path`만 표준선이다. 파일 내용 inline 전달은 금지한다. - - `cli_provider_agents[].id`: 예약어 direct default agent와 agent group `agents[]`가 참조하는 실행 agent id다. - - `cli_provider_agents[].adapter` / `target`: 내부 실행 기준인 `adapter + target`을 가리킨다. - - `cli_provider_agents[].native_lane`: `local` 또는 `cloud`다. - - `cli_provider_agents[].serves_lanes`: agent가 처리 가능한 lane 목록이다. cloud-capable agent는 `local`과 `cloud`를 모두 가질 수 있지만 local-only agent는 `cloud`를 가질 수 없다. - - `agent_groups[].purpose`: `coding`, `docs` 같은 목적이다. 기본 agent group은 `coding`이며, `docs`는 문서/테스트용 추가 기본 후보로 둔다. 이 값은 자동 assignment의 benchmark profile 선택 기준이다. - - `agent_groups[].assignment_mode`: `manual` 또는 `auto`다. - - `agent_groups[].agents`: agent id 목록이다. 신규 auto group은 최초 자동 설정 대상이며, 기존 group의 변경 감지는 contain set 기준이다. 순서 변경만으로는 자동 assignment 재계산을 트리거하지 않는다. group 저장 시점의 이전/현재 agent id set 비교로 충분하며 hash/cache 기반 변경 감지는 요구하지 않는다. - - `agent_groups[].benchmark_profile`: 자동 assignment에 사용할 benchmark category와 weight를 가리킨다. - - `agent_groups[].auto_assignment_evaluator`: benchmark sorting prompt를 실행해 agent 순위와 lane별 grade range 초안을 반환할 LLM/evaluator target이다. group에 값이 없으면 system default evaluator를 사용할 수 있지만, 실행 전 어떤 evaluator를 썼는지 route/config log에 남겨야 한다. - - `agent_groups[].benchmark_sorting_prompt`: 자동 assignment 때 agent 순위와 grade range 산출을 요청할 사용자 설정 prompt template이다. - - `agent_groups[].auto_assignment_output_schema`: 자동 assignment 결과가 따라야 할 schema다. 최소한 lane별 range, agent id, `G01`~`G10` coverage, overlap 반영 여부, capability validation 근거를 표현해야 한다. - - `agent_groups[].grade_overlap`: grade range overlap 폭이다. 예를 들어 `2`이면 각 grade의 상위/하위 2개 grade까지 인접 후보가 겹쳐 처리 가능하도록 assignment를 산출하거나 검증한다. - - `agent_groups[].manual_ranges` / `auto_ranges`: lane별 `G01`~`G10` coverage를 표현한다. local lane과 cloud lane assignment table은 분리하며, cloud-capable agent는 local lane coverage에 포함될 수 있지만 local-only agent는 cloud lane coverage에 포함될 수 없다. -- 출력: - - route decision: request/execution id, task file, parsed prefix/lane/grade, route prefix config id, group id 또는 direct default agent id, 후보 agent, 탈락 사유, 선택 agent, route score 입력 metric snapshot. - - routing error: invalid task file, invalid filename, unknown prefix, missing group/default agent, lane/grade coverage gap, capability mismatch, malformed auto assignment result. - - execution dispatch: 선택된 cli provider agent id와 해당 adapter/target에 전달한 path-only task file prompt. -- 금지: - - `metadata.agent_route_prefix` 같은 중복 field를 만들지 않는다. prefix/lane/grade는 task file basename에서만 얻는다. - - `metadata.cli` wrapper를 만들지 않는다. - - task file 경로나 workspace를 prompt 본문에만 섞어 routing source로 사용하지 않는다. - - agent group routing이 걸린 요청에서 filename 형식 오류를 best-effort로 추정하지 않는다. - - agent id 목록의 순서만 바뀐 경우 자동 assignment를 재계산하지 않는다. - - group router가 provider/agent 둘 이상을 반환하거나 선택 이후 retry/failover 상태 머신을 소유하지 않는다. - -## Acceptance Scenarios - -| ID | Milestone Task | Given | When | Then | -|----|----------------|-------|------|------| -| S01 | `provider-agent` | local-only agent와 cloud-capable agent가 cli provider agent catalog에 있다 | config validation을 실행한다 | local-only agent는 cloud lane 후보가 될 수 없고, cloud-capable agent는 local lane 후보가 될 수 있다 | -| S02 | `group-schema` | manual coding group이 lane별 grade range를 가진다 | 한 lane의 `G01`~`G10` coverage 중 일부가 비어 있다 | config validation이 coverage gap을 routing-config-error로 보고한다 | -| S03 | `group-schema` | 신규 auto group이 저장되거나 기존 auto group의 `agents[]`가 같은 id set을 다른 순서로 저장된다 | group 저장을 처리한다 | 신규 auto group은 최초 assignment 대상으로 처리되고, 기존 group은 contain set이 같으면 auto assignment 재계산을 트리거하지 않는다 | -| S04 | `prefix-schema` | `PLAN` 예약어가 `default_agent=auto`로 설정되어 있다 | `agent_group` 없이 저장하거나 존재하지 않는 group을 참조한다 | config validation이 실패한다 | -| S05 | `metadata-contract` | OpenAI-compatible request가 absolute `metadata.agent_group.task_file=/repo/agent-task/x/PLAN-local-G08.md` 또는 `metadata.workspace=/repo`와 relative `metadata.agent_group.task_file=agent-task/x/PLAN-local-G08.md`를 가진다 | request metadata를 파싱한다 | 두 입력 모두 `/repo/agent-task/x/PLAN-local-G08.md`로 해석되고, prefix/lane/grade는 basename에서만 파싱된다 | -| S06 | `filename-parse` | agent group routing 요청이 `PLAN-local-G08.md`, `CODE_REVIEW-cloud-G07.md`, `DOC-local-G04.md`를 가리킨다 | filename parser가 실행된다 | 마지막 `-{lane}-GNN.md` suffix 왼쪽 전체가 prefix로 해석되고, 등록 prefix, lane, grade가 정확히 추출된다 | -| S07 | `filename-parse` | 요청 task file basename이 `PLAN-G08.md`, `PLAN-cloud-8.md`, `PLAN-local-G11.md`, `UNKNOWN-local-G02.md` 중 하나다 | filename parser가 실행된다 | 추정 없이 routing-input-error를 반환한다 | -| S08 | `default-agent` | `DOC` 예약어가 특정 cli provider agent id를 `default_agent`로 가진다 | `DOC-cloud-G08.md` 요청이 local-only direct agent로 들어온다 | agent group routing으로 우회하지 않고 capability mismatch error를 반환한다 | -| S09 | `manual-routing` | 같은 local grade를 처리할 수 있는 agent가 둘 이상이고 resource/quota metric이 다르다 | route score를 계산한다 | local resource 여유 또는 cloud subscription/quota 잔여량이 더 좋은 후보가 선택된다 | -| S10 | `auto-routing` | coding group과 docs group이 각각 `assignment_mode=auto`이며 auto assignment evaluator, benchmark sorting prompt, output schema를 가진다 | 자동 assignment prompt를 실행하고 schema를 검증한다 | coding group은 coding benchmark profile, docs group은 documentation benchmark profile을 사용하며 evaluator 응답이 output schema, lane coverage, capability 규칙을 통과한 경우에만 저장된다 | -| S11 | `route-log` | routing 성공 또는 routing error가 발생한다 | request/execution이 종료된다 | route log에서 같은 request id로 입력, 후보, 선택/실패 사유, resource/quota snapshot을 추적할 수 있다 | -| S12 | `contract-docs` | 구현이 `metadata.agent_group.task_file`을 지원한다 | 계약 문서와 README/config examples를 확인한다 | task file, params, filename contract, path-only payload policy가 문서화되어 있다 | -| S13 | `config-examples` | 기본 `coding` group, 문서/테스트용 `docs` group, `PLAN`, `CODE_REVIEW`, `DOC` 예약어를 설정하려는 운영자가 있다 | config sample을 확인한다 | manual assignment, auto assignment, direct default agent, `default_agent=auto` group routing 예시가 재현 가능하게 제공된다 | -| S14 | `routing-tests` | config validation, filename parsing, routing scorer, auto assignment result validation이 구현되어 있다 | targeted test suite를 실행한다 | S01~S13, S15~S17의 핵심 routing 계약이 자동 테스트로 검증된다 | -| S15 | `group-schema` | agent group의 `grade_overlap`이 `2`로 설정되어 있다 | manual/auto assignment 결과를 검증한다 | 각 grade의 상위/하위 2개 grade까지 인접 후보 overlap이 range에 반영되며 lane별 coverage가 유지된다 | -| S16 | `metadata-contract` | OpenAI-compatible request가 relative `metadata.agent_group.task_file`을 갖지만 `metadata.workspace`가 없다 | request metadata를 파싱한다 | 상대 task file을 해석하지 않고 routing-input-error를 반환한다 | -| S17 | `prefix-schema` | 예약어가 `default_agent=` direct mode로 설정되어 있다 | ``가 cli provider agent catalog에 없는 상태로 config validation을 실행한다 | `agent_group`으로 우회하지 않고 missing direct default agent error를 반환한다 | - -## Evidence Map - -| Scenario | Required Evidence | `agent-task` 연결 | 완료 Evidence 기대 | -|----------|-------------------|------------------|---------------------------| -| S01 | config validation unit test | `agent-task/m-cli-agent-group-grade-routing/...` | `provider-agent` Roadmap Completion과 local/cloud capability test output | -| S02 | lane coverage validation test | `agent-task/m-cli-agent-group-grade-routing/...` | `group-schema` Roadmap Completion과 coverage gap test output | -| S03 | contain-set change detection test | `agent-task/m-cli-agent-group-grade-routing/...` | `group-schema` Roadmap Completion과 reorder-no-recompute test output | -| S04 | route prefix validation test | `agent-task/m-cli-agent-group-grade-routing/...` | `prefix-schema` Roadmap Completion과 missing group/default agent test output | -| S05 | OpenAI metadata parser test for absolute and relative task file paths | `agent-task/m-cli-agent-group-grade-routing/...` | `metadata-contract` Roadmap Completion과 parser test output | -| S06 | filename parser positive table test | `agent-task/m-cli-agent-group-grade-routing/...` | `filename-parse` Roadmap Completion과 positive filename test output | -| S07 | filename parser negative table test | `agent-task/m-cli-agent-group-grade-routing/...` | `filename-parse` Roadmap Completion과 routing-input-error test output | -| S08 | direct default agent capability mismatch test | `agent-task/m-cli-agent-group-grade-routing/...` | `default-agent` Roadmap Completion과 direct-agent error test output | -| S09 | manual routing scorer test with resource/quota metric fixtures | `agent-task/m-cli-agent-group-grade-routing/...` | `manual-routing` Roadmap Completion과 selected candidate evidence | -| S10 | auto assignment prompt/schema validation test or golden fixture | `agent-task/m-cli-agent-group-grade-routing/...` | `auto-routing` Roadmap Completion과 benchmark profile selection evidence | -| S11 | route log unit/integration test | `agent-task/m-cli-agent-group-grade-routing/...` | `route-log` Roadmap Completion과 request id trace evidence | -| S12 | docs/contract diff plus doc link validation | `agent-task/m-cli-agent-group-grade-routing/...` | `contract-docs` Roadmap Completion과 OpenAI-compatible/README documentation evidence | -| S13 | config sample diff plus validation output | `agent-task/m-cli-agent-group-grade-routing/...` | `config-examples` Roadmap Completion과 example validation evidence | -| S14 | targeted routing/config test suite output | `agent-task/m-cli-agent-group-grade-routing/...` | `routing-tests` Roadmap Completion과 final verification output | -| S15 | grade overlap validation test | `agent-task/m-cli-agent-group-grade-routing/...` | `group-schema` Roadmap Completion과 overlap width test output | -| S16 | OpenAI metadata parser negative test for relative path without workspace | `agent-task/m-cli-agent-group-grade-routing/...` | `metadata-contract` Roadmap Completion과 missing workspace error evidence | -| S17 | direct default agent missing validation test | `agent-task/m-cli-agent-group-grade-routing/...` | `prefix-schema` Roadmap Completion과 missing direct agent evidence | - -## Cross-repo Dependencies - -- 없음 - -## Drift Check - -- [x] Milestone 기능 Task와 Acceptance Scenario가 일치한다. -- [x] Evidence Map이 code-review/complete.log에서 검증 가능하다. -- [x] agent-contract를 쓰는 경우 SDD에 계약 원문을 복제하지 않았다. -- [x] 해결된 사용자 리뷰는 [user_review_0.log](user_review_0.log)에 보존하고 활성 `USER_REVIEW.md`를 남기지 않았다. - -## 사용자 리뷰 이력 - -- [user_review_0.log](user_review_0.log): D01 단일 선택과 후속 failure 정책 책임 경계 해결 - -## 작업 컨텍스트 - -- 표준선: 내부 실행은 `adapter + target` 기준을 유지한다. OpenAI-compatible agent group routing 문맥은 `metadata.agent_group` 아래에 둔다. task file 경로는 path-only payload로 전달하고 prefix/lane/grade는 basename에서만 파싱한다. agent group의 agent list 변경 감지는 순서가 아니라 contain set 기준이다. -- 표준선: 같은 provider credential/profile의 cloud quota는 project별로 분할하지 않는 app-global 공유 snapshot이며 route score와 route log는 같은 snapshot identity를 참조한다. -- agent-ops 결합 기준: `plan`/`code-review` 스킬은 `PLAN-*`/`CODE_REVIEW-*` 파일과 각 루프의 lifecycle을 소유하고, CLI provider agent 선택은 Edge/runtime routing 책임으로 둔다. 스킬이 provider/agent를 직접 고르거나 다른 스킬 그룹 절차를 자동 호출하지 않는다. -- `metadata.agent_group`은 OpenAI-compatible 요청의 라우팅 metadata 컨테이너다. 실제 목적별 agent group assignment는 예약어 `default_agent=auto`일 때만 사용하며, direct `default_agent=` 요청은 같은 task file path와 filename validation을 사용하되 group 후보 산출로 넘어가지 않는다. -- `DOC-*` 같은 추가 prefix는 이 Milestone에서는 route prefix 계약으로만 다룬다. 별도 문서 작성 skill lifecycle이 필요하면 후속 Milestone/SDD에서 추가하고, 이번 라우팅 계약은 prefix config와 runtime dispatch 경계만 고정한다. -- 후속 Milestone이었던 [IOP Agent CLI Runtime](../../../archive/phase/automation-runtime-bridge/milestones/iop-agent-cli-runtime.md)은 known failure retry/failover, context transfer와 중복 실행 방지를 소유해 완료됐다. Flutter lifecycle은 후속 Desktop Milestone으로 분리하며 [Provider 사용량 알림과 운영 표면](../../../phase/automation-runtime-bridge/milestones/provider-usage-notification-operations-surface.md)은 runtime event 소비자로 다룬다. diff --git a/agent-roadmap/sdd/automation-runtime-bridge/cli-agent-group-grade-routing/user_review_0.log b/agent-roadmap/sdd/automation-runtime-bridge/cli-agent-group-grade-routing/user_review_0.log deleted file mode 100644 index bfeef06..0000000 --- a/agent-roadmap/sdd/automation-runtime-bridge/cli-agent-group-grade-routing/user_review_0.log +++ /dev/null @@ -1,41 +0,0 @@ -# SDD User Review - -## 상태 - -해결됨 - -## 검토 대상 - -- SDD: [SDD.md](SDD.md) -- Milestone: [cli-agent-group-grade-routing](../../../phase/automation-runtime-bridge/milestones/cli-agent-group-grade-routing.md) - -## 사용자 결정 항목 - -### [D01] 선택된 agent 실패 후 후속 정책 - -- 결정 필요: 선택된 agent 실행 실패, provider quota 소진, 실행 중단, 중복 실행 위험이 발생했을 때 자동 재라우팅·재시도·중단의 책임과 기본 동작을 결정한다. -- 반영 결정: - - agent group selector는 ordered rule과 route score를 평가해 provider/agent 하나만 반환한다. - - group routing은 선택 이후의 retry/failover 상태 머신을 소유하거나 두 번째 provider를 반환하지 않는다. - - 현재 Python에서 검증된 known failure 분류와 [Agent Task 동적 실행 Target Selector](../../../archive/phase/automation-runtime-bridge/milestones/agent-task-runtime-target-selector.md)의 route pin, failure budget, failover 정책을 공통 AgentTaskManager runtime이 소유한다. - - provider quota/context/model/stream 등 명시적으로 분류된 오류만 선언 정책에 따라 retry/failover하고, unknown 오류는 추정 복구하지 않고 사용자 표면과 project log에 그대로 오류로 남긴다. - - 자동 실행과 provider별 approval bypass는 기본 on이며, 사용자는 언제든 project 실행을 중단할 수 있다. -- 영향: group routing Milestone은 결정적 단일 선택과 route log까지만 구현한다. 실행 이후의 중복 방지, retry/failover, context transfer와 중단 전파는 [공통 Agent Task Runtime과 Desktop Agent](../../../archive/phase/automation-runtime-bridge/milestones/shared-agent-task-runtime-desktop-agent.md)에서 [IOP Agent CLI Runtime](../../../archive/phase/automation-runtime-bridge/milestones/iop-agent-cli-runtime.md)으로 이관됐다. -- 적용 위치: - - SDD: `SDD 잠금`, `State Machine`, `Interface Contract`, `문제 / 비목표` - - Milestone: `구현 잠금`, `범위 제외`, `작업 컨텍스트` - -## 승인 항목 - -- [x] D01 결정이 사용자 확정사항과 일치한다. -- [x] SDD 잠금 해제를 승인했다. - -## 답변 기록 - -- 2026-07-26: selector는 하나의 provider만 반환하고, 알려진 오류는 현재 Python/selector 정책을 공통 runtime이 흡수하며, unknown 오류는 표면화하고 중단하는 것으로 확정했다. - -## 해결 조건 - -- [x] D01 답변이 SDD와 Milestone에 반영되어 있다. -- [x] `USER_REVIEW.md`가 `user_review_0.log`로 이동되어 있다. -- [x] SDD 상태가 `[승인됨]`이고 `SDD 잠금` 상태가 `해제`다. diff --git a/agent-roadmap/sdd/automation-runtime-bridge/iop-agent-chronos-extraction-decoupling/SDD.md b/agent-roadmap/sdd/automation-runtime-bridge/iop-agent-chronos-extraction-decoupling/SDD.md new file mode 100644 index 0000000..cfbe204 --- /dev/null +++ b/agent-roadmap/sdd/automation-runtime-bridge/iop-agent-chronos-extraction-decoupling/SDD.md @@ -0,0 +1,106 @@ +# SDD: IOP Agent Runtime의 Chronos 선별 이전과 IOP 의존성 제거 + +## 위치 + +- Milestone: [Milestone 문서](../../../phase/automation-runtime-bridge/milestones/iop-agent-chronos-extraction-decoupling.md) +- Phase: [PHASE.md](../../../phase/automation-runtime-bridge/PHASE.md) + +## 상태 + +[초안] + +## SDD 잠금 + +- 상태: 잠금 +- 사용자 리뷰: [USER_REVIEW.md](USER_REVIEW.md) +- 잠금 항목: + - [ ] [D01] 기존 config/state versioned export 범위 + +## 문제 / 비목표 + +- 문제: 완료된 `iop-agent`에는 Chronos로 넘길 standalone workflow/state 책임과 IOP가 계속 사용할 finite provider 책임이 한 repository 안에 공존한다. Chronos 작업을 시작하기 전에 IOP가 필요한 자산을 선별 전달하고 source/runtime 의존성을 제거해야 한다. +- 비목표: + - Chronos 후속 제품 아키텍처와 local control v1 설계 + - Chronos state root로의 실제 import·활성화와 이후 state write + - IOP managed `agent_bridge` 또는 원격 제어 구현 + - 새로운 workflow scope와 desktop client 기능 구현 + +## Source of Truth + +| 영역 | 기준 | 메모 | +|------|------|------| +| Roadmap | [Milestone 문서](../../../phase/automation-runtime-bridge/milestones/iop-agent-chronos-extraction-decoupling.md) | 선별 이전·제거 범위와 완료 상태의 원본 | +| Code | IOP `apps/agent`, `packages/go/agent*`, `proto/iop/agent.proto`와 Chronos transfer target | 작업 시작 시 source revision과 disposition manifest를 고정한다 | +| External Provider | 없음 | Chronos repository는 provider가 아니라 [Cross-repo Dependencies](#cross-repo-dependencies)의 잠긴 전달 대상이다 | +| User Decision | D01 | 기존 project/config/state의 versioned export 범위 | + +## State Machine + +| 상태 | 진입 조건 | 다음 상태 | 근거 | +|------|-----------|-----------|------| +| inventoried | source revision과 disposition manifest가 고정됨 | transfer-ready | ownership manifest review | +| transfer-ready | D01 export 정책과 destination layout이 확정됨 | transferred | 독립 build 가능한 staging baseline, state export와 transfer receipt 초안 | +| transferred | 전달 목록·fixture 검증이 통과함 | decoupled | IOP removal diff와 no-import 검증 | +| transfer-ready 또는 transferred | ambiguous live state, 누락된 target 또는 회귀가 발견됨 | blocked | actionable blocker와 보존된 source revision | +| decoupled | IOP 잔류 provider 회귀와 양쪽 최종 검증이 통과함 | handoff-ready | 확정 transfer receipt와 workspace lock 동기화 근거 | + +## Interface Contract + +- 계약 원문: [IOP Agent CLI Runtime 계약](../../../../agent-contract/inner/iop-agent-cli-runtime.md) +- 입력: + - `source_revision`: 선별 이전의 기준이 되는 현재 IOP commit + - `disposition_manifest`: 각 활성 code/config/proto/build/test/doc의 `transfer | retain | remove | reference` 분류 + - `legacy_state_export_policy`: D01에서 확정한 기존 project/config/state export 또는 clean-start 방식 +- 출력: + - `chronos_staging_baseline`: IOP application/runtime import 없이 독립 build 가능한 선별 전달 source와 통과한 behavior fixture + - `legacy_state_export`: version·source revision·integrity metadata를 가진 import 입력 또는 clean-start marker와 ambiguous-state blocker manifest + - `iop_decoupling`: standalone surface 제거 diff와 잔류 Node/provider 경계 + - `transfer_receipt`: revision, 항목별 결과, state export 결과, 회귀 evidence, rollback 지점과 downstream lock identity +- 금지: + - Chronos Milestone 구현을 `handoff-ready` 전에 시작하지 않는다. + - Chronos가 IOP application 또는 runtime package를 장기 dependency로 import하지 않는다. + - destination baseline과 fixture 수용을 확인하기 전에 IOP source를 제거하지 않는다. + - IOP Node의 finite model/API/CLI provider 실행을 standalone 제거 대상으로 분류하지 않는다. + - IOP Milestone에서 Chronos state root로 import하거나 Chronos runtime을 활성화하지 않는다. + - ambiguous live execution을 export 가능한 state로 포장하거나 성공한 이전으로 기록하지 않는다. + +## Acceptance Scenarios + +| ID | Milestone Task | Given | When | Then | +|----|----------------|-------|------|------| +| S01 | `inventory` | 현재 IOP source와 계약이 있음 | disposition manifest를 작성함 | 모든 활성 자산이 단일 owner/action에 배정되고 중복 source of truth가 없다 | +| S02 | `transfer` | 승인된 manifest·export 정책과 Chronos scaffold가 있음 | 선별 자산과 legacy-state 입력을 전달함 | staging baseline이 IOP runtime import 없이 독립 build되고 behavior fixture가 통과하며 export provenance가 남는다 | +| S03 | `decouple` | 전달 baseline 검증이 통과함 | IOP standalone surface를 제거함 | 제거 대상 참조와 standalone 실행 surface가 IOP에 남지 않는다 | +| S04 | `retain-node` | IOP 잔류 provider 경계가 정의됨 | build·contract·focused regression을 실행함 | finite provider와 Node/Edge 실행 기준선이 유지된다 | +| S05 | `handoff-gate` | 이전·제거와 state export 또는 clean-start 결과가 존재함 | final receipt를 감사함 | 모든 항목·evidence·rollback과 Chronos lock 해제 조건을 추적할 수 있다 | + +## Evidence Map + +| Scenario | Required Evidence | `agent-task` 연결 | 완료 Evidence 기대 | +|----------|-------------------|------------------|---------------------------| +| S01 | source revision, import graph와 disposition audit | `agent-task/m-iop-agent-chronos-extraction-decoupling/...` | 미분류·중복 owner가 없는 manifest | +| S02 | Chronos 독립 build, existing behavior test, forbidden-import scan과 versioned export fixture | `agent-task/m-iop-agent-chronos-extraction-decoupling/...` | staging baseline PASS와 항목별 receipt | +| S03 | removed-path/reference audit와 IOP clean build | `agent-task/m-iop-agent-chronos-extraction-decoupling/...` | standalone surface 부재 evidence | +| S04 | IOP Node/provider focused test와 contract regression | `agent-task/m-iop-agent-chronos-extraction-decoupling/...` | 잔류 provider 기준선 PASS | +| S05 | state export fixture 또는 clean-start marker, final cross-repo matrix와 lock check | `agent-task/m-iop-agent-chronos-extraction-decoupling/...` | Roadmap Completion에서 인용 가능한 transfer receipt | + +## Cross-repo Dependencies + +- downstream Milestone: `chronos:agent-roadmap/phase/runtime-ownership-transition/milestones/chronos-architecture-ownership-boundary.md` +- `.agent-roadmap-sync/locks.yaml` entry: `chronos:chronos-architecture-ownership-boundary` + +## Drift Check + +- [ ] Milestone 기능 Task와 Acceptance Scenario가 일치한다. +- [ ] Evidence Map이 IOP 완료 검토와 Chronos lock 해제 근거로 검증 가능하다. +- [ ] [IOP Agent CLI Runtime 계약](../../../../agent-contract/inner/iop-agent-cli-runtime.md)을 복제하지 않고 이전 입력으로 참조했다. +- [ ] 사용자 리뷰가 필요한 legacy-state export 정책은 [USER_REVIEW.md](USER_REVIEW.md)에만 남겼다. + +## 사용자 리뷰 이력 + +- 없음 + +## 작업 컨텍스트 + +- 표준선: ownership manifest 기반의 parity-before-delete, no cross-repo application import, fail-closed state export와 repository-local execution ownership을 적용한다. 실제 Chronos state import는 후속 Chronos SDD가 소유한다. +- 후속 SDD: [Chronos Architecture SDD](../../../../../chronos/agent-roadmap/sdd/runtime-ownership-transition/chronos-architecture-ownership-boundary/SDD.md) diff --git a/agent-roadmap/sdd/automation-runtime-bridge/iop-agent-chronos-extraction-decoupling/USER_REVIEW.md b/agent-roadmap/sdd/automation-runtime-bridge/iop-agent-chronos-extraction-decoupling/USER_REVIEW.md new file mode 100644 index 0000000..1dab9da --- /dev/null +++ b/agent-roadmap/sdd/automation-runtime-bridge/iop-agent-chronos-extraction-decoupling/USER_REVIEW.md @@ -0,0 +1,37 @@ +# SDD User Review + +## 상태 + +요청됨 + +## 검토 대상 + +- SDD: [SDD.md](SDD.md) +- Milestone: [Milestone 문서](../../../phase/automation-runtime-bridge/milestones/iop-agent-chronos-extraction-decoupling.md) + +## 사용자 결정 항목 + +### [D01] 기존 config/state versioned export 범위 + +- 결정 필요: 기존 `iop-agent`의 유효한 project registration, user-local config와 durable state 중 무엇을 versioned export로 전달해 잠금 해제 뒤 Chronos가 import할 수 있게 할지 결정한다. +- 추천안: 유효한 project registration·user-local config·중단된 durable state는 source revision·schema version·integrity metadata와 함께 read-only export로 전달하고, 실행 중이거나 identity가 모호한 state는 export하지 않고 blocker manifest에만 남긴다. 실제 import와 활성화는 Chronos 수용 Milestone에서 수행한다. +- 대안: 기존 state export 없이 clean registration만 지원한다. +- 영향: IOP transfer bundle과 fixture 범위, Chronos 수용 단계의 import 범위, 사용자 연속성과 crash recovery 위험을 결정한다. +- 적용 위치: + - SDD: `State Machine`, `Interface Contract`, `Acceptance Scenarios S02/S05` + - Milestone: `transfer`, `handoff-gate`, `구현 잠금` + +## 승인 항목 + +- [ ] 위 결정 항목을 승인했다. +- [ ] SDD 잠금 해제를 승인했다. + +## 답변 기록 + +- 없음 + +## 해결 조건 + +- 모든 사용자 결정 항목의 답변이 SDD에 반영되어 있다. +- `USER_REVIEW.md`가 `user_review_N.log`로 이동되어 있다. +- 남은 잠금 항목이 없으면 SDD 상태가 `[승인됨]`이고 `SDD 잠금` 상태가 `해제`다.