← back to Wallco Ai
docs/aztec-final-pass-report.md
107 lines
# Aztec-Kilim Collection — Final Synthesis Report
**Date:** 2026-05-29
**Project:** wallco-ai (`/Users/stevestudio2/Projects/wallco-ai`)
**DB:** `dw_unified` via LOCAL peer-auth `psql dw_unified` (socket form — NOT `-h 127.0.0.1`, NOT `dw_admin` DATABASE_URL)
**Table model:** `spoon_all_designs` confirmed as a pass-through VIEW of the single `all_designs` table.
**Write policy this pass:** soft only (`is_published=FALSE, user_removed=TRUE`). No row/file deletes. No git push.
---
## (a) Final Live State
**Live aztec-kilim count: 15.**
Live ids (all is_published=TRUE):
```
54417, 54418, 54420, 54421, 54422, 54424, 54426, 54427,
54428, 54429, 54430, 54432, 54433, 54435, 54436
```
The 3 tiles unpublished this pass — **54423, 54431, 54434** — are confirmed **ABSENT** from live and from the shipped snapshot (`is_published=FALSE, user_removed=TRUE`). Unpublish ran in one transaction scoped to the explicit id list (no broad category UPDATE), with `SET LOCAL settlement.allow_override='true'` as a safety net only (the publish-check trigger only fires on a false→true flip, so unpublish passed regardless). DB count for aztec-kilim went 18 → 15 published; snapshot rebuilt (34,667 rows, no shrink-guard trip), deployed via canonical `deploy-kamatera.sh`, pm2 reloaded on 9905, live verified (one transient 502 during reload, then 200 — normal reload blip).
---
## (b) DTD Panel — Combined Verdict
Three lenses ran against the 15 live tiles (all PNGs viewed at full res; read-only).
| Lens | Rating | Verdict |
|---|---|---|
| interior-designer | — (API rate-limited, no verdict returned) | N/A |
| brand-palette | 7/10 | MOSTLY CONSISTENT — 11/15 on-palette; flag 4 |
| production-seam | 8/10 | SHIP ALL 15 — flawless tileability, 0 seam flags |
**Combined rating (of the 2 lenses that returned): 7.5 / 10.** The interior-designer lens was rate-limited (transient provider throttle, not a usage cap) and produced no score; it is excluded from the average rather than counted as a fail.
**Tile flagged by ALL THREE lenses: NONE.** No single tile is condemned by every lens.
- **Seam lens:** zero seam/structure flags on any of the 15. All tiles measured ~0.00 on all four wrap/midline metrics; cross-roll composites show no sliced motifs or heal-band. These are clean programmatic SVG tessellations — tileability is not in question for any tile.
- **Brand lens:** the only dimension producing pull candidates. Ground tone is perfect (#97a0ac uniform across all 15, zero drift); no rogue hues anywhere. The flags are **palette-incompleteness** (a tile dropping one of the two defined accent inks), not defects.
The two lenses disagree by design: seam says ship all 15; brand says 11 are clean and 3–4 read as a different 2-color scheme. The disagreement is isolated to the 4 brand-flagged tiles below.
---
## (c) Audit Results by Dimension
### Duplicates
- **Exact dupes: NONE** (15 distinct md5 hashes; all 15 from one batch, 2400×2400).
- **Near-identical pairs worth a curator look:**
- **54427 & 54436** — SSIM 0.897 (closest in set); both dense allover chevron/zigzag fields. Strongest redundancy candidate.
- **54432 & 54433** — SSIM 0.837; similar zigzag/triangle band.
- **54420 & 54428** — SSIM 0.624; same triangle-band family, more separable.
- **Variety:** monochromatic-by-design — one slate/crimson colorway across all 15, so motif variety is adequate but **color variety is essentially nil**. Bigger appeal gap is colorways, not motif count.
### Grid Page — Sort + Density
- Page renders (200, full HTML grid).
- **Param bug (the real defect):** the filter form uses `?cat=`, NOT `?category=`. `?category=aztec-kilim` is silently ignored and renders the UNFILTERED whole catalog. Correct URL `https://wallco.ai/designs?cat=aztec-kilim` works perfectly: "15 designs in aztec-kilim", exactly 15 cards, 0 leakage.
- **Broken cards: NONE** (all 15 images probed 200, >5KB real PNGs).
- **Sort `<select>`: PRESENT** — pill radiogroup (Newest default, Title, Category, Color Wheel, Random) plus "More sorts…" `<select>`, persisted to localStorage `wallco-sort`. Satisfies standing rule.
- **Density slider: ABSENT — but intentional.** HTML carries a dated comment "2026-05-20 Steve directive — density + spacing sliders stripped." Flagged as intentional, NOT a regression to auto-fix.
### Standing-Rule Compliance (cactus-curator admin)
- **Rule 1 — created date+time chip: COMPLIANT.** `.when` chip renders `🕓 ${fmtDate(d.created_at)}` with full ISO in `title=`. `fmtDate()` uses the exact prescribed `toLocaleString` format (date AND time, local tz). `created_at` carried through list API on 358/358 rows. Visible on card, not hover-only.
- **Rule 2 — sort + density: COMPLIANT.** Sort `<select id="sort">` (Composite/Vision/Seam/Newest/Oldest/Colorway, persisted `cc_sort`) side-by-side with density `<input type=range id=density min=2 max=9>` (drives `--cols`, persisted `cc_density`). Both restore on load.
- No regressions on either rule.
### Metadata Gaps
- **Clean on all 15:** `dominant_hex` (#97a0ac), `palette` (non-null 5-len jsonb), `created_at`, `image_url` (`/designs/img/by-id/<id>`), `local_path`. Backing PNG present on disk for all 15 (resolves via IMGDIR+basename fallback; 27–58KB web PNGs).
- **THE ONE GAP — `tif_path` is NULL on ALL 15 rows** (also `tif_bytes`/`tif_w_px` empty). Per CLAUDE.md the publish gate should refuse NULL `tif_path`, yet all 15 are published — so they were **force-published / bypassed the TIF requirement**. No print-ready 36000px archive exists for any of them; only small web PNGs. Recommendation (not actioned): build TIFs for the 15 or note an exemption.
### Recoverability
- **Everything is recoverable. Nothing missing.**
- **8 named unpublished ids** — all `is_published=FALSE`, all PNGs on disk: 54419, 54423, 54425, 54431, 54434 (aztec_kilim_*.png) + 54568, 54572, 54579 (timestamp-form *.png; carry a curator-force-publish tag but `is_published` still f → no live exposure).
- **30 rejects** (categories aztec-comfy-r1…r8) — all `is_published=FALSE`, 30/30 PNGs on disk.
- **Naming caveat for downstream:** there is NO `aztec-comfy-*.png` file scheme on disk — the `aztec-comfy-r*` label lives in the `category` column, not the filename. Resolve by stored `local_path`, never by guessed filenames.
---
## (d) ⚠️ STEVE DECISION NEEDED — Additional Tiles to Consider Pulling
**These are NOT auto-pulled. Pulling more live tiles is a customer-facing, gated action and requires Steve's EXPLICIT OK before any further unpublish.** The 3 already removed (54423/54431/54434) were the approved scope; everything below is advisory only.
The panel + audits surface the following candidates. None is a hard defect (no seam/tileability problem on any of them) — all are palette-incompleteness or redundancy calls:
**Palette-incomplete (drop one of the two defined accent inks — brand lens):**
- **54421** — crimson-only (navy 0%). Reads 2-color in a 3-color set.
- **54433** — crimson-only (navy 0%). Same issue as 54421.
- **54432** — navy-only (crimson 0%). Most tonally inconsistent of the set; also the plainest per seam lens.
- **54436** — soft-flag: crimson present but so muted (desaturated #b82956) it reads navy-dominant; inconsistent with its near-twin 54424.
**Redundancy (duplicate audit — keep one of each pair):**
- **54427 / 54436** — SSIM 0.897, strongest redundant pair (note 54436 already appears above).
- **54432 / 54433** — SSIM 0.837, second redundant pair (both already appear above).
**Net distinct additional candidates: 54421, 54432, 54433, 54436** (4 tiles). 54436 and 54432/54433 are double-flagged (palette + redundancy), which strengthens the case for those three; 54421 is palette-only.
**Recommendation if Steve approves a second pass:** unpublish or recolor 54432 (navy-only), 54421 + 54433 (crimson-only), and review 54436 (muted crimson). That would take live aztec-kilim from 15 → as low as 11. **Do not proceed without explicit OK.**
---
**File:** `/Users/stevestudio2/Projects/wallco-ai/docs/aztec-final-pass-report.md`
**Bottom line:** 15 aztec-kilim tiles are live and verified (3 sparse ones cleanly soft-unpublished, fully recoverable); the set is seam-flawless (ship-all per seam lens, 7.5/10 combined) with no tile condemned by all three lenses.
The only items needing Steve's call: a gated decision on 4 palette-incomplete/redundant tiles (54421/54432/54433/54436), the NULL-tif_path gap on all 15 force-published rows, and the `?category=` vs `?cat=` grid-URL param bug.