[object Object]

← back to Wallco Ai

loop tick2: UNSTABLE flag benign, designer-scenic 363 root-caused (auto-curator republish), broken-images clean on prod

6e65e8c731e08037cebafcf1696e4e5c630642e5 · 2026-06-03 09:25:52 -0700 · Steve Abrams

Files touched

Diff

commit 6e65e8c731e08037cebafcf1696e4e5c630642e5
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed Jun 3 09:25:52 2026 -0700

    loop tick2: UNSTABLE flag benign, designer-scenic 363 root-caused (auto-curator republish), broken-images clean on prod
---
 REVIEW-2026-06-03.md          | 51 +++++++++++++++++++++++++++++++++++++++++++
 yolo-queue/LOOP-2026-06-03.md | 18 +++++++++++++++
 2 files changed, 69 insertions(+)

diff --git a/REVIEW-2026-06-03.md b/REVIEW-2026-06-03.md
new file mode 100644
index 0000000..39fe2fe
--- /dev/null
+++ b/REVIEW-2026-06-03.md
@@ -0,0 +1,51 @@
+# wallco-ai — STAGED ACTIONS for Steve's approval (2026-06-03)
+
+Autonomous compliance loop (DTD focus A). Everything below is **staged, NOT executed**.
+Approve / Disapprove on the viewer; add per-item notes in the textarea. On your
+return I execute the approved ones by hand (they're all deploy/publish-gated, so
+the loop cannot run them itself).
+
+---
+
+## ① Deploy 195 dogs to prod  ·  severity HIGH  ·  gated: prod-deploy
+**State:** Dogs collection curated + published in Mac2 PG — **195 breed-silhouette
+wallpapers**, all settlement-OK (13 non-compliant already pulled by the post-publish
+canary). Snapshot rebuilt locally. **Not yet on live wallco.ai** (deploy blocked under
+the loop's no-deploy guardrail).
+
+**On approval I run:**
+```
+cd ~/Projects/wallco-ai && python3 scripts/refresh_designs_snapshot.py && ./deploy-kamatera.sh
+```
+**Risk:** customer-facing prod deploy, fully reversible (unpublish + redeploy).
+
+---
+
+## ② Unpublish 658 user_removed-yet-live rows  ·  severity HIGH  ·  gated: bulk-unpublish
+**Finding (loop tick 1):** 658 published rows have `user_removed=true` — removed
+content that is still live. The hard legal gate is otherwise CLEAN (0 live rows are
+settlement BLOCK / VISION-ERROR / REVIEW).
+
+By category: **designer-scenic 363** · stoned-animals 125 · drunk-animals-designer 110
+· face-skull-damask 27 · damask 13 · cactus 9 · (rest ≤4).
+
+⚠️ These **may include intentional auto-curator force-publish overrides** — that's
+exactly why I'm not bulk-pulling pre-existing rows without your eyes.
+
+**On approval I run** (staged SQL → then snapshot rebuild + deploy):
+```
+psql -d dw_unified -f ~/Projects/wallco-ai/yolo-queue/STAGED-unpublish-user-removed-live.sql
+```
+**Risk:** bulk-unpublish of pre-existing rows, reversible (re-publish).
+**Tick-2 root cause:** designer-scenic's 363 are a SINGLE 2026-05-20 batch that was removed (`user_removed=true`) then force-republished by the auto-curator — i.e. explicitly-removed content, safe to unpublish. Also flags an auto-curator bug (must honor `user_removed`).
+
+
+---
+
+## 🟡 FYI — not requesting action yet
+- **2,867 never-settlement-gated live rows** — legacy / auto-curator publishes. Not a
+  violation (no BLOCK live), but un-gated. Recommend a settlement-gating *pass*, not a
+  purge (would gut the catalog). Deferred to a later loop tick / your call.
+
+*The loop keeps running (~25 min/tick), appending new staged actions to
+`yolo-queue/staged-actions.jsonl` + this review file as it finds them.*
diff --git a/yolo-queue/LOOP-2026-06-03.md b/yolo-queue/LOOP-2026-06-03.md
index e90dbec..68fad09 100644
--- a/yolo-queue/LOOP-2026-06-03.md
+++ b/yolo-queue/LOOP-2026-06-03.md
@@ -22,3 +22,21 @@ Staged (NOT executed): `yolo-queue/STAGED-unpublish-user-removed-live.sql`.
 Legacy / auto-curator publishes. NOT a violation (no BLOCK), but un-gated.
 Recommend a settlement-gating pass (not bulk-unpublish — would gut catalog).
 Deferred to a later tick / Steve decision.
+
+## Tick 2 — health, designer-scenic root-cause, broken-image dimension
+- **wallco-ai-9905 UNSTABLE flag = BENIGN.** pm2: status online, restart_time 19,
+  **unstable_restarts 0**, /health 200. The fleet-health flag tripped on cumulative
+  restart count (my snapshot reloads + standing pipeline), not a crash-loop. No action.
+- **designer-scenic 363 removed-yet-live = root cause found.** All 363 created the SAME
+  day (2026-05-20), notes empty. A single batch was `user_removed=true` but the standing
+  auto-curator force-republished (`is_published=true`) ignoring the removal flag. This is
+  the bulk of staged action ② — confirms it's safe-to-unpublish (explicitly removed
+  content) and points at an auto-curator bug (it should honor user_removed).
+- **Broken-image dimension = CLEAN on prod.** 12 published rows have a missing local_path
+  file on Mac2 (11 aztec-kilim + 1 stripe) + 150 with no local_path — BUT all 12 serve
+  **HTTP 200** live via /designs/img/by-id (prod has the rsynced file). Not broken live.
+  No action; Mac2-local file gap only.
+
+**Compliance picture after tick 2:** legal gate clean (0 BLOCK live), broken-images clean
+live, only real issue = the removed-yet-live batch (staged ②). Next: analyze the 2,867
+never-gated live rows (which categories → recommend a settlement-gating pass, not purge).

← e5dc163 mural-contact-sheet.py: visual panel review aid for any buil  ·  back to Wallco Ai  ·  fliepaper-bugs admin grid: created date+time chip (standing 47c3b30 →