# Outcome & Alliance OS G0/G1/G3 로컬 하드닝 증거 (2026-08-07) ## 결론 - G0 자동 provenance census가 RLS evaluator 컨텍스트에서 provenance-bearing 테이블 28개를 자동 탐색했다. 중앙 G0 계약과 G7 table-local 계약을 분리하고 null/blank, unknown source/perspective, incompatible pair, orphan instrument/model-run/evidence, 필수 model-run 누락을 fail-closed로 검사했다. 실데이터 93개 `measurement_event`, 19개 `model_run`, 18개 rupture observation을 포함한 최종 결과는 위반 0건이다. - G0 마이그레이션은 고유 임시 DB에서 01~06 선행 적용, `07_measurement_foundation.sql` 트랜잭션 적용, 롤백 원상복귀, 재적용 성공까지 실증했다. 임시 DB는 종료 시 제거됐다. - 기존 영속 fixture의 `session_state.rapport_credit=0.625`, `case_profile.alliance_level=0.375`, `SessionEvaluation.distribution=7.0`을 기존 read와 새 legacy adapter read로 비교했고 세 값 모두 무손실이었다. G0 적용 뒤 기존 행도 변하지 않았다. - G1 동일 payload 재전송은 HTTP 202와 동일 `pulse_id`, `idempotent_replay=true`를 반환하고 agent job을 재예약하지 않는다. 변경 payload는 409다. 다른 학습자와 다른 코호트 교수자는 모두 404이며, 정상 상태 감사 이력은 `awaiting_agents → ready`다. - G3는 한 실제 회기에서 서로 다른 세 episode를 `missed`, `partial`, `resolved`로 만들었다. API read model과 PostgreSQL terminal state가 모두 일치했고 8개 observation event의 `sequence_no`가 episode별 1부터 연속이었다. ## 실행 증거 ### G0 provenance census ```powershell py -3.11 scripts/check-measurement-provenance-census.py ` --out docs/ops/evidence/measurement-provenance-census-live-2026-08-07.json ``` - registered/discovered producer tables: `28/28` - unknown/missing producer tables: `0/0` - null/blank provenance: `0` - unknown source/perspective 및 incompatible pair: `0` - orphan instrument/model-run/evidence: `0` - model/agent producer의 필수 model-run 누락: `0` ### G0 migration 및 legacy rehearsal ```powershell py -3.11 scripts/rehearse-measurement-migration.py ` --out docs/ops/evidence/measurement-migration-rehearsal-2026-08-07.json ``` - G0 객체 5종 apply 전: 모두 없음 - transaction 내부 apply 후: 모두 있음 - rollback 후: 모두 없음 - committed forward apply 후: 모두 있음 - temporary database removed: `true` - legacy old/new numeric projection lossless: `true` - legacy rows unchanged: `true` ### G1 live API/PostgreSQL 증거 파일: `docs/ops/evidence/alliance-pulse-live-hardening-2026-08-07.json` - session: `4d98dada-928d-45cc-b389-4043837d0b28` - pulse: `7c6b1b76-139b-4fdf-80c4-4771bb92c793` - same payload: `202`, stable ID, `idempotent_replay=true` - changed payload: `409` - other learner / cross-cohort teacher: `404 / 404` - terminal 3×3 read: 9 measurements - supervisor 포함 latest 4×3 read: 12 measurements - PostgreSQL append-only events: 15, model runs: 2 ready ### G3 live API/PostgreSQL 증거 파일: `docs/ops/evidence/rupture-repair-live-three-state-2026-08-07.json` - session: `811d904f-64eb-4602-81d4-e4f7309feb03` - state coverage: `missed`, `partial`, `resolved` - episode count: 3 - append-only observation event count: 8 - episode별 sequence 연속성: `true` - API/DB terminal-state equality: `true` - other learner / cross-cohort teacher deny: `true / true` ## 회귀 검증 - focused provenance/G0/G1/G3 tests: `91 passed` - full API tests: `767 passed` - `npm run check:api-types`: PASS - `npm run check:measurement-contract`: PASS - `npm run typecheck`: PASS ## 경계 - 이 작업은 로컬 DB/API만 사용했다. 공개 배포·원격 DB 변경은 하지 않았다. - 실서버 fixture는 기존 정책대로 고유 `dev:e2e` identity와 ID만 보존하며 transcript, 이메일, 토큰, DB 연결 문자열은 증거에 기록하지 않았다.