관리자 연결 복구 배포 검증 기록
This commit is contained in:
parent
fb640a75ac
commit
1f8f8ce0a8
6 changed files with 176 additions and 6 deletions
|
|
@ -36,6 +36,7 @@ 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 취급·주입은 소유자 경계 |
|
||||
| ADMIN-OPENROUTER-001 | 새 사용자 OAuth finish 성공 관측 | API/web 복구·실제 PostgreSQL rollback·배포/보존 census·공개 관리자 UI를 수용 | OpenRouter UI는 미연결, health Jev `live_verified=false`는 live 검증이 아님. 상세는 [운영 영수증](./evidence/admin-openrouter-recovery-2026-09-22.json)을 따른다. |
|
||||
| JEV-001 | 한국어 독립 평가와 전체 지연 반복 비교 | 운영 API·공개 JS·CORS preflight, 합성·인증 브라우저 3턴 runtime과 DB 감정 영속화를 수용했다. 감정·사실 품질과 지연을 평가한다. | 구현 수용·품질 승격 보류. 상세 수용/반려·최종 probe는 [Jev 결정문](../decisions/jev-client-affect.md)을 따른다. |
|
||||
| USER-LATENCY (JEV-001) | text display·voice onset·완료 준비의 실제 경로 분리 측정 | 안전 검사를 유지한 최적화 뒤 반복 비교 | 소수 CUA 관측상한·audit은 사용자 체감 속도 개선 증거가 아님 |
|
||||
| G6-PRODUCER-CONFLICT | 기존 submission id/content hash 읽기 전용 대조 | 동일 id 재실행 idempotency 충돌을 해소하고 해당 테스트와 실제 cycle 성공을 확인 | 기존 background producer 충돌 관측; Jev·세션 경로와 분리, 이번 배포 회귀로 단정하지 않음 |
|
||||
|
|
|
|||
160
docs/ops/evidence/admin-openrouter-recovery-2026-09-22.json
Normal file
160
docs/ops/evidence/admin-openrouter-recovery-2026-09-22.json
Normal file
|
|
@ -0,0 +1,160 @@
|
|||
{
|
||||
"schema_version": 1,
|
||||
"recorded_on": "2026-09-22",
|
||||
"scope": "관리자 OpenRouter 복구의 API/web SQL 수정, 실제 PostgreSQL 검증, 배포와 보존 census",
|
||||
"source": {
|
||||
"forgejo_commit": "d58eb67764b8e5d6c17472a845bfa4d7cc260973",
|
||||
"api_image_sha256": "4466081ee51a4c65ce80a927a8a604dc5212d5673a1eb2c553a5e845067cbe33",
|
||||
"api_container": "0cbd7fd7d3c6"
|
||||
},
|
||||
"root_cause_and_fix": {
|
||||
"observed_error": "AmbiguousColumnError for the existing refresh column",
|
||||
"fixes": [
|
||||
"기존 refresh column 참조를 명시했다.",
|
||||
"EXCLUDED.extra의 text 캐스트를 제거해 JSONB끼리 비교한다."
|
||||
],
|
||||
"actual_postgresql_verification": {
|
||||
"method": "임시 테이블에서 AST 원본 쿼리를 3회 실행한 뒤 rollback",
|
||||
"passed": true
|
||||
}
|
||||
},
|
||||
"pre_deploy_preservation": {
|
||||
"database_dump": {
|
||||
"name": "pre-deploy-admin-recovery-20260922.dump",
|
||||
"bytes": 11806566,
|
||||
"pg_restore_list_passed": true
|
||||
},
|
||||
"environment_and_compose_backups_retained": true
|
||||
},
|
||||
"deployment": {
|
||||
"api_replaced": true,
|
||||
"public_health": {
|
||||
"status": "ok",
|
||||
"db": true,
|
||||
"engine": true,
|
||||
"engine_mode": "openai",
|
||||
"jev_provider": "openrouter"
|
||||
},
|
||||
"api_tests": {
|
||||
"passed": 1173,
|
||||
"skipped": 1,
|
||||
"failed": 0
|
||||
},
|
||||
"api_replacement_phase_db_engine_web_containers_unchanged": true
|
||||
},
|
||||
"post_deploy_census": {
|
||||
"table_count": 133,
|
||||
"unchanged_table_count": 130,
|
||||
"activity_metadata_changes": {
|
||||
"app.app_user": {
|
||||
"rows": 1382,
|
||||
"row_count_unchanged": true,
|
||||
"digest_changed": true
|
||||
},
|
||||
"app.auth_session": {
|
||||
"rows": 1746,
|
||||
"row_count_unchanged": true,
|
||||
"digest_changed": true
|
||||
},
|
||||
"app.admin_health_event": {
|
||||
"before": 14040,
|
||||
"after": 14045
|
||||
}
|
||||
},
|
||||
"uploads": {
|
||||
"files": 93,
|
||||
"bytes": 52973,
|
||||
"manifest_sha256": "c6f63156cf38be0e551b2d8f64bdc4e76e76a013181a6ff732c04ff102b3a6b1",
|
||||
"unchanged": true
|
||||
},
|
||||
"api_replacement_phase_non_api_containers_unchanged_assertion_passed": true
|
||||
},
|
||||
"open_gates": [
|
||||
"새 사용자 OAuth finish 성공 관측"
|
||||
],
|
||||
"privacy": "키, 인증 코드, 개인 식별 정보, 대화 내용은 이 기록에 포함하지 않는다.",
|
||||
"web_verification": {
|
||||
"static_checks": {
|
||||
"typecheck": "passed",
|
||||
"build": "passed",
|
||||
"api_types": "passed",
|
||||
"build_entry": "index-CFb6KpZF.js"
|
||||
},
|
||||
"focused_checks": {
|
||||
"initial": {
|
||||
"passed": 13,
|
||||
"failed": 3
|
||||
},
|
||||
"independent_recheck": {
|
||||
"passed": 3,
|
||||
"failed": 0,
|
||||
"duration_seconds": 6.2,
|
||||
"selected_total_passed": 16
|
||||
},
|
||||
"fixed_preconditions": [
|
||||
"옵션 6에서 9로 stale assertion을 정정했다.",
|
||||
"인증 fixture와 API 기동 전제를 보완했다."
|
||||
]
|
||||
},
|
||||
"forgejo_web_commit": "fb640a75ac674c5bd5f7055daabd81b52112ad53",
|
||||
"forgejo_push_completed": true,
|
||||
"nas_web_image_sha256": "a6312d07af56f84a57f0858a74aa4e41b04c2e7031dbe105580b5d4456a5ad68",
|
||||
"nas_web_replacement": "completed",
|
||||
"pages_deployed": true,
|
||||
"whole_worktree_green": false,
|
||||
"web_deployment_completed": true,
|
||||
"nas_entry_asset": {
|
||||
"path": "/assets/index-DJgMn3pJ.js",
|
||||
"status": 200
|
||||
},
|
||||
"api_engine_db_containers_unchanged_assertion_passed": true,
|
||||
"pages_deployment_url": "https://0150d52e.vignette-b1q.pages.dev",
|
||||
"public_entry_asset": {
|
||||
"path": "/assets/index-CFb6KpZF.js",
|
||||
"status": 200
|
||||
},
|
||||
"asset_preservation": {
|
||||
"processed": 247,
|
||||
"preserved": 174,
|
||||
"existing": 73,
|
||||
"failed": 0
|
||||
},
|
||||
"authenticated_public_admin_ui": {
|
||||
"ready": true,
|
||||
"boot_diagnostic_visible": false,
|
||||
"server_recovery_visible": false,
|
||||
"engine": "openai",
|
||||
"model": "gpt-5.6-terra",
|
||||
"openrouter_provider_status": "not_connected"
|
||||
},
|
||||
"public_http": {
|
||||
"html_status": 200,
|
||||
"health_status": 200,
|
||||
"health": {
|
||||
"status": "ok",
|
||||
"db": true,
|
||||
"engine": true
|
||||
},
|
||||
"jev": {
|
||||
"configured": true,
|
||||
"live_verified": false,
|
||||
"provider": "openrouter"
|
||||
},
|
||||
"watchdog_inline_source_fingerprint_verified": true,
|
||||
"html_verifier": {
|
||||
"module_entry": "index-CFb6KpZF.js",
|
||||
"module_entry_matched": true,
|
||||
"inline_bootstrap_sha256": "c707015e9142e36974b79488aa150772cac63d1b17a2415bdca17c158c4c5f4f",
|
||||
"inline_bootstrap_matched": true,
|
||||
"accepted_html_differences": [
|
||||
"Cloudflare Insights script",
|
||||
"closing body newline"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"oauth_observation": {
|
||||
"start_status": 200,
|
||||
"finish_observed": false
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue