공개 Web Pages 배포와 NAS 릴레이 프리플라이트 증거

- Cloudflare Pages production 4edc02d3(clean cf899b7f, 빌드×2 결정성 599파일):
  7개 origin 143자산 보존(최종 742파일), 커스텀 도메인 새 엔트리 index-BWxBaCPM.js 서빙,
  직전 엔트리 자산 200 보존 확인
- NAS 엔진 릴레이: start-nas-preview-engine.ps1 -CheckOnly 프리플라이트 통과
  (4종 SHA pin + LAN 192.168.0.223:9100, mutation=false, NAS 무접촉). 실제 1회 시작은
  엔진 구독 한도 리셋(15:00) 뒤 15:05 자동화가 직렬 게이트 재검증과 함께 수행
- HANDOFF 2026-08-18 절 직렬 게이트 삼각화·배포·릴레이 항 추가, 대시보드 209차 노트,
  SSOT 체커 59 PASS
This commit is contained in:
Yun Chan 2026-08-18 12:07:09 +09:00
parent cf899b7f15
commit 680db74ba3
4 changed files with 97 additions and 0 deletions

View file

@ -0,0 +1,33 @@
{
"schema": "vignette.nas-relay-recovery.v1",
"captured_at": "2026-08-18T12:05: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)은 중단 세션에서 명시 승인 완료.",
"checkonly": {
"status": "preflight_passed",
"mutation": false,
"receipt_path": "D:\\workspace\\nas-relay-state\\receipt-checkonly-20260818.json",
"binding": {
"source_commit": "4771b97c3a9a4c52349f8a6a55a08a3ce0a5c880",
"source_tree": "286723de877ed950c36656d5578fdf2d57c861fa",
"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
},
"note": "launcher·python SHA-256는 2026-08-12 CheckOnly 핀(492d8b5c…/5f7b89a6…)과 동일하다. env는 NAS preview API 실행 컨테이너(vignette-preview-20260807, releases/4d15d055…)의 ENGINE_GATEWAY_SHARED_SECRET(64자)을 로컬 D:\\workspace\\nas-relay-state\\nas-preview-engine.env 으로 값 노출 없이 반출해 결속했다. NAS 컨테이너·DB·설정은 건드리지 않았다(listener 9100: 0→0)."
},
"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": "pending_until_engine_limit_reset",
"reason": "엔진 구독 세션 한도(resets 3pm KST) 동안 ready?force=true 1회 실생이 실패하면 fail-closed로 리스너를 정리하므로, 실제 시작을 리셋 후로 이관했다.",
"automation": "15:05 KST 자동화(직렬 게이트 재검증 직후)가 동일 핀으로 actual 1회 시작 + NAS health 3회/auth 401/OpenAPI 126 재검증을 수행하고 이 파일을 갱신한다.",
"receipt_path": "D:\\workspace\\nas-relay-state\\receipt-actual-20260818.json"
}
}

View file

@ -0,0 +1,52 @@
{
"schema": "vignette.public-web-deploy.v1",
"captured_at": "2026-08-18T11:55:47+09:00",
"status": "deployed_and_verified",
"owner_approval": "2026-08-18 소유자 지시로 남은 작업 2순위로 '공개 Web Cloudflare Pages 배포(프리플라이트 → wrangler pages deploy → custom domain 검증)'를 명시해 마무리를 지시함 — public-web-preflight-2026-08-12.json approval_boundaries.public_pages_deploy 요건 충족",
"source": {
"branch": "master",
"commit": "cf899b7f1594e3ec522817be7ece7af3c8e17c96",
"tree": "c69908bf76552ad3dfd247a1c4a01507ab6cccb4",
"candidate_root": "D:\\workspace\\vignette-public-web-cf899b7f",
"tracked_clean": true
},
"candidate_gates": {
"npm_ci_ignore_scripts": "passed",
"typecheck": "passed (tsc -b)",
"production_build_runs": 2,
"production_build_deterministic": true (599/599 sha256 ),
"file_count_before_asset_preservation": 599
},
"deployment": {
"project": "vignette",
"branch": "main",
"commit_hash": "cf899b7f1594e3ec522817be7ece7af3c8e17c96",
"deployment_url": "https://4edc02d3.vignette-b1q.pages.dev",
"uploaded_new": 35,
"reused_already_uploaded": 707,
"final_file_count": 742
},
"asset_preservation": {
"origins_checked": 7,
"origins": [
"https://vignette.chanpaca.net",
"https://5a525329.vignette-b1q.pages.dev",
"https://e1c73735.vignette-b1q.pages.dev",
"https://bbebb2d3.vignette-b1q.pages.dev",
"https://44edecc8.vignette-b1q.pages.dev",
"https://0ffdc694.vignette-b1q.pages.dev",
"https://7bd59055.vignette-b1q.pages.dev"
],
"assets_added": 143,
"previous_entry_preserved_check": {
"url": "https://vignette.chanpaca.net/assets/index-BrpoQ5nP.js",
"http_status": 200
}
},
"verification": {
"custom_domain": "https://vignette.chanpaca.net — 200, 새 엔트리 assets/index-BWxBaCPM.js + assets/index-BUfQc2Rm.css 반영",
"immutable_preview": "https://4edc02d3.vignette-b1q.pages.dev — 200",
"api_origin_map": "vignette.chanpaca.net → https://api-vignette.chanpaca.net (변경 없음, 빌드 무관 런타임 매핑)",
"public_api_health_at_deploy": "status=degraded·db=true·engine=false — Claude 구독 세션 한도(resets 3pm KST). 워치독+실패 TTL 30초 수정으로 리셋 후 자동 복구 예상. 정적 배포 자체와 무관"
}
}