- Add agent-task/m-cross-os-runner-bootstrap with subtasks (G07, G06) - Update roadmap phases and milestones for control-plane-product-surface - Add runner.proto definitions and regenerate code - Update HTTP server handler for runner management - Add smoke tests and update local test configurations - Update README with latest project status
5.7 KiB
PLAN: Windows PowerShell bootstrap 추가
이 파일을 읽는 구현 에이전트에게
이 계획은 [windows-bootstrap] 완료만 목표로 하며 01_core_command 완료 후 실행해야 한다. predecessor 01_core_command의 complete.log가 없으면 구현을 시작하지 말고 대기한다.
배경
마일스톤은 Windows PowerShell bootstrap을 요구하지만 현재 repository에는 shell bootstrap만 있다. Core가 Windows script URL과 command를 반환할 수 있어야 하고, PowerShell script는 zip asset 다운로드, 압축 해제, config 생성, 실행 안내 또는 시작 흐름을 제공해야 한다.
Roadmap Targets
- Milestone:
agent-roadmap/phase/control-plane-product-surface/milestones/cross-os-runner-bootstrap.md - Epic:
[bootstrap-platforms] Cross-OS bootstrap contract - Task id:
[windows-bootstrap] - Completion mode: check-on-pass
분석 결과
읽은 파일
services/core/internal/httpserver/routes.goservices/core/internal/httpserver/bootstrap_provider.goservices/core/internal/httpserver/runner_handlers.goservices/core/internal/httpserver/server_test.goapps/runner/assets/script/shell/oto_agent_bootstrap.shapps/runner/test/oto_agent_bootstrap_script_test.dartREADME.mdagent-test/local/rules.mdagent-test/local/agent-smoke.md
테스트 환경 규칙
기본 환경은 local이다. Windows 실제 실행 환경은 보장되지 않으므로 parser/text fixture와 Core handler 테스트를 우선 검증으로 둔다.
테스트 커버리지 공백
PowerShell script는 아직 파일도 route도 없다. 실제 Windows에서 실행하는 integration smoke는 후속 환경 준비가 필요할 수 있으므로 이 작업은 quoting, zip asset, config key, command generation을 deterministic test로 고정한다.
심볼 참조
/bootstrap/oto-agent.sh와 embedded shell provider가 현재 유일한 bootstrap asset serving 경로다. Windows에는 별도 .ps1 route와 provider entry가 필요하다.
분할 판단
이 작업은 03+01_windows_bootstrap이며 01_core_command의 대상 script 계약에 의존한다. Unix script 확장과는 병렬 가능하지만 04+02,03_binary_contract, 05+01,02,03_node_connect의 전제다.
범위 결정 근거
PowerShell bootstrap과 Core serving/command 연결만 구현한다. release packaging, checksum/signature, Windows service manager 등록은 범위 제외다.
빌드 등급
cloud-G07: PowerShell quoting, process invocation, Windows path semantics가 중심이라 높은 주의가 필요하다.
의존 관계 및 구현 순서
- 선행:
agent-task/m-cross-os-runner-bootstrap/01_core_command/complete.log - 병렬 가능:
02_unix_bootstrap - 후속:
04+02,03_binary_contract,05+01,02,03_node_connect
구현 체크리스트
- PowerShell bootstrap asset을 추가하고 Windows x64/arm64 zip asset 선택을 고정한다.
- Core가
.ps1bootstrap asset을 serve하고 Windows command에서 해당 URL을 사용한다. - script/config 생성 시 기존 agent 설정 의미를 유지하고 enrollment token 출력 노출을 피한다.
- Windows route, content, command, quoting, zip asset 이름을 테스트한다.
- CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.
[BOOTSTRAP_WINDOWS-1] PowerShell asset 추가
문제: Windows bootstrap script가 없다.
해결 방법: apps/runner/assets/script/powershell/oto_agent_bootstrap.ps1 같은 명시적 asset을 추가한다. 새 파일은 기존 파일로 대체할 수 없으므로 생성이 정당하다.
수정 파일 및 체크리스트:
apps/runner/assets/script/powershell/oto_agent_bootstrap.ps1apps/runner/test/oto_agent_bootstrap_script_test.dart또는 별도 runner bootstrap test
테스트 작성: x64/arm64 zip asset, HTTPS release URL, config key, token 비노출, quoting을 fixture로 검증한다.
중간 검증: cd apps/runner && dart test test/oto_agent_bootstrap_script_test.dart
[BOOTSTRAP_WINDOWS-2] Core route와 command 연결
문제: Core는 shell script만 embed/serve한다.
해결 방법: PowerShell embedded asset과 route를 추가하고 01_core_command의 Windows target이 해당 URL을 사용하도록 한다.
수정 파일 및 체크리스트:
services/core/internal/httpserver/bootstrap_provider.goservices/core/internal/httpserver/routes.goservices/core/internal/httpserver/runner_handlers.goservices/core/internal/httpserver/server_test.goservices/core/internal/httpserver/oto_agent_bootstrap.ps1
테스트 작성: .ps1 route 응답, Windows command, invalid target regression을 검증한다.
중간 검증: cd services/core && go test ./...
수정 파일 요약
| 경로 | 목적 |
|---|---|
apps/runner/assets/script/powershell/oto_agent_bootstrap.ps1 |
Windows bootstrap 구현 |
services/core/internal/httpserver/oto_agent_bootstrap.ps1 |
Core embedded Windows asset |
services/core/internal/httpserver/bootstrap_provider.go |
bootstrap provider 확장 |
services/core/internal/httpserver/routes.go |
.ps1 route 추가 |
services/core/internal/httpserver/runner_handlers.go |
Windows command 반환 |
| tests | PowerShell/route/command fixture 검증 |
최종 검증
cd apps/runner && dart test test/oto_agent_bootstrap_script_test.dartcd services/core && go test ./...cd apps/runner && dart analyze
모든 코드 변경 완료 후 반드시 CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 채운다. 이 파일 작성이 구현의 마지막 단계다.