From 0d5e211bd54d1bc150417f7b3c35441d12d8b6be Mon Sep 17 00:00:00 2001 From: Yun Chan Date: Tue, 18 Aug 2026 12:08:29 +0900 Subject: [PATCH] =?UTF-8?q?TODO=20Pages=20=EB=B0=B0=ED=8F=AC=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C=C2=B7NAS=20=EB=A6=B4=EB=A0=88=EC=9D=B4=201=EB=8B=A8?= =?UTF-8?q?=EA=B3=84=20=EC=83=81=ED=83=9C=20=EB=8F=99=EA=B8=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 공개 Web Pages 배포 항목 완료 처리(cf899b7f, production 4edc02d3, 증거 JSON 경로) - NAS relay 항목에 2026-08-18 CheckOnly 통과 사실과 15:05 자동화 잔여 범위 반영 --- docs/TODO.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/docs/TODO.md b/docs/TODO.md index a2d1458..ea375f2 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -43,11 +43,12 @@ 남은 범위는 예약 실행, 실패 알림, NAS/off-host 암호화 복제, 주기적 restore drill과 보존 정책이다. - [ ] **공개 Google OAuth 실제 `/turn` proof** — 로그인 계정으로 `storageState` 캡처 → `E2E_PUBLIC_AUTH=1` + `chromium-public-auth` 1회 통과. 실행 명령은 대시보드 "다음 실행 명령"/`HANDOFF.md`. (소유자 보류 중) -- [ ] **공개 Web 모바일 보정 Pages 배포** — detached-clean `00f851a6…c229`·tree `9f78cd16…9486` 후보는 - API type/typecheck, 2회 결정적 build, 상단 44px·로그인 무가로넘침·자기주도 폐루프 E2E 12/12와 현재/최근 - Pages 자산 133개 보존을 통과했다. actual 공개는 정상 서비스 중이지만 구 Web이라 모바일 상단 6개가 44px - 미만이고, NAS 로그인은 10px overflow다. 소유자 승인 뒤 Pages만 단일 owner로 배포하고 custom-domain 새 - asset SHA/MIME, 기존 asset 200, desktop/mobile 화면을 재검증한다. 공개 API/DB·Scheduled Task는 건드리지 않는다. +- [x] **공개 Web 모바일 보정 Pages 배포** — 2026-08-18 소유자 승인 후 detached-clean `cf899b7f…7c96`로 + 완료했다(00f851a6 후보의 모바일 보정을 포함한 상위 커밋). API type/typecheck, 2회 결정적 build(599파일 + sha256 전일치), 7개 origin 자산 143개 보존(최종 742파일) 후 Cloudflare Pages production `4edc02d3` 배포 — + custom-domain 새 엔트리 `index-BWxBaCPM.js`/`index-BUfQc2Rm.css` 서빙, 직전 엔트리 `index-BrpoQ5nP.js` 200 + 보존, preview 200을 확인했다. 공개 API/DB·Scheduled Task는 건드리지 않았다. 증거: + `docs/ops/evidence/public-web-deploy-2026-08-18.json`. 증거: `ops/evidence/public-web-preflight-2026-08-12.json`. - [ ] **Compose 패키징용 `infra/.env` owner-secret** — 현재 운영 direct-runtime은 독립 G3~G8 token 주입, non-owner app-role preflight와 공개 health를 통과했다. Compose로 전환할 때만 `APP_DB_PASSWORD` 등 패키징 @@ -89,11 +90,14 @@ generation readiness와 실패 cleanup을 강제하도록 보강했고 contract 8/8을 통과했다. detached-clean `f08e03de…f191`·tree `00275133…0abd` exact `-CheckOnly`도 launcher/Python/env SHA 결속, `mutation=false`, listener `0→0`, runtime state 0으로 PASS했다. 실제 9100 시작은 소유자 승인 전 미실행이다. -- [ ] **NAS preview engine relay current 복구** — 위 exact release와 검증 SHA를 그대로 사용해, 승인된 단일 owner가 - LAN listener를 1회 시작하고 NAS +- [ ] **NAS preview engine relay current 복구** — 2026-08-18 소유자 승인으로 1단계를 닫았다: detached-clean + `4771b97c…c880`·tree `286723de…c1fa`에서 launcher/Python SHA(8-12 핀과 동일) + NAS 실행 컨테이너의 + `ENGINE_GATEWAY_SHARED_SECRET`을 결속한 env SHA로 `-CheckOnly`가 통과했다(mutation=false, LAN + `192.168.0.223:9100`, NAS 무접촉, 영수증 `D:\workspace\nas-relay-state\receipt-checkonly-20260818.json`). + 남은 것: 엔진 구독 한도 리셋(15:00 KST) 뒤 15:05 자동화가 같은 핀으로 LAN listener를 1회 시작하고 NAS health 3/3·db/engine true, auth 401, OpenAPI 126·assets, actual-origin turn→review를 재검증한다. 실패 시 이번 실행 소유 PID/listener만 정리하고 자동 재시도하지 않는다. 2026-08-12 15:24 KST local health는 3회 - 타임아웃이므로 현재 NAS를 GREEN으로 표기하지 않는다. + 타임아웃이므로 재검증 통과 전까지 현재 NAS를 GREEN으로 표기하지 않는다. - [ ] **stable-source task 재등록 + 재부팅 후 watchdog smoke** — 사용자 승인 clean commit의 detached release root에 watchdog·로그온 boot task를 함께 재등록하고 action의 commit/tree/script SHA pin, 5분 watchdog `LastTaskResult=0`, 로그온 boot, 실제 Windows 재부팅 후 엔진/API/터널 자동 복구 + public `/turn`을 실측한다.