8월 7일까지 워킹트리에만 남아 있던 미커밋 작업을 커밋한다. 여러 사본 폴더(worktree·clone)에 흩어져 있던 중간 스냅샷을 정리하기 전에 원본을 git 이력으로 고정하는 것이 목적이다. - contracts/routes/services: measurement, outcome_trajectory, rupture_repair, deliberate_practice, calibration_transfer, supervision_research, multimodal_alliance, continuous_improvement 계열 신규 모듈과 테스트 - infra/db/init: 07~16 마이그레이션(측정 기반~calibration transfer 실행) - apps/web: 세션 리뷰 카드·관리 화면·E2E 스펙 추가 - docs/ops: G0~G8 라이브 통합·배포·롤백 증거 문서와 evidence JSON/PNG - scripts: smoke·ledger·릴리스 에이전트·NAS 프리뷰 운영 스크립트 engine.public 로그 .bak과 apps/web/test-results 산출물은 커밋에서 제외했다.
4.1 KiB
4.1 KiB
G5 Calibration Mirror & Transfer — 라이브 통합 증거
기준일: 2026-08-06 KST
판정: 내부 제품 게이트 통과
데이터 경계: benchmark는 교육용 합성 데이터이며 실제 인구집단 능력·위험·임상 결과를 주장하지 않는다.
1. 구현 경계
- 학습자는 외부 수행 관측을 보기 전에 역량·practice block별 성공 확률과 확신도를 revision으로 기록한다.
- 명시적으로 잠근 prediction history는 불가역이며, lock 뒤 revision은 API와 DB trigger가 모두 거부한다.
- 외부 수행 관측은 learner self-report와 분리된 runtime/evaluator 관점에서만 reveal된다.
- 역량별 calibration error, 95% bounded interval, over/underconfidence, baseline→recent 오차 변화를 총점 없이 계산한다.
- context, relationship style, difficulty, expression, scenario/phrase family가 달라지는 unseen transfer suite를 사용한다.
- 훈련 문구 암기와 undercoverage는 성공률이 높아도 transfer verification을 차단한다.
- subgroup drift는 최소 표본과 불확실성을 함께 표시하고 synthetic educational signal로만 취급한다.
2. 합성 benchmark와 자동 검증
| 증거 | 결과 |
|---|---|
| G5 core/store/API focused | 41 passed |
| benchmark | 4 cases, expectation accuracy 1.0 |
| reveal 오염 차단 | post-lock contamination rejection 1 |
| 반복 보정 | baseline MAE 0.667 → recent MAE 0.267, improved |
| 미지 전이 | 4/4 unseen varied cases, transfer verified |
| 암기 해킹 | memorized phrase false verification 0 |
| 합성 subgroup drift | max rate gap 0.667, drift_flagged, 비임상 고지 |
| G5 UX | learner/teacher desktop+mobile 4/4 passed |
| G1~G5 + 기존 회기 리뷰 | desktop/mobile 62/62 passed |
| 웹 계약 | typecheck·production build 통과 |
3. 실제 API·DB 흐름
scripts/smoke-calibration-transfer-api.py를 DB와 engine이 모두 ready인 API 인스턴스에 실행했다.
산출물은 docs/ops/evidence/calibration-transfer-live-api-2026-08-06.json이다.
- 실제 회기 durable turn UUID 2개를 자기예측과 외부 수행 관측의 근거로 사용했다.
- prediction revision의 동일 제출은 같은 ID를 반환했고 변경 payload는
409였다. - prediction history를 명시적으로 잠근 뒤 동일 lock 재시도는 같은 ID를 반환했다.
- 잠금 뒤 두 번째 revision은 DB 불변식까지 도달해
422로 거부됐다. - 독립 내부 토큰으로 runtime 수행 관측을 기록했다. 동일 제출은 같은 ID, 변경 payload는
409였다. - 학습자 projection은
learner, 동일 cohort 교수자는supervisor를 반환했다. - 다른 학습자는 대상 조회
403, 교차 cohort 교수자는404였다. - 모든 read model은 총점 없이
clinical_claim_allowed=false를 유지했다. calibration-mirror-g5@1.0.0,unseen-transfer-g5@1.0.0측정 도구를 각 construct로 분리해 영구 measurement catalog에 등록했다.
라이브 증거 식별자:
- session:
e3e07503-7033-41ea-808b-89bab82d86f1 - prediction history:
31552615-8910-4543-b1e3-540867c15ba4 - prediction revision:
f7990785-ee83-4e7b-acde-6810068f5a5e - prediction lock:
9f90a933-b23f-4627-8bae-02782c2cfa39 - performance observation:
1ff98bee-41cb-4317-a345-b21b820b818e
4. 자기주도·교수자 UX 종료 조건
- 학습자는 예측 revision을 검토한 뒤 불가역 lock의 의미에 명시 동의해야만 외부평가 reveal을 진행한다.
- 오차·95% 구간·과신/과소신·반대근거와 다음 메타인지 연습을 역량별로 읽는다.
- 전이 카드는 네 변주 축 coverage와 암기 문구 차단 사유를 보여주며 성공률 하나로 숙련을 선언하지 않는다.
- 교수자는 cohort learner projection과 append-only correction만 사용할 수 있고 prediction/lock/evaluator write는 받지 않는다.
- API 불가·관측 부족·합성 drift를 각각 degraded, insufficient evidence, synthetic signal로 명시한다.
이 증거로 G5 내부 제품 게이트를 닫고 G6 Supervision & Research OS를 BUILD로 승격한다.