AI PR의 CI 검증을 위한 재현 가능한 증거 필요
Source: Dev.to
CI 게이트가 AI 생성 PR을 표시할 때, 중요한 질문은 단순히 “무엇이 표시됐는가?”가 아니라 다음과 같습니다: “다른 사람이 나중에 이 결과가 발생한 이유를 다시 도출할 수 있을까?”
이것이 Agent Gate v0.2.1에 증거 스냅샷을 추가한 이유입니다.
Agent Gate는 AI 생성 풀 리퀘스트용 GitHub Actions입니다. LLM을 사용해 코드를 검토하지 않습니다. CI에서 결정적인 병합 증거를 확인합니다:
- PR 범위가 벗어남
- GitHub Actions 권한 상승
- AGENTS.md / .mcp.json 드리프트
- 테스트 파일 증거 누락
- 고위험 경로 변경
이 액션은 PR 코드를 체크아웃하지 않으며, 런타임에 LLM을 호출하거나 리포지토리 스크립트를 실행하지 않습니다. v0.2.0에서는 Agent Gate가 안정적인 찾는 ID를 추가했습니다. 이것은 각 결과를 짧은 감사 핸들로 제공했으며, 예시: agf_987ab9ddb8c1b299 이는 참고, 코멘트, 향후Override 워크플로우, 로그 기반 디버깅에 유용합니다. 하지만 ID만으로는 증명 자체가 아닙니다. 나중에 해당 ID를 보는 사람도 어떤 기록된 자료가 이를 생성했는지 알아야 합니다. v0.2.1은 공개된 결과를 evidenceSnapshot으로 추가합니다.
구분은 다음과 같습니다:
- findingId = 짧은 감사 핸들
- evidenceSnapshot = 해당 핸들을 생성하는 데 사용된 정규화된 자료
스냅샷은 의도적으로 평범합니다. 다음과 같은 안정적인 규칙 자료를 포함합니다:
- 규칙 ID
- 심각도
- 경로 또는 라인 (있을 경우)
- 정규화된 증거 라벨/값 쌍
타임스탬프, 보고서 순서, 위험 점수, 버전, 커밋 SHA, 가변 표시 텍스트는 포함하지 않습니다.
예시 컴팩트 로그 출력:
Agent Gate: 인간 결정 필요
결정: 경고
위험 점수: 49 / 100
원인: AI 생성 PR에는 에이전트 게이트 계약이 포함되어야 합니다.
권장 다음 단계: 범위 검사에 의존하기 전에 PR 계약을 추가하세요.
정책 상태: 오늘 경고; 튜닝 후 머지 게이트가 될 수 있습니다.결과:
- 오류 agf_be0c2c2a66312aff 계약/누락
- 오류 agf_987ab9ddb8c1b299 위험/고위험-경로 .github/workflows/agent-gate.yml
- 경고 agf_6016e753491255d7 워크플로우/위험-패턴 .github/workflows/agent-gate.yml
컴팩트 로그는 짧지만 JSON과 마크다운 보고서에는 상세한 증거가 포함됩니다.
예시 JSON 구조:
{ “findingId”: “agf_987ab9ddb8c1b299”, “ruleId”: “risk/high-risk-path”, “severity”: “error”, “path”: “.github/workflows/agent-gate.yml”, “evidenceSnapshot”: { “ruleId”: “risk/high-risk-path”, “severity”: “error”, “path”: “.github/workflows/agent-gate.yml”, “evidence”: [ { “label”: “changed_file”, “value”: “.github/workflows/agent-gate.yml” } ] } }
저에게 Findings를 경고에서 차단(블로킹)으로 전환하는 기준은 다음과 같습니다:
- 검사가 마법처럼 정확하다는 의미는 아닙니다.
- 이는 실패 모드가 보이고 재현 가능하며 조정 가능함을 의미합니다.
- 리포지토리는 경고 모드에서 시작해 유용한 결과를 관찰하고, 나중에 저노이즈 결과를 머지 게이트로 전환할 수 있습니다.
- Agent Gate는 여전히 의미적 정확성을 증명하지 않습니다.
- 테스트 파일 증거를 매칭한다고 해서 테스트가 행동을 커버한다는 증거는 아닙니다. 이는 변경 evidencia/자체 일관성 evidence입니다.
- 매니퍄러 오버라이드 스토레지는 아직 구현되지 않았습니다. 이는 다음 어려운 설계 과제일 것입니다: 누군가가 결과를 우회하면 해당 오버라이드가 영구적으로 존재하여 나중에 검토할 수 있도록 어디에 두어야 할까요?
- CODEOWNERS/리뷰어 evidence와 패키지 의존성 드리프트도 향후 작업입니다.
코딩 에이전트가 PR을 여는 리포를 유지하고 있다면, 이 증거가 observe 모드에서 유용한지 아니면 과도하게 노이즈인지에 대한 피드백을 듣고 싶습니다.
리포: https://github.com/sjh9714/Agent-Gate
공개: 저는 Agent Gate를 유지보수합니다. v0.2.1은 아직 프리릴리스 단계이며, 어떤 결과를 머지 게이트로 취급하기 전에 먼저 경고 모드에서 시작하는 것이 좋습니다.