vignette/docs/ops/outcome-trajectory-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

5.5 KiB
Raw Blame History

G2 Longitudinal Outcome Trajectory 실통합 증거 — 2026-08-06

판정

G2 종료 게이트를 통과했다. 교육용 합성 기대 궤적과 세 개 독립 축을 실제 5회기 case에 연결했고, 누락·불확실성·safety·관계 기억을 총점으로 합산하지 않는 계약을 API·DB·브라우저에서 확인했다. 이 결과는 실제 임상 규준, 치료 효과, 진단 또는 예후 주장이 아니다.

2026-08-07 보강 검증은 기존 실제 DB의 on_track 단일 사례 공백을 닫았다. 별도 합성 교육 fixture 두 개를 각각 실제 5회기와 15개 measurement_event로 만들고 production 측정 producer→store→trajectory evaluator 경계를 통과시켰다. 악화 사례는 S3 off_track, S4S5 deteriorating으로 전이했고, 단발성 noise 대조군은 S3 watch 뒤 S4S5 on_track으로 복귀해 false alert 승격이 0건이었다. 이 또한 임상적 효과·예후 근거가 아니라 결정 규칙과 원장 연결의 통합 증거다.

재현 명령

py -3.11 -X utf8 scripts\smoke-outcome-trajectory-api.py `
  --api-base-url http://127.0.0.1:8005 `
  --out docs\ops\evidence\outcome-trajectory-live-five-session-2026-08-06.json

py -3.11 -X utf8 scripts\smoke-outcome-trajectory-alerts.py `
  --out docs\ops\evidence\outcome-trajectory-alerts-live-2026-08-07.json

스모크는 고유한 dev/E2E 학습자·교수자 fixture를 만들고 삭제하지 않는다. 쿠키·자격증명·전자우편 주소· 축어록 본문은 출력하지 않는다.

실제 HTTP·DB 결과

  • 한 case에서 session_no=1..5가 연속됐고 각 회기 종료 후 세 축 자기보고를 append했다.
  • 최종 읽기 모델은 5회기 × 3축 = 15개 observed evidence를 보존했고 모든 합성 on-track fixture를 on_track으로 분류했다.
  • distress_load, daily_functioning, learning_engagement는 독립 축이며 total/overall score는 없다.
  • 동일 submission_id와 동일 payload 재시도는 같은 3개 measurement ID를 반환했다. 같은 ID의 변경 payload는 HTTP 409로 거부됐다.
  • 회기 리뷰는 화면 anchor t1과 별도로 실제 app.turns.id UUID를 turn_id로 노출했고, 측정·관계 원장은 UUID evidence FK만 사용했다.
  • 같은 cohort 교수자는 5회기 궤적과 supervisor 관계 요약을 읽었다. 다른 학습자와 다른 cohort 교수자는 HTTP 404로 차단됐다.
  • 관계 메모리는 counselor/supervisor별 문장을 따로 저장·투영했으며 다른 역할의 summary map은 응답에 없었다.
  • synthetic arc는 15개 기대분포, data_classification=synthetic_educational, clinical_claim_allowed=false를 함께 반환했다.

실제 악화·단발성 noise DB 보강 결과 — 2026-08-07

  • 로그인·HTTP fixture나 trajectory 결과 직접 삽입 없이 production create_outcome_observationssubmit_outcome_observations 경계를 호출했다. 이 경계가 실제 app.measurement_event를 쓰고 evaluator를 실행해 immutable revision/observation을 만든다.
  • 악화 사례의 session 상태는 on_track → on_track → off_track → deteriorating → deteriorating이었다. S4 악화 축에는 직전 회기 대비 adverse-z 변화와 다음 확인 질문이 함께 투영됐다.
  • noisy control은 on_track → on_track → watch → on_track → on_track이었다. S3에는 inside_off_track_threshold, deviation_not_yet_sustained 반대근거가 남았고 off_track/deteriorating 승격은 0건이었다.
  • 두 사례의 실제 10회기에서 learner_reported/learner_self_report 30개 측정이 생성됐다. 각 사례는 revision 1~5와 supersession 4개를 보존했고, 최신 revision의 30개 observation snapshot은 원본 측정 30개를 빠짐없이 참조했다.
  • 같은 cohort learner/teacher 읽기 모델은 동일한 최신 revision과 상태를 투영했다. 측정 metadata와 응답은 clinical_claim_allowed=false를 유지했다.
  • 결과 JSON에는 fixture 원점수를 복사하지 않고 UUID, 상태 전이, provenance 집계만 보존했다.

보강 실행 증거는 evidence/outcome-trajectory-alerts-live-2026-08-07.json이 소유한다.

실행 metadata와 생성 UUID는 evidence/outcome-trajectory-live-five-session-2026-08-06.json에 보존한다.

자동 회귀

  • G2 contract/store/schema와 G3 통합 focused backend: 90 passed.
  • durable review turn UUID 회귀: test_session_turn_persistence.py 37 passed.
  • Outcome Trajectory desktop/mobile 및 학습자 check-in: 12/12 passed.
  • Alliance Pulse + 기존 Session Review desktop/mobile 회귀: 15/15 passed.
  • OpenAPI 생성 계약, API type check, web typecheck 통과.
  • 2026-08-07 G2 focused contract/schema/store: 40 passed. 새 smoke Ruff·py_compile·실제 PostgreSQL 검증을 통과했다. 동시 G8 변경 수렴 뒤 전체 API도 855 passed를 통과했다.

UI 인수 기준

회기 리뷰는 1~5회기 타임라인, 세 축의 방향·상태·불확실성·근거·반대근거, 다음 확인 질문, safety 별도 영역, 역할 안전 관계 기억을 한 작업대에서 제공한다. 학습자는 최신 종료 회기에만 축별 상태와 확신도를 제출할 수 있고, 오류 재시도 동안 submission ID를 유지하며 성공 응답으로 즉시 궤적을 갱신한다. desktop/mobile에서 키보드 조작, 근거 장면 이동, 중복 제출 차단, 가로 overflow 0을 확인했다.