← back to Wallco Ai
docs: correct CLAUDE.md — designs.json IS deployed, not excluded
bb2d8199f514bb52259e26962c5345fa7e297036 · 2026-05-26 15:14:51 -0700 · Steve Abrams
The 'critical excludes' list wrongly claimed data/designs.json is prod-authored
and excluded from rsync. It is NOT excluded — it's the Mac2-built catalog
artifact the deploy ships (flip is_published → refresh_designs_snapshot.py →
deploy-kamatera.sh). Documented the real publish flow + that the actual hazard
is prod-side regen against the sparse (~350 row) prod DB clobbering the catalog
(guarded by the >50% shrink refuse in refresh_designs_snapshot.py).
Files touched
Diff
commit bb2d8199f514bb52259e26962c5345fa7e297036
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Tue May 26 15:14:51 2026 -0700
docs: correct CLAUDE.md — designs.json IS deployed, not excluded
The 'critical excludes' list wrongly claimed data/designs.json is prod-authored
and excluded from rsync. It is NOT excluded — it's the Mac2-built catalog
artifact the deploy ships (flip is_published → refresh_designs_snapshot.py →
deploy-kamatera.sh). Documented the real publish flow + that the actual hazard
is prod-side regen against the sparse (~350 row) prod DB clobbering the catalog
(guarded by the >50% shrink refuse in refresh_designs_snapshot.py).
---
CLAUDE.md | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/CLAUDE.md b/CLAUDE.md
index 7efc8b1..3a0e064 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -40,9 +40,10 @@ curl -X POST -u admin:DWSecure2024! http://127.0.0.1:9905/admin/reload-designs
**Always use `./deploy-kamatera.sh`. Never surgical rsync+pm2-reload.** The script does pre-flight lint, full rsync (with the carefully-tuned exclude list in `.deploy.conf`), pm2 reload, and HTTP smoke test. Surgical deploys skip the incremental rsync of `data/generated/` and locally-generated PNGs never reach prod — the catalog goes blank.
-Critical excludes (already in `.deploy.conf`) — these files are PROD-AUTHORED, never push local copies over them:
+**`data/designs.json` IS shipped by the deploy — it is NOT excluded.** It's the Mac2-built catalog artifact: the publish flow is (1) flip `is_published` in Mac2's `dw_unified.spoon_all_designs`, (2) `python3 scripts/refresh_designs_snapshot.py` rebuilds `data/designs.json` on Mac2, (3) `./deploy-kamatera.sh` rsyncs it to prod + pm2 reload. Prod's *own* `dw_unified` is near-empty (~350 rows) and is NOT the catalog source. The real hazard is the reverse direction: a **prod-side** process regenerating `designs.json` against the sparse prod DB clobbers the live catalog (the 2026-05-26 "157 designs" incident) — `refresh_designs_snapshot.py` has a catastrophe guard (refuse a >50% shrink) for exactly that. See `reference`/memory for the full flow.
+
+Critical excludes (already in `.deploy.conf`) — these files ARE genuinely PROD-AUTHORED, never push local copies over them:
- `data/generated/`, `data/images/`, `data/rooms/` — generators run on prod and write here
-- `data/designs.json` — prod-authored catalog snapshot
- `data/marketplace/events.jsonl` — live event log
- `data/ghost-scan-*.jsonl`, `data/ghost-purge.jsonl`, `data/ghost-labels.jsonl`, `data/bad-aesthetic-patterns.jsonl` — prod scanner writes these; the 2026-05-24 incident wiped fresh prod flags by rsyncing stale local copies
← 808384d drunk-*: every design now shows a vice — joint/cigar/pipe/bo
·
back to Wallco Ai
·
replace-bg: accept any of the 5k library textures, not just 774fe30 →