[object Object]

← back to Wallco Ai

Add unpublished-designs census 2026-06-01: 40,107 unpublished decoded by reason; only 18 publishable-now, 1,535 TIF-blocked

05eafc2535f18367daa14fda7411aa7885b9e1e5 · 2026-06-01 13:29:12 -0700 · Steve Abrams

Files touched

Diff

commit 05eafc2535f18367daa14fda7411aa7885b9e1e5
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Mon Jun 1 13:29:12 2026 -0700

    Add unpublished-designs census 2026-06-01: 40,107 unpublished decoded by reason; only 18 publishable-now, 1,535 TIF-blocked
---
 UNPUBLISHED-CENSUS-2026-06-01.md | 85 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 85 insertions(+)

diff --git a/UNPUBLISHED-CENSUS-2026-06-01.md b/UNPUBLISHED-CENSUS-2026-06-01.md
new file mode 100644
index 0000000..5630c4e
--- /dev/null
+++ b/UNPUBLISHED-CENSUS-2026-06-01.md
@@ -0,0 +1,85 @@
+# Unpublished-Designs Census — 2026-06-01
+
+Read-only census of `all_designs` on Mac2 `dw_unified` (the catalog-authoring DB).
+Purpose: turn the vague "~15.4k unpublished pile" TODO into a data-backed
+bulk-publish decision. **Nothing was published or modified — census only.**
+
+> Numbers drift as the standing generator keeps producing. Re-run the SQL at the
+> bottom for a fresh count.
+
+## Headline
+
+- **Total unpublished (`is_published IS NOT TRUE`): 40,107**
+- **Publishable *right now*: 18** (quality-clean **and** has a TIF archive)
+- The rest is either deliberately removed, gated by another surface, or **TIF-blocked**.
+
+## Breakdown by reason (mutually-prioritized buckets)
+
+| Reason | Count | Disposition |
+|--------|------:|-------------|
+| `user_removed` | 23,445 | Deliberately culled — **leave removed** (resurrecting needs explicit Steve OK) |
+| `other_gateheld` (no flag) | 12,432 | Unpublished with no clear gate reason — **needs a "why" probe** before assuming publishable |
+| `edges_fail` (notes `EDGES_FAIL`/`EDGES_SCAN_ERROR`) | 1,799 | Seam defects → `/admin/edges-review` |
+| `bleed_ghost` (`settlement_verdict LIKE 'BLEED%'`, incl. OK+BLOCK) | 1,592 | Bleed/ghost quality verdict |
+| `needs_fixing` (`needs_fixing_at` set) | 182 | Flagged for fix |
+| `settlement_review` (BLOCK/REVIEW-VISION-ERROR/REVIEW) | 161 | Legal gate → CNCP Settlement panel |
+| `clean_but_unpublished` | 496 | Passed everything in the prioritized pass, just unpublished |
+
+## The real publish decision: a TIF bottleneck, not a publish toggle
+
+Independent of the prioritized buckets, **1,553** designs are quality-clean
+(`settlement_verdict` OK or `BLEED_GHOST_OK`, not `user_removed`, no
+`needs_fixing_at`, no `EDGES_FAIL` note). But wallco's hard rule **refuses a NULL
+`tif_path`** at publish (CLAUDE.md: "TIFs are full-size archives… the publish
+gate refuses NULL tif_path"). So:
+
+- **with TIF → publishable now: 18**
+- **no TIF → TIF-blocked: 1,535**
+
+So "bulk-publish the pile" decomposes into two very different asks:
+1. **Publish the 18 ready-now** — small, safe; needs Steve's curation pick + deploy.
+2. **Unlock the 1,535** — requires committing to a **TIF-archive generation run first**
+   (150 dpi, up to ~36000×19800 px / ~2 GB each — real time + storage), *then* publish.
+
+### Top categories among the 1,553 quality-clean candidates
+`drunk-animals` 304 · `damask` 135 · `stripe · forest-loden` 21 ·
+`face-skull-damask · greenhouse-glass` 20 · `dogs · german-shorthaired-pointer` 20 ·
+`face-skull-damask · saddle-mocha` 19 · `stripe · antique-brass` 19 · `dogs · dachshund` 19
+
+## Caveats
+
+- **Clean ≠ should-publish.** These passed the automated gates; they still need
+  Steve's curation eye + a TIF before going live. The 18 "ready-now" are the only
+  ones that clear the gate mechanically.
+- **`user_removed` (23,445)** are intentional removals — do not bulk-resurrect.
+- **`other_gateheld` (12,432)** is the biggest unknown — unpublished with no flag.
+  Could be never-curated, TIF-less, mural-misclassified, etc. Probe before acting.
+- Gated surfaces (edges/bleed/settlement) own their own review queues.
+
+## Reusable SQL (run with `PGHOST=/tmp PGUSER=stevestudio2 PGDATABASE=dw_unified psql -tAc "…"`)
+
+```sql
+-- total unpublished
+SELECT count(*) FROM all_designs WHERE is_published IS NOT TRUE;
+
+-- breakdown by reason
+WITH u AS (SELECT * FROM all_designs WHERE is_published IS NOT TRUE)
+SELECT reason, count(*) FROM (
+  SELECT CASE
+    WHEN user_removed THEN '1_user_removed'
+    WHEN settlement_verdict IN ('BLOCK','REVIEW-VISION-ERROR','REVIEW','NEEDS REVIEW') THEN '2_settlement_review'
+    WHEN settlement_verdict LIKE 'BLEED%' THEN '3_bleed_ghost'
+    WHEN notes LIKE '%EDGES_FAIL%' OR notes LIKE '%EDGES_SCAN_ERROR%' THEN '4_edges_fail'
+    WHEN needs_fixing_at IS NOT NULL THEN '5_needs_fixing'
+    WHEN settlement_verdict IN ('OK','BLEED_GHOST_OK') THEN '6_clean_but_unpublished'
+    ELSE '7_other_gateheld'
+  END AS reason FROM u
+) x GROUP BY reason ORDER BY reason;
+
+-- publishable-now (quality-clean AND has TIF)
+SELECT count(*) FROM all_designs
+WHERE is_published IS NOT TRUE AND user_removed IS NOT TRUE AND needs_fixing_at IS NULL
+  AND settlement_verdict IN ('OK','BLEED_GHOST_OK')
+  AND (notes IS NULL OR notes NOT LIKE '%EDGES_FAIL%')
+  AND COALESCE(tif_path,'') <> '';
+```

← 443ac42 TODO: orphan rooms fixed-locally (141 copies, 0 remain; prod  ·  back to Wallco Ai  ·  Add publish-ready-batch.sh: curator-force-publish the 18 cen 8a607a0 →