diff --git a/agent-roadmap/phase/automation-runtime-bridge/milestones/agent-task-runtime-target-selector.md b/agent-roadmap/phase/automation-runtime-bridge/milestones/agent-task-runtime-target-selector.md index 797258c..52c706f 100644 --- a/agent-roadmap/phase/automation-runtime-bridge/milestones/agent-task-runtime-target-selector.md +++ b/agent-roadmap/phase/automation-runtime-bridge/milestones/agent-task-runtime-target-selector.md @@ -49,10 +49,10 @@ 정적 task route와 실행 시점 상태를 재현 가능한 `adapter + target` 결정으로 변환하는 capability를 묶는다. -- [ ] [selector-contract] task file을 필수 입력으로 받는 별도 selector가 worker/review stage, lane/grade, 선택 target, candidate rank, reason code, quota snapshot, selfcheck와 `evaluated_at`을 안정적인 JSON 계약으로 반환한다. 검증: 동일한 task 세대·시간 구간·quota snapshot·이전 결정은 동일한 route 결과를 내고 invalid filename/stage는 명시적 입력 오류로 종료한다. -- [ ] [time-route] KST 주간 `[07:00, 23:00)`에는 `local-G07~G08`을 Gemini 3.6 Flash Medium으로, 야간 `[23:00, 07:00)`에는 Pi `iop/laguna-s:2.1`로 선택한다. 검증: `06:59:59`, `07:00:00`, `22:59:59`, `23:00:00` 경계 테스트가 기대 route를 반환한다. -- [ ] [grade-route] 기존 local grade route를 보존하고 cloud의 기존 Gemini 구간인 `G01~G06`은 Claude `sonnet`, `G07~G08`은 Opus, `G09~G10`은 Codex로 선택하며 모든 공식 CODE_REVIEW는 Codex `gpt-5.6-sol` xhigh로 고정한다. 검증: worker local/cloud `G01~G10`과 CODE_REVIEW route matrix가 빈 구간 없이 canonical adapter/target으로 해석된다. -- [ ] [quota-input] 좁은 JSON quota probe가 기존 Go usage checker의 overall/model-specific remaining 신호를 재사용해 cloud quota를 `available | exhausted | unknown`으로 정규화하고, local target은 `quota_mode=unbounded`, `quota_status=not_applicable`로 표현한다. 검증: target/profile의 required cap 중 하나라도 0이면 exhausted, required cap이 모두 확인되고 양수이면 available, 누락·충돌·parse 실패는 unknown이며 unknown 후보는 각 work unit에서 runtime quota 결과가 확정될 때까지 1회만 admission하되 target 전역 cap을 만들지 않고 generic stderr만으로 quota/provider 장애를 추정하지 않는다. +- [x] [selector-contract] task file을 필수 입력으로 받는 별도 selector가 worker/review stage, lane/grade, 선택 target, candidate rank, reason code, quota snapshot, selfcheck와 `evaluated_at`을 안정적인 JSON 계약으로 반환한다. 검증: 동일한 task 세대·시간 구간·quota snapshot·이전 결정은 동일한 route 결과를 내고 invalid filename/stage는 명시적 입력 오류로 종료한다. +- [x] [time-route] KST 주간 `[07:00, 23:00)`에는 `local-G07~G08`을 Gemini 3.6 Flash Medium으로, 야간 `[23:00, 07:00)`에는 Pi `iop/laguna-s:2.1`로 선택한다. 검증: `06:59:59`, `07:00:00`, `22:59:59`, `23:00:00` 경계 테스트가 기대 route를 반환한다. +- [x] [grade-route] 기존 local grade route를 보존하고 cloud의 기존 Gemini 구간인 `G01~G06`은 Claude `sonnet`, `G07~G08`은 Opus, `G09~G10`은 Codex로 선택하며 모든 공식 CODE_REVIEW는 Codex `gpt-5.6-sol` xhigh로 고정한다. 검증: worker local/cloud `G01~G10`과 CODE_REVIEW route matrix가 빈 구간 없이 canonical adapter/target으로 해석된다. +- [x] [quota-input] 좁은 JSON quota probe가 기존 Go usage checker의 overall/model-specific remaining 신호를 재사용해 cloud quota를 `available | exhausted | unknown`으로 정규화하고, local target은 `quota_mode=unbounded`, `quota_status=not_applicable`로 표현한다. 검증: target/profile의 required cap 중 하나라도 0이면 exhausted, required cap이 모두 확인되고 양수이면 available, 누락·충돌·parse 실패는 unknown이며 unknown 후보는 각 work unit에서 runtime quota 결과가 확정될 때까지 1회만 admission하되 target 전역 cap을 만들지 않고 generic stderr만으로 quota/provider 장애를 추정하지 않는다. ### Epic: [continuation] 고정·Failover·중단 전파