알려진 제한 사항 — 통합 NOT_VERIFIED / BLOCKED 레지스터
읽기 안내
이 문서는 미검증·차단·설계 전용·수용한 한계를 모아둔 기준 자료입니다. 출시 준비나 보안 보장을 설명하기 전에 확인하세요.
각 항목의 검증 환경과 근거를 살펴보세요. NOT_VERIFIED는 FAILED와 다른 상태입니다.
범위: 검증된 베이스
9798ed8da870753c821b6a819fac3486a04825e6에서 플랫폼 전반의 모든 알려진 제한, 잔여 발견, 미검증 클레임(p4 배터리는 미머지 워크트리 문서에서 인용, 2026-11-04 실행). 라벨:NOT_IMPLEMENTED·NOT_VERIFIED(존재, 명시된 범위에서 실행된 증거 없음) ·BLOCKED(외부 의존성 누락) ·ACCEPTED(문서화된 잔여 리스크, 이 수준에서 수정 계획 없음) ·DESIGNED(계약만).이 파일의 어떤 것도 마케팅, 문서, ToS에서 능력 클레임으로 바꿔 말할 수 없습니다.
1. 검증 갭 (존재하지만 명시된 범위에서 미입증)
| # | 항목 | 라벨 | 상세 / 증거 경계 |
|---|---|---|---|
| 1.1 | 규모에서의 멀티 인스턴스 D1 | NOT_VERIFIED | RT-REL-04는 하나의 로컬 D1을 공유하는 정확히 2개의 wrangler dev 인스턴스를 실행 — dedup은 정확히 1을 유지했지만 패배 인스턴스는 clean 409가 아닌 **500(sqlite 경합)**을 표면화(F-04). N>2 인스턴스, 원격 D1, 실제 동시성 분포에서의 동작은 미검토. |
| 1.2 | OUTBOX_SINK_URL 종단간 전달 | NOT_VERIFIED | deliver_event 코드 경로가 존재(checkout_impl.rs:269)하고 {id,topic,payload,attempts,created_at} JSON을 POST하지만, 모든 실행된 테스트는 sink 미설정으로 실행 → consumer:none dead-letter. 실제 2xx 전달, 5xx 재시도, sink 장애를 관찰한 테스트 없음. |
| 1.3 | 보안 플레인의 배포된 staging/prod 동작 | NOT_VERIFIED | LICENSE_SECURITY_ENABLED가 wrangler.toml에 부재 — 배포된 어디에서든 PoP 엔드포인트 404. 모든 PoP 증거는 루프백. 배포된 worker에 대한 클레임 없음. |
| 1.4 | 원격 D1 / 프로덕션 데이터 | NOT_VERIFIED | 마이그레이션 001–017은 로컬 miniflare sqlite에서만 검증됨. 원격 D1 적용, 레이턴시, 멀티 리전 동작 미실행(어차피 charter 게이트됨). |
| 1.5 | 배포에서의 cron | NOT_VERIFIED | */5 outbox 디스패치 + prune_expired는 라이브 miniflare cron 호출로 검증됨(RT-REL-03) — 배포된 스케줄에서는 한 번도 없음. |
| 1.6 | 실제 계정에 대한 JWT 경로 | NOT_VERIFIED | 실행된 테스트는 dev-auth 아이덴티티(x-dev-user) 사용. verify_token_db 경로(DB 재검사, token_version, act-as 가드)는 이 wave에서 실제 발급 토큰에 대한 실행된 종단간 증거가 없음 — 레드팀 auth 레그는 사용자 JWT 로그인이 아닌 PoP/entitlement auth 경로를 실행. |
| 1.7 | Worker CPU/레이턴시 측정 | NOT_MEASURED | Axum be/ 성능 베이스라인만 존재(docs/perf-baseline.md) — 다른 스택, 이전되지 않음. unit-economics-cost-model.md §2 참조. |
| 1.8 | CI에서의 셀러 운영 e2e | NOT_VERIFIED (CI에서) | seller-ops.spec.ts는 durable read API 필요; CI e2e 잡은 이를 갖지 않은 Axum be/를 실행 → 스펙은 설계상 자체 스킵(프로브 게이트, 거짓 PASS 없음). 로컬 wrangler dev에 대해서만 실행됨. |
| 1.9 | 크로스 세션 entitlement 리플레이 (track-b) | NOT_VERIFIED | evidence/cross-track-report.md / trust-model §3에 기록된 잔여물. |
| 1.10 | 이메일 전달 | charter에 의해 NOT_IMPLEMENTED | mock 이메일 어댑터만(charter §0 규칙 5). 프로바이더 없음. |
2. 외부 의존성에 블로킹
| # | 항목 | 라벨 | 해제 조건 |
|---|---|---|---|
| 2.1 | 실제 PG 샌드박스 왕복 | BLOCKED_EXTERNAL_CREDENTIALS | Toss live 모드 또는 샌드박스 자격 증명 + 명시적 승인. 오늘: TEST 키 전용 어댑터, 모든 재조회는 127.0.0.1:8799 스텁; PAYMENT_LIVE_ENABLED=false; Portone 503 PAYMENT_PROVIDER_UNAVAILABLE. |
| 2.2 | 법률/개인정보 검토 | BLOCKED | data-protection-compliance.md 미해결 항목 C-1/C-2(ToS, 국경 간)에 대한 자문 검토. |
| 2.3 | 무엇이든 프로덕션 배포 | BLOCKED | Charter §0: 명시적 사용자 승인; 스테이징 우선. |
| 2.4 | 외부 고객 파일럿 | BLOCKED | 파이프라인을 실행할 의사가 있는 비작성자 셀러. |
3. 설계 전용 (실행 가능한 제품 경로 없음)
| # | 항목 | 라벨 | 노트 |
|---|---|---|---|
| 3.1 | 호스티드 실행 서비스 | DESIGNED | hosted-execution-requirements.md — 프로바이더/격리/시크릿/제한/비용 계약만. PoC experiment-h-hosted-exec은 루프백 연구(스레드 수준 격리, 컨테이너 경계 없음, 동시성 상한 없음 — 자체 §8/§9에 갭 나열). planner/capabilities.json maturity=designed. |
| 3.2 | Wire 버전 협상 | NOT_IMPLEMENTED | entitlement 클레임에 버전 필드 없음(license-crypto/src/lib.rs 클레임: iss/lic_id/product_id/features/jkt_bound/cnf.jkt/iat/exp), 계약 버전 헤더 없음, sdk/license/*에 협상 로직 없음. SDK는 Worker 대비 문서화된 상호운용 델타(iss, activatePath)가 있는 0.1.0. |
| 3.3 | 바이어 셀프 서비스 | NOT_IMPLEMENTED | 바이어 대시보드 없음; 바이어는 API로 자기 라이선스/주문을 볼 수 없음(email은 자격 증명이 아님). |
| 3.4 | 셀러 플랜/빌링 수집 | NOT_IMPLEMENTED | platform_fee_krw 발생은 정산 시 존재; 수집 경로 없음(pricing-model §1). |
| 3.5 | 빌링용 사용량 읽기 | PARTIAL | usage_counters + 읽기 API 존재; activate/capability/status/verify의 요청당 카운터 없음; BYOS 실행은 구조적으로 관찰 불가. |
| 3.6 | 보존 강제 | NOT_IMPLEMENTED | retention_class/legal_hold 컬럼만; 제거/익명화/삭제 엔드포인트 없음(compliance §4). |
| 3.7 | D1 백업/복원 | NOT_IMPLEMENTED | admin/backup은 Axum be/에만 존재(SQLite VACUUM INTO + verify); D1 측 백업 엔드포인트나 복원 훈련 없음. |
| 3.8 | Worker entitlement aud/tenant_id 클레임 | NOT_IMPLEMENTED (DEFERRED) | be-cloudflare/license-crypto는 iss/lic_id/product_id/features/jkt_bound/cnf.jkt/iat/exp만 발급 — aud 없음, tenant_id 없음(lib.rs:84-101). SDK는 tenant_id(nullable)와 선택적 aud를 발급. Worker 토큰에 추가하는 것은 wire-v2 결정으로 연기된 wire 형식 변경; d1 interface-contract-matrix.md §5에 기록. |
4. 수용된 잔여물 (문서화됨, 버그 아님)
| # | 항목 | 출처 | 경계 |
|---|---|---|---|
| 4.1 | node:vm / worker thread는 보안 경계 아님 | trust-model §2.6, runtime README | 탈출 → 동일 uid 프로세스; 호출자 금지 시크릿과 같은 곳에 두지 말 것. |
| 4.2 | BYOS 강제는 셀러가 제거 가능 | trust-model §2.1 | 구조적 — 강제는 바이어 대면 계약을 커버하고 셀러 변조 방지는 아님. |
| 4.3 | 셀러 내부 실행 미계량 | trust-model §2.2 | BYOS 사용량은 셀러 로컬(인메모리 PoC 미터링); DevPay는 호스티드 호출만 봄. |
| 4.4 | 협력 릴레이 / 아날로그 홀 | trust-model §2.3/2.4 | Capability + 미터링이 oracle을 경계; 배송된 결과는 재공유 가능. |
| 4.5 | DevPay 고유 PoP 계약 (RFC 9449 아님) | p5-sdk-contract-audit | jkt 이중 해시, htu 의미, 페이로드 jwk, 커스텀 h — 버전 계약 결정 보류(§3.2). |
| 4.6 | 키 로테이션 하드 컷오버 | p4 F-06 | kid 중복 없음; 진행 중인 entitlement는 401로 종료(120초 TTL이 영향 경계); 비행 중 클라이언트는 재활성화. |
| 4.7 | JWS typ 헤더 미강제 | p4 F-03 | 서명+클레임이 여전히 게이트; PoC 패리티, 보안 부담 아님. |
| 4.8 | location_hint.file 불활성 라벨 | p4 F-01 (Low) | 플래너 아티팩트가 공격자 선택 파일 라벨을 가질 수 있음; transform.mjs는 절대 읽지 않음 — 다운스트림 소비자는 신뢰하지 말 것. |
| 4.9 | Dev 아이덴티티 패리티 갭 | p4 F-02 | dev 종류는 kind=="user" 게이트 목록에서 401을 받지만 스코프 읽기 API는 수용 — fail-closed, 노출 없음. |
| 4.10 | 레이트 리미팅은 /auth/login에만 | p4 F-05, auth_impl.rs:334 | 5회 실패→5분 잠금, 이메일당. 나머지(공개 licenses/verify 포함)는 앱 레이어에서 무제한. |
| 4.11 | 32비트 셀러 발급 라이선스 키 | product-contract KNOWN_LIMITATION | POST /licenses의 NG-{4hex}-{4hex} — 공개 verify로 열거 가능(구매 키는 128비트). |
| 4.12 | NODE_OPTIONS가 트레이스된 드라이버에 전파 | analyzer/dynamic.mjs:33 | 자식 env 허용 목록이 NODE_[A-Z_]+를 통과 — 주변 NODE_OPTIONS(예: --require)가 트레이스된 드라이버에 도달. 드라이버는 작성자 제공이므로 영향 경계됨; 파티션 워커는 의도적으로 이를 드롭(다른 허용 목록). |
| 4.13 | CI 액션이 태그 고정, SHA 고정 아님 | yetdapay.yml 헤더 노트 | @v4/@stable이 LOW로 수용됨; SHA 고정 + Dependabot은 향후 강화. |
| 4.14 | 대사 자동 수정 범위 | durable-authority §recon | 오래된 클레임/상태 정규화만 자동 수정; 돈/entitlement findings는 needs_review 유지 — SLA/담당자 없는 수동 해결. |
| 4.15 | needs_review 스위퍼 없음 | refund_impl / recon | needs_review 환불 시도와 recon findings에 스케줄된 해결 잡 없음 — 수동 운영만. |
5. 의도적 제외 (product-scope §4)
보편적 자동 보호 없음(안전 서브셋만) · 호스티드 실행 GA 없음 · 에스크로/마켓플레이스 자금 보유 없음 · 절대적 클론 방지 없음 · 네이티브 모바일/데스크톱 SDK 없음 · 실제 PG 캡처 없음 · 실제 이메일 없음.
6. 레지스터 유지보수
이 파일이 단일 통합 레지스터입니다. 발견이 수정되면 구현 wave의 리포트로 이동하고 여기에 주석 — 히스토리를 삭제하지 마세요. NOT_VERIFIED 항목이 실행된 증거를 얻으면 implementation-status.md에서 승격하고 실행을 인용하세요.