147 lines
5.5 KiB
JSON
147 lines
5.5 KiB
JSON
{
|
|
"title": "Jev 운영 API 배포와 합성 runtime 검증",
|
|
"date": "2026-09-22",
|
|
"source": {
|
|
"forgejo_sha": "969d9e2c3c94b4f3356defbf02bc863e1c8e30e1",
|
|
"api_image_sha256": "sha256:ba4a6ed98262ead78147e81cf54777f1bd655cf9aeb4f645d73624580b38b516",
|
|
"source_hash_verification": {
|
|
"candidate_matched_paths": 7,
|
|
"matches_git_candidate": true
|
|
}
|
|
},
|
|
"pre_deploy_preservation": {
|
|
"db_dump": {
|
|
"path": "/volume1/docker/vignette-prod/backups/pre-deploy-jev-20260922.dump",
|
|
"bytes": 11784055,
|
|
"pg_restore_list_passed": true
|
|
},
|
|
"rollback_inputs": {
|
|
"environment_backup": "private/env.nas.before-jev-20260922",
|
|
"compose_backup": "private/compose.before-jev-20260922.yml"
|
|
},
|
|
"data_checks": {
|
|
"table_count": 133,
|
|
"row_digest_before_after_equal": true,
|
|
"uploads": {
|
|
"file_count": 93,
|
|
"bytes": 52973,
|
|
"manifest_before_after_equal": true
|
|
}
|
|
}
|
|
},
|
|
"deployed_runtime": {
|
|
"api_container_id": "c7ee7b5f374c",
|
|
"api_healthy": true,
|
|
"api_restart_count": 0,
|
|
"engine_db_web_ids_unchanged": true
|
|
},
|
|
"public_readiness": {
|
|
"web_http_status": 200,
|
|
"main_javascript": {
|
|
"path": "/assets/index-BA_Q0J7Y.js",
|
|
"http_status": 200,
|
|
"content_type": "application/javascript"
|
|
},
|
|
"health_http_status": 200,
|
|
"db": true,
|
|
"engine": true,
|
|
"jev_configured": true,
|
|
"auth_me_unauthenticated_status": 401,
|
|
"cors": {
|
|
"exact_origin": true,
|
|
"credentials": true,
|
|
"sessions_options_preflight_status": 200
|
|
},
|
|
"health_live_verified": false,
|
|
"live_verified_note": "의도된 health 상태 플래그이며 실제 Jev 판단은 아래 합성 probe로 별도 확인했다."
|
|
},
|
|
"synthetic_dialogue_probe": {
|
|
"artifact": "scratch/jev/production-dialogue-final-20260922.json",
|
|
"status": "done",
|
|
"completed_turns": 3,
|
|
"requested_turns": 3,
|
|
"appraisal": {
|
|
"provider": "openrouter",
|
|
"model": "typesafe/jev-1.13-20260917",
|
|
"latency_ms_by_turn": [612, 245, 271]
|
|
},
|
|
"generation": {
|
|
"provider": "openai",
|
|
"model": "gpt-5.6-terra"
|
|
},
|
|
"total_ms_by_turn": [4045.1, 2197.8, 3730.9],
|
|
"cleanup": {
|
|
"http_status": 200,
|
|
"closed": false,
|
|
"status": "not_required",
|
|
"note": "stateless 경로의 정상 결과다."
|
|
},
|
|
"provenance": "synthetic_only",
|
|
"quality_pass": false
|
|
},
|
|
"authenticated_browser_session": {
|
|
"persona": "P13",
|
|
"session_id": "e1a1f582-6115-4604-873f-4cd6150a3df1",
|
|
"started_at": "2026-09-22T12:53:16.130582Z",
|
|
"ended_at": "2026-09-22T12:55:56.517571Z",
|
|
"round_trips": 3,
|
|
"transcript_entries": 6,
|
|
"reload_restored_entries": 6,
|
|
"review": {
|
|
"route": "/teach/session/{session_id}/review",
|
|
"session_ended": true,
|
|
"transcript_entries_displayed": 6,
|
|
"post_turn_evaluation_displayed": true,
|
|
"summary_based_on_six_entries_displayed": true,
|
|
"deep_loop_evaluation_status": "ready",
|
|
"deep_loop_evaluation_displayed": true
|
|
},
|
|
"database": {
|
|
"turn_seq": 3,
|
|
"turn_rows": 6,
|
|
"ended_at_present": true,
|
|
"affect_state": {
|
|
"emotion_hope": 0.7,
|
|
"emotion_anger": 0.1010978125,
|
|
"emotion_guilt": 0.0,
|
|
"emotion_shame": 0.0,
|
|
"emotion_trust": 0.2059246875,
|
|
"emotion_relief": 0.1166040625,
|
|
"emotion_anxiety": 0.543855625,
|
|
"emotion_sadness": 0.5012690625,
|
|
"emotion_loneliness": 0.139826875
|
|
}
|
|
},
|
|
"privacy_note": "대화 원문과 개인 식별 정보는 이 영수증에 기록하지 않는다."
|
|
},
|
|
"user_latency_observations": {
|
|
"cua_click_to_reply_upper_bounds_ms": {
|
|
"turn_1": 7392,
|
|
"turn_2": 13202,
|
|
"turn_3_ui_observation": 5001
|
|
},
|
|
"cua_limitations": "T1/T2는 도구 호출 사이 공백을 포함한 관측상한이고 T3도 UI 관측값이라 성능 통계나 기준 모델 대비 우위 측정이 아니다.",
|
|
"audit_ms": {
|
|
"client": [3983, 3387, 3694],
|
|
"jev": [498, 316, 318],
|
|
"prior_p1_privacy_without_raw_text": {
|
|
"client": 3239,
|
|
"jev": 470
|
|
}
|
|
},
|
|
"conclusion": "사용자 체감 속도가 해결됐거나 빨라졌다는 증거가 아니다.",
|
|
"delivery_path": "전체 출력 검사 뒤 글 표시, DB 저장 완료 뒤 음성 요청→서버 전량 수신→브라우저 전량 decode 뒤 재생한다. 첫 발화 캐시 원인은 단정하지 않는다.",
|
|
"open_action": "실제 경로의 text display·voice onset·완료 준비를 분리 측정하고 안전 검사를 유지한 최적화 뒤 반복 비교한다."
|
|
},
|
|
"observations": {
|
|
"deployment_availability": "배포 중 일시 502를 관측했으므로 무중단을 주장하지 않는다.",
|
|
"previous_probe": "scratch/jev/production-dialogue-20260922.json은 cleanup 결과를 오판한 역사 증거로 보존한다.",
|
|
"g6_producer_conflict": "기동 로그에 SupervisionResearchConflictError 1건을 관측했다. cohort별 예외 격리로 스케줄은 계속됐고 Jev·세션 경로와 분리되며, 이번 배포 diff에 producer·store 변경은 없다."
|
|
},
|
|
"open_gates": [
|
|
"독립 한국어 감정·사실 품질 평가",
|
|
"기존 경로 대비 전체 지연 반복 비교",
|
|
"USER-LATENCY: text display·voice onset·완료 준비의 실제 경로 분리 측정과 안전 검사 유지 최적화 뒤 반복 비교",
|
|
"G6-PRODUCER-CONFLICT: existing submission id/content hash 읽기 전용 대조, 동일 id 재실행 idempotency 충돌 해소, 해당 테스트와 실제 cycle 성공"
|
|
]
|
|
}
|