보호 전략
핵심 요약
AUTO는 지원되는 코드의 자동 분할, AGENT는 구현 지침 전달, MANUAL_REVIEW는 자동 적용 중단을 뜻합니다.
결정 기준표를 먼저 보고 승인된 계획과 소스 해시가 일치하는지 확인한 뒤 적용하세요.
Spec이 각 에셋에 어떤 일이 일어날지를 어떻게 결정하는지 — 그리고 각 결정이 실제로 무엇을 생산하는지.
Spec 불변식 — 폐쇄 레지스트리
Spec은 폐쇄 레지스트리 experiments/auto-protection/spec/invariants.json (registry_version: 1)의 불변식 ID만 참조할 수 있습니다. 알 수 없는 ID는 검증 실패; REQUIRES_APPROVAL 마커는 예외입니다. 각 불변식은 분석기의 7개 속성 판정 중 하나(CODE_CONFIDENTIALITY, CODE_TAMPER_RESISTANCE, OFFLINE_CLONE_RESISTANCE, UNAUTHORIZED_EXECUTION_RESISTANCE, TOKEN_REPLAY_RESISTANCE, ORACLE_ABUSE_RESISTANCE, VERSION_ROLLBACK_RESISTANCE) — 또는 null — 에 매핑되고, requires_server 여부를 선언합니다(위협 모델 하에서 클라이언트 측에서 강제 불가).
등록된 불변식: unauthorized_execution_denied, fresh_input_offline_clone_denied, unauthorized_grant_denied, duplicate_consumption_denied, token_replay_denied, capability_single_use, version_rollback_denied, server_secret_custody, tenant_isolation, fail_closed_on_error — 각각 required_evidence 목록(예: e2e:unentitled-request-denied, red-team:replay)을 가지며, 검증이 이를 생산해야 합니다.
Spec 충돌 — 예: 서버 요구 불변식의 강제를 요구하면서 클라이언트 권한을 주장하는 에셋 — 은 검증 실패입니다.
결정
| 결정 | 의미 | Apply 출력 |
|---|---|---|
AUTO | 파티셔너가 이 에셋을 기계적으로 실행 가능. | 생성된 파티션 서버 + 분할된 클라이언트 + 매니페스트. |
AGENT | 에이전트 작성 작업 필요 — apply는 handoff 브리프만 작성. | 브리프; 생산된 코드 없음. |
MANUAL_REVIEW | 사람이 결정해야 함; apply는 건너뜀. | 없음. |
연산당 예상 서버 호출이 constraints.max_server_calls_per_operation을 초과하면 AUTO는 AGENT로 디그레이드됩니다 — 배칭/캐싱 설계 필요. 해결되지 않은 분석 갭으로 차단된 에셋은 MANUAL_REVIEW로 강제됩니다 (blocking_unknowns가 나열).
파티셔너가 출력하는 것 (AUTO)
- 공유
runtime/을 import하는 생성된 파티션 서버 — 루프백에서 HTTP, 분할된 함수별로 등록된 엔드포인트, 논스 게이트 증명 카운트와 (dev-open만)/api/usage. - 모듈의 공개 API를 유지하는 분할된 클라이언트.
- 매니페스트 + sha256 기록 아티팩트와
track-a-report.md.
파티셔너는 거부 우선입니다: 진정한 서버 측 키잉 스토리 없는 spec은 장식되기보다 거부됩니다 — "서버 측 키잉 없는 파티션은 장식" (spec/from-analysis.mjs 노트; CANDIDATE_FOR_PARTITION만으로는 아무것도 증명하지 않음).
생성된 서버의 인증 모드
| 모드 | 동작 | 용도 |
|---|---|---|
dev-open | 인증 없음. 옵트인, 루프백 전용. | 로컬 개발. |
yp-license | 호출당 entitlement JWS + DPoP 증명(라이선싱 wire). | 실제 보호 자세; --license-seed 필요. |
PARTITION_* env var는 설계된 user→partition 채널입니다 — 생성된 서버는 PARTITION_AUTH, PARTITION_DEV_OPEN, PARTITION_LICENSE_SEED, PARTITION_SECRET_* 등을 스스로 읽습니다( 설정 참조).
전략이 어디서 오는가
- Track A (
from-analysis.mjs): 분석기 판정당 클래스 파생 기본 불변식, 항상draft_notes에 제안됨으로 플래그 — 생성기는 분석이 뒷받침할 수 없는 불변식을 절대 자동 주장하지 않습니다. - Track B (
from-requirements.mjs): 권한, 강제, 에셋별 불변식은 항상REQUIRES_APPROVAL입니다 — 요구사항에서 파생 가능한 것이 아닌 제품+보안 결정입니다.