vignette/docs/ops/multimodal-alliance-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

3.3 KiB

G7 Multimodal Alliance 실제 통합 증거 — 2026-08-06

판정

로컬 실제 API(127.0.0.1:8014)와 개발 PostgreSQL에서 G7의 동의·오디오 시계·독립 측정· 보정 융합·역할 경계·철회·삭제 원장을 통과했다. 입력은 1.2초 synthetic WAV에서 계산한 메타데이터이며, 원음 바이트나 축어록 본문을 API 원장 또는 이 문서에 싣지 않았다.

  • 실행기: scripts/smoke-multimodal-alliance-api.py
  • 기계 판독 증거: docs/ops/evidence/multimodal-alliance-live-api-2026-08-06.json
  • benchmark: apps/api/app/data/multimodal_alliance_benchmark_g7.v1.json

실제 영속 식별자

  • learner: ed210cd6-b32f-4758-8ccf-6bc85fc07970
  • session: 92631bf3-ebee-4c5b-aec0-d28ae498cb7a
  • consent snapshot: d0d25930-42b7-4894-a5e4-9f0482074dbb
  • timeline: 74a76d59-0fc7-4efc-a26c-cfa62b2982af
  • audio asset metadata: 355ea278-aae3-4759-b608-8e710be609e2
  • fusion records:
    • 839c77ad-96ef-442d-8951-74c6989df86f
    • c4dc7e0e-9588-4ba9-8f32-8239e825971f
    • be038390-cfd0-47b4-b9f4-3d3f869978c5
  • withdrawal snapshot: b40e5a0e-acf5-4ef8-935c-944a71da0972
  • deletion requests:
    • learner explicit: 64d742cc-6c17-46db-aa0b-a3a7dfe77924
    • consent withdrawal: dbed4464-ce58-5328-a336-064eebe37d6f

통과한 경계

  1. 내부 ingestion은 토큰 없음 401, 오토링 불일치 403으로 DB acquire 전에 차단됐다.
  2. 같은 submission 재시도는 동일 ID와 idempotent_replay=true, 내용 변경 재시도는 409였다.
  3. 한 오디오 시계에 word timestamp 2개와 silence/overlap/interruption/prosody 이벤트 4개가 정렬됐다.
  4. text와 voice 측정은 세 축에 각각 독립 원장으로 6개 저장됐다.
  5. benchmark의 음성 추가 이득 판정은 [true, false, false]였다. 이득이 없거나 음성이 오류인 경우 text-only로 보수적으로 내려갔다.
  6. learner와 같은 cohort teacher는 안전 메타데이터를 읽었고, teacher 원음 접근은 403, 다른 cohort teacher의 세션 접근은 404였다.
  7. 응답에 raw transcript, utterance text, emotion label, diagnosis, total score가 없고 clinical_claim_allowed=false가 유지됐다.
  8. 동의 철회 뒤 새 voice timeline ingestion은 409로 닫혔다.
  9. learner 명시 삭제와 철회 연동 삭제를 모두 tombstone으로 완료했다. 이후 raw audio 목록은 비었고, word/event 및 voice measurement/fusion도 read model에서 제거됐다. transcript 보존 정책은 별도 유지됐다.

검증 명령

$token = 'g7-' + ('y' * 40)
C:\Users\encep\AppData\Local\Programs\Python\Python311\python.exe -X utf8 `
  scripts\smoke-multimodal-alliance-api.py `
  --api-base-url http://127.0.0.1:8014 `
  --internal-token $token

실행 결과는 전 항목 통과였다. 별도 저장소 단위·DB 회귀는 G7 관련 97개 테스트를 통과했고, scripts/smoke-multimodal-alliance-ledger.py도 실제 PostgreSQL에서 통과했다.

외부 환경 경계

이번 증거는 제품 원장과 HTTP 경계를 닫는 synthetic-audio 실증이다. 실제 Deepgram interim/final, 물리 마이크, 공개 WSS, 50분 양방향 장시간 운전은 기존 B2 음성 캐스케이드 외부 환경 게이트가 계속 소유한다. 이 항목을 로컬 synthetic 증거로 대체하거나 DONE으로 위장하지 않는다.