vignette/docs/ops/measurement-provenance-inventory-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

50 lines
4.7 KiB
Markdown

# Outcome & Alliance OS 측정 provenance inventory
> 범위: AOS-001. 현재 Vignette가 생산·표시하는 점수와 신호의 실제 의미를 고정한다.
>
> 판정 원칙: 기존 이름을 근거로 임상 구성개념으로 승격하지 않는다. 같은 화면에 비교 표시는 가능하지만,
> 출처와 관점이 다른 값을 하나의 평균·총점으로 합치지 않는다.
## source_kind 계약
| source_kind | 의미 | 허용 관점 | 모델 실행 근거 |
|---|---|---|---|
| `simulated_state` | 규칙·상태머신이 만든 가상내담자 진행 상태 | `client_simulation` | 불필요 |
| `model_inferred` | 독립 평가 모델의 관찰 기반 추정 | `independent_observer` | 필수 |
| `agent_reported` | 가상내담자 에이전트가 자기 관점으로 보고 | `client_agent_report` | 필수 |
| `learner_reported` | 수련생 자기평가·설문 | `learner_self_report` | 불필요 |
| `human_rated` | 교수자·인간 평가자 평정 | `supervisor_human` | 불필요 |
| `observed_runtime` | 완료·지연·사용량·테스트처럼 시스템이 직접 관측 | `runtime_observation` | 불필요 |
## 현재 신호 source map
| 현재 신호 | 현재 생성 경로 | 새 출처·관점 | 새 구성개념·차원 | 허용 주장 | 금지 주장 |
|---|---|---|---|---|---|
| `session_state.rapport_credit` | `state_machine.py` 규칙 누적 | `simulated_state` / `client_simulation` | `simulation_progress.rapport_credit` | 시뮬레이션 개방 진행 | 내담자 보고 치료동맹, 실제 상담성과 |
| `effective_openness` | 단계값 + rapport - resistance | `simulated_state` / `client_simulation` | `simulation_progress.effective_openness` | 현재 페르소나 반응 가능성 | 내담자의 실제 기능·증상 변화 |
| `case_profile.alliance_level` | 회기말 rapport EWMA | `simulated_state` / `client_simulation` | `simulation_progress.legacy_alliance_level` | 종단 시뮬레이션 연속성 | Working Alliance 총점·goal/task/bond |
| `TurnEvaluation.appropriateness` | fast evaluator LLM | `model_inferred` / `independent_observer` | `counselor_skill.appropriateness` | 모델 기반 훈련 피드백 | 인간 평가와 동등한 숙련도 |
| `TurnEvaluation.rapport_signal` | fast evaluator LLM | `model_inferred` / `independent_observer` | `counselor_skill.rapport_signal` | 턴 단위 관계 방향 추정 | 내담자가 실제로 느낀 bond |
| `TurnEvaluation.techniques` | fast evaluator taxonomy 태그 | `model_inferred` / `independent_observer` | `counselor_skill.technique_occurrence` | 기법 후보·빈도 | 기법의 효과, 숙련도, 치료성과 |
| `SessionEvaluation.distribution` | fast 태그 집계 + deep 평가 | `model_inferred` / `independent_observer` | `counselor_skill.technique_occurrence_count` | 회기 내 모델 태그 분포 | 역량 mastery |
| `SessionEvaluation.strengths/improvements` | deep evaluator LLM | `model_inferred` / `independent_observer` | 정성 evidence, 수치 아님 | 근거 장면을 포함한 코칭 | 독립 척도 점수 |
| `clientFeedback` | 마지막 내담자 반응 파생 | `agent_reported` 후보, 현재 미계측 | 현재 측정 원장 적재 금지 | 회기 말 내담자 반응 문장 | 성과 척도, 내담자 만족도 점수 |
| `session_metrics` 성장값 | 위 fast/deep 값의 read model | 원천 이벤트의 provenance 상속 | 별도 원천 측정 아님 | 모델 평가 추이 | 임상역량의 검증된 성장률 |
| Phase 3 pre/post | 수련생 설문 원장 | `learner_reported` / `learner_self_report` | `self_calibration.*` | 파일럿 자기보고 변화 | 임상 효과성(문항·분석 전) |
| Phase 3 κ/ICC | 인간 라벨 간 합치도 | `human_rated` / `supervisor_human` | 평가 신뢰도 메타측정 | 평가자 합치도 | 개인 수련생의 실력 |
| Phase 3 완주·SUS·환각률 | runtime/설문/인간 검수 혼합 | 지표별 분리 | 지표별 별도 dimension | 해당 지표 정의 범위 | 하나의 종합 품질점수 |
## 원장에 넣지 않는 것
- `strengths`, `improvements`, `clientFeedback` 같은 정성 텍스트를 임의 숫자로 변환하지 않는다.
- `rapport_credit``alliance_level``working_alliance`로 이름만 바꿔 저장하지 않는다.
- 모델 confidence를 심리측정 신뢰도로 표시하지 않는다.
- 서로 다른 `source_kind`·`perspective`를 평균한 단일 총점을 만들지 않는다.
## 구현 연결
- Python 계약: `apps/api/app/contracts/measurement.py`
- legacy adapter: `apps/api/app/services/measurement_legacy.py`
- DB 원장: `infra/db/init/07_measurement_foundation.sql`
- benchmark pack: `apps/api/app/data/outcome_alliance_benchmark_g0.v1.json`
- 다음 단계: AOS-005의 goal/task/bond 3관점 schema는 이 원장 위에 별도 이벤트로 적재한다.