Jev 운영 배포 검증과 남은 확인 항목 기록

This commit is contained in:
Yun Chan 2026-09-22 21:49:10 +09:00
parent 969d9e2c3c
commit 20dc30c8aa
7 changed files with 291 additions and 15 deletions

View file

@ -36,7 +36,8 @@ npx playwright test e2e/uc-session-conversation.spec.ts --grep '스트림 도중
| G8-EXTERNAL | 실DB/public 사람 게이트 | 승인·보류·반려와 append-only effect의 실제 public proof | local fixture와 route E2E는 대체 불가 |
| G7-EXTERNAL | 동의 기반 음성 외부 proof | 3,120초 soak, 3,000초 overlap high-water, 독립 human pack, checker exit 0 | 장치 선택·명시 동의 전 마이크를 열지 않음 |
| ANTHROPIC-001 | provider live 동일성 비교 | 승인 주입한 기관 키로 응답·계량·오류 표면화 비교 | credential 취급·주입은 소유자 경계 |
| JEV-001 | 한국어 독립 평가와 전체 지연 반복 비교 | 감정·사실 품질과 지연을 평가하고, 커밋 시 고정 evidence 지문을 재검증한다. | 구현 수용·품질 승격 보류, 운영 미배포. 상세 수용/반려·최종 probe는 [Jev 결정문](../decisions/jev-client-affect.md)을 따른다. |
| JEV-001 | 한국어 독립 평가와 전체 지연 반복 비교 | 운영 API·공개 JS·CORS preflight와 합성 3턴 runtime을 수용했다. 감정·사실 품질과 지연을 평가한다. | 구현 수용·품질 승격 보류, 인증 브라우저 회기·DB 감정 영속화는 패스키 확인 대기. 상세 수용/반려·최종 probe는 [Jev 결정문](../decisions/jev-client-affect.md)을 따른다. |
| G6-PRODUCER-CONFLICT | 기존 submission id/content hash 읽기 전용 대조 | 동일 id 재실행 idempotency 충돌을 해소하고 해당 테스트와 실제 cycle 성공을 확인 | 기존 background producer 충돌 관측; Jev·세션 경로와 분리, 이번 배포 회귀로 단정하지 않음 |
| VNET-001 | vnet 공개 전환 | DNS·Cloudflare zone 권한·Google redirect URI와 live 검증 | 현재 NAS ingress를 넓히지 않음 |
| PIPELINE-001 | Forgejo 기준 NAS 자동배포 hook | 수동 git-container clone·SHA 검증·NAS build/compose 절차를 보존한 자동화와 rollback/approval 경계 | 현 수동 실증 절차를 우회하지 않음 |
| INGRESS-001 | Cloudflare tunnel 제거 지시의 대체 ingress gate | NAS ingress 대체 경로의 보안·가용성·OAuth 경계를 검증한 뒤 tunnel retirement 승인 | tunnel 제거는 사용자 지시이나 대체 ingress 검증 전 미이행 |

View file

@ -0,0 +1,94 @@
{
"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
},
"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": [
"독립 한국어 감정·사실 품질 평가",
"기존 경로 대비 전체 지연 반복 비교",
"Google 인증 브라우저의 운영 회기 create/turn/end",
"운영 DB 감정 영속화 확인",
"G6-PRODUCER-CONFLICT: existing submission id/content hash 읽기 전용 대조, 동일 id 재실행 idempotency 충돌 해소, 해당 테스트와 실제 cycle 성공"
]
}