# 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_0.log](user_review_0.log), [user_review_1.log](user_review_1.log)
- 잠금 항목:
  - [x] [D01] 기존 등록·설정·저장 상태 전체 이전
  - [x] [D02] IOP Node의 범용 실행·제어 경계(이전 결정, D04로 대체)
  - [x] [D03] 반영된 설계로 SDD 잠금 해제 승인
  - [x] [D04] 독립 Chronos Server/Node와 IOP 연결점 폐쇄

## 문제 / 비목표

- 문제: 완료된 `iop-agent`의 source·contract·test·config·state·build·document 자산과 Chronos가 소유할 작업 흐름·CLI agent session·terminal/workspace 제어가 IOP repository에 남아 있다. Chronos 작업을 시작하기 전에 관련 자산을 repository-neutral Chronos acceptance bundle로 전부 전달하고, IOP와 IOP Node에서 Chronos 작업 의미뿐 아니라 향후 연결을 위한 bridge/API/proto/config까지 제거해야 한다. IOP Node에는 model/provider/device 운영에 필요한 실행 경계만 남긴다.
- 비목표:
  - Chronos Server, 독립 Chronos Node, 외부 접근 API와 local/remote control의 후속 상세 설계
  - Chronos state root로의 실제 import·활성화와 이후 state write
  - Chronos Node의 loop engineering, agent/CLI, terminal/PTY, file/process와 원격 workspace 제어 구현
  - IOP managed `agent_bridge`, Chronos-to-IOP Node 연결 계약 또는 원격 제어 구현
  - 새로운 workflow scope와 desktop client 기능 구현

## Source of Truth

| 영역 | 기준 | 메모 |
|------|------|------|
| Roadmap | [Milestone 문서](../../../phase/automation-runtime-bridge/milestones/iop-agent-chronos-extraction-decoupling.md) | 전체 이전·제거 범위와 완료 상태의 원본 |
| Code | IOP revision `3155be0e275437a8eedc1aa93497955a7d30465b`, `apps/agent`, `packages/go/agent*`, `proto/iop/agent.proto`와 repository-neutral acceptance bundle layout | 모든 기존 agent-named 자산은 transfer bundle 전달 뒤 IOP 제거로 연결한다. IOP Node의 model/provider/device 운영에 실제로 필요한 최소 실행 부분만 중립 패키지로 재배치하고 agent session·terminal·workspace·Chronos 연결 의미는 제거한다 |
| External Provider | 없음 | Chronos repository는 잠금 해제 뒤 bundle을 import하는 [Cross-repo Dependencies](#cross-repo-dependencies)의 downstream owner다 |
| User Decision | D01, D04 | 기존 등록·설정·저장 상태 전체 이전, 독립 Chronos Server/Node와 IOP 연결점 폐쇄. D04가 D02의 향후 Chronos-to-IOP Node 연결 가능성을 대체한다 |

## State Machine

| 상태 | 진입 조건 | 다음 상태 | 근거 |
|------|-----------|-----------|------|
| inventory-baselined | Task 03의 source revision·303행(`file=293`, `state=10`)·`universe·duplicate=0` 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로만 보존함 | transfer-ready | original manifest review와 D04 137-row delta·surface addendum schema review |
| transfer-ready | D01 전체 상태 이전 정책, D04 IOP/Chronos 책임 경계, repository-neutral acceptance layout과 original manifest + 137-row delta + surface addendum → effective matrix 계약이 확정됨 | transferred | 격리 staging root에서 독립 build 가능한 versioned transfer bundle과 전체 상태 export 검증 |
| transferred | 전달 목록·bundle digest·behavior fixture·전체 상태 export 검증이 통과함 | decoupled | IOP removal diff, forbidden-reference audit와 provider regression |
| decoupled | IOP에서 Chronos 작업 로직·agent/terminal/workspace surface·연결점이 제거되고 IOP provider 전용 Node 회귀가 통과함 | disposition-reconciled | original manifest, 정확히 137개 행의 delta와 D04 surface addendum를 결합한 effective matrix 및 Task 13 pre-deletion receipt |
| disposition-reconciled | Task 13 pre-deletion receipt가 세 입력 digest, 항목별 처분, 상태 이전 결과와 rollback 지점을 고정함 | handoff-ready | Task 14 최종 잔여 migration-surface 삭제 evidence와 Task 15 tracked `HANDOFF.md` final composite receipt |
| handoff-ready | Task 15 final composite receipt가 Task 13 receipt, Task 14 최종 삭제·회귀 evidence와 downstream lock identity를 모두 인용함 | 없음 | 양쪽 최종 검증과 workspace lock 동기화 근거 |

## Interface Contract

- 이전 계약 기준: 완료된 [IOP Agent CLI Runtime](../../../phase/automation-runtime-bridge/milestones/iop-agent-cli-runtime.md)과 `source_revision`에서 고정한 legacy contract snapshot. 활성 IOP 계약 파일은 decouple 단계에서 제거한다.
- 입력:
  - `source_revision`: Task 03 inventory 기준으로 고정된 historical IOP commit
  - `disposition_manifest`: 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으로 추가로 고정한 original historical `transfer | retain-generic | remove | reference` 분류. Task 16 이후 manifest bytes는 pinned-tree 파생으로 교정되었다. D04 반영을 위해 원본 bytes는 다시 쓰지 않는다.
  - `boundary_disposition_delta`: D04에 따라 기존 `retain-generic` 후보를 IOP provider 최소 primitive 또는 `transfer` 후 `remove`로 재판정한 정확히 137개 행의 versioned delta와 digest
  - `boundary_surface_addendum`: original manifest에 없지만 D04 책임 경계의 영향을 받는 활성 surface를 version, digest, disposition과 최종 owner로 고정한 별도 addendum
  - `legacy_state_export_policy`: D01에서 확정한 기존 등록·설정·저장 상태 전체와 깨진 잔여 기록의 버전이 있는 읽기 전용 이전 방식
  - `iop_node_boundary`: D04에서 확정한 model/provider/device 운영용 실행·취소·상태·usage·lifecycle 경계
- 출력:
  - `chronos_transfer_bundle`: repository-neutral acceptance layout, source revision, 항목 digest와 전체 bundle digest를 포함하고 격리 staging root에서 live IOP checkout이나 누락된 IOP source dependency 없이 독립 build 가능한 전체 전달 source와 통과한 behavior fixture
  - `legacy_state_export`: version·source revision·integrity metadata를 가진 전체 import 입력과 즉시 재개할 수 없는 깨진 기록의 격리 보관 자료
  - `effective_disposition_matrix`: original manifest digest, 정확히 137개 행의 boundary delta digest와 D04 surface addendum digest를 결합해 최종 IOP retain/remove 및 Chronos transfer 결과를 고정한 감사 표
  - `iop_decoupling`: `iop-agent`·CLI agent session·terminal/workspace·Chronos 연결 surface 제거 diff와 IOP provider 전용 Node 경계
  - `pre_deletion_receipt`: Task 13에서 effective matrix, state export 결과, 사전 회귀 evidence와 rollback 지점을 고정한 receipt
  - `final_composite_receipt`: Task 15의 tracked `HANDOFF.md`에서 Task 13 receipt, Task 14 최종 잔여 migration-surface 삭제·회귀 evidence와 downstream lock identity를 결합한 최종 receipt
- 금지:
  - Chronos Milestone 구현을 `handoff-ready` 전에 시작하지 않는다.
  - Chronos가 IOP application 또는 runtime package를 장기 dependency로 import하지 않는다.
  - transfer bundle의 acceptance layout·digest·격리 staging build와 fixture를 확인하기 전에 IOP source를 제거하지 않는다.
  - IOP Node에 Chronos 전용 작업 흐름, 상태, 대상 선택, 재시도, 검토·반영, CLI agent session, PTY/terminal, workspace·원격 호스트 제어를 남기지 않는다.
  - IOP에 future Chronos bridge/API/proto/config, Chronos target·registry, forwarding runtime 또는 Chronos application runtime import를 남기지 않는다.
  - IOP Node의 중립 실행 경계를 arbitrary command/terminal gateway로 확장하지 않고 IOP model/provider/device 운영에 필요한 capability로 제한한다.
  - Chronos는 자체 Server와 별도 Chronos Node를 소유하며, 추론이 필요할 때 IOP의 외부 API를 일반 client로만 소비한다.
  - IOP Milestone에서 Chronos state root로 import하거나 Chronos runtime을 활성화하지 않는다.
  - 귀속이나 완결성을 확인할 수 없는 실행 상태를 재개 가능한 상태로 포장하거나 성공한 이전으로 기록하지 않는다.

## Acceptance Scenarios

| ID | Milestone Task | Given | When | Then |
|----|----------------|-------|------|------|
| S01 | `inventory` | Task 03의 source revision·303행(`file=293`, `state=10`)·`universe·duplicate=0` evidence와 Task 16에서 추가 고정한 corrected pinned-transfer manifest SHA·`retain-generic=135` baseline이 있음 | original manifest bytes를 보존하고 정확히 137개 행의 boundary-disposition delta와 original manifest 밖 D04 surface addendum를 작성해 effective matrix로 결합함 | Task 03 historical evidence와 Task 16 corrected baseline, 세 처분 입력과 digest가 모두 추적되고 모든 `iop-agent` 관련 활성 자산이 Chronos 전달과 IOP 제거에 연결되며, `retain-generic`은 IOP provider 운영에 필요한 최소 경계로만 제한된다 |
| S02 | `transfer` | 승인된 manifest·전체 상태 이전 정책과 repository-neutral acceptance layout이 있음 | 모든 관련 자산과 기존 상태를 versioned bundle로 전달함 | bundle의 격리 staging baseline이 live IOP checkout이나 누락된 IOP source dependency 없이 독립 build되고 behavior fixture가 통과하며 전체 이전 provenance와 digest가 남는다 |
| S03 | `decouple` | 전달 baseline 검증이 통과함 | IOP의 관련 surface를 제거함 | `iop-agent`와 Chronos 작업 로직, 상태와 전용 실행 surface가 IOP에 남지 않는다 |
| S04 | `retain-node` | IOP provider 전용 Node 경계가 정의됨 | build·contract·focused regression과 forbidden-reference audit을 실행함 | IOP Node가 model/provider/device 운영 capability만 유지하고 CLI agent·terminal·workspace·원격 제어·Chronos 연결 surface를 갖지 않는다 |
| S05 | `handoff-gate` | effective matrix, 전체 상태 이전과 제거 결과가 존재함 | Task 13 pre-deletion receipt를 고정하고 Task 14 최종 삭제 evidence를 더해 Task 15 tracked `HANDOFF.md` final composite receipt를 감사함 | 모든 처분 입력·상태 이전·삭제·회귀 evidence·rollback과 Chronos lock 해제 조건을 추적할 수 있다 |

## Evidence Map

| Scenario | Required Evidence | `agent-task` 연결 | 완료 Evidence 기대 |
|----------|-------------------|------------------|---------------------------|
| S01 | Task 03 source revision·303행(`file=293`, `state=10`)·`universe·duplicate=0` evidence, Task 16 corrected manifest SHA·`retain-generic=135`, 정확히 137개 행의 D04 boundary delta와 digest, D04 surface addendum와 digest, effective disposition 및 import graph audit | `agent-task/m-iop-agent-chronos-extraction-decoupling/...` | historical evidence를 과장하거나 원본 bytes를 변조하지 않고 세 처분 입력 digest를 결합해 모든 관련 자산을 전달·제거에 연결하며 IOP provider 운영 외 `retain-generic`이 없는 effective matrix |
| S02 | bundle 격리 staging build, existing behavior test, forbidden-import scan과 전체 상태 이전 fixture | `agent-task/m-iop-agent-chronos-extraction-decoupling/...` | versioned bundle digest, staging baseline PASS와 항목별 receipt |
| S03 | removed-path/reference audit와 IOP clean build | `agent-task/m-iop-agent-chronos-extraction-decoupling/...` | `iop-agent`와 Chronos 작업 surface 부재 evidence |
| S04 | IOP provider 실행 focused test, contract regression과 bridge/API/proto/config·CLI agent·PTY/terminal·workspace forbidden-reference audit | `agent-task/m-iop-agent-chronos-extraction-decoupling/...` | IOP provider 전용 Node 기준선과 Chronos 연결점 부재 PASS |
| S05 | 전체 상태 이전 fixture, effective cross-repo matrix, Task 13 pre-deletion receipt, Task 14 최종 삭제·회귀 evidence, Task 15 tracked `HANDOFF.md`와 lock check | `agent-task/m-iop-agent-chronos-extraction-decoupling/...` | Roadmap Completion에서 인용 가능한 final composite 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`
- predecessor identity는 정식 `iop:agent-roadmap/phase/automation-runtime-bridge/milestones/iop-agent-chronos-extraction-decoupling.md`다. 별도 checkout `iop-s1`의 task/마일스톤 결과는 검토된 commit이 `/config/workspace/iop`에 반영되고 정식 `iop:` Milestone 상태가 동기화된 뒤에만 이 lock의 해제 근거가 된다.

## Drift Check

- [x] Milestone 기능 Task와 Acceptance Scenario가 일치한다.
- [x] Evidence Map이 IOP 완료 검토와 Chronos lock 해제 근거로 검증 가능하다.
- [x] 완료된 [IOP Agent CLI Runtime](../../../phase/automation-runtime-bridge/milestones/iop-agent-cli-runtime.md)과 source revision의 legacy contract snapshot을 복제하지 않고 이전 입력으로 참조했다.
- [x] 사용자 결정이 SDD에 반영되고 해결 기록이 [user_review_0.log](user_review_0.log), [user_review_1.log](user_review_1.log)로 보존되어 있다.

## 사용자 리뷰 이력

- 2026-08-01: [user_review_0.log](user_review_0.log) — 전체 상태 이전과 IOP Node 책임 경계를 승인하고 SDD 잠금을 해제했다.
- 2026-08-01: [user_review_1.log](user_review_1.log) — Chronos가 자체 Server와 별도 Chronos Node를 소유하고 IOP에는 Chronos 연결점과 agent/terminal/workspace 제어를 남기지 않는 방향으로 D02를 대체했다.

## 작업 컨텍스트

- 표준선: ownership manifest 기반의 parity-before-delete, cross-repo application import 금지, 전체 상태의 읽기 전용 이전과 repository-local execution ownership을 적용한다. 깨진 잔여 기록은 재개 가능한 상태로 포장하지 않고 격리 보관 자료로 전달한다. 실제 Chronos state import와 Chronos Server/Node·loop/agent/terminal 설계는 후속 Chronos SDD가 소유하고, IOP는 외부 추론 API 외의 Chronos 연결점을 제공하지 않는다.
- 후속 SDD: [Chronos Architecture SDD](../../../../../../chronos/agent-roadmap/sdd/runtime-ownership-transition/chronos-architecture-ownership-boundary/SDD.md)

### 승격 기준 분류표

| 처분 | 현재 IOP 경로군 | 완료 시 경계 |
|------|-----------------|--------------|
| `transfer` 후 `remove` | `apps/agent/**` | CLI·daemon·task loop·project log·local control·client process 전체를 Chronos 수용용 bundle로 전달하고 IOP에서 제거한다. |
| `transfer` 후 `remove` | `packages/go/agentconfig/**`, `agentguard/**`, `agentpolicy/**`, `agentstate/**`, `agenttask/**`, `agentworkspace/**`, `agentprovider/catalog/**` | 설정·작업 상태·선택·재시도·격리·검토·반영·catalog 원본을 Chronos로 넘기고 IOP에서 제거한다. |
| `transfer` 후 `remove` | `proto/iop/agent.proto`, 생성물, `configs/iop-agent*`, `Makefile`의 agent target, agent smoke·fixture, agent contract/spec/domain 문서 | 계약·설정·빌드·검증·설명 surface를 Chronos로 넘기고 IOP 활성 경로에서 제거하거나 IOP 범용 문서로 재작성한다. |
| `transfer` 후 `remove` | `packages/flutter/iop_console`의 `IopAgentPanel`과 Client 연결, 관련 테스트 | 기존 UI 자산을 Chronos 수용 입력으로 넘기고 IOP Client/console에서 agent 전용 surface를 제거한다. 새 Chronos UI 구현은 후속 범위다. |
| `retain-generic` | `packages/go/agentruntime/**`, `packages/go/agentprovider/cli/**` 중 IOP model/provider/device 운영에도 필요한 부분 | 원본은 Chronos 수용용 bundle에 전달한다. IOP에는 provider process lifecycle에 실제로 필요한 최소 실행 primitive만 비(非)Agent 이름으로 재배치하며 CLI agent profile/session·PTY·workspace·tool execution·quota/status adapter 의미는 남기지 않는다. 필요성이 입증되지 않은 부분은 transfer 후 remove로 재분류한다. |
| `retain-generic` | `apps/node/**`, Edge-IOP Node provider wire와 Node adapter/store | model/provider/device의 실행·취소·상태·usage·lifecycle만 유지한다. arbitrary command, session list/terminate, terminal/PTY, workspace·file/process remote control, Chronos target/registry/bridge와 Chronos package 의미는 제거한다. |
| `reference` | 위 source revision, 이전 전 계약, 동작 fixture와 최종 transfer receipt | 삭제 뒤 추적과 rollback 근거로만 보존하며 IOP의 활성 application/runtime source of truth로 사용하지 않는다. |

### 독립 baseline과 검증 기준

- Transfer bundle은 source/state/contract/behavior fixture/provenance가 분리된 repository-neutral acceptance layout으로 만들고, 임시 격리 staging root에 풀어 live IOP checkout이나 bundle 밖의 IOP source dependency 없이 build되어야 한다. 이 layout은 최종 Chronos source tree 결정을 선점하지 않으며 Chronos repository에는 이 Milestone 동안 직접 쓰지 않는다.
- Task 03 historical evidence는 source revision `3155be0e275437a8eedc1aa93497955a7d30465b`, original manifest 303행(`file=293`, `state=10`)과 `universe·duplicate=0`만 고정하며 manifest SHA나 `retain-generic=137`을 Task 03 receipt에 귀속하지 않는다. 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 이후 기존 행의 처분 변경은 원본 bytes를 수정하지 않고 정확히 137개 행의 boundary-disposition delta로 기록하고, 원본에 없던 D04 활성 surface는 versioned·digested boundary-surface addendum로 기록한다. Task 13 pre-deletion receipt는 세 처분 입력 digest를 결합한 effective matrix를 인용하며, Task 14의 최종 잔여 migration-surface 삭제 뒤 Task 15 tracked `HANDOFF.md`가 최종 삭제·회귀 evidence와 lock identity를 더한 final composite receipt를 소유한다. 미분류 활성 파일과 두 repository의 중복 application source of truth를 허용하지 않는다.
- IOP 검증은 모든 기존 agent-named application/runtime import와 surface의 제거, CLI agent session·terminal/workspace·Chronos bridge/API/proto/config 부재, 중립화된 IOP provider 실행 build, Edge-IOP Node wire와 provider 회귀를 포함한다.
- Bundle 검증은 격리 staging 독립 build, 이전된 동작 fixture, 전체 상태 이전 형식, 항목·bundle digest와 bundle 외부 IOP source dependency scan을 포함한다. 실제 Chronos repository import, 최종 layout 결정과 수용 검증은 workspace lock 해제 뒤 downstream Chronos Milestone이 수행한다.
