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 산출물은 커밋에서 제외했다.
This commit is contained in:
Yun Chan 2026-08-08 01:30:53 +09:00
parent 93dd8f82d7
commit 16e791e044
390 changed files with 243188 additions and 499 deletions

View file

@ -5,4 +5,13 @@ Docker Compose: web · api · postgres(pgvector) · Caddy proxy.
- API 이미지는 저장소 루트 컨텍스트에서 빌드한다. `data/personas` 같은 런타임 입력을 컨테이너 안 `/app` 기준으로 찾기 때문이다.
- 엔진 게이트웨이는 compose 밖 호스트 프로세스로 두고, API는 `ENGINE_URL`로 호출한다.
- RAG 임베딩/리랭커 의존성은 API 이미지 build arg `INSTALL_RAG=true`일 때만 설치한다. 기본 이미지는 슬림 모드이며 RAG 모델 미설정 시 앱이 명시적으로 degraded 처리한다.
- 배포 전 루트에서 `python scripts/check-deploy-preflight.py --env-file infra/.env`를 실행한다. DB까지 검증할 때는 API app-role `DATABASE_URL`을 넘기고 `--require-app-role`을 붙인다.
- 배포 전 루트에서 `python scripts/check-deploy-preflight.py --env-file infra/.env`를 실행한다. 프리플라이트는 G3~G8 내부 쓰기 토큰 6개가 각각 32자 이상이며 서로 다른 값인지 검사한다. DB까지 검증할 때는 API app-role `DATABASE_URL`을 넘기고 `--require-app-role`을 붙여 G0~G8 migration sentinel과 RLS 역할을 함께 확인한다.
- Compose 음성 설정은 `VIGNETTE_VOICE_STT_PROVIDER`, `DEEPGRAM_API_KEY`, `DEEPGRAM_STT_*`
`VIGNETTE_VOICE_TTS_PROVIDER`를 API에 주입한다. `deepgram` 선택 상태에서 key가 없고 OpenAI key만 있으면
runtime은 `openai-batch-fallback`을 보고할 수 있으므로, 배포 완료 판정에는 authenticated public WSS
`ready`의 STT/TTS provider/model 네 값을 기대값과 정확히 비교하는 mic-free preflight를 사용한다.
- mic-free preflight는 장치 열거·캡처를 하지 않으며 물리 마이크/50분 증거가 아니다. full soak는 실행 직전
사용자 명시 동의와 `--confirm-physical-capture`가 있을 때만 장치를 연다. Higgs는 dev 전용이다. 운영 TTS는
OpenAI API `gpt-4o-mini-tts`로 고정하고 Services Agreement의 앱 통합·출력 소유 근거와 최종 사용자 AI 생성
음성 고지를 함께 유지한다. 배포 완료 시 public health/ready의 provider/model exact match를 증거로 남긴다.
- 배포·soak evidence에는 API key, auth cookie, session ID, 축어록, 응답 payload와 원음을 기록하지 않는다.