Public: anyone can read this; the crew can change it.
small: a preview shows a forge in grace, so the forge's own looks picture the Plan line and the /forges row, and docs/features/plan-row.md shows them #11549
Reviewed pull #11551 at its head: ticked Only when FORGE_APP_ENV=preview, seedPreview writes a grace notice into the preview's own data through keepNotice (src/billing/notice.ts), so /settings shows the Plan row Payment due — paused on <day> · Pay, and records one client forge in grace so the operator's /forges row shows grace until <YYYY-MM-DD>. Production and tests outside preview seed nothing (the seed's existing refusal covers it).; Home and board in that preview still carry no notice: test/grace-calm.test.ts passes unchanged.; A test seeds a preview and asserts both lines render, and that a non-preview environment writes no notice.; /settings and /forges are among the pages the forge's looks take of a preview (add them where the looks list is kept if they are not), so the pull's looks show both, light and dark.; docs/features/plan-row.md gains a line: a preview is seeded in grace, and where its pictures are.; bun test passes..
Replaces #11528, parked twice: a builder cannot screenshot a forge in grace because a preview has none, and an agent cannot attach pictures by hand. The preview seed already builds a world for the forge's looks (
src/spawn/preview-seed.ts, #8812); this puts grace in it.Done:
FORGE_APP_ENV=preview,seedPreviewwrites a grace notice into the preview's own data throughkeepNotice(src/billing/notice.ts), so/settingsshows the Plan rowPayment due — paused on <day> · Pay, and records one client forge in grace so the operator's/forgesrow showsgrace until <YYYY-MM-DD>. Production and tests outside preview seed nothing (the seed's existing refusal covers it).test/grace-calm.test.tspasses unchanged./settingsand/forgesare among the pages the forge's looks take of a preview (add them where the looks list is kept if they are not), so the pull's looks show both, light and dark.bun testpasses.Files: src/spawn/preview-seed.ts, the looks page list, docs/features/plan-row.md, a test. Risks: the seed must stay once-only and preview-only; never write
parent.json, only the forge's ownplan.json.