# Milestone: [separation-01] IOP Agent Runtime의 Chronos 전체 이전과 IOP 의존성 제거

## 위치

- Roadmap: [ROADMAP.md](../../../../ROADMAP.md)
- Phase: [PHASE.md](../../../../phase/automation-runtime-bridge/PHASE.md)

## 목표

완료된 `iop-agent`의 source·contract·test·config·state·build·document 자산을 repository-neutral Chronos acceptance bundle로 전부 전달하고, IOP에서는 `iop-agent`와 Chronos 작업 흐름에 관련된 host·client lifecycle·workspace·CLI agent session·terminal·상태·검토·반영 로직과 의존성을 제거한다. IOP Node에는 model/provider/device 운영에 필요한 실행·취소·상태·usage·lifecycle 경계만 남기고 Chronos를 위한 연결점을 두지 않는다. 이 Milestone의 전달·제거·회귀 evidence가 완료되어야 Chronos Roadmap의 잠금을 해제하고 Chronos가 bundle의 실제 repository import, 외부 접근 가능한 Server, 독립 Chronos Node와 loop/agent/terminal 책임을 설계할 수 있다.

## 상태

[완료]

## 승격 조건

- [x] Task 03이 기준 source revision `3155be0e275437a8eedc1aa93497955a7d30465b`, original manifest 303행(`file=293`, `state=10`)과 `universe·duplicate=0`을 historical inventory evidence로 남겼고, Task 16 재계획이 corrected pinned-transfer manifest 300행(`file=290`, `state=10`, `retain-generic=135`)과 SHA `d8598134dee99d96fc05a045091dd3d8932d4708d2c980c2a78c8b11825d2ccf`를 current baseline으로 고정했다. historical Task-03 303행 결과는 Task-03 evidence로만 보존하고, `user_review_0.log`는 separate evidence로 분류하며 두 protocol-profile test는 excluded from the revision-3155 historical bundle로 기록한다.
- [x] Chronos로 전달할 독립 build baseline의 조건과 IOP Node에 남길 추론 provider 운영 경계가 승인된 SDD에 구분되어 있다.
- [x] 기존 등록·설정·저장 상태 전체 이전에 대한 사용자 결정이 SDD에 반영되어 있다.
- [x] IOP Node에는 Chronos 연결·제어 경계를 두지 않고 Chronos Server와 Chronos Node를 별도 runtime으로 둔다는 사용자 결정이 SDD에 반영되어 있다.
- [x] 양쪽 repository 검증과 Chronos 잠금 해제 evidence가 SDD Acceptance Scenario와 Evidence Map에 정의되어 있다.

## 구현 잠금

- 상태: 해제
- SDD: 필요
- SDD 문서: [SDD.md](../../../sdd/automation-runtime-bridge/iop-agent-chronos-extraction-decoupling/SDD.md)
- SDD 사유: cross-repo 전체 자산 이전과 삭제, 기존 상태 전체 전달, IOP 전용 provider 운영 경계 회귀, Chronos 연결점 폐쇄 및 외부 Milestone 잠금 해제를 함께 다룬다.
- 잠금 해제 조건:
  - [x] SDD 사용자 리뷰가 해결되어 있다.
  - [x] SDD 상태가 `[승인됨]`이고 SDD 잠금이 해제되어 있다.
  - [x] Acceptance Scenario가 Milestone 기능 Task와 연결되어 있다.
  - [x] Evidence Map이 IOP 완료 검토와 Chronos workspace 잠금 해제 근거로 연결되어 있다.
- 결정 필요:
  - 없음

## 범위

- 현재 IOP `iop-agent` source·contract·test·config·state·build·document surface 전체의 ownership/disposition manifest
- `iop-agent` 전체 runtime source, 동작 검증 자료와 기존 등록·설정·저장 상태를 repository-neutral versioned Chronos acceptance bundle로 전달
- IOP standalone binary·host·workflow·client lifecycle·workspace·CLI agent session·terminal·상태·검토·반영 surface와 전용 의존성 제거
- IOP Node에서 Chronos bridge/API/proto/config와 agent/terminal/workspace 제어 의미를 제거하고, model/provider/device 운영에 필요한 실행·취소·상태·usage·lifecycle만 남긴 뒤 Edge wire 회귀 검증
- cross-repo 전달 receipt, rollback 근거와 Chronos 시작 잠금 해제 handoff

## 기능

### Epic: [separation] 전체 이전과 책임 분리

- [x] [inventory] Task 03의 source revision·303행(`file=293`, `state=10`)·`universe·duplicate=0` historical evidence를 승계하고, Task 16 corrected pinned-transfer manifest 300행(`file=290`, `state=10`, `retain-generic=135`)과 SHA `d8598134dee99d96fc05a045091dd3d8932d4708d2c980c2a78c8b11825d2ccf`를 current pinned-transfer baseline으로 고정한다. historical Task-03 303행 결과는 Task-03 evidence로만 보존한다. original manifest bytes는 다시 쓰지 않고 D04가 바꾼 137개 처분은 boundary-disposition delta로, original manifest 밖의 D04 활성 surface는 별도 boundary-surface addendum으로 기록해 세 입력을 결합한 effective disposition matrix를 만든다. 검증: Task 03 row/universe evidence와 Task 16 corrected manifest SHA·retain count, 137-row delta·addendum의 digest를 각각 추적할 수 있고, 모든 `iop-agent` 관련 활성 자산은 Chronos 전달과 IOP 제거가 짝지어지며 IOP provider 운영 외 미분류·retain 항목과 양쪽 source of truth 중복이 없어야 한다.
- [x] [transfer] manifest의 `iop-agent` source·contract·behavior test와 기존 등록·설정·저장 상태 전체를 repository-neutral versioned Chronos acceptance bundle로 만든다. 검증: bundle을 격리 staging root에 풀었을 때 live IOP checkout이나 누락된 IOP source dependency 없이 독립 build되고 기존 behavior test가 통과하며 전달 목록·acceptance layout·bundle digest가 일치해야 한다.
- [x] [decouple] IOP의 standalone binary·host·workflow·client lifecycle·workspace·CLI agent session·terminal·상태·검토·반영 및 전용 config/proto/build/document surface를 manifest대로 제거한다. 검증: 제거 대상 잔존 참조, Chronos application runtime import와 future Chronos bridge/API/proto/config가 없어야 한다.
- [x] [retain-node] IOP Node에는 model/provider/device 운영에 필요한 실행·취소·상태·usage·lifecycle과 Edge wire만 남긴다. 검증: CLI agent session·PTY/terminal·workspace mutation·원격 호스트 제어·Chronos target/registry/bridge 참조가 없고 IOP provider build·contract·focused regression이 통과해야 한다.
- [x] [handoff-gate] Task 13에서 original manifest·137-row delta·D04 surface addendum를 effective matrix로 정합화한 pre-deletion receipt를 고정하고, Task 14의 최종 잔여 migration-surface 삭제 evidence를 더해 Task 15의 tracked `HANDOFF.md`에 final composite receipt를 남긴다. 검증: 최종 receipt가 사전 처분 근거, 전체 상태 이전, 양쪽 검증, 최종 제거, rollback 지점과 downstream lock identity를 모두 추적할 수 있어야 한다.

## 완료 리뷰

- 상태: 통과
- 요청일: 2026-08-02
- 완료 근거: `inventory`는 Task 03/16/10/13의 303행 historical baseline, corrected 300행 manifest, 137행 delta·addendum과 437행 effective matrix로 충족했다. `transfer`는 Task 04~06/16의 versioned bundle, 격리 behavior test, 12-record owner-state 이전과 digest evidence로 충족했다.
- 완료 근거: `decouple`·`retain-node`는 Task 07~10의 제거/audit·provider-only focused regression과 현재 금지 surface 재스캔으로, `handoff-gate`는 Task 13~15의 pre-deletion receipt·최종 삭제 evidence·tracked `HANDOFF.md` 복합 receipt로 충족했다.
- 완료 근거: 2026-08-02 fresh 검증에서 `go test -count=1 ./...`, `make client-test`(44 tests), `make client-build-web`, `make test-control-plane-edge-wire`, `make readability-audit`, initial/reconnect diagnostic, 삭제 surface scan과 `git diff --check`가 모두 통과했다. 삭제된 reconnect spec 포인터와 제거된 domain-agent UI 활성 정의는 현행 service test와 Node/provider operation UI 기준으로 바로 동기화했다.
- 완료 근거: 최종 task archive의 [complete.log](../../../../../agent-task/archive/2026/08/m-iop-agent-chronos-extraction-decoupling/17+15,16_canonical_promotion_closure/complete.log)가 세 차례 review loop와 최종 PASS를 기록하며, canonical [HANDOFF.md](../../../../../HANDOFF.md)가 승격 receipt를 보존한다. 검토된 승격은 canonical `dev`의 `c8e98d4e10b30114de7bafe426a4045abd6c1205`에, provider-only 경계 정정은 `81243284cb89206911ec45e99f80701b591c88ae`에 반영됐다.
- Spec sync: Spec update not needed. [Edge-Node 실행](../../../../../agent-spec/runtime/edge-node-execution.md), [Provider Pool 설정 갱신](../../../../../agent-spec/runtime/provider-pool-config-refresh.md), [OpenAI-compatible 입력](../../../../../agent-spec/input/openai-compatible-surface.md), [Control Plane 운영](../../../../../agent-spec/control/control-plane-operations.md)의 상태와 evidence 포인터가 현행 구현과 일치한다.
- 검토 항목: 없음
- 리뷰 코멘트: canonical provider/Node Go tests, Flutter 44 tests, Control Plane–Edge wire smoke, Agent UI reconciliation, 충돌·whitespace 검사가 모두 통과했다. Milestone과 SDD를 archive하고 Chronos `rely-on`을 `enable`로 전환했다.

## 범위 제외

- Chronos Server, 독립 Chronos Node, 외부 접근 API, loop/agent/terminal과 원격 호스트 제어의 후속 설계·구현
- Plan·Milestone·Roadmap workflow 신규 기능 구현
- IOP Node `agent_bridge`, Edge managed routing와 remote mutation 구현
- OTO adapter와 Flutter·Unity application 구현
- IOP에 forwarding standalone runtime, Chronos 작업 로직이나 Chronos application runtime dependency를 남기는 호환 계층

## 작업 컨텍스트

- 관련 기준: 완료된 [IOP Agent CLI Runtime](iop-agent-cli-runtime.md), 기준 source revision의 legacy contract snapshot, `apps/agent`, `packages/go/agent*`, `proto/iop/agent.proto`, `Makefile`, `scripts/e2e-iop-agent-logged-smoke.sh`, `../chronos`
- 표준선(선택): 이 Milestone이 전체 이전 bundle 생성과 IOP 제거의 유일한 실행 owner다. source 삭제 전 bundle의 격리 staging build와 동작 검증을 확인하고, 삭제 뒤에는 git revision과 transfer receipt로만 rollback한다. Chronos repository import와 최종 source layout 결정은 외부 잠금 해제 뒤 Chronos 수용 Milestone이 소유한다.
- 표준선(선택): IOP Node는 IOP model/provider/device 운영 경계만 유지한다. standalone workflow/state/client lifecycle, CLI agent session, terminal/PTY, workspace·원격 호스트 제어 또는 Chronos 전용 bridge/API/proto/config를 보유하지 않는다.
- 표준선(선택): Chronos는 자체 Server와 IOP Node와 별개인 Chronos Node를 소유한다. Chronos가 추론을 사용할 때는 IOP의 외부 API를 일반 client로 호출하며 IOP Node를 연결·등록·제어하지 않는다.
- 표준선(선택): IOP는 기존 등록·설정·저장 상태와 깨진 잔여 기록까지 버전이 있는 읽기 전용 이전 입력으로 전달한 뒤 관련 상태를 남기지 않는다. 실제 import·활성화와 이후 write ownership은 외부 잠금 해제 뒤 Chronos 수용 Milestone이 수행한다.
- 표준선(선택): Task 03의 source revision·303행(`file=293`, `state=10`)·`universe·duplicate=0` evidence를 historical record로 승계하되 Task 03이 manifest SHA나 `retain-generic=137`을 고정했다고 해석하지 않는다. Task 16 corrected pinned-transfer manifest 300행(`file=290`, `state=10`, `retain-generic=135`)과 SHA `d8598134dee99d96fc05a045091dd3d8932d4708d2c980c2a78c8b11825d2ccf`를 current pinned-transfer baseline으로 고정한다. historical Task-03 303행 결과는 Task-03 evidence로만 보존하며, `user_review_0.log`는 separate evidence로 분류하고 두 protocol-profile test는 excluded from the revision-3155 historical bundle로 기록한다. D04 변경은 정확히 137개 행의 boundary-disposition delta와 original manifest 밖 활성 surface addendum로 분리하고, Task 13에서 세 digest를 결합한 effective matrix와 pre-deletion receipt를 고정한다. Task 14의 최종 잔여 migration-surface 삭제 뒤 Task 15의 tracked `HANDOFF.md`가 final composite receipt를 소유한다.
- Workspace 잠금 identity: `.agent-roadmap-sync/locks.yaml`의 선행 target은 정식 프로젝트 `iop:agent-roadmap/phase/automation-runtime-bridge/milestones/iop-agent-chronos-extraction-decoupling.md`다. 현재 별도 checkout `iop-s1`의 완료 상태를 같은 identity로 간주하지 않으며, 검토된 commit이 `/config/workspace/iop`에 반영되고 그 정식 Milestone 상태가 동기화되기 전에는 Chronos 잠금을 해제하지 않는다.
- 기준 source revision: `3155be0e275437a8eedc1aa93497955a7d30465b`
- 구현 분류 기준: 모든 기존 `apps/agent/**`와 `packages/go/agent*/**` source는 Chronos 이전 입력에 포함하고 IOP의 기존 agent-named 경로에서는 제거한다. IOP Node가 model/provider/device 운영에 실제로 사용하는 최소 부분만 비(非)Agent 이름의 중립 패키지로 재배치하며 CLI agent·workspace·terminal·Chronos 연결 의미를 포함하지 않는다.
- 큐 배치: [전역 마일스톤 실행 순서](../../../../priority-queue.md)의 완료된 `[separation-01]` lane이며 Chronos 전체 Roadmap의 선행 gate였다.
- 선행 작업: 완료된 [IOP Agent CLI Runtime](iop-agent-cli-runtime.md)
- 후속 작업: [Chronos 아키텍처와 프로젝트 소유권 경계 확정](../../../../../../chronos/agent-roadmap/phase/runtime-ownership-transition/milestones/chronos-architecture-ownership-boundary.md)
- 사용자 결정: [user_review_0.log](../../../sdd/automation-runtime-bridge/iop-agent-chronos-extraction-decoupling/user_review_0.log), [user_review_1.log](../../../sdd/automation-runtime-bridge/iop-agent-chronos-extraction-decoupling/user_review_1.log)에서 해결됨. 후자가 IOP Node와 Chronos의 연결 가능성을 남긴 이전 D02 해석을 대체한다.
