테스트 전략 · 수용기준 · 추적성 매트릭스

03-quality/acceptance-traceability.html · LogiNippon · TRD · 2026-06-13 · 신뢰도 라벨 확인 추정 설계

이 페이지는 LogiNippon TRD의 검증(verification) 척추를 고정한다. ① 무엇을 어느 계층에서 어떻게 검증하는가(unit / integration(workerd) / e2e 테스트 전략), ② 출시 전 반드시 통과해야 하는 필수 회귀셋, ③ 측정 가능한 단계 게이트(GATE-P0/P1/P2) Definition-of-Done, ④ 모든 주요 FR/NFR/DM/IR/SR/RR ID를 요구사항 → 근거 → 구현상태 → 검증으로 잇는 마스터 추적성 매트릭스를 담는다. 이 페이지는 새 요구사항 ID를 정의하지 않는다 — 타 페이지가 소유한 ID를 참조·집계하고 검증 수단으로 매핑할 뿐이다. 모든 목표 수치는 운영 데이터 없는 진입 단계의 초기 확정치(설계)이며, 운영 베이스라인으로 분기별 조정한다 — 달성치가 아니다. 구현상태(DONE/STUB/ABSENT)는 현재 server as-built(마스터 §7)를 인용한다.

~50
server 테스트 (현행, skip 없음)
11
테스트 파일 (test/)
3
테스트 계층 (unit·integration·e2e)
5
필수 회귀셋 게이트
3
단계 게이트 (P0·P1·P2)
60+
추적성 매트릭스 행

1. 테스트 전략 — unit / integration(workerd) / e2e

검증은 3계층 피라미드로 구성한다. 각 계층은 책임이 다르고, 하위 계층이 빠르고 결정적일수록 상위 계층(느린 e2e)에 부담이 줄어든다. 전면 Cloudflare·TypeScript 스택이므로 테스트 러너는 Vitest, 통합 계층은 @cloudflare/vitest-pool-workers실제 workerd 런타임 위에서 실행한다(delivery-pipeline.md 테스트 §, server README). 확인 as-built: 현재 약 50개 테스트, 11개 파일, skip 없음(test/ — health·h3·webhook·테넌트 격리 회귀 등; 마스터 §7). 이는 검증 인프라가 갖춰져 있다는 증거이며, STUB/ABSENT 영역(아래 매트릭스)은 구현과 함께 테스트가 추가되어야 게이트를 통과한다.

계층검증 대상 (무엇을)도구·실행 환경판정 기준
Unit T 순수 로직: 이벤트 정규화·dedup_key 산출, ETA 룰 계산, dwell(荷待ち) 산출, H3 셀/링 계산(gridDisk), 웹훅 서명 생성/검증, 정밀도 매트릭스 충돌 해소. I/O는 모킹. Vitest, 인메모리, I/O 모킹. 바인딩 없이 결정적. 입력→출력 등식이 §4 정규 규칙과 일치. 경계값(분단위 내림, ±300s 윈도) 포함.
Integration T Worker + 바인딩(D1/KV/Queues/DO) 결합 경로: ingest/positions→DO→Queue→consumer→event INSERT, 지오펜스 enter/exit/dwell 히스테리시스, 테넌트 스코프 repo, ShipmentDO 복원, CSV 리포트 end-to-end. workerd / Miniflare (@cloudflare/vitest-pool-workers) — 로컬 Cloudflare 런타임 재현. 로컬 D1/KV/R2/Queues. 실제 런타임에서 바인딩 간 계약·트랜잭션·UNIQUE 제약·DO 라이프사이클이 성립. dedup·격리·서명 회귀가 여기서 고정.
E2E D T 사용자 경로: 案件 배정→위치 배치→자동 도착 이벤트→대시보드(console FleetMap) 반영→웹훅 수신→규제 리포트(荷待ち/NIMACHI CSV) 생성. 합성 클라이언트로 시나리오 재생. staging에 wrangler deploy --env staging 후 합성 시나리오 실행. prod 동형(同型) 스키마. 전 마이그레이션 적용 후 스키마가 model.md와 일치, 핵심 경로가 환경 전반에서 동작.

현행 테스트 자산을 회귀 기반으로 승격. as-built ~50 테스트(11파일)는 인증(JWT HS256·PBKDF2 100k·refresh 로테이션·ingest-token), jobs CRUD, 테넌트 격리 404, 지오펜스 enter/exit/dwell 풀 엔진, ShipmentDO, 荷待ち/NIMACHI CSV end-to-end, ingest→DO→queue→R2를 이미 커버한다(마스터 §7). 이들을 아래 필수 회귀셋으로 동결하고, STUB(웹훅 전달·ETA·실운송체제관리부·shipments 등록·웹훅 CRUD)·ABSENT(차량 위치·지오펜스 CRUD·운송사 분석·드라이버 admin·레이트리밋) 영역은 구현 시 동시에 테스트를 추가한다.

2. 필수 회귀셋 (Mandatory Regression Suite)

다음 5개 시나리오는 릴리스 차단(blocking) 회귀다 — 하나라도 실패하면 staging→prod 프로모션을 막는다(delivery-pipeline.md 테스트 §). 각 항목은 측정 가능한 Given/When/Then이며, 보안·법정 계산·데이터 무결성에 직접 닿는다. 이 페이지는 게이트를 집계할 뿐, 근거 요구사항 ID는 소유 페이지에 있다.

#회귀 시나리오Given / When / Then근거 요구사항 (소유 페이지)계층
R1 테넌트 격리 404 Given 테넌트 A의 리소스(shipment/job/report), When 테넌트 B 토큰으로 접근, Then 404(존재 누설 금지, 403 아님). 모든 스코프 라우트에 적용. SR-TENANT-001, SR-AUTHZ-001 T int
R2 dedup 멱등 (at-least-once) Given 동일 이벤트(같은 dedup_key)를 큐가 중복 전달, When consumer가 처리, Then event는 정확히 1회만 반영(D1 UNIQUE). 분단위 내림·OUTSIDE→INSIDE last_seen_at 단조 가드 정합. DM-DEDUP-001 T int
R3 웹훅 서명 라운드트립 Given 발신 페이로드, When HMAC-SHA256({timestamp}.{raw_body}) 서명 생성→수신 검증, Then 일치 시 통과·타임스탬프 윈도(±300s) 밖이면 거부(replay 방어). FR-DLV-WH-001, IR-WH-001 T unit+int
R4 지오펜스 enter/exit/dwell Given 거점 폴리곤 H3 덮개, When 위치 시퀀스가 경계 통과·플래핑, Then ENTER는 단일 핑 즉시(PIP 오탐 제거)·EXIT는 gridDisk(+1) 이탈링 통과 필요·spurious ENTER/EXIT 0·dwell >120min 시 荷待ち 초과 이벤트. FR-GEO-DEBOUNCE-001, FR-ENG-EXC-002 T int
R5 마이그레이션 전진(forward-only) Given 빈 DB, When 전체 마이그레이션(0001_init0002_auth0003_geofence_membership→웹훅 0004 신설 권고)을 순차 적용, Then 스키마가 model.md와 일치. down 의존 없음, 교정은 새 전진 마이그레이션. OPS-* 마이그레이션, DM-SCHEMA-001 T int+e2e

추가 권장 회귀(SHOULD). 타임스탬프 +09:00 강제·'Z' 리터럴 거부(DM-TS-001); 인제스트 하드캡 500 초과 413(FR-ACQ-API-001); 추적 손실 45min sweep(FR-ENG-EXC-003) — 단, cron sweepActive는 현재 빈 구현(STUB)이라 구현 동반 시 회귀 추가. 荷待ち 법정 계산이 타임스탬프 규칙에 의존하므로 DM-TS-001 회귀를 R5 직후로 격상 권장.

3. 단계 게이트 수용기준 (GATE-P0 / P1 / P2 DoD)

각 단계 게이트의 Definition-of-Done을 측정 가능한 체크리스트로 고정한다. 게이트 자체(진입·종료 DoD)의 단일 진실원은 phase-gates-roadmap(GATE-P0/P1/P2 소유)이며, 이 페이지는 수용 판정용 체크리스트로 집계한다. 모든 수치는 §4 정규표에서 인용.

3.1 GATE-P0 — cold-start 해소(하드 게이트) 종료 DoD

Phase 0은 "해자는 네트워크"(Research H3 강검증) 전제 하에 cold-start를 제휴로 푸는 하드 게이트다. 다음을 모두 충족해야 P1 진입.

체크측정 가능 기준검증근거
제휴 1곳 서명유료/PoC 의향 제휴 파트너 ≥1곳 계약·데이터 접근 합의 서명(자격 루브릭 통과)I 검사monetization-gtm 제휴 플레이북
거점 지오펜스 시드거점 폴리곤 100~200개소 등록 + polygonToCells H3 덮개 → geofence_cell(interior/boundary) + KV cell→geofence_id[] 역인덱스 멱등 채움T intFR-GEO-H3RES-001, delivery-pipeline.md 시딩
규제 항목 정의実運送体制管理簿·荷待ち·구속시간 출력 항목/컬럼 정의 확정(법무 서명은 RR-LEGAL-001 플래그)I 검사regulatory
event_code_map 시드대형 운송사(ヤマト·佐川·NX·セイノー) 코드→canonical 매핑 시드 적용, 멱등(UPSERT)T intDM-NORM-001, DM-EVT-ENUM-001
리소스 프로비저닝D1/KV/R2/Queues 실제 생성 + wrangler.jsonc placeholder ID(0000…000a) → 실 ID 치환(현재 미프로비저닝)I 검사OD-005, pipeline-ops

3.2 GATE-P1 — MVP exit DoD (측정 가능 종료 기준)

체크측정 가능 기준 (초기 확정 목표, 운영 조정)검증근거
Tracking Rate floor≥ 85% (MVP exit floor; 정상상태 지향 ≥92%) — 28일 롤링, received/expected pingsA 분석SLO-S4 / KPI-TRACK-001
荷待ち 리포트 협상 사용荷待ち(NIMACHI) CSV 리포트가 실제 화주↔운송사 협상에 사용됨(데모 가능 증거)D 데모FR-RPT-NIMACHI-001
규제 출력 수기 대체実運送体制管理簿·荷待ち 출력이 수기 작업을 대체(자동 생성물로 제출 가능). 단 法정 포맷 미확정은 RR-LEGAL-001 법무 서명 플래그.D 데모RR-JITSUUNSO-001, RR-NIMACHI-001
인프라 무료 티어 내운영 부하가 Cloudflare 무료 티어(추정: Workers ~10만 req/일, D1 쓰기 10만행·5GB, R2 10GB) 내에서 동작A 분석NFR-COST-001
핵심 스텁 해소웹훅 전달(handleNotifyBatch ack-only→실전달), POST /v1/shipments(500 stub→실등록), 実運送体制管理簿 GET /v1/reports/jitsuunso(501→구현), consentGate ingest 경로 호출(APPI 갭 해소) — 해소 + 테스트 동반T int+e2e마스터 §7, FR-DLV-WH-001

3.3 GATE-P2 — 확장·심화 DoD

체크측정 가능 기준검증근거
ETA 룰→ML 전환레인-클래스별 누적 ≥3,000 완료 운행 AND 룰-MAPE >20% 충족 시 ML 전환, ML MAPE ≤15% 지향A 분석FR-ENG-ETA-002, KPI-ETA-001
외부 시스템 통합 (EDI/텔레매틱스)EDI_X12/EDIFACT·텔레매틱스 인입 채널(HIGH 정밀도 소스) 계약 동결·연동T intIR-EDI-001, IR-TELE-001
스케일 가드레일 발동 검증동시 활성 DO >5,000 시 종료 화물 D1 60s 폴링 분할 전환이 동작(부하 시나리오)A 분석NFR-SCALE-001
물류×금융 P2 게이트P2 상업 확장(금융 연계) 게이트 기준 충족I 검사monetization-gtm P2 게이트

4. 마스터 추적성 매트릭스

모든 주요 요구사항 ID(타 페이지 소유)를 요약 · 우선순위 · 단계 · 근거 · 구현상태 · 검증으로 잇는다. 각 ID는 소유 페이지로 상대링크한다(이 페이지는 정의하지 않음). 구현상태는 현행 server as-built(마스터 §7) — DONE(구현+테스트), STUB(껍데기/501/ack-only), ABSENT(미존재). 검증은 테스트명·SLO 쿼리·수용기준 중 하나를 가리킨다. 모든 SLO/KPI 수치는 §4 정규표 인용이며 초기 확정 목표(설계)다.

4.1 Functional — 인증·수집 (FR-AUTH / FR-ACQ / FR-INGEST)

ID요약우선단계근거구현상태검증
FR-AUTH-001토큰 TTL: access 3600s·refresh 2592000s·ingest 604800sP0P107-securityDONEauth.test.ts (JWT·PBKDF2·refresh 로테이션)
FR-AUTH-002refresh 로테이션-only + 재사용 탐지P0P107-securityDONEauth 재사용탐지 테스트
FR-AUTH-003ingest-token (positions:write 한정)P0P107-securityDONEscope 검증 테스트
FR-AUTH-004KV revocation 전파 ≤60sP1P107-securityPARTIALAC: revoke→≤60s 거부 (int)
FR-AUTH-005PBKDF2 ≥100k 해싱P0P107-securityDONEauth.test.ts
FR-ACQ-GPS-001적응형 GPS 샘플링 30/60/180s·배터리 ≤6%/hP0P103-data-acquisitionABSENTAC (app TransistorLocationService 주석처리)
FR-ACQ-API-001인제스트 배치 하드캡 500/req(초과 413)P0P103-data-acquisitionDONEingest 413 회귀 (int)
FR-ACQ-CONSENT-001동의 게이트 (consentGate)P0P107-security (APPI)STUBconsentGate 존재하나 ingest 경로 미호출 (갭)
FR-ACQ-OFFLINE-001오프라인 버퍼 ≤100 청크P1P103-data-acquisitionABSENTAC (app stub)
FR-ACQ-AUTOSHARE-001자동 위치 공유P1P103-data-acquisitionABSENTAC (app stub)
FR-INGEST-001인제스트 검증→202 acceptP0P103-data-acquisitionDONEingest→DO→queue 경로 (int) / S1
FR-INGEST-002DO 라우팅·라이브 상태 업데이트P0P103-data-acquisitionDONEShipmentDO 복원 테스트
FR-INGEST-003Queue enqueue→R2 아카이브P0P103-data-acquisitionDONEingest→queue→R2 (int)

4.2 Functional — 지오펜스·엔진 (FR-GEO / FR-ENG)

ID요약우선단계근거구현상태검증
FR-GEO-001H3 셀 멤버십 평가 (KV 역인덱스 O(1))P0P104-tracking-engineDONEh3.test.ts / geofence 엔진 테스트
FR-GEO-002enter/exit/dwell 히스테리시스 엔진P0P104-tracking-engineDONEgeofence-engine 풀 테스트 (R4)
FR-GEO-003geofence-type→canonical 이벤트 파생P0P104-tracking-engineDONE파생 매핑 테스트
FR-GEO-CRUD-001지오펜스 CRUD API (/v1/geofences)P1P104-tracking-engineABSENTAC (엔드포인트 부재)
FR-GEO-DEBOUNCE-001ENTER 단일핑 즉시·EXIT gridDisk(+1)·플래핑 0P0P104-tracking-engineDONE디바운스 회귀 R4 (int)
FR-GEO-H3RES-001H3 해상도 정책 res8/9/10/11·분석 h3_r10 고정P0P104-tracking-engineDONEh3.test.ts (다해상도 lookupCell)
FR-ENG-ETA-001룰 ETA 시드속도 80/30/50·dwell 30minP1P104-tracking-engineSTUBhandleEtaBatch ack-only·KV CONFIG 미read
FR-ENG-ETA-002룰→ML 전환 ≥3,000 운행 AND MAPE>20%P2P204-tracking-engineABSENTAC / KPI-ETA-001
FR-ENG-EXC-001배달 지연 = 약속 ETA +30minP1P104-tracking-enginePARTIALAC (ETA 스텁 의존)
FR-ENG-EXC-002荷待ち 초과 dwell >120min (법정 2h)P0P104-tracking-engineDONEdwell 임계 테스트 (D1 geofence.dwell_threshold_min)
FR-ENG-EXC-003추적 손실 45min→TRACKING_LOST (Cron 5min)P1P104-tracking-engineSTUBcron sweepActive 빈 구현
FR-ENG-EXC-004경로 이탈 = 계획경로 2kmP2P204-tracking-engineABSENTAC
FR-ENG-EXC-005비정상 정차 = 계획외 15minP2P204-tracking-engineABSENTAC
FR-ENG-EXC-006픽업 실패 = planned_pickup +30minP1P104-tracking-enginePARTIALAC

4.3 Functional — 전달·리포트·프로비저닝 (FR-DLV / FR-RPT / FR-PROV)

ID요약우선단계근거구현상태검증
FR-DLV-WH-001웹훅 재시도 래더 8회·HMAC-SHA256·24h 수명P1P105-delivery-layerSTUB서명 라운드트립 R3 (unit) / handleNotifyBatch ack-only
FR-DLV-WS-001WebSocket 단일-shipment 실시간 pushP1P105-delivery-layerPARTIALShipmentDO fan-out (DONE) / app 클라 stub / S6
FR-DLV-NOTIFY-001알림 전달 (LINE 등)P2P205-delivery-layerSTUBLINE_CHANNEL_TOKEN 시크릿만
FR-DLV-TRACK-001화주 추적 링크 (CustomerTrack)P1P105-delivery-layerPARTIALconsole CustomerTrack 컴포넌트 (ADR-0010)
FR-RPT-NIMACHI-001荷待ち(NIMACHI) CSV 리포트P0P106-product / regulatoryDONENIMACHI CSV end-to-end 테스트
FR-RPT-JITSUUNSO-001実運送体制管理簿 리포트P0P1regulatorySTUBGET /v1/reports/jitsuunso 501
FR-RPT-KOSOKU-001구속시간(拘束時間) 리포트P1P1regulatoryABSENTAC / RR-KOSOKU-001
FR-RPT-RANGE-001리포트 범위 from<to AND ≤92일·서명URL 300sP1P106-productDONE422 초과 거부 회귀 (int)
FR-RPT-ANALYTICS-001운송사 분석 (/v1/analytics/carriers)P2P206-productABSENTAC (엔드포인트 부재)
FR-PROV-001테넌트/운송사 프로비저닝P1P006-product / opsPARTIALconsole Provisioning / 시드 멱등 (int)
FR-PROV-002드라이버 admin (POST /v1/admin/drivers)P1P106-product / opsABSENTAC (엔드포인트 부재)

4.4 Data Model (DM)

ID요약우선단계근거구현상태검증
DM-SCHEMA-001Shipment→Stop→Event 3계층 스키마P0P102-data-modelDONE마이그레이션 R5 / model.md 일치
DM-TS-001타임스탬프 ISO 8601 +09:00 강제·'Z' 거부P0P102-data-modelPARTIAL잘못된 형식 거부 수용테스트 (DDL 'Z' 모순 교정)
DM-ID-001도메인 ID 체계·테넌트 스코프 키P0P102-data-modelDONEdb.ts 테넌트 스코프 (R1)
DM-DEDUP-001dedup_key sha256·분단위 내림·D1 UNIQUEP0P102-data-modelDONE멱등 회귀 R2 (int)
DM-EVT-PREC-001소스 정밀도 EDI>CARRIER>…>APP_GPSP1P102-data-modelPARTIAL정밀도 매트릭스 단위 테스트 (동률 received_at)
DM-EVT-ENUM-001canonical 이벤트 enum (CREATED…CANCELLED)P0P102-data-modelDONE정규화 단위 테스트 (PORT/BORDER PARTIAL)
DM-STATE-001shipment 상태 머신P0P102-data-modelDONEShipmentDO 상태 전이 테스트
DM-KV-001KV 역인덱스 cell→geofence_id[]P0P002-data-modelDONE시드 + 멤버십 조회 (int)
DM-ISO-001ISO 코드/단위 표준화P1P102-data-modelPARTIALAC
DM-CAP-001배치/페이로드 용량 제약P0P102-data-modelDONE413 회귀 (int)
DM-NORM-001event_code_map 정규화·≥99% canonical 해결P0P002-data-modelDONE시드 + 정규화 테스트 / S8

4.5 API·인터페이스 계약 (IR)

ID요약우선단계근거구현상태검증
IR-API-001OpenAPI 단일원 + @loginippon/contract + CI drift gateP0P105-delivery / opsPARTIALconsole types 수동중복 → contract 추출 TODO (CI drift gate)
IR-REST-catalog전 REST 엔드포인트 카탈로그P0P105-deliveryPARTIALroutes 존재·일부 STUB/ABSENT (매트릭스 4.1~4.3)
IR-WS-001WebSocket AsyncAPI 계약P1P105-deliveryPARTIALDO fan-out DONE / app 클라 stub / S6
IR-WH-001웹훅 카탈로그·서명 스킴P1P105-deliverySTUB서명 R3 (unit) / 구독·전달 미구현 (0004 신설 권고)
IR-EDI-001EDI(X12/EDIFACT) 인입 IFP2P205-deliveryABSENTAC (P2)
IR-TELE-001텔레매틱스 인입 IFP2P205-deliveryABSENTAC (P2)
IR-EXT-001외부 시스템 인터페이스(TMS 등)P2P205-deliveryABSENTAC (P2)

4.6 비기능 (NFR) — SLO는 slo-catalog 소유, 여기선 검증 매핑

ID요약 (확정치)우선단계근거구현상태검증 (SLO 쿼리/AC)
NFR-PERF-001인제스트 accept p95 ≤200ms·p99 ≤400msP0P108-operationsSTUBSLO-S1 Analytics Engine 28일 (METRICS writeDataPoint TODO → 미측정)
NFR-PERF-002지오펜스 평가 lag p95 ≤5s·p99 ≤15sP0P108-operationsSTUBSLO-S2 (큐 max_batch_timeout=5s 정합)
NFR-PERF-003WebSocket 반영 p95 ≤1.5s·p99 ≤3sP1P108-operationsSTUBSLO-S6 (Flutter 단일-shipment)
NFR-PERF-003bconsole 폴링 staleness >60s stale·>300s dropP1P108-operationsPARTIALconsole FleetMap 6s 폴링 (/v1/shipments/tracking as-built)
NFR-AVAIL-001가용성 ≥99.9%/역월·에러버짓 0.1%≈43분P0P108-operationsSTUBSLO-S5 버짓 소진→prod 승격 차단(릴리스 게이트)
NFR-RELY-001웹훅 전달 성공률 ≥99.0%/28일P1P108-operationsSTUBSLO-S3 (웹훅 전달 미구현)
NFR-SEC-RL-001레이트리밋 API 600/min·인제스트 1200/min·429P1P107-securityABSENTAC (에러맵엔 RATE_LIMITED/429 존재하나 미구현)
NFR-SCALE-001활성 DO >5,000 → D1 60s 폴링 분할P2P201-architectureABSENTAC (부하 시나리오)
NFR-SCALE-002DO active-wall-time 월 임계 가드P2P201-architectureABSENTAC
NFR-COST-001비용 가드: D1쓰기 ≥70%·R2 ≥80%·DO cap 알람P1P1cost-modelABSENTAC (대시보드 알람)
NFR-MAINT-001유지보수성·전진전용 마이그레이션 거버넌스P1P108-operationsDONE마이그레이션 R5 / pipeline-ops
NFR-OBS-001관측성 (METRICS.writeDataPoint 방출)P0P108-operationsSTUBOBS-METRICS-001 (바인딩됨·writeDataPoint TODO → SLI 미측정)

4.7 보안·프라이버시 (SR) · 보존 (RET)

ID요약우선단계근거구현상태검증
SR-THREAT-001위협 모델·STRIDE 카탈로그P0P107-securityABSENTI 검사 (문서·완화 매핑)
SR-AUTHZ-001scope→endpoint→role 인가 매트릭스P0P107-securityDONEmiddleware/auth scope 테스트
SR-TENANT-001테넌트 격리 (타 테넌트 404)P0P107-securityDONE격리 회귀 R1 (int, db.ts 스코프)
SR-PII-001PII 마스킹 함수P1P107-securityABSENTAC
SR-APPI-CONSENT-001APPI 동의 수집·검증 (consentGate)P0P107-securitySTUBconsentGate ingest 경로 미호출 (APPI 갭)
SR-APPI-PURPOSE-001APPI 이용목적 명시·제한P1P107-securityABSENTI 검사
SR-APPI-RETENTION-001보존정책 (RET-* 표)P1P107-securityABSENTI 검사 (RET-DO/EVENT/GPS/REG)
SR-APPI-DELETE-001삭제·정정 요청 처리P1P207-securityABSENTAC
SR-CRYPTO-001키 로테이션·revocation 전파P1P107-securityPARTIALKV revocation ≤60s AC (시크릿 환경별)
SR-AUDIT-001감사 로그 (request_id 추적)P1P107-securityPARTIALmiddleware/error request_id 엔벨로프
SR-TOKEN-STORE-001토큰 저장 하드닝 (httpOnly 쿠키)P1P107-securitySTUBconsole localStorage 저장(XSS) → OD-003
RET-DO-001DO 라이브 상태 운행+hibernation 후 1hP1P107-securityDONEDO hibernation 테스트
RET-EVENT-001D1 의미 이벤트 5년 (분쟁/규제)P1P207-securityABSENTAC (보존 잡)
RET-GPS-001R2 원시 GPS 365일 후 purgeP1P207-securityABSENTAC (purge 잡)
RET-REG-001R2 규제 산출물 7년 (법정 최소)P1P207-securityABSENTAC 추정 법무 서명 필요

4.8 규제 (RR)

ID요약우선단계근거구현상태검증
RR-JITSUUNSO-001実運送体制管理簿 컬럼 정의 (2025.4 의무)P0P1regulatorySTUB/v1/reports/jitsuunso 501 추정 법무
RR-NIMACHI-001荷待ち 기록 집계 (2026.4 법정 2h)P0P1regulatoryDONENIMACHI CSV end-to-end
RR-KOSOKU-001구속시간 필드 (2024 문제·960h 상한)P1P1regulatoryABSENTAC 추정 법무
RR-CSV-001CSV 인코딩 (Shift_JIS/UTF-8 BOM)P1P1regulatoryPARTIAL인코딩 테스트 → OD-004 법무
RR-LIFECYCLE-001리포트 라이프사이클 PENDING→READY→FAILEDP1P1regulatoryPARTIAL리포트 상태 전이 테스트
RR-PROV-001provenance FK (산출물→원천 이벤트)P1P1regulatoryPARTIALAC (FK 무결성)
RR-LEGAL-001공식 포맷 법무 확인 플래그P0P0regulatoryABSENT 추정I 검사 — 공식 포맷 미확정, 법무 서명 대기 (전 RR에 종속)

4.9 SLO 카탈로그 (SLO-S1..S8 + OBS) — 검증 쿼리는 slo-catalog 소유

IDSLI (확정 목표)측정·쿼리 소스구현상태
SLO-S1인제스트 accept p95 ≤200ms·p99 ≤400msAnalytics Engine 28일 롤링STUB (writeDataPoint TODO)
SLO-S2지오펜스 lag p95 ≤5s·p99 ≤15s큐 max_batch_timeout=5sSTUB
SLO-S3웹훅 성공률 ≥99.0%/28일발신 타임아웃 5s hardSTUB
SLO-S4Tracking Rate exit floor ≥85% (지향 ≥92%)received/expected pings, 28일STUB
SLO-S5가용성 ≥99.9%·에러버짓 43분/월릴리스 게이트 연동STUB
SLO-S6WebSocket 반영 p95 ≤1.5s·p99 ≤3sDO 단일 shipment 뷰STUB
SLO-S7ETA MAPE ≤25%(룰)·≤15%(ML)eta_is_estimate 표기ABSENT (ETA STUB)
SLO-S8이벤트 정규화 ≥99% canonical·미매핑 <1%/일미매핑 알람 >50/시간PARTIAL (정규화 DONE·알람 미배선)
OBS-METRICS-001METRICS.writeDataPoint 방출 요구Analytics Engine loginippon_metricsSTUB (바인딩됨·TODO → SLI 미측정)

관측성 갭이 SLO 검증의 단일 차단점. 위 SLO-S1..S6과 NFR-PERF/AVAIL/RELY는 모두 METRICS(Analytics Engine loginippon_metrics) 바인딩에 의존하지만, 현재 writeDataPoint가 TODO라 SLI가 방출되지 않는다(마스터 §7). 따라서 이들 SLO는 코드상 구현 여부와 무관하게 현재 측정 불가(STUB)이며, OBS-METRICS-001 해소가 GATE-P1 종료의 사실상 선결 조건이다. 에러버짓 릴리스 게이트(S5)도 동일 의존.

5. 검증 방법 범례 (T / D / A / I)

코드방법의미이 TRD에서의 적용
TTest (테스트)자동화 테스트(unit/integration/e2e)로 통과/실패 판정대부분의 FR/DM·필수 회귀셋 R1~R5. workerd 통합 테스트 우선.
DDemonstration (시연)실제 시나리오·사용 맥락에서 동작을 보여 판정荷待ち 리포트 협상 사용·규제 출력 수기 대체(GATE-P1) 등 운영 증거.
AAnalysis (분석)측정·계산·모델로 충족 판정(SLO 쿼리·KPI 공식·용량 모델)NFR/SLO·KPI(Tracking Rate·ETA MAPE)·비용 가드레일·스케일 트리거.
IInspection (검사)코드·문서·산출물을 검토해 충족 확인규제 컬럼 정의·법무 서명(RR-LEGAL-001)·리소스 프로비저닝·위협 모델·보존 정책.

검증 방법 선택 원칙. 가능하면 T(테스트)로 자동 회귀화한다(결정적·반복가능). 외부 협상·운영 맥락이 본질이면 D, 통계·임계 충족은 A(SLO 쿼리/KPI 공식), 법령 포맷·존재 여부는 I를 쓴다. 법령 포맷처럼 우리가 단정할 수 없는 사실은 추정 라벨 + RR-LEGAL-001 법무 서명 플래그로 명시한다 — 본 TRD는 이를 달성된 것으로 제시하지 않는다.

근거·상호참조