vignette/docs/ops/calibration-transfer-live-integration-evidence-2026-08-06.md
Yun Chan 16e791e044 G0~G8 성과·동맹 측정 OS 작업 일괄 고정
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 산출물은 커밋에서 제외했다.
2026-08-08 01:30:53 +09:00

64 lines
4.1 KiB
Markdown

# 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로 승격한다.