[fix] site,docs: 굽기 제외는 stay 하나로 — stay2 는 실제 사이트가 쓰고 있다

앞 커밋(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) <noreply@anthropic.com>
This commit is contained in:
Mina Choi 2026-09-15 08:28:41 +09:00
parent 7425cb409e
commit a1a416ca4a
2 changed files with 7 additions and 3 deletions

View File

@ -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개·미니 플레이어·날씨 문구·주입분 전부).

View File

@ -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),