vignette/docs/ops/evidence/recovery-delta-merge-manifest-2026-08-07.json
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

130 lines
4 KiB
JSON

{
"artifact_kind": "isolated_recovery_delta_merge_manifest",
"generated_at": "2026-08-07T17:19:55+09:00",
"privacy": {
"database_identifiers_omitted": true,
"user_content_omitted": true,
"secrets_omitted": true
},
"source": {
"host": "127.0.0.1",
"port": 55432,
"transaction_read_only": true,
"runtime_fingerprint_before": "8e62f534a7681973434d622e016ce34422899920c01e02857878695213df91fe",
"runtime_fingerprint_after": "8e62f534a7681973434d622e016ce34422899920c01e02857878695213df91fe",
"runtime_fingerprint_unchanged": true,
"post_counts": {
"users": 706,
"sessions": 448,
"turns": 204,
"google_users": 2,
"google_sessions": 1
}
},
"candidate_backup": {
"path": "D:\\workspace\\vignette-recovery\\candidate-pre-delta-20260807-165137.dump",
"sha256": "a3bc01788c4b8f82b0a8acb9bae929b904bb000c093490056eb30b920e3ced96",
"bytes": 7292010
},
"post_merge_dump": {
"path": "D:\\workspace\\vignette-recovery\\candidate-post-delta-20260807-172059.dump",
"sha256": "d24eaa753526dff77d889ed2a48477d4df4bc2b854878543f89f4db6f6502e32",
"bytes": 7294785
},
"rolled_back_attempts": [
{
"reason": "client-side identifier serialization guard",
"transaction_rolled_back": true,
"candidate_sessions_after": 29
},
{
"reason": "candidate migration-07 constraint drift",
"transaction_rolled_back": true,
"candidate_sessions_after": 29
},
{
"reason": "synthetic pulse audit row detected by exact-count postcondition",
"transaction_rolled_back": true,
"candidate_sessions_after": 29
}
],
"schema_preflight": {
"merge_table_columns_exact": true,
"merge_table_constraints_exact": true,
"migration_07_candidate_only": {
"on_error_stop": true,
"single_transaction": true,
"terminal_constraint_aligned": true
},
"migration_16_candidate_only_post_merge": {
"on_error_stop": true,
"single_transaction": true,
"required_provenance_columns": 5,
"required_provenance_columns_not_null": 5,
"instrument_fk_validated": true,
"instrument_check_validated": true,
"provenance_violations": 0
}
},
"merge": {
"source_fingerprint_sha256": "959d7537be3906cca515b491f49422b006152aca7f075530c4682147d095007f",
"session_identifier_verified_internally": true,
"existing_user_remapped_by_external_id": true,
"existing_case_profile_reused": true,
"existing_profile_content_unchanged": true,
"auth_session_copied": false,
"auth_session_unchanged": true,
"original_session_no": 1,
"resolved_session_no": 3,
"source_rows": {
"sessions": 1,
"turns": 0,
"case_profiles": 1,
"session_states": 1,
"alliance_pulses": 1,
"pulse_status_events": 2,
"self_assessments": 1,
"measurement_events": 9,
"session_summaries": 1,
"model_runs": 2
}
},
"candidate_postconditions": {
"users": 84,
"sessions": 30,
"turns": 705,
"google_sessions": 30,
"orphans": 0,
"duplicate_external_ids": 0,
"application_owned_tables": 0,
"case_session_no_duplicates": 0,
"chronology_inversions": 0,
"merged_session_is_latest_projection": true,
"learner_rls_visible": true
},
"idempotency_replay": {
"result": "already_applied",
"source_fingerprint_verified": true,
"session_identifier_verified_internally": true,
"duplicate_insertions": 0,
"protected_data_unchanged": true
},
"candidate_auth_session_census": {
"total": 116,
"valid": 0,
"revoked": 20,
"expired_unrevoked": 96,
"mutated": false
},
"original_volume": {
"present": true,
"read_write_mounts": 0,
"read_only_mounts": 0,
"mutated": false
},
"candidate_api_smoke": {
"status": "not_run",
"reason": "isolated port 8016 was stopped and the local start command was rejected by shell policy before process creation",
"database_projection_and_rls_verified": true
}
}