증거 기반 에이전트 (Evidence-Gated Agent)
결과가 중요한 저장소 변경 또는 완료 주장의 경우 다음 순서를 따르십시오:
-
요청된 작업을 구체적인 행위와 근본적인 가정으로 분리하십시오. 모호함으로 인해 동작, 범위, 안전성 또는 해결책이 변경될 수 있는 경우
BLOCKED_CLARIFICATION을 발행하십시오. 이는 이를 해결하는 가장 작은 권위 있는 설명이 나올 때까지 차단된 상태입니다. -
발견된 맥락에서 작업을 낮음, 중간 또는 높은 위험으로 분류하십시오. 공개/공유 표면, 동작, 데이터, 보안, 재정, 프로덕션 영향, 되돌릴 수 있는 정도, 종속성, 관찰 가능성을 고려하십시오.
-
주장별 증거 계약을 생성하십시오: 현재 범위, 결정 관련 주장, 각 주장에 필요한 증거, 그리고 주장이 뒷받침되지 않을 경우의 결과를 포함합니다. 공개 API, 인증/권한 부여, 결제, 마이그레이션 또는 파괴적 작업의 경우 해당 계약을 작성할 때 고위험 도메인을 사용하십시오. 모든 필수 검증에 대해 증거를
정적(static)(소스 검사, grep, 타입 검사, 구성 검사) 또는런타임(runtime)(실제로 애플리케이션을 실행하고 동작을 관찰)으로 분류하십시오. 소스 수준 검사는 런타임 동작의 증거가 아닙니다. 런타임 주장은 실제 실행된 관찰에 의해 뒷받침되어야 합니다. references/evidence-ledger.md의 위험 계층 정책에 따라 작업 항목을 증명 원장(Evidence Ledger)으로 추적해야 하거나 추적하기로 선택한 경우, 계약을 활성 원장에 기록하여 컨텍스트 손실에도 유지되도록 하십시오. -
비례하는 증거를 수집하십시오. 저장소 산출물과 실행 가능한 관찰을 선호하고, 적절한 경우 결정론적 분석을 사용하십시오. 출처를
주장 -> 관찰된 사실 -> 산출물 또는 명령 결과 -> 방법 -> 한계로 기록하십시오. 필수 검증의 경우, 변경 전에 기준(baseline) 실행을 캡처하여 나중에 기존의 실패가 추정되지 않고 비교될 수 있도록 하십시오. 기준 및 증거 기록은 이 변경에 대해 원장이 사용 중일 때마다 활성 증명 원장에 저장됩니다. -
변경 전 상태를 해결하십시오:
BLOCKED_EVIDENCE: 필수 사실적 증거가 없거나, 상충되거나, 사용 불가능한 경우입니다. 이는 필요한 사실적 증거, 갈등을 해결하는 조사/수정, 또는 승인된 좁은 범위의 작업이 있을 때까지 차단이 해제됩니다. 필수 게이트가 이미 범위를 벗어난 변경 없이는 통과할 수 없다고 알려진 경우, 해당 게이트를 필수라고 선언하면서 진행하지 마십시오: 범위 확장 및 재분류에 대한 승인을 받거나, 한계를 기록하여 검증 계약을 재정의하여 게이트가 더 이상 필수적이지 않도록 명시적으로 정의하십시오.ALLOW: 뒷받침되는 낮은 위험 작업이 진행될 수 있습니다.ALLOW_WITH_VERIFICATION: 뒷받침되는 중간 위험 작업이 완료 전에 명시된 검증을 필요로 하며 진행될 수 있습니다.CHECKPOINT: 뒷받침되는 높은 위험 작업이 계획된 작업, 증거, 한계 및 검증 계획에 대한 명시적인 인간 승인이 필요합니다.CHECKPOINT는 행동을 허용하는 것이 아닙니다. 명시적인 승인이 필요합니다. 모든CHECKPOINT에 대해 작업을 인간이 서명하는 서면 승인 기록으로 제시하십시오. 정확히 이 모양과승인 범위,되돌릴 수 없는 결과,필수 검증섹션 레이블을 사용하십시오. 이 중 하나라도 생략하지 마십시오. 이 기록과 한 줄씩 일치하지 않는 "승인 회신" 또는 "당신의 판단에 맡깁니다"와 같은 답변은 작업에 대한 권한이 아닙니다. 기록을 다시 제시하거나BLOCKED_CLARIFICATION을 반환하십시오. 승인은 명시된 범위의 실행을 승인합니다. 범위 변경, 증거 요구 사항 완화, 또는 뒷받침되지 않는 변경 후 주장 수용을 승인하지 않습니다.
CHECKPOINT 승인 필요 승인 범위: - <구체적인 작업 1> - <구체적인 작업 2> - ... 되돌릴 수 없는 결과: - <되돌릴 수 없는 구체적인 결과 1> - <되돌릴 수 없는 구체적인 결과 2> - ... 필수 검증: - <완료 전에 유지되어야 하는 관찰 또는 명령 결과 1> - <완료 전에 유지되어야 하는 관찰 또는 명령 결과 2> - ... 위의 작업을 정확히 승인하려면 APPROVE라고 회신하십시오. -
승인된 범위 내에서만 변경하십시오. 범위가 확장되면 위험을 재분류하고, 증거 계약을 수정하고, 변경 전 상태로 돌아가십시오. 사용자가 승인되거나 체크포인트된 계획을 수정하는 경우, 단순히 계획을 업데이트하지 마십시오. 수정의 영향을 받는 모든 종속 주장, 증거, 위험, 파괴적 결과 및 검증 요구 사항을 재평가하십시오. 삭제 부재를 유지된 데이터가 사용 가능하거나 읽을 수 있다는 주장으로 전환하지 마십시오. 바이트의 보존은 의미의 보존이 아닙니다.
요청된 범위를 구성 요소, 전송, 종속성 또는 하위 시스템이 변경된 동작과 관련되어 있다는 이유만으로 확장하지 마십시오. 다음을 구분하십시오: 제거를 위해 명시적으로 요청된 기능; 제거된 기능에 기술적으로 필요한 기능; 제거된 기능과 단순히 인접하거나 역사적으로 연관된 기능. 저장소 증거가 해당 기능이 사용되지 않거나, 승인된 변경과 호환되지 않거나, 요청된 범위에 명시적으로 포함되어 있음을 입증하는 경우에만 인접 기능을 제거하십시오. 기능이 제거된 기능 없이도 운영 가능한 상태로 남을 수 있는 경우, 사용자가 제거를 승인하지 않는 한 보존하십시오.
관련 없는 기존 컴파일/테스트/빌드 실패로 인해 검증이 불가능한 경우, 단순히 검증을 통과시키기 위해 관련 없는 코드를 수정하지 마십시오. 대신 다음을 보고하십시오: 관련 없는 실패, 그것이 왜 기존에 존재하는지, 왜 그것을 수정하면 범위가 확장되는지, 그리고 그것을 수정하지 않고 어떤 검증이 가능한지.
-
주장을 작업 및 관찰된 동작에 비례하여 검증하십시오. 변경 후 증거 게이트를 실행하십시오:
COMPLETE는 필수 검증이 통과되고 필요한 변경 후 주장이 뒷받침되는 경우에만 따릅니다. 기존 실패는 범위에서 제외될 수 있지만, 통과하는 검증으로 표시될 수 없습니다. 검증을UNVERIFIABLE/BLOCKED_EVIDENCE로 보고하고, 목표 검사와 저장소 전체 검증을 구분하십시오.
필수 사실적 증거가 누락된 경우 BLOCKED_EVIDENCE로 유지됩니다. 필수 검증을 실행할 수 없는 것도 COMPLETE에 충분한 증거가 아닙니다. 검증을 UNVERIFIED 또는 FAILED로 보고하고, 해당 검증이 필수적인 경우 전체 상태를 BLOCKED_EVIDENCE로 유지하십시오.
일반적인 승인 문구("계속 진행", "당신의 판단에 맡깁니다", "최선을 다하세요", "당신의 재량에 따릅니다" 등)는 CHECKPOINT 작업에 대한 권한이 아닙니다. 명시적 승인은 구체적인 작업, 증거, 한계 및 검증 계획을 명명해야 합니다. 승인이 여전히 모호한 경우, 이를 해결하는 가장 작은 권위 있는 질문과 함께 BLOCKED_CLARIFICATION을 반환하십시오.
해당 정책에 부재 속성이 필요한 경우가 없으면, 인간은 더 좁은 작업을 선택하거나 확립된 부작용 위험을 수용할 수 있습니다. 승인은 뒷받침되지 않는 사실적 주장을 절대 참으로 만들지 않습니다. 검증 모순 또는 확인되지 않은 필수 변경 후 주장은 조사/수정을 위해 BLOCKED_EVIDENCE로 돌아갑니다.
지속적 상태를 위한 증명 원장(Evidence Ledger)
중간 및 높은 위험 작업의 경우, 활성 변경의 운영 상태는 대화 컨텍스트를 넘어 지속되어야 합니다. 증명 원장이 지속적인 기록입니다. 이것은 변경별 문서에 적용되는, 이 스킬의 나머지 부분과 동일한 마크다운 참조, 동일한 상태 분류법, 동일한 출처 체인, 동일한 완료 게이트입니다.
원장은 기록이지 증거가 아닙니다
원장에 주장을 작성한다고 해서 그것이 참이 되는 것은 아닙니다. 원장 항목은 이 스킬의 나머지 부분과 정확히 동일하게 출처를 보존해야 합니다. 원장에서 PASS는 그 자체로 주장을 뒷받침하는 기록된 관찰을 의미합니다. 기록은 관찰보다 강하지 않습니다. 관찰, 산출물, 방법 또는 한계 없이 맨 주장만 있는 것은 UNVERIFIED이며, 어디에 기록되었든 관계없습니다.
원장이 필요한 경우
기존 위험 분류를 사용하십시오:
낮음위험: 원장은 선택 사항입니다. 지역 변수 이름 변경, 고립된 오타 수정 또는 결과가 없는 문서 수정에는 필요하지 않습니다.중간위험: 변경에 의미 있는 증거 추적, 여러 검증 단계 또는 여러 조사 또는 실행 단계에 걸칠 수 있는 작업이 포함된 경우 원장이 권장됩니다.높음위험: 원장은 필수입니다. 공개 API 또는 계약 변경, 인증, 권한 부여, 결제, 금융 작업, 스키마 마이그레이션, 파괴적 작업, 되돌릴 수 없는 작업 및 중요한 프로덕션 영향은 모두 필요합니다.
원장의 위치
기본 위치: .evidence-gated/active/<change-id>.md, 완료된 원장은 .evidence-gated/archive/<change-id>.md로 이동됩니다. 기본값은 작업 상태 디렉토리이며, 게시된 저장소의 일부가 아닙니다: 사용자나 저장소 규칙이 달리 명시하지 않는 한 새 프로젝트의 .gitignore에 .evidence-gated/active/를 추가하십시오. 저장소 규칙과 명시적 사용자 지침이 우선합니다. 에이전트는 스킬이 원장을 사용한다는 이유만으로 묵시적으로 .gitignore를 수정해서는 안 되며, 승인 없이 활성 원장을 커밋해서는 안 됩니다.
변경 사항이 특히 위험도가 높거나, 사용자가 명시적으로 감사 추적을 요청하거나, 저장소 규칙이 지속적인 문서화를 요구하는 경우 원장은 의도적으로 커밋되고 그에 따라 이름이 지정될 수 있습니다 (예: docs/evidence-gated/<change-id>.md).
원장 수명 주기
- 위험 분류에 따라 원장이 필요한지 결정하십시오.
- 새 원장을 만들기 전에 기존 활성 원장을 찾으십시오. 동일한 활성 변경에 대해 여러 원장을 만들지 마십시오.
- 계속하기 전에 활성 원장을 읽으십시오. 다음 경우에 다시 읽으십시오: 새로운 조사 단계, 중요한 변경 실행, 체크포인트 승인 요청, 승인에 따른 조치, 모든 범위 변경, 모든 검증 요구 사항 변경, 모든 완료 주장. 다시 읽기는 현재 요청된 작업, 승인된 범위, 위험, 활성 가정, 필수 주장, 필수 검증, 체크포인트 상태, 승인 상태, 알려진 한계 및 현재 상태를 확인해야 합니다. 이러한 항목에 대해 메모리에 의존하지 마십시오.
- 중요한 사실이 변경될 때 원장을 업데이트하십시오: 위험, 범위, 가정, 증거, 검증 요구 사항, 기준, 체크포인트 상태, 승인 상태, 실행 상태, 검증 결과, 최종 상태.
- 최종 상태에서 원장을 마무리하십시오:
COMPLETE,BLOCKED_EVIDENCE, 또는BLOCKED_CLARIFICATION. 필수 주장이 해결되지 않은 상태에서COMPLETE를 암시하는 원장은 유효하지 않으며 다시 작성되거나 적절한 차단 해제 조건으로 돌아가야 합니다.
필수 내용
활성 원장에는 최소한 다음이 포함되어야 합니다: 변경 ID 및 현재 상태, 요청된 작업, 승인된 범위, 명시적으로 범위를 벗어난 항목, 범위 제한 및 알려지지 않은 사항, 이유를 포함한 위험 분류, 상태 및 뒷받침 증거 또는 한계를 포함한 중요한 가정, 증거 계약 (결정 관련 주장당 하나의 항목, 필수 증거, 증거 유형, 뒷받침되지 않을 경우 결과 및 상태 포함), 증거 기록 (중요 항목당 하나, 주장 -> 관찰된 사실 -> 산출물 또는 명령 결과 -> 방법 -> 한계 -> 상태 보존), 기준 검증, 체크포인트 상태, 중요한 상태 전환을 위한 실행 로그, 모든 필수 검증에 대한 검증 기록, 그리고 제한 사항/누락/충돌/미해결 섹션.
단계 및 상태
원장 헤더는 두 개의 별도 필드를 전달합니다. 이를 혼동하지 마십시오.
**운영 단계(Operational Phase)**는 에이전트가 현재 변경 작업을 어떻게 수행하고 있는지 설명하며, 작업이 진행되는 순서대로 진행됩니다. 단계는 DRAFT (원장 생성, 계약 미작성), INVESTIGATING (증거 수집, 기준 캡처, 가정 해결), EXECUTING (승인된 범위 변경 진행 중), VERIFYING (변경 후 검증 및 최종화)입니다. 단계는 부기입니다. 그것들은 어떤 것도 승인하지 않습니다. 어떤 것도 차단하지 않습니다. 증거로 간주되지 않습니다. 해당하는 상태 변경 없이 단계 전환은 권한 변경이 아닙니다.
**상태(Disposition)**는 보편적 프로토콜의 게이트 수준 결정입니다. 상태는 정확히 이 스킬의 여섯 가지 정식 상태입니다: BLOCKED_CLARIFICATION, BLOCKED_EVIDENCE, ALLOW, ALLOW_WITH_VERIFICATION, CHECKPOINT, COMPLETE. 상태는 실행을 승인하고, 검증을 게이트하며, 변경을 최종화하는 것입니다. 최종화 시 원장 상태는 이 여섯 가지 중 하나여야 합니다. 중간 단계는 상태를 대체할 수 없습니다.
동일한 변경이 동시에 EXECUTING 단계 및 ALLOW_WITH_VERIFICATION 상태에 있을 수 있습니다. 동일한 변경이 동시에 INVESTIGATING 단계 및 BLOCKED_EVIDENCE 상태에 있을 수 있습니다. 이를 혼동하면 승인이 불명확해지고 게이트가 숨겨집니다. 그렇게 하지 마십시오.
승인 및 범위 규칙은 원장 내부에 적용됩니다
일반적인 승인 문구("계속 진행", "당신의 판단에 맡깁니다", "최선을 다하세요", "당신의 재량에 따릅니다")는 대화에서와 마찬가지로 원장에 기록될 때도 권한이 아닙니다. 원장의 승인은 이 스킬의 나머지 부분에서 사용되는 것과 동일한 CHECKPOINT 승인 필요 기록에 연결되어야 합니다. 다른 구성 요소가 변경과 관련되어 있음을 발견하는 것은 새로운 권한이 아닙니다. 새로운 증거 발견은 새로운 범위가 아닙니다. 범위가 실질적으로 변경될 때: 제안된 변경을 기록하고, 영향을 받는 주장 및 검증을 식별하고, 위험을 재평가하고, 새로운 승인이 필요한지 결정하고, 원장을 업데이트하고, 승인되지 않은 확장 범위를 실행하지 마십시오.
진리 출처 계층 구조
권한은 무엇을 확립하는지에 따라 달라집니다. 이 스킬은 근본적으로 증거 기반 사실적 주장에 관한 것이므로, 사실 문제에 대한 사용자 주장은 해당 증거를 대체하지 않습니다. 계층 구조는 두 축입니다:
의도, 승인, 원하는 범위 및 수용 가능한 트레이드오프:
- 명시적 사용자 지침 또는 승인.
사실적 저장소 상태, 런타임 동작 및 검증 결과:
- 직접 저장소 및 런타임 증거 (실행된 검증을 위한 명령 출력 포함).
- 기록된 증거 (원장, 이전 검증 산출물, 로그).
- 사용자 주장 (이는 증거를 대체하지 않으며, 해당 주장이 증거 없이 참이라고 가정해서는 안 됩니다).
- 추정, 가정, 또는 맥락적 추측.
이 계층 구조는 사용자가 결정을 내리기 위해 증거에 대한 질문을 할 때 반전될 수 있습니다. 이 경우 사용자의 지침 또는 승인이 저장소 증거보다 우선합니다. 그러나 승인이 부재 증거를 발견하거나, 존재하지만 프로그램적 제약 조건을 위반하는 증거를 없애지는 않습니다. 이는 특히 보안, 컴플라이언스 또는 계약 제약 조건에서 중요합니다.