vignette/docs/ops/outcome-os-g1-g4-g5-g7-self-directed-integration-evidence-2026-08-07.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

54 lines
4.5 KiB
Markdown

# Outcome OS G1·G4·G5·G7 자기주도 학습 통합 증거 — 2026-08-07
## 판정
- G1 내부 제품 게이트는 종료했다. 첫 발화 전 수련생 기준을 fail-closed로 잠그고, 첫 대화 왕복 뒤에는 흐름을 막지 않는 30초 mid 점검을 제공한다.
- G4/G5 처방 카드는 더 이상 URL 티켓에서 끝나지 않는다. 학습 홈이 처방 출처와 원본 내담자를 소비하고, 시작 전 화면과 새로 발급된 실제 세션 URL까지 동일 계약을 보존한다.
- G7 원음 접근은 학습자·관리자만 인증 스트림으로 받을 수 있고, 교수자와 저장소 경로 노출을 차단한다. 동의 철회 시 플레이어와 원음 요청을 즉시 제거한다.
- 물리 마이크·인증된 공개 WSS·실행된 50분 양방향 증거와 실제 공개 배포는 이 문서로 대체하지 않는다.
## G1 — 회기 전·중 자기점검
- `AllianceCheckpointPrompt`는 새 세션의 첫 발화 전에 goal/task/bond 3축을 모두 선택하고 append-only pre pulse를 잠글 때까지 텍스트·마이크 입력을 막는다.
- 첫 왕복이 쌓인 뒤 mid 점검은 접힌 단일 배너로 나타나며 대화를 차단하지 않는다. 펼쳐 잠그거나 `대화 먼저 이어가기`로 닫을 수 있다.
- 같은 payload 재전송은 같은 pulse ID의 멱등 응답, 변경 payload는 409, 타 학습자·타 cohort 접근은 404로 검증했다.
- 데스크톱·모바일 focused E2E 2/2 통과. 캡처:
- `evidence/g1-alliance-pre-chromium-desktop-2026-08-07.png`
- `evidence/g1-alliance-mid-chromium-desktop-2026-08-07.png`
- `evidence/g1-alliance-pre-chromium-mobile-2026-08-07.png`
- `evidence/g1-alliance-mid-chromium-mobile-2026-08-07.png`
- 실제 API/DB 근거: `evidence/alliance-pulse-live-hardening-2026-08-07.json`.
## G4/G5 — 처방에서 실제 회기까지
공통 실행 계약은 `launch`, `prescription`, `source_session`, `criterion`, `novelty`, `mode`를 보존한다. G5 transfer는 `suite`, `trial`을 추가하고 `novelty=unseen_transfer`를 강제한다.
- G4: replay, branch, constrained response, voice retry, difficulty ladder 다섯 처방 모드가 학습자 전용 CTA를 만든다.
- G5: 실패한 미지 transfer trial을 우선 선택하고 calibration 처방과 함께 넘긴다.
- 학습 홈은 `source_session`의 내담자를 우선 선택하고, 연습 방식·장면 조건·성공 기준·원본 회기를 시작 전 한 장의 실행 브리핑으로 보여 준다.
- Session은 같은 계약을 표시하고 `POST /sessions`가 발급한 새 session ID로 URL을 교체한 뒤에도 query를 보존한다.
- 손상된 식별자·누락된 suite/trial·잘못된 novelty는 일반 연습으로 축약하지 않고 시작을 차단한다.
- G4/G5 생산자 focused E2E 22/22, transfer 소비 2/2, 실제 session 생성 후 query 보존 2/2, G4/G5/G7/Session 통합 묶음 59/59를 통과했다.
## G7 — 역할 안전 원음과 재연습
- `GET /sessions/{session_id}/multimodal-alliance/raw-audio/{audio_asset_id}`는 private 저장소 root 아래 파일만 해석하고 경로 이탈·교수자 원음 접근을 차단한다.
- raw-audio 목록 응답은 typed response로 `audio_ref`와 private 저장 경로를 직렬화하지 않는다.
- 학습자 리뷰의 native audio player는 seek·stop·loading·error·스크린리더 상태를 제공하고, 동의 철회 즉시 unmount된다.
- 선택 장면의 session/scene/type/start/end context가 학습 홈과 실제 Session까지 전달된다. 마이크는 사용자가 직접 켤 때만 시작한다.
- backend raw-audio focused 12/12와 G7 Playwright desktop/mobile 14/14를 통과했다.
## 통합 회귀
- API: 767 passed, gateway: 45 passed.
- OpenAPI TypeScript 재생성·동일성 검사, measurement contract, typecheck, production build 통과.
- G4/G5/G7/Session desktop·mobile·single-run: 59/59.
- 최신 코드 격리 API(`db=true`, `engine=true`)에 연결한 learner/session/layout visual gate: 37/37.
- G1 pre/mid desktop·mobile focused: 2/2, 캡처 직접 검수 완료.
- `git diff --check`와 clean-base release manifest 검사는 최종 릴리스 패치 재조립 단계에서 별도로 닫는다.
## 남은 외부 게이트
- G7: 물리 마이크, 인증된 공개 WSS, 실제 50분 양방향 장시간 실행, 운영 음성 보존·삭제 증명.
- G8/AOS-011: owner secret 주입, 최신 release-only patch 실제 배포, public route/assets/API/auth/runtime 증명.
- AOS-012: AOS-011이 끝난 뒤 최종 공개 증거를 SSOT에 반영하는 폐루프.