Skip to content

infra-orchestrator v4 draft review

Agent Orchestrator v4 초안 리뷰

status: 분석 완료. 실행 SSOT는 infra-orchestrator v1.
대상: 2026-10-05 Agent Orchestrator 개발기획서 v4 (prompt-orchestrator 초안).
naming SSOT: NAMING_AND_TOPOLOGY — 엔진 slug는 infra-orchestrator, prefix auto는 쓰지 않는다.

이 문서는 v4 본문을 복제하지 않는다. 유지할 원칙, 버린 결정, 상태 모델 불일치만 남긴다.

한 줄 평가

Python이 상태·검증·Git을 통제하고 Cursor를 Task마다 일회성 local Agent로만 쓰는 구조는 맞다. V1 범위에 릴리스·MCP·cross-repo·SQLite까지 실리고, 프로젝트 예시가 acct-labs에 묶여 있으며, 열린 결정이 22개라 범용 엔진으로 바로 구현하기엔 과하다.

유지하는 장점

  • Python 기본, Cursor는 예외. Git, 테스트, 린트, 타입체크, 범위 검사는 토큰 0.
  • Fresh Agent. Implement / Review / Fix가 대화를 넘기지 않는다. send() 1회, dirs 금지, cwd는 대상 repo 하나.
  • 검증 우선. 결정론적 검증을 통과한 코드에만 AI 리뷰.
  • lock / ledger 분리. 승인된 Task 정의는 불변, 상태·카운터·증거만 가변.
  • Verification Registry. Plan 본문의 셸 명령을 실행하지 않는다.
  • 정책 계층. 엔진 defaults + 프로젝트 override, 잠금 키 완화 거부, 목록형 안전 키는 추가만.
  • Cost per Verified Task. 최소 토큰이 아니라 검증된 Task당 비용. 사용량 개입은 observe → warn → enforce.
  • 사람 승인. Merge와 Production은 게이트 뒤. 엔진 코드는 프로젝트 밖에, 런타임 상태는 git 밖.

단점과 v1 대응

v4 문제영향v1
V1에 MCP, porch release, cross-repo, SQLite, 상태바가 같이 적힘일정·테스트 폭발로컬 프로파일만. 나머지는 후속 단계
열린 결정 22개구현이 멈추거나 임의로 갈라짐로컬 기본값 잠금. V0 실측은 usage·도구 이름·setting_sources·model id 네 개
예시가 acct-labs다른 org에 복사하기 어려움examples/sandbox-app. 첫 실전 어댑터는 autogen-labs core 설정만
Task 메타가 HTML 주석렌더러·포맷터가 주석을 지우면 컴파일 실패YAML 펜스 orchestrator 또는 *.tasks.yaml
상태 다이어그램과 표가 다름재개·테스트 스펙이 둘로 갈림단일 enum (아래)
V0 = 구현 코드 없음SDK 가정을 문서만으로 닫음porch doctor / porch probe-sdk + FakeAgent
SDK public betausage·allowlist·설정 소스가 비거나 이름이 다를 수 있음실패하면 해당 기능을 끄고 진행
Agent가 프로세스 env를 상속배포 비밀이 로컬 Agent에 들어감run 프로세스에는 CURSOR_API_KEY와 최소 PATH만
기본 setting_sources=project vs SDK 기본 []사용자 전역 규칙이 섞이거나, 기대한 규칙이 안 붙음기본은 inline Capsule + 관리형 규칙. project 소스는 V0 확인 후
Capsule “약 500 토큰” 같은 추정치설계 상수처럼 읽힘실측 전 상한 가이드일 뿐
Fresh Agent 재탐색 비용긴 세션보다 비쌀 수 있음G0에서 Cost per Verified Task가 개선되지 않으면 자동 run을 확대하지 않음
repo 이름 prompt-orchestratornaming pack 위반, 플랫폼 v1의 다른 의미와 충돌slug infra-orchestrator. 제품 병렬 생성은 infra-canvas / ai-engine

상태 모델 불일치 (v4)

v4 §6.1 다이어그램과 §6.4 표가 같은 기계를 가리키지 않는다.

출처있는 상태없는 상태
§6.1 다이어그램TODO, IMPLEMENTING, IMPLEMENTED, VERIFYING, FIXING, REVIEWING, VERIFIED, DONE, HUMAN_REQUIREDPARTIAL, VERIFY_FAILED, NEEDS_FIX, BLOCKED
§6.4 표TODO, PARTIAL, IMPLEMENTED, VERIFY_FAILED, NEEDS_FIX, VERIFIED, DONE, BLOCKED/HUMAN_REQUIRED, 실행 중 4종다이어그램의 IMPLEMENTING 경로와 PARTIAL 관계가 없음

v1은 정지 상태와 실행 중 표시를 한 스키마로 고정한다. 자세한 집합은 SSOT §5.

열린 결정 정리

v4에서 로컬 기본값으로 닫은 것

  • 런타임 local only. cloud / auto_create_pr / dirs 없음. release.create_pr 기본 disabled, 프로젝트 override로 재개방 금지.
  • Agent 도구는 caller allowlist만. tools=None은 빈 목록 (SDK 전체 도구 기본값 사용 금지).
  • Agent env allowlist (CURSOR_API_KEY 등). GH_TOKEN·배포 비밀 비상속.
  • probe-sdk Agent.prompt는 명시적 sandbox --cwd. 엔진 repo를 cwd/dirs로 쓰지 않음.
  • Agent당 send() 1회. resume 금지.
  • 셸 도구 없음. Plan 본문 명령 미실행.
  • Merge / Production은 사람 승인. MCP로 release 미노출.
  • Plan 메타는 HTML 주석 금지.
  • 상태 홈은 XDG ($XDG_STATE_HOME/infra-orchestrator, 없으면 ~/.local/state/infra-orchestrator).
  • CLI 이름 porch. 충돌 시 infra-orch.
  • 통합 리뷰 기본 high_risk_only. git hook 존중, --no-verify 금지.
  • MCP run 미노출 (조회만, V1.5).
  • R0 문서 변경도 Merge 자동 승인 없음 (V1은 릴리스 자체를 하지 않음).

V0에서만 실측하는 것

  1. SDK result.usage / 스트림 usage가 채워지는지, 서브에이전트 포함 여부.
  2. 도구 allowlist의 실제 이름 (생성 시 오류 나면 표 갱신).
  3. setting_sources=["project"]가 대상 repo 규칙만 로드하는지.
  4. 비교 실험용 고정 model id (composer-2.5 후보).

Enterprise Admin API / OTel, API key 종류(User vs Service Account), ledger 승인 UI, SQLite 전환 기준은 V1 이후로 미룬다.

제품 경계

문서의미
플랫폼 v1 Phase 2 infra-orchestrator (구 문구)스토리보드·생성 파이프라인의 병렬 오케스트레이션
이 엔진Cursor Python SDK로 개발 Task를 로컬에서 순서대로 실행

같은 slug를 쓰되 역할은 후자다. 제품 생성 병렬화는 infra-canvas / ai-engine에 남긴다.