vignette/docs/ops/deliberate-practice-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

61 lines
3.9 KiB
Markdown

# G4 Deliberate Practice Engine — 라이브 통합 증거
> 기준일: 2026-08-06 KST
> 판정: **내부 제품 게이트 통과**
> 데이터 경계: 고유 `dev:e2e` fixture만 보존하며 축어록·이메일·내부 토큰은 이 문서와 JSON 증거에 기록하지 않는다.
## 1. 구현 경계
- 모든 coaching card는 원자적 관찰 행동과 실행 가능한 practice prescription으로 연결된다.
- `replay`, `branch`, `constrained_response`, `voice_retry`, `difficulty_ladder` 다섯 연습 모드를
같은 계약과 competency graph에서 선택한다.
- 약한 역량, 망각 위험, 선행 역량, 이전 시도 난이도를 분리해 다음 연습을 선택한다.
- 시도·판정·역량 snapshot·다음 과제 결정·교수자 교정은 append-only PostgreSQL 원장에 남는다.
- 익숙한 장면 성공이나 학습자 자기 성공 주장만으로 mastery를 허용하지 않는다. 새로운 관계 스타일의
`unseen_transfer` 장면을 통과해야만 mastery가 열린다.
- 총점·XP·임상 효능 주장은 만들지 않으며 근거 UUID, 반대근거, 불확실성을 그대로 보존한다.
## 2. 자동 benchmark와 런타임 검증
| 증거 | 결과 |
|---|---|
| G4 core/store/API focused | `54 passed` |
| 연습 모드 | 5종 전건 계약·실행 연결 |
| 보상 해킹 | 자기 성공 주장만 있는 시도는 `practicing`, `mastery_allowed=false` |
| 전이 게이트 | 미지 사례 통과 전 mastery 금지 |
| PostgreSQL | 8개 G4 테이블·RLS·append-only·멱등/충돌 SQL smoke 통과 |
| G4 리뷰 UX | desktop/mobile `8/8 passed` |
| G1~G4 + 기존 회기 리뷰 | desktop/mobile `58/58 passed` |
## 3. 실제 API·DB 흐름
`scripts/smoke-deliberate-practice-api.py`를 DB와 engine이 모두 ready인 API 인스턴스에 실행했다.
산출물은 `docs/ops/evidence/deliberate-practice-live-api-2026-08-06.json`이다.
- 실제 회기를 시작하고 모델 응답을 받은 뒤 종료해 durable turn UUID 2개를 확보했다.
- 독립 내부 토큰 경계로 coaching card, competency graph, prescription을 저장했다.
- 동일 처방 제출은 같은 prescription/snapshot/decision을 반환했고 변경 payload는 `409`였다.
- 학습자는 자기 prescription으로 시도를 제출했다. 동일 제출은 같은 decision을 반환했고 변경 payload는 `409`였다.
- 자기 성공 주장이 포함된 익숙한 장면 실패는 `progress=practicing`, `mastery_allowed=false`로 유지됐다.
- 동일 cohort 교수자는 조회·교정할 수 있었고 다른 학습자는 `403`, 교차 cohort 교수자는 `404`였다.
- 교수자 교정은 기존 시도를 수정하지 않고 append-only correction으로 추가됐다. 동일 제출은 같은 ID,
변경 payload는 `409`였다.
- 최종 역할별 read model에 총점·XP가 없고 `clinical_claim_allowed=false`임을 재귀 검사했다.
라이브 증거 식별자:
- session: `3c834ffd-af5b-4a37-8fd3-ad0690deb165`
- learner: `fa05a889-b546-4e3b-a959-a8efc32f1073`
- prescription: `oas-g4-practice-reward-replay`
- attempt records: `16a76b48-00ab-4a5f-8c12-e9ae2489db38`, `9fd642a9-6476-4d3e-8e3f-c35a1f75f1bf`
- teacher correction: `04e09392-8d0c-4eca-8949-0f01d6872f1c`
## 4. 자기주도 UX 종료 조건
- 학습자는 약점/망각 우선순위와 왜 이 과제가 선택됐는지 확인하고 바로 재연습을 시작할 수 있다.
- 다섯 모드, 관찰 기준, 근거/반대근거, 난이도, 익숙함/미지 전이 상태를 한 카드에서 읽을 수 있다.
- 시도 결과는 총점 보상이 아니라 `practicing`, `transfer_pending`, `mastered`와 구체적 다음 행동으로 표시된다.
- 교수자는 학습자 기록과 같은 원장 근거를 보고 append-only correction을 남긴다.
- API가 일시 불가하거나 데이터가 없으면 정상·숙련으로 위장하지 않고 degraded/empty 상태를 명시한다.
이 증거로 G4 내부 제품 게이트를 닫고 G5 Calibration Mirror & Transfer를 BUILD로 승격한다.