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