14 KiB
| name | description |
|---|---|
| finalize-task-routing | PLAN/CODE_REVIEW 작성 직전 현재 작업 증거만으로 cloud/local lane과 G01-G10 등급을 독립 평가하고 canonical 파일명을 확정한다. 최초 plan, review 실패 후 follow-up plan, 라우팅 재평가, lane/G 판단, routed filename 결정에 사용한다. |
Finalize Task Routing
목적
계획 분석이 끝난 뒤 구현과 리뷰 target의 lane과 G 등급을 처음부터 평가하고 canonical 파일명을 반환한다. 이 스킬은 라우팅 판단의 단일 원본이며 plan/review 내용을 작성하거나 task 파일을 직접 생성하지 않는다.
Lane/G는 capability 요구사항이다. Runtime은 plan, build, review를 서로 다른 모델 identity에 배정해야 하며, 같은 lane/G여도 같은 모델을 재사용하면 안 된다.
언제 호출할지
plan이 최초 PLAN/CODE_REVIEW pair를 쓰기 직전code-review의 WARN/FAIL 후plan이 follow-up PLAN/CODE_REVIEW pair를 다시 쓰기 직전- 기존 lane/G 판정이 검증 실패, 증거 충돌, 범위 변화, 소유권 변화로 무효화된 뒤 재평가할 때
- 사용자가 현재 작업의 cloud/local, G 등급, canonical task 파일명만 요청할 때
입력
targets:build,review, 또는 둘 다.plan은 항상 둘 다 전달한다 (필수)evaluation_mode: 이전 라우팅이 없는 최초 평가는first-pass, 무효화된 기존 라우팅의 lane/grade/score/rationale를 입력에서 격리하고 현재 미해결 작업을 처음부터 평가하는 모드는isolated-reassessment(필수)task_snapshot: 사용자 요구, 현재 scope, 수정/영향 경로, 불변조건, 상태 전이, 검증 계획, 이미 존재하는 증거 또는none(필수)context_snapshot: 함께 유지해야 하는 source/test/diff/log/contract 범위와 분할 가능성 (필수)ownership_snapshot: 공유 상태, 병행 작업, sibling task, 외부 책임 경계 (필수)decision_snapshot: 미해결 의미 판단, 사용자 권한이 필요한 결정, 외부 환경 의존성 (필수)invalidation_evidence: 검증 실패, 실제 로그, review finding, 변경된 범위 등 현재 판정을 바꾸는 원시 증거 (선택)
이전 lane, grade, 점수, 라우팅 사유, routed filename은 입력에서 제외한다.
이전 PLAN/CODE_REVIEW 문서의 코드 경로, 기존 로그, finding은 경로와 revision 관련성을 정적으로 확인한 뒤 원시 증거로만 사용할 수 있다. 확인을 위해 검증 명령을 다시 실행하지 않는다.
먼저 확인할 것
agent-ops/skills/common/finalize-task-routing/scripts/finalize-task-route.sh가 실행 가능한가- 호출자가 plan 분석, scope, split, 검증 계획을 모두 확정했는가
targets마다 필요한 구현 또는 리뷰 작업이 구분되어 있는가- 이전 lane/G와 그 평가 문구가 입력에서 격리되었는가
isolated-reassessment이면 이전 lane/grade/score/rationale/preferred route를 제외한 중립 snapshot만 평가 입력으로 사용했는가- 현재 파일, diff, 확정된 제약, 이미 기록된 명령 출력을 우선 증거로 사용했는가
검증 책임
- Routing은 계획된 검증의 결정성과 관찰 가능성만 평가한다. 실행 전 출력 부재는
unknown또는needs_evidence사유가 아니다. - Plan과 routing은 구현 검증을 실행하지 않는다. 이 스킬은 canonical filename 계산 script만 실행한다.
- Build가 검증과 출력 기록을 맡고, review가 evidence를 확인하며 review scope에 필요한 명령을 재실행한다.
실행 절차
-
평가 상태 초기화
- 호출할 때마다 각 target을
unrouted로 시작한다. isolated-reassessment는 이전 lane/grade/score/rationale/preferred route를 입력에서 제외하고, 현재 미해결 Required/Suggested, 영향 경로, 검증, 소유권, 결정 상태로 재구성한 중립 snapshot만 평가한다.isolated-reassessment는 plan 역할 안의 라우팅 재평가다. 별도 routing model은 필요 없으며 plan/build/review의 서로 다른 모델 조건은 그대로 유지한다.- 이전 lane/G를 승계하거나 하한으로 사용하지 않는다.
- 실패 횟수, Required 개수, 이전 G 등급만으로 cloud 또는 상위 G를 선택하지 않는다.
- 실패는 자동 승격 조건이 아니라 현재 증거에 추가되는 판정 무효화 사건으로만 취급한다.
- 새 결과가 확정되기 전에는 이전 평가와 비교하지 않는다. 감사용 비교가 요청된 경우에만 호출자가 routed 출력 이후 delta를 기록한다.
- 호출할 때마다 각 target을
-
폐쇄성 평가
- 각 target을 bounded local execution으로 완료·판정할 수 있는지를 기준으로 아래 값을
true,false,unknown중 하나로 독립 판정하고 근거를 한 줄로 기록한다.scope_closed: 정확성 조건과 영향 경로가 확정된 범위 안에서 설명되는가context_closed: 중요한 증거를 생략하지 않고 필요한 컨텍스트를 함께 다룰 수 있는가- 계획 분석 결과, 해당 target을 수행하는 동안 긴 컨텍스트를 유지해야 한다고 판단되면
context_closed=false로 판정한다.
- 계획 분석 결과, 해당 target을 수행하는 동안 긴 컨텍스트를 유지해야 한다고 판단되면
verification_closed: 계획된 명령과 관찰로 build/review가 성공 여부를 결정적으로 증명할 수 있는가evidence_trusted: 검증 경로와 evidence 출처가 구체적이고 재현 가능한가. 최초 plan에서는 실행 전 검증 설계의 신뢰성을 평가하며 PASS 출력은 요구하지 않는다.ownership_closed: 공유 상태, 병행 작업, 외부 소유권이 판단을 모호하게 만들지 않는가decision_closed: 사용자 권한이나 미해결 외부 의미 결정 없이 작업을 완료할 수 있는가- active review follow-up에서는 유효한 Milestone-lock 결정만
false의 terminal gate가 될 수 있다. 환경, permission, secret, service, evidence 한계는 해결 완료 여부가 아니라 blocker 확인·해제 조건·재검증이 계획 가능한지를 평가한다.
- active review follow-up에서는 유효한 Milestone-lock 결정만
- 동시성, dirty worktree, 외부 명령, 많은 finding은 그 자체로 lane을 결정하지 않는다. 위 폐쇄성에 미치는 영향만 평가한다.
- 각 target을 bounded local execution으로 완료·판정할 수 있는지를 기준으로 아래 값을
-
판정 가능성 확인
- 하나라도
unknown이면status: needs_evidence와 필요한 정적 planning evidence를 반환한다. 실행 전 PASS 출력 부재는unknown사유가 아니다. lane, grade, filename은 반환하지 않는다. - first-pass에서 하나 이상의 값이
false이고 cloud의 더 넓은 컨텍스트나 진단도 그 폐쇄 실패를 해소할 수 없으면status: blocked, 폐쇄 실패별blocked_reason, 해제 조건을 반환한다. 이 상태는 routed pair가 생성되기 전의 loop-entry 거절이며, active loop의 terminal state가 아니다. - active code-review의
isolated-reassessment에서는 유효한 Milestone-lock 결정이 이미 code-review의USER_REVIEW.mdgate로 분기되어야 한다. 그 외 환경, permission, secret, service, ownership, verification 제한은 blocker 증거·결정적 해제 조건·재검증을 포함하는 follow-up으로 평가하고blocked를 반환하지 않는다. - 호출자는
needs_evidence를 cloud로 해석하지 말고 정적 planning evidence를 보강한 뒤 이 스킬을 처음부터 다시 실행한다. routing을 위해 구현 검증을 실행하지 않는다.
- 하나라도
-
Lane 결정
- 모든 폐쇄성이
true인 target만local로 정한다. unknown이 없고 하나 이상의 폐쇄성이false이며 cloud의 더 넓은 컨텍스트나 진단이 그 실패를 실제로 해소할 수 있을 때cloud로 정한다.false를 cloud가 해소할 수 있는지 근거를 기록한다. 해소 가능성을 설명할 수 없는 first-pass target만 Step 3의blocked를 반환한다. Active code-review의isolated-reassessment에서는blocked를 반환하지 말고, 유효한 Milestone-lock 결정은 code-review의USER_REVIEW.mdgate로 돌려보내며 그 외 제한은 blocker 증거·결정적 해제 조건·재검증을 수행하는 bounded follow-up scope로 재구성한 뒤 폐쇄성을 다시 평가한다.- 실패 후에도 현재 폐쇄성이 모두
true이면 다시local을 선택할 수 있다. - lane은 capability fit이며 작업량이나 모델 사용량 균형을 위한 값이 아니다.
- 모든 폐쇄성이
-
G 등급 재산정
- lane을 정한 뒤에만 각 target을 아래 다섯 차원에서
0,1,2로 처음부터 채점한다.scope_coupling:0단일 국소 변경 /1여러 연결 지점 /2다중 모듈·계약state_concurrency:0무상태 /1상태 전이 /2공유 상태·순서·동시성blast_irreversibility:0내부 가역 /1다중 호출자·설정·지속 상태 /2외부 계약·권한·비가역 영향evidence_diagnosis:0직접 증거 /1복수 증거 조합 /2충돌·불신 증거 진단verification_complexity:0단일 결정 명령 /1복수 단계·통합 검증 /2외부·상호작용·장시간 검증
- grade는
max(1, 다섯 점수의 합)이며 유효 범위는G01부터G10이다. - 이전 grade, 실패 횟수, lane 변경은 점수에 더하지 않는다.
- lane을 정한 뒤에만 각 target을 아래 다섯 차원에서
-
파일명 확정
-
각 target에 대해 다음 명령을 실행하고 stdout의 grade와 filename을 그대로 사용한다.
agent-ops/skills/common/finalize-task-routing/scripts/finalize-task-route.sh \ <build|review> <local|cloud> \ <scope_coupling> <state_concurrency> <blast_irreversibility> \ <evidence_diagnosis> <verification_complexity> -
모델이 점수 합산, zero-padding, prefix 조합을 직접 계산하지 않는다.
-
두 target은 같은 lane/G를 복사하지 말고 각자의 실행 범위로 독립 평가한다.
-
모든 요청 target이
routed일 때만 filename을 반환한다. -
결과 확정 뒤 scope, 검증, 증거, 소유권, 결정 조건이 달라지면 결과를 무효화하고 Step 1부터 다시 실행한다.
-
라우팅 결과 확인
- 모든 요청 target에 여섯 폐쇄성 값과 현재 증거 근거가 있는가
- 재평가가
isolated-reassessment로 실행되었고 새 결과를 확정하기 전에 이전 lane/grade/score/rationale를 입력·하한·비교 기준으로 사용하지 않았는가 unknown또는blocked상태에서 lane/G/filename을 만들지 않았는가- 이전 lane/G, 실패 횟수, finding 개수를 승계하거나 자동 승격 근거로 사용하지 않았는가
- lane을 먼저 정하고 G 등급을 별도 차원 점수로 산정했는가
- 각 target에 formatter script를 실행했고 grade와 filename을 stdout 그대로 사용했는가
- build/review filename이 target별 formatter 결과와 정확히 일치하는가
- plan/build/review model identity 분리 조건을 runtime handoff에 남겼는가
- 확인 실패 시 결과를
unrouted로 폐기하고 누락된 정적 planning evidence부터 보강한 뒤 전체 평가를 다시 수행한다.
출력 형식
status: routed | needs_evidence | blocked
evaluation_mode: first-pass | isolated-reassessment
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: "<current evidence>"
context_closed: "<current evidence>"
verification_closed: "<current evidence>"
evidence_trusted: "<current evidence>"
ownership_closed: "<current evidence>"
decision_closed: "<current evidence>"
lane: local
grade_scores:
scope_coupling: 1
state_concurrency: 1
blast_irreversibility: 1
evidence_diagnosis: 0
verification_complexity: 1
grade: G04
filename: PLAN-local-G04.md
review:
closures:
scope_closed: true
context_closed: false
verification_closed: true
evidence_trusted: false
ownership_closed: true
decision_closed: true
closure_basis:
scope_closed: "<current evidence>"
context_closed: "<current evidence>"
verification_closed: "<current evidence>"
evidence_trusted: "<current evidence>"
ownership_closed: "<current evidence>"
decision_closed: "<current evidence>"
lane: cloud
grade_scores:
scope_coupling: 1
state_concurrency: 1
blast_irreversibility: 1
evidence_diagnosis: 2
verification_complexity: 1
grade: G06
filename: CODE_REVIEW-cloud-G06.md
missing_evidence: []
blocked_reason: null
needs_evidence 또는 blocked에서는 해당 target의 lane, grade_scores, grade, filename을 null로 둔다.
금지 사항
- 이전 lane/G를 기본값, 최소값, 비교 기준으로 사용하지 않는다.
isolated-reassessment에 별도 routing model을 요구하거나, 이를 근거로 한 모델이 plan/build/review 중 둘 이상을 맡게 하지 않는다.- active review follow-up에서
USER_REVIEW.mdgate가 아닌 blocker를 사용자 질문이나blockedterminal로 바꾸지 않는다. - 기존 평가가 있다는 이유로 같은 호출에서 재평가하는 것을 금지하지 않는다. 다만 이전 lane/grade/score/rationale/preferred route를 재평가 입력이나 하한으로 사용하지 않는다.
- local 실패를 이유로 cloud로 자동 승격하지 않는다.
- 높은 local G로 cloud에 필요한 컨텍스트나 판단을 보상하지 않는다.
- 파일 수, 동시성, dirty 상태, Required 개수 같은 단일 휴리스틱으로 lane을 정하지 않는다.
- grade나 filename을 formatter script 출력과 다르게 수작업으로 만들지 않는다.
needs_evidence를cloud로 치환하거나 미완성 상태에서 routed filename을 만들지 않는다.- 실행 전 PASS evidence를 요구하거나 routing 중 구현 검증 명령을 실행하지 않는다.
- PLAN, CODE_REVIEW, archive, complete.log 파일을 직접 생성·수정·이동하지 않는다.
- 이 routing 스킬은 다음 역할을 시작하지 않는다. 호출 runtime은 handoff 후 반드시 다른 model identity를 배정한다.