From a1a416ca4a7a2fb0fba1744bacdf860064aaa524 Mon Sep 17 00:00:00 2001 From: Mina Choi Date: Tue, 15 Sep 2026 08:28:41 +0900 Subject: [PATCH] =?UTF-8?q?[fix]=20site,docs:=20=EA=B5=BD=EA=B8=B0=20?= =?UTF-8?q?=EC=A0=9C=EC=99=B8=EB=8A=94=20`stay`=20=ED=95=98=EB=82=98?= =?UTF-8?q?=EB=A1=9C=20=E2=80=94=20stay2=20=EB=8A=94=20=EC=8B=A4=EC=A0=9C?= =?UTF-8?q?=20=EC=82=AC=EC=9D=B4=ED=8A=B8=EA=B0=80=20=EC=93=B0=EA=B3=A0=20?= =?UTF-8?q?=EC=9E=88=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 앞 커밋(7425cb4)이 stay2·stay3 까지 막아 버터브루(slug=stay2) 재굽기가 실패했다 (실측 2026-09-15: `✗ stay2 — 슬러그 'stay2' 는 시연본이…`, 프리렌더 exit 1). 시연본은 `/s/stay` 하나다(mockup/README 2.1) — 자산도 `/s/stay/` 밑으로 자급자족이라 다른 사이트를 다 구워도 안 깨진다. - prerender.ts: PROTECTED_SLUGS 기본값 `stay` - AGENTS.md: 같은 내용 tsc·eslint 통과 Co-Authored-By: Claude Opus 5 (1M context) --- AGENTS.md | 4 ++-- solution/site/scripts/prerender.ts | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 7bbb7de..afd8354 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -34,8 +34,8 @@ → **`out/assets` 에서 파일을 지우는 코드는 `out/s/**` 의 HTML 이 참조하는 것을 먼저 뺀다** (`prerender.ts` `referencedAssets`). 보관 기간으로는 못 막는다 — 기간이 지나면 같은 일이 난다. → 목업을 다루는 작업은 `out/s/` 를 먼저 열어 **payload 가 없는 디렉토리가 무엇인지** 본다. - → ★ **목업 슬러그는 프리렌더가 굽지 않는다** (`prerender.ts` `PROTECTED_SLUGS`, 기본 - `stay,stay2,stay3` · `PRERENDER_PROTECTED_SLUGS` 로 덮어쓴다). "payload 가 없으면 안 굽는다" + → ★ **`stay` 는 프리렌더가 굽지 않는다** (`prerender.ts` `PROTECTED_SLUGS`, 기본 `stay` · + `PRERENDER_PROTECTED_SLUGS` 로 덮어쓴다). "payload 가 없으면 안 굽는다" 는 보호가 못 된다 — **payload 가 생기는 순간** 덮인다. 실측(2026-09-15): 누가 빌더에서 슬러그 `stay` 로 발행해 `payloads/stay.json` 이 생기자 프리렌더가 `/s/stay` 를 그 payload 로 구워 목업을 통째로 날렸다(캐치프레이즈 100개·미니 플레이어·날씨 문구·주입분 전부). diff --git a/solution/site/scripts/prerender.ts b/solution/site/scripts/prerender.ts index da38513..bcd3a4b 100644 --- a/solution/site/scripts/prerender.ts +++ b/solution/site/scripts/prerender.ts @@ -88,11 +88,15 @@ const SITE_DIR = 's'; * ★ 슬러그를 막는 것이지 발행을 막는 것이 아니다. 백엔드는 발행에 성공했다고 보고, 여기서 * 실패 보고서를 써 준다 — 사장님 화면에 사유가 뜨고, 목업은 그대로 남는다. * + * ★ `stay` 하나만 막는다. `stay2` · `stay3` 도 원래 목업이었지만 그 슬러그는 이미 실제 사이트가 + * 가져가 발행 중이라(버터브루 = stay2) 막으면 그 사이트가 재굽기에서 빠진다. + * 시연본은 `/s/stay` 다(mockup/README 2.1). + * * ★ 목업을 늘리거나 걷어낼 때는 `PRERENDER_PROTECTED_SLUGS`(쉼표) 로 덮어쓴다. 값을 비우면 * 보호가 전부 풀린다 — 목업을 정식 사이트로 넘길 때만 그렇게 한다. */ const PROTECTED_SLUGS = new Set( - (process.env.PRERENDER_PROTECTED_SLUGS ?? 'stay,stay2,stay3') + (process.env.PRERENDER_PROTECTED_SLUGS ?? 'stay') .split(',') .map((slug) => slug.trim()) .filter(Boolean),