← back to Wallco Ai
loop tick5: focus C closeout — 1,590 orphan-room delete staged (action 4, excludes 832 re-publishable), no-tif informational
99ba82aff4b0cf26e4012acefd91155a41ce3525 · 2026-06-03 10:49:33 -0700 · Steve Abrams
Files touched
M REVIEW-2026-06-03.mdM yolo-queue/LOOP-2026-06-03.mdA yolo-queue/STAGED-delete-orphan-rooms.sqlM yolo-queue/staged-actions.jsonl
Diff
commit 99ba82aff4b0cf26e4012acefd91155a41ce3525
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Wed Jun 3 10:49:33 2026 -0700
loop tick5: focus C closeout — 1,590 orphan-room delete staged (action 4, excludes 832 re-publishable), no-tif informational
---
REVIEW-2026-06-03.md | 21 +++++++++++++++++++++
yolo-queue/LOOP-2026-06-03.md | 13 +++++++++++++
yolo-queue/STAGED-delete-orphan-rooms.sql | 14 ++++++++++++++
yolo-queue/staged-actions.jsonl | 1 +
4 files changed, 49 insertions(+)
diff --git a/REVIEW-2026-06-03.md b/REVIEW-2026-06-03.md
index 467938e..5736577 100644
--- a/REVIEW-2026-06-03.md
+++ b/REVIEW-2026-06-03.md
@@ -67,3 +67,24 @@ prompts say "botanical"), so the robust check is the Gemini **vision** gate.
**On approval I run** the settlement vision gate over Tier-1 (then Tier-2), stamping
`settlement_verdict` only (does NOT touch `is_published`). Any BLOCK/REVIEW hit becomes a
separate unpublish decision for you — no auto-unpublish.
+
+---
+
+## ④ Delete 1,590 orphan room rows · severity MEDIUM · gated: destructive-delete
+**Finding (loop tick 5):** wallco_rooms = 6,313 rows; 3,891 serve live designs (OK).
+**Safe-to-delete orphans = 1,590** — rooms for designs that are GONE (31) or
+`user_removed=true` (1,559). By category: designer-scenic 761 · face-skull-damask 396 ·
+drunk-animals-designer 99 · designer-bugs 75 · cactus 27 · (design gone) 31 · others.
+
+**Deliberately EXCLUDES** the 832 "unpublished-only" rooms — those designs can be
+re-published (the dogs just were), so deleting their rooms would force costly regen.
+
+⚠️ **Dependency on ②:** designer-scenic's 761 overlap the removed batch in action ②. Run
+this only after ② is confirmed — if you re-publish that batch instead of unpublishing,
+keep their rooms.
+
+**On approval (after ② settles) I run** the staged DELETE (`STAGED-delete-orphan-rooms.sql`)
+for the 1,590 missing/removed-design rooms; reversible only via regen.
+
+*FYI — no-tif backlog: 3,708/5,759 published rows (64%) have no TIF. Per CLAUDE.md this is
+EXPECTED (lazy print masters, NOT a publish prerequisite) — informational, no action.*
diff --git a/yolo-queue/LOOP-2026-06-03.md b/yolo-queue/LOOP-2026-06-03.md
index 580081f..53d94a7 100644
--- a/yolo-queue/LOOP-2026-06-03.md
+++ b/yolo-queue/LOOP-2026-06-03.md
@@ -83,3 +83,16 @@ DTD verdict: **B** (Claude+Codex 2/2, Qwen errored) — live render defects beat
**Net: catalog render-quality is clean.** No new staged action. The only render-integrity
oddball (id 100) is already covered by ②.
+
+## Tick 5 — focus C closeout (orphan rooms + no-tif), stage-only
+- **Orphan rooms:** wallco_rooms 6,313 → 3,891 OK. Safe-delete orphans = **1,590** (31
+ design-gone + 1,559 user_removed). Led by designer-scenic 761 (the ② removed batch),
+ face-skull-damask 396, drunk-animals-designer 99. **Excluded** 832 unpublished-only
+ rooms (re-publishable → keep). Staged as action ④ (`STAGED-delete-orphan-rooms.sql`),
+ with an explicit dependency on ② for the designer-scenic overlap.
+- **no-tif:** 3,708/5,759 published (64%) have no TIF. Per CLAUDE.md this is EXPECTED
+ (lazy print masters, NOT a publish prerequisite). Informational only — NO action.
+
+**A+B+C now covered.** Staged for Steve: ① dogs deploy · ② unpublish 658 removed-yet-live
+· ③ settlement re-gate plan · ④ delete 1,590 orphan rooms. Backlog substantively exhausted
+→ loop downshifts to a periodic regression re-check (long interval) rather than busywork.
diff --git a/yolo-queue/STAGED-delete-orphan-rooms.sql b/yolo-queue/STAGED-delete-orphan-rooms.sql
new file mode 100644
index 0000000..4606b21
--- /dev/null
+++ b/yolo-queue/STAGED-delete-orphan-rooms.sql
@@ -0,0 +1,14 @@
+-- STAGED 2026-06-03 (loop tick 5, focus C) — NOT EXECUTED. Destructive.
+-- Deletes wallco_rooms rows whose design is GONE or user_removed=true (1,590 rows).
+-- DELIBERATELY EXCLUDES the 832 "unpublished-only" rooms — those designs may be
+-- re-published (e.g. the dogs were), and deleting their rooms forces costly regen.
+-- DEPENDENCY: the designer-scenic 761 here overlap staged action ②'s removed batch —
+-- only run this AFTER ② is confirmed (if Steve re-publishes that batch instead, keep them).
+-- Note: this removes DB rows only; orphan PNG files on disk are a separate follow-on rm.
+BEGIN;
+DELETE FROM wallco_rooms r
+ USING (SELECT r2.id FROM wallco_rooms r2
+ LEFT JOIN all_designs d ON d.id = r2.design_id
+ WHERE d.id IS NULL OR COALESCE(d.user_removed,false)) victims
+ WHERE r.id = victims.id;
+COMMIT;
diff --git a/yolo-queue/staged-actions.jsonl b/yolo-queue/staged-actions.jsonl
index 8668fac..4df9b7f 100644
--- a/yolo-queue/staged-actions.jsonl
+++ b/yolo-queue/staged-actions.jsonl
@@ -1,3 +1,4 @@
{"id":"wallco-staged::dogs-deploy::2026-06-03","ts":"2026-06-03T08:30:00Z","title":"Deploy 195 dogs to prod (publish complete locally)","severity":"HIGH","gated":"prod-deploy","rows":195,"detail":"Dogs collection curated + published in Mac2 PG (195 breed-silhouette wallpapers, all settlement-OK; 13 non-compliant already pulled). Snapshot rebuilt. NOT yet on live wallco.ai.","command":"cd ~/Projects/wallco-ai && python3 scripts/refresh_designs_snapshot.py && ./deploy-kamatera.sh","risk":"Customer-facing prod deploy. Reversible (unpublish + redeploy).","approve_means":"On return I run refresh_designs_snapshot.py + deploy-kamatera.sh to push the 195 dogs live."}
{"id":"wallco-staged::unpublish-658-user-removed::2026-06-03","ts":"2026-06-03T08:50:00Z","title":"Unpublish 658 user_removed-yet-live rows","severity":"HIGH","gated":"bulk-unpublish-preexisting","rows":658,"detail":"658 published rows have user_removed=true (removed content still live). By category: designer-scenic 363, stoned-animals 125, drunk-animals-designer 110, face-skull-damask 27, damask 13, cactus 9, rest <=4. May include intentional auto-curator force-publish overrides — review before running.","command":"psql -d dw_unified -f ~/Projects/wallco-ai/yolo-queue/STAGED-unpublish-user-removed-live.sql (then snapshot rebuild + deploy)","risk":"Bulk-unpublish of pre-existing rows. Reversible (re-publish). Removes content the auto-curator may have intentionally overridden — needs your eyes.","approve_means":"On return I run the staged SQL (sets is_published=false for the 658), rebuild snapshot, deploy."}
{"id":"wallco-staged::regate-never-gated::2026-06-03","ts":"2026-06-03T09:40:00Z","title":"Settlement vision re-gate of never-gated live rows (Tier-1 first)","severity":"MEDIUM","gated":"metered-gemini","rows":2867,"detail":"2,867 live rows have settlement_verdict=NULL (never formally gated — legacy/auto-curator). 0 are BLOCK, so no active legal fire, but they're un-verified. Prompt-keyword triage is unreliable (anti-prompt boilerplate), so re-gate by category tier via the VISION pass. TIER1 HIGH ~1,173 (monterey-mural/designer-scenic/chinoiserie/designer-bugs/geometric-block-leaves/botanical-wonders/floral/tree-mural), TIER2 MED ~1,060 (animals), TIER3 LOW ~728 (muybridge/stripe/dogs/faces — skippable).","command":"# settlement-post-gen-vision batch over never-gated live rows, Tier-1 categories first; stamps settlement_verdict only, does NOT touch is_published","risk":"Metered Gemini 2.5-flash vision (~$0.0003-0.001/img → Tier-1 ~$0.40-1.20, all ~$1-3). Read-only wrt publish state. Any row that returns BLOCK then becomes a separate unpublish decision for you.","approve_means":"On approval I run the settlement vision gate over the Tier-1 never-gated rows (then Tier-2), stamping settlement_verdict. I report any BLOCK/REVIEW hits as a follow-up unpublish decision — I do NOT auto-unpublish."}
+{"id":"wallco-staged::delete-orphan-rooms::2026-06-03","ts":"2026-06-03T10:30:00Z","title":"Delete 1,590 orphan room rows (design gone or user_removed)","severity":"MEDIUM","gated":"destructive-delete","rows":1590,"detail":"wallco_rooms has 6,313 rows; 3,891 OK. Safe-to-delete orphans = 1,590 (31 design-gone + 1,559 user_removed). By category: designer-scenic 761 (the removed batch from action ②), face-skull-damask 396, drunk-animals-designer 99, designer-bugs 75, cactus 27, others. EXCLUDES 832 unpublished-only rooms (designs may be re-published — deleting forces regen).","command":"psql -d dw_unified -f ~/Projects/wallco-ai/yolo-queue/STAGED-delete-orphan-rooms.sql # then optional rm of orphan PNG files","risk":"Destructive DELETE of DB rows (reversible only via room regen, ~$0.10/room cloud OR free local PIL). DEPENDS ON action ②: designer-scenic 761 overlap the removed batch — run only after ② confirms removal; if you re-publish that batch instead, keep their rooms.","approve_means":"On approval (and after ② is settled) I run the staged DELETE for the 1,590 missing/removed-design rooms, leaving the 832 unpublished-only rooms intact."}
← 24439b2 yolo loop 2026-06-03 complete: mural pipeline built/proved/c
·
back to Wallco Ai
·
loop tick6: regression check steady (0 new blocks, 658 uncha ecf309b →