{ "schema": "vignette.nas-relay-recovery.v1", "captured_at": "2026-08-18T15:48:00+09:00", "owner_approval": "2026-08-18 소유자 지시로 남은 작업 3순위로 'NAS 엔진 릴레이 복구(start-nas-preview-engine.ps1 -CheckOnly → 실제 1회 시작 → NAS health/auth/OpenAPI 재검증)'를 명시해 마무리를 지시함. LAN 노출(192.168.0.223:9100)은 중단 세션에서 명시 승인 완료. 방화벽 규칙 추가(관리자 승격)는 실행 시점 소유자 UAC 승인.", "checkonly": { "status": "preflight_passed", "mutation": false, "receipt_path": "D:\\workspace\\nas-relay-state\\receipt-checkonly-20260818.json", "binding": { "source_commit": "4771b97c3a9a4c52349f8a6a55a08a3ce0a5c880", "source_tree": "286723de877ed950c36656d5598fdf2d57c861fa", "launcher_sha256": "492d8b5c4ba21d1463c9a937ac2949f0a6d3725f6f37786f14dd5aac419fb27c", "python_sha256": "5f7b89a612c9b8af1d6456cdfcd1dbe5ca630849e79aebced9bee9a6694952ec", "env_sha256": "312afcb50c11be16d90fa6ad79c0b416f9d65c4877c06aeafd436260f18c18ec", "listen_address": "192.168.0.223", "port": 9100, "consumer_engine_url": "http://192.168.0.223:9100", "secret_value_emitted": false } }, "nas_consumer_contract_observed": { "engine_url": "http://192.168.0.223:9100", "engine_mode": "claude_cli", "source": "docker inspect vignette-preview-20260807 api 컨테이너 환경(2026-08-18 실측)" }, "actual_start": { "status": "passed", "started_at": "2026-08-18T06:25:35Z (15:25:35 KST)", "receipt_path": "D:\\workspace\\nas-relay-state\\receipt-actual-20260818.json", "pid": 65328, "checks": { "source_detached_clean": true, "port_previously_unused": true, "listener_owner_matches": true, "liveness_ok": true, "generation_ready": true }, "notes": "엔진 구독 한도(15:00 KST) 리셋 직후 15:05 자동화가 실행했다. ready?force=true 실생 1회 통과." }, "firewall_fix": { "problem": "NAS→릴레이 TCP 연결 타임아웃(transport error). 릴레이의 Python311 인바운드 허용 규칙이 Public 프로필뿐이었고 이더넷 네트워크는 Private.", "fix": "인바운드 TCP 9100 허용 규칙 추가 — LocalAddress 192.168.0.223, RemoteAddress 192.168.0.0/24, Profile Private(소유자 UAC 승인). 규칙명 'Vignette NAS preview engine relay (9100 LAN)'." }, "verification": { "local_relay_health": "http://192.168.0.223:9100/health → {ok:true, engine:claude_cli}", "nas_origin_health_3_consecutive": "http://100.116.83.60:8088/api/health → status=ok, db=true, engine=true, engine_detail=OK (3/3)", "auth_me_status": 401, "openapi_paths": 126, "nas_to_relay_probe_from_nas": "SSH YunChan@100.116.83.60 → curl 192.168.0.223:9100/health → ok:true" }, "remaining_for_full_current_green": "201차 계약의 actual-origin 실제 회기 turn→review smoke는 아직 실행 전 — health/auth/OpenAPI 회복만으로 current GREEN 표기하지 않는다." }