# Jenkins 호환 경계 정리

## 목표

Jenkins 실행 경로를 유지하면서도 OTO의 장기 제어면이 Jenkins 전용 환경 변수와 실행 환경에 종속되지 않도록 경계를 정리한다.

## 단계

CLI 자동화 표면 정리

## 상태

완료

## 구현 잠금

- 상태: 해제
- 이유: 완료된 Milestone이며 완료 기준과 완료 근거가 문서화되어 있다. 후속 확장은 별도 Milestone에서 다룬다.
- 해제 근거: 완료된 Milestone으로 완료 근거가 `작업 컨텍스트`에 문서화되어 있다.
- 잠금 중 금지:
  - 해당 없음

## 범위

- Jenkins 환경 변수 파싱과 일반 파일 기반 실행 경로의 경계를 명확히 한다.
- Jenkins는 호환 adapter로 유지하고, core pipeline 실행은 Jenkins 밖에서도 동일하게 동작하도록 정리한다.
- scheduler와 file 모드가 장기 제어면의 기준 실행 경로로 쓰일 수 있는지 확인한다.

## 필수 기능

- [x] [jenkins-env] Jenkins 환경 데이터 수집 책임이 분리되어 있다.
- [x] [jenkins-free] file 모드와 scheduler 모드가 Jenkins 없이 실행 가능한 경로로 검증되어 있다.
- [x] [compat-boundary] Jenkins 호환 유지 항목과 장기 의존 제거 후보가 구분되어 있다.
- [x] [doc-boundary] 문서에서 Jenkins 전용 경로와 일반 실행 경로가 혼동되지 않는다.

## 완료 기준

- [x] Jenkins 없이도 OTO 파이프라인 실행 경로를 설명하고 테스트할 수 있다.
- [x] Jenkins 관련 변경이 core pipeline, command model, structured output에 불필요하게 전파되지 않는다.
- [x] Jenkins 지원을 제거하지 않고도 Edge agent 방향으로 확장할 수 있다.

## 범위 제외

- Jenkins 모드를 제거하지 않는다.
- Jenkins plugin 또는 Jenkins UI 통합을 새로 만들지 않는다.
- Edge bootstrap 구현을 포함하지 않는다.

## 작업 컨텍스트

- `lib/oto/core/data_composer.dart`, `lib/oto/data/command_data.dart`, `lib/oto/application.dart`, `lib/cli/**`, Jenkins 샘플 YAML을 확인한다.
- core, cli, sample 도메인 rule이 관련될 수 있다.
- 완료 근거: Jenkins env 수집 책임 분리, file/scheduler Jenkins-free 실행 검증, README 및 샘플 경계 문서화를 반영했고 `dart analyze`, `dart test test/oto_command_catalog_test.dart`, `dart test`가 통과했다.
- 후속 작업: `Edge bootstrap 계약`으로 활성 Milestone 창을 전환한다.
