oto/agent-roadmap/phase/independent-control-plane/milestones/runner-output-boundary.md
toki 365995900e feat(runner): output port 경계 작업을 반영한다
runner 출력 경계 분리의 첫 계약 작업을 완료하고 후속 subtask와 로드맵 상태를 함께 기록한다. workspace 포트와 local smoke 기준도 독립 Control Plane 방향에 맞춰 정리한다.
2026-06-07 13:12:46 +09:00

1.7 KiB

Milestone: runner 출력 경계 분리

상태

[진행중]

목표

pipeline/core 실행 로직이 CLI 출력 구현에 직접 의존하지 않도록 output/progress port를 도입하고, CLI는 해당 port의 adapter로만 연결한다.

범위

  • pipeline 실행 코드에서 CLI.printlnApplication.instance.printBuildStep 직접 호출을 분리한다.
  • core data composition 경로가 CLI color/printer 구현에 묶이지 않도록 출력 계약을 정리한다.
  • 기존 CLI 사용자 출력은 adapter를 통해 동일한 의미로 유지한다.

범위 제외

  • 로그 포맷 전면 개편
  • OTO Server remote log streaming 재설계
  • YAML pipeline 문법 변경

구현 잠금

  • 상태: 해제
  • 결정 필요: 없음

작업 컨텍스트

  • apps/runner/lib/oto/pipeline/pipeline_exe.dartpipeline_foreach.dart는 CLI 출력 계층을 직접 import한다.
  • apps/runner/lib/oto/core/data_composer.dart는 CLI color/printer 형태를 core 동작으로 노출한다.
  • 표준선: domain 실행 로직은 출력 port를 호출하고, CLI/UI/server는 port adapter를 제공한다.

기능

Epic: [output] output port boundary

  • [port] runner 실행 progress와 일반 출력에 필요한 최소 output port 계약을 정의한다.
  • [pipeline] pipeline domain이 CLI 구현체 대신 output port를 사용하도록 분리한다. 검증: runner analyze와 pipeline 관련 테스트가 통과한다.
  • [core] data composition 경로의 printer/color 의존을 output port 또는 domain-neutral 계약으로 정리한다.
  • [cli-adapter] 기존 CLI 출력 의미를 유지하는 adapter를 연결한다. 검증: CLI smoke 출력이 회귀하지 않는다.