← 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
A UNPUBLISHED-CENSUS-2026-06-01.md
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 →