Files
KArtSell.Aegis/docs/Design/kbx-foundation-v60-status-canonical-contract-hardening/docs/ux-experiment-governance-v17.md
T
kjh2064 3f293d8aa8
deploy / deploy (push) Successful in 1m52s
deploy / notify (push) Successful in 1s
V13-FE-006: consolidate approved UI and contract hardening
2026-08-13 02:41:00 +09:00

2.2 KiB

KBX UX Experiment & Controlled Rollout v17

목적

UX 변경을 전 사용자에게 즉시 배포하지 않고, 되돌릴 수 있는 범위에서 제한적으로 노출한 뒤 v16 UX Metric과 Guardrail로 판단한다.

허용 범위

  • layout
  • information emphasis
  • default filter
  • navigation
  • copy

금지 범위

  • Permission / Authorization
  • Sensitive data exposure
  • Domain business rule
  • Validation
  • Idempotency
  • Workflow safety
  • WMS scan success/validation rule
  • Inventory truth

배정

Server가 Tenant + User + Experiment를 기준으로 안정적인 Bucket을 계산하고, 실제 Experiment에 편입된 사용자만 assignment를 영속화한다. Browser가 Variant를 임의 선택하지 않는다.

Exposure

Assignment API 호출만으로 노출로 세지 않는다. Variant가 실제 렌더링된 뒤 experiment.exposed를 기록한다. 이후 같은 Screen의 semantic telemetry에는 experimentId/variant context가 붙는다.

판단

Reference 정책은 최소 Variant별 200 exposure 이후에만 판정한다. Guardrail 위반은 즉시 롤백 후보이며, candidate는 승격 검토 대상일 뿐 자동 정답이 아니다. 현재 정책은 운영 Threshold이며 통계적 유의성을 주장하지 않는다.

롤백

kill_switch=true, state=rolled-back, rollout_percent=0으로 원자 전환하고 audit을 남긴다. 기존 assignment 이력은 삭제하지 않아 재현성을 유지한다.

열린 화면의 롤백 전파

Runtime 변경 후 /hubs/kbx-experiments SignalR 이벤트로 열린 Browser에 invalidation을 전달한다. Browser는 이벤트 값을 그대로 신뢰하지 않고 Assignment API를 다시 조회한다. SignalR 연결이 끊겨도 다음 화면진입/새로고침의 API 평가가 Source of Truth다.

Telemetry attribution integrity

Browser가 보낸 experimentId/variant를 그대로 신뢰하지 않는다. Ingest 시 현재 사용자 assignment, runtime running 상태, kill switch, rollout bucket을 Server에서 다시 확인한다. 유효하지 않은 context는 일반 업무 event에서는 제거하고, experiment.exposed 자체가 유효하지 않으면 저장하지 않는다.