# Milestone: Command Policy and Cancellation

## 위치

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

## 목표

`../iop` backend/runtime이 소유하는 command policy, timeout, cancellation, log redaction, dirty workspace guard 결과를 Gito operation state와 event로 반영하는 경계를 정한다. Gito는 arbitrary command 실행 backend를 직접 구현하지 않고, policy 결과와 Git workspace 결과를 원장에 수렴한다.

## 상태

[계획]

## 승격 조건

- 없음

## 구현 잠금

- 상태: 잠금
- 결정 필요:
  - [ ] 기본 command allowlist와 destructive command 승인 기준을 확정한다.
  - [ ] log redaction의 최소 secret pattern과 책임 경계를 확정한다.

## 범위

- IOP backend command allowlist/denylist 결과 수신 경계
- operation별 timeout과 cancellation state mapping
- dirty workspace guard 결과 반영
- stdout/stderr secret redaction 결과의 Gito 저장 정책
- failed/cancelled event 정책

## 기능

### Epic: [policy] Command policy result

IOP backend가 소유하는 command policy 결과를 Gito operation/event 원장에 반영한다.

- [ ] [allowlist] Git/IOP 중심 command allowlist의 source of truth를 IOP backend로 두고 Gito에는 결과 계약만 남긴다.
- [ ] [destructive] destructive command 거부 결과가 rejected event로 수렴한다. 검증: fake IOP policy rejection이 rejected event를 남긴다.
- [ ] [redaction] redacted log chunk만 Gito event/log 저장 경계로 들어오도록 계약을 정리한다.

### Epic: [control] Timeout and cancel

긴 실행의 중단 결과를 Gito operation 원장에 남긴다.

- [ ] [timeout] IOP timeout 결과를 Gito operation state와 event로 매핑한다.
- [ ] [cancel] running operation cancel request/result를 처리한다. 검증: fake IOP cancel result가 `cancelled` state로 종료된다.
- [ ] [dirty] IOP/Git 결과가 보고한 workspace dirty state를 lease에 반영한다.

## 완료 리뷰

- 상태: 없음
- 요청일: 없음
- 완료 근거: 없음
- 리뷰 필요:
  - [ ] 사용자가 완료 결과를 확인했다
  - [ ] archive 이동을 승인했다
- 리뷰 코멘트: 없음

## 범위 제외

- OS-level sandbox hardening
- secret manager 구현
- provider permission API
- UI approval workflow
- IOP backend 내부 command runner 구현

## 작업 컨텍스트

- 관련 경로: `services/core/internal/worker/`, `services/core/internal/events/`, `packages/contracts/notes/gito-control-plane.md`
- 표준선(선택): policy source of truth는 IOP backend이고, Gito는 explicit capability/result만 받아 원장에 남긴다.
- 선행 작업: IOP Agent Run Bridge
- 후속 작업: Provider Adapter Foundation
- 확인 필요: command allowlist와 redaction 기준
