Skip to content

feat(skills): fleet-skills intake A2A review gate (skills.skill-intake-review.v1) #2007

Description

@jinon86

배경

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개는 컨텍스트 판정로 충분)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions