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 산출물은 커밋에서 제외했다.
95 lines
4 KiB
JSON
95 lines
4 KiB
JSON
{
|
|
"schema": "vignette.nas-preview-deployment-evidence.v1",
|
|
"captured_at": "2026-08-07T12:59:25+09:00",
|
|
"target": {
|
|
"base_url": "http://100.116.83.60:8088",
|
|
"nas": "YUNCHAN-NAS",
|
|
"compose_project": "vignette-preview-20260807",
|
|
"remote_root": "/volume1/docker/vignette-preview-20260807",
|
|
"isolation": "dedicated compose project, ports, network, and volumes"
|
|
},
|
|
"runtime": {
|
|
"deployment_sha": "a8c27b0aadcb9dacea86c4be5e62e19277b9cc2678ebca51aa02998d2c2d1a0d",
|
|
"previous_deployment_sha": "e9b482ccba616a610c1f4862366d44aabae20ee8c82d8ef7f2cf16069f2d6e99",
|
|
"api_image": "sha256:79ec731f6bcdb79850507f5b711930a710e2d8e82276e3ea61dc8e4a60e04450",
|
|
"web_image": "sha256:c530213f4f8b23f228b2999df0c3653173cfa6939b6abb476f17df7488462f28",
|
|
"health": {
|
|
"status": "ok",
|
|
"environment": "dev",
|
|
"db": true,
|
|
"engine": true,
|
|
"engine_mode": "claude_cli"
|
|
},
|
|
"openapi_paths": 124,
|
|
"unauthenticated_me_status": 401,
|
|
"db_contract_ready": true
|
|
},
|
|
"browser_proof": {
|
|
"learner_launch_e2e": "1 passed in 13.1s",
|
|
"real_stream_review_e2e": "1 passed in 24.4s; test body 23.4s",
|
|
"live_turn_session_id": "c96922ab-0334-4864-ae48-df41a24aae14",
|
|
"durable_review_turns": 2,
|
|
"durable_client_turns": 1,
|
|
"review_api_recheck": {
|
|
"captured_at": "2026-08-07T08:29:23+09:00",
|
|
"status": 200,
|
|
"session_id": "c96922ab-0334-4864-ae48-df41a24aae14",
|
|
"stored_turns": 2,
|
|
"learner_turns": 1,
|
|
"client_turns": 1
|
|
},
|
|
"physical_microphone_used": false,
|
|
"release_agent_postdeploy": {
|
|
"test": "session-persistence: browser SSE stream -> DB-backed review",
|
|
"status": "passed",
|
|
"stdout_sha256": "b45111ce9f47d30e4c848362813940f3efd5464660b5046159b88befd9a59840"
|
|
},
|
|
"screenshots": [
|
|
"nas-preview-learner-home-2026-08-07.png",
|
|
"nas-preview-learner-session-2026-08-07.png",
|
|
"nas-preview-live-turn-2026-08-07.png"
|
|
]
|
|
},
|
|
"deployment_gates_added": [
|
|
"ASCII-only active root .dockerignore patterns for Synology BuildKit",
|
|
"required FRONTEND_ORIGIN_MAP without nested JSON interpolation",
|
|
"DB health waits for app role and final G8 schema access",
|
|
"API health requires status=ok, db=true, and engine=true",
|
|
"five-minute fresh-DB initialization start period",
|
|
"explicit dev-login email-domain allowlist",
|
|
"SSE done event terminates the browser reader without waiting for transport EOF",
|
|
"clean candidate generated API contract and Linux shell scripts are normalized to LF",
|
|
"promotion and rollback share the canonical snapshotted NAS env path with preflight",
|
|
"post-recreate transient readiness retries are bounded to 180 seconds"
|
|
],
|
|
"release_agent": {
|
|
"status": "deployed_ssot_synced",
|
|
"desired_sha": "a8c27b0aadcb9dacea86c4be5e62e19277b9cc2678ebca51aa02998d2c2d1a0d",
|
|
"readiness_attempts": 3,
|
|
"openapi_goals": ["G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8"],
|
|
"candidate_session_e2e_duration_ms": 505578,
|
|
"candidate_session_e2e_result": "24 passed",
|
|
"postdeploy_browser_review_duration_ms": 25328,
|
|
"rollback_rehearsal": {
|
|
"status": "verified",
|
|
"restored_api_image": "sha256:1bdaad1eb225936a292739c44975017f75981b6710505a2c272e438a9fdccf25",
|
|
"restored_web_image": "sha256:1833da07e42a4e1f008be78b94f08f7f326b5387cf28f720157568eed0ec82fb",
|
|
"restored_openapi_paths": 122,
|
|
"restored_auth_status": 401
|
|
}
|
|
},
|
|
"automation": {
|
|
"id": "vignette-e2e",
|
|
"name": "Vignette 회기 E2E 정기 검증",
|
|
"schedule": "daily 04:30 KST",
|
|
"status": "ACTIVE",
|
|
"notification_policy": "failed_runs_only",
|
|
"nas_promotion_policy": "material milestone + deterministic release-only patch + manifest checker + canonical clean-index + NAS preflight + changed deployment SHA",
|
|
"run_history_attached": false
|
|
},
|
|
"remaining_gate": {
|
|
"id": "g7-external-proof",
|
|
"status": "BUILD",
|
|
"reason": "physical microphone capture is not authorized and a Deepgram operations key is unavailable"
|
|
}
|
|
}
|