iop/agent-ops/skills/common/finalize-task-routing/SKILL.md

9.2 KiB

name description
finalize-task-routing PLAN/CODE_REVIEW 작성 직전 build는 local-first로 라우팅하고 review는 실제 G와 고정 공식 리뷰 target을 확정한다. capability-gap 기반 cloud 선택과 follow-up 재평가에 사용한다.

Finalize Task Routing

목적

build의 lane/G와 review의 G를 평가해 canonical 파일명을 확정한다. 공식 review는 항상 cloud의 Codex gpt-5.6-sol xhigh다. 이 스킬은 task 파일을 수정하지 않는다.

호출 시점

  • plan이 최초 또는 follow-up pair를 쓰기 직전
  • scope, 증거, 소유권, 결정 조건이 달라져 기존 route가 무효가 된 때
  • 사용자가 현재 pair의 lane/G 판정을 요청한 때

입력

  • evaluation_mode: first-pass | isolated-reassessment
  • targets.build, targets.review: 각 target의 요구, scope, 영향 경로, 불변조건, 검증 계획과 실제 증거
  • target별 context_snapshot: 함께 유지해야 할 source/test/diff/log/contract와 분할 가능성
  • target별 ownership_snapshot: 공유 상태, 병행 작업, sibling task, 외부 책임
  • target별 decision_snapshot: 미해결 의미 판단, 사용자 권한, 외부 환경 의존성
  • build의 loop_risk_snapshot:
    • ordered_transitions: state_count, adverse_paths, evidence
    • concurrent_consistency: actor_count, constraints, evidence
    • boundary_contract: component_count, consumer_count, constraints, evidence
    • structured_interpretation: mechanisms, hazards, evidence
    • variant_product: independent_axis_count, combination_verification_required, evidence
  • invalidation_evidence: 실패 로그, review finding, 변경된 범위 등 재평가 근거

이전 lane/G, 점수, 라우팅 사유와 filename은 입력에서 제외한다. 이전 로그와 finding은 원본에서 확인한 사실만 사용한다. 확인된 부재는 0/false/빈 목록, 미확인은 unknown이다.

절차

1. 평가 격리

각 target을 unrouted로 시작한다. isolated-reassessment는 route 정보가 제거된 현재 snapshot만 평가한다. 중립 snapshot을 만들 수 없으면 blocked: isolated-routing-unavailable을 반환한다.

실패·review 횟수, Required/finding 개수와 이전 grade는 승격 조건이나 점수가 아니다.

2. 증거 gate

build와 review에 다음 값을 독립적으로 true | false | unknown으로 판정하고 파일·diff·명령 출력 근거를 한 줄씩 기록한다.

  • scope_closed: 정확성 조건과 영향 경로가 확정됐는가
  • context_closed: 중요한 증거를 빠뜨리지 않고 함께 다룰 수 있는가
  • verification_closed: 결정적 명령과 관찰로 성공을 판정할 수 있는가
  • evidence_trusted: 검증이 실제 경로를 실행하며 재현 가능한가
  • ownership_closed: 공유 상태와 외부 소유권이 명확한가
  • decision_closed: 사용자 결정이나 외부 의미 판단 없이 완료할 수 있는가

파일 수, 긴 문서, 동시성, dirty worktree와 finding 수만으로 false를 주지 않는다.

  • closure 또는 build loop-risk 필드가 하나라도 unknown이면 needs_evidence다. 이를 false로 낮추지 않는다.
  • closure false가 권한, secret, 사용자 결정, 환경·의존성 또는 신뢰할 증거 부재라면 blocked다.
  • closure false를 cloud capability가 해소할 수 있을 때만 capability-gap 후보로 둔다.

3. G 등급

각 target을 다음 다섯 차원에서 독립적으로 0~2로 채점한다.

  • scope_coupling: 국소 / 여러 연결 지점 / 다중 모듈·계약
  • state_concurrency: 무상태 / 상태 전이 / 공유 상태·순서·동시성
  • blast_irreversibility: 내부 가역 / 다중 호출자·지속 상태 / 외부 계약·권한·비가역
  • evidence_diagnosis: 직접 증거 / 복수 증거 조합 / 충돌·불신 증거 진단
  • verification_complexity: 단일 명령 / 복수 단계·통합 / 외부·상호작용·장시간

grade = max(1, 점수 합)이다. lane과 반복 횟수는 점수에 더하지 않는다.

4. Route basis

build basis를 하나만 선택한다.

  • local-fit: 모든 closure가 true이고 G01~G08
  • grade-boundary: 모든 closure가 true이고 G09~G10
  • capability-gap: 하나 이상의 closure false를 cloud가 실제로 해소함

capability-gap에는 관측된 gap, source/test/diff/log 증거, cloud가 해소하는 방법을 모두 기록한다. 이 세 근거 없는 G01G08 build cloud route는 금지한다. G09G10에 실제 gap도 있으면 basis는 capability-gap으로 두고 grade 점수도 함께 보존한다.

review basis는 항상 official-review다. review G는 실제 복잡도 점수를 유지하고 G floor를 적용하지 않는다. lane은 cloud, 실행 target은 Codex gpt-5.6-sol xhigh로 고정한다. local worker의 자가검증은 공식 review를 대체하지 않는다.

5. Loop-risk audit

build의 다음 signature를 현재 증거로 기록한다.

  • temporal_state: 상태 3개 이상과 partial/retry/cancel/recovery/stale/duplicate 경로
  • concurrent_consistency: actor 2개 이상과 atomic snapshot/lock order/exactly-once/race-free 제약
  • boundary_contract: component 3개 이상 또는 consumer 2개 이상과 validation/immutability/compatibility 제약
  • structured_interpretation: parser/lexer/protocol assembly/multi-source merge와 nesting/quoting/precedence/deduplication 위험
  • variant_product: 독립 variant 축 2개 이상과 조합 검증

signature와 triggered는 audit 정보다. lane/G를 바꾸지 않는다.

WARN/FAIL 후에는 현재 scope를 다시 평가한다. local에서 닫히면 local을 유지하고, plan/split/fixture/test 문제면 local에서 재구성한다. 실제 capability gap만 해당 새 PLAN 세대를 cloud로 보낸다. 고정 시도 횟수나 finding 재발로 cloud를 확정하지 않는다.

6. Canonical filename

모든 gate를 통과한 뒤 pair mode를 정확히 한 번 실행한다. finalizer는 lane을 입력받지 않고 route basis와 grade에서 lane을 산출한다.

agent-ops/skills/common/finalize-task-routing/scripts/finalize-task-policy.sh pair \
  <build-route-basis> <true|false> \
  <build-scope> <build-state> <build-blast> <build-evidence> <build-verification> \
  official-review \
  <review-scope> <review-state> <review-blast> <review-evidence> <review-verification>

loop_risk.triggered는 두 번째 인자에 전달하지만 route에는 영향을 주지 않는다. unknown 상태에서는 finalizer를 호출하지 않는다. 호출자는 저수준 formatter를 직접 실행하거나 lane, grade, filename을 수작업으로 만들지 않는다.

검증

  • 두 target의 closure, 근거와 점수가 독립적인가
  • closure나 loop-risk의 unknown에서 finalizer를 호출하지 않았는가
  • G01~G08 build cloud route가 capability-gap이고 세 근거가 있는가
  • build의 local-fit은 G01G08, grade-boundary는 G09G10인가
  • review가 official-review, cloud, Codex gpt-5.6-sol xhigh인가
  • signature와 반복 횟수가 route에 영향을 주지 않았는가
  • finalizer 출력과 active filename이 일치하는가

출력 형식

status: routed | needs_evidence | blocked
evaluation_mode: first-pass | isolated-reassessment
finalizer: finalize-task-policy.sh
finalizer_mode: pair
targets:
  build:
    closures: {scope_closed: true, context_closed: true, verification_closed: true, evidence_trusted: true, ownership_closed: true, decision_closed: true}
    closure_basis: {scope_closed: "<evidence>", context_closed: "<evidence>", verification_closed: "<evidence>", evidence_trusted: "<evidence>", ownership_closed: "<evidence>", decision_closed: "<evidence>"}
    route_basis: local-fit
    capability_gap: none
    grade_scores: {scope_coupling: 2, state_concurrency: 1, blast_irreversibility: 1, evidence_diagnosis: 1, verification_complexity: 1}
    loop_risk: {matched_signatures: [boundary_contract], triggered: true}
    lane: local
    grade: G06
    filename: PLAN-local-G06.md
  review:
    closures: {scope_closed: true, context_closed: true, verification_closed: true, evidence_trusted: true, ownership_closed: true, decision_closed: true}
    closure_basis: {scope_closed: "<evidence>", context_closed: "<evidence>", verification_closed: "<evidence>", evidence_trusted: "<evidence>", ownership_closed: "<evidence>", decision_closed: "<evidence>"}
    route_basis: local-fit
    capability_gap: none
    grade_scores: {scope_coupling: 1, state_concurrency: 1, blast_irreversibility: 1, evidence_diagnosis: 1, verification_complexity: 1}
    lane: local
    grade: G05
    filename: CODE_REVIEW-local-G05.md
missing_evidence: []
blocked_reason: null

capability-gap이면 capability_gapobserved, evidence, cloud_resolution을 기록한다. needs_evidence/blocked에서는 finalizer와 route 결과를 null로 둔다.

금지 사항

  • 이전 route나 반복 횟수로 자동 승격하지 않는다.
  • signature로 cloud lane 또는 G floor를 강제하지 않는다.
  • cloud가 해소할 수 없는 문제를 cloud route로 바꾸지 않는다.
  • review에 universal cloud/G floor를 적용하지 않는다.
  • PLAN, CODE_REVIEW, archive와 complete.log를 직접 수정하지 않는다.