배경
jinwon-int/fleet-skills는 노드가 자동 학습한 스킬의 비공개 검증소다. 현재 intake PR은 사람 게이트(policies/REVIEW.md, approval.json reviewed_by)만 있다. 2026-08-28 소급 감사(ccc-node#1347)에서 스킬 사용량·품질 판단의 체계화가 확정됐고, 사람 게이트 전에 독립 에이전트 심사 게이트를 추가하기로 했다. 이건 nclex 콘텐츠 파이프라인에서 2회 완주한 검증 패턴(RRP-003 #249, PA-006 #251)을 fleet-skills로 확장하는 것이다.
선행 조사(PR-Agent, claude-code-skill-factory#8 required-check 패턴, llm-judge 편향 완화, OpenReview 루브릭 아티팩트 경고) 결론: 자체 A2A 인프라(브로커·keyring·서명 receipt) 재사용이 신뢰·비용 양면에서 우위. 저자 제척이 심사 독립성을 구조적으로 보장한다.
설계
스키마: skills.skill-intake-review.v1
packet (dispatch manifest sourceBundle):
skillFiles[] — 후보 스킬 파일(경계: 16 files / 64KiB each, 기존 상한과 일치)
inventorySnapshot[] — fleet-skills approved/ 전체의 {name, audience, description} (저자 노드 아닌 워커가 중복 판정)
machineGate — 노드 intake 게이트 6종 결과(기계 판독)
provenance — author_node, intake PR 번호/브랜치, head sha, source_tree_sha256
rubricVersion — 심사 루브릭 버정("2026-08-28.1")
verdict (워커 결과):
verdict: approve|revise|reject, findings[], evidence[](기계 재검증 가능 항목: 재현 grep, URL 상태), model, reviewer_node, head_sha
디스패치
a2a-dispatch-round.mjs 매니페스트, 레인 1개: target = keyring 등록 워커 중 저자 노드 제외 1개
- 브로커 T1(seoseo)/T2(gwakga) 기존 경로, edge secret 취급 규율 동일
워커 절차
- 워커 노드에
skills-intake-reviewer 절차 스킬(루브릭: 비밀/프라이버시, 재고 대비 중복, 주장 검증가능성, 구조 품질, 실용성 — 편향 완화: 단일 후보 심사, 구조 중심 채점, evidence 의무)
- handler 크래시 ≠ 판정: 1회 재시도 → 타 신뢰 워커 재라우팅(nclex 규율 동일)
receipt → 커밋 상태
- PASS 태스크로 receipt 구성(task_id, head_sha, reviewer_node, author_node, result) → intake PR에 게시 → fleet-skills 워크플로가 keyring 검증 후
a2a/receipts 커밋 상태를 exact-head에 투영(nclex a2a-receipts 워크플로 포팅)
- 사람 최종 서명은 유지: A2A PASS가 approval.json
reviewed_by를 대체하지 않는다. reject면 게이트 fail-closed(PR 유지, 사람 판단) — auto-close 없음.
단계 계획
작업 항목
범위 밖
- 에이전트 auto-close(사람 판단 유지), 졸업 게이트 적용(동일 패턴의 2번째 적용점, 별도 설계), 벡터 임베딩 기반 중복 탐지(재고 ~40개는 컨텍스트 판정로 충분)
배경
jinwon-int/fleet-skills는 노드가 자동 학습한 스킬의 비공개 검증소다. 현재 intake PR은 사람 게이트(
policies/REVIEW.md, approval.jsonreviewed_by)만 있다. 2026-08-28 소급 감사(ccc-node#1347)에서 스킬 사용량·품질 판단의 체계화가 확정됐고, 사람 게이트 전에 독립 에이전트 심사 게이트를 추가하기로 했다. 이건 nclex 콘텐츠 파이프라인에서 2회 완주한 검증 패턴(RRP-003 #249, PA-006 #251)을 fleet-skills로 확장하는 것이다.선행 조사(PR-Agent, claude-code-skill-factory#8 required-check 패턴, llm-judge 편향 완화, OpenReview 루브릭 아티팩트 경고) 결론: 자체 A2A 인프라(브로커·keyring·서명 receipt) 재사용이 신뢰·비용 양면에서 우위. 저자 제척이 심사 독립성을 구조적으로 보장한다.
설계
스키마:
skills.skill-intake-review.v1packet (dispatch manifest
sourceBundle):skillFiles[]— 후보 스킬 파일(경계: 16 files / 64KiB each, 기존 상한과 일치)inventorySnapshot[]— fleet-skillsapproved/전체의 {name, audience, description} (저자 노드 아닌 워커가 중복 판정)machineGate— 노드 intake 게이트 6종 결과(기계 판독)provenance— author_node, intake PR 번호/브랜치, head sha, source_tree_sha256rubricVersion— 심사 루브릭 버정("2026-08-28.1")verdict (워커 결과):
verdict: approve|revise|reject,findings[],evidence[](기계 재검증 가능 항목: 재현 grep, URL 상태),model,reviewer_node,head_sha디스패치
a2a-dispatch-round.mjs매니페스트, 레인 1개: target = keyring 등록 워커 중 저자 노드 제외 1개워커 절차
skills-intake-reviewer절차 스킬(루브릭: 비밀/프라이버시, 재고 대비 중복, 주장 검증가능성, 구조 품질, 실용성 — 편향 완화: 단일 후보 심사, 구조 중심 채점, evidence 의무)receipt → 커밋 상태
a2a/receipts커밋 상태를 exact-head에 투영(nclexa2a-receipts워크플로 포팅)reviewed_by를 대체하지 않는다. reject면 게이트 fail-closed(PR 유지, 사람 판단) — auto-close 없음.단계 계획
policies/REVIEW.md개정작업 항목
skills-intake-reviewer초안(trusted 워커 배포는 별도 승인)a2a/receipts워크플로(nclex 포팅) + policies 개정 PR범위 밖