← back to Wallco Ai

data/yolo-overnight/dedupe-zoo-20260525-1131.md

82 lines

# Dedupe Scan — designer-zoo-calm (Empty Result)

**Run:** 2026-05-25 11:31 PT
**Endpoint:** `POST http://127.0.0.1:9905/api/dedupe/scan`
**Request body:** `{"status":"published","category":"designer-zoo-calm","threshold":6,"limit":500}`
**HTTP:** 200 OK
**Raw response:**
```json
{"ok":true,"clusters":[],"scanned":0,"time_ms":0}
```

## Top 10 clusters

None. **0 designs scanned, 0 clusters returned.** The category `designer-zoo-calm` has zero rows in `spoon_all_designs` for `brand='wallco.ai'` right now, so the dedupe pre-filter (`server.js:8257-8260`) discarded everything before hashing.

## Why empty — the category was purged earlier today

`designer-zoo-calm` was a real, populated category as recently as this morning. It is referenced 47× in `data/yolo-overnight/ghost-purge-proposals-20260525-1047.md` (e.g. ids 37218, 37214, 37209, 37208, 37207, 37203, 37181, 37157, 37124, 37102, 36781, 36771, 36767, 36763, 36725, 36681, …) and in `data/ghost-audit-sample.json`. Every one of those IDs is gone from the live table now:

```
SELECT COUNT(*) FROM spoon_all_designs
WHERE brand='wallco.ai' AND category LIKE 'designer-zoo-calm%';
-- 0
```

For context, `wallco.ai` has 341 total rows (max id 39286, min id 11 — heavy gaps from soft-deletes), of which 203 are published with a `local_path`. None carry a `designer-zoo-calm` or `designer-zoo-calm · <colorway>` category any more.

Most likely sequence (inferred, not confirmed):
1. 10:47 PT — `ghost-purge-proposals-20260525-1047.md` listed every `designer-zoo-calm` design as needing `joint-fix-batch` (tile-edge) or `fix-design` (opacity-snap).
2. Between 10:47 and 11:31 PT — a quarantine / removal pass took those IDs out (consistent with the project pattern of soft-delete to quarantine + JSONL).
3. 11:31 PT — this dedupe scan ran against an empty pre-filter.

## Categories that DO exist (published wallco.ai, 203 designs total)

| Category | Count |
|---|--:|
| cactus-11ft-mural | 75 |
| tree-mural | 46 |
| cactus-pine-scenic | 28 |
| thibaut | 14 |
| koroseal | 7 |
| phillipe-romano | 6 |
| mind-the-gap | 4 |
| coordonn- | 4 |
| ralph-lauren | 3 |
| designer-wallcoverings | 3 |
| graduate-collection | 3 |
| malibu-wallpaper | 2 |
| monterey-mural | 2 |
| roberto-cavalli-wallpaper | 1 |
| glitter-walls | 1 |
| china-seas | 1 |
| dolce-gabbana | 1 |
| daisy-bennett | 1 |
| traditional-whimsy | 1 |

No `designer-zoo-*`, no `zoo*`, no `*-calm*` survives in `category`, `tags`, or `motifs` for the wallco.ai brand.

## Recommended next runs

The empty result is correct given current state — there is literally nothing left in `designer-zoo-calm` to deduplicate. If the intent was broader:

1. **Check the quarantine bucket** before assuming the category is gone — the project's default is soft-delete to quarantine + JSONL. If a `user_removed=true` re-include is wanted:
   ```
   POST /api/dedupe/scan {"status":"unpublished","category":"designer-zoo-calm","threshold":6,"limit":500}
   ```
   (Still likely empty — the gate is `is_published=FALSE AND user_removed IS NOT TRUE`, and the purge appears to have flipped `user_removed=true` on these rows.)

2. **Run a corpus-wide scan** at threshold 6 to surface cross-category near-dupes in the remaining 203 designs:
   ```
   POST /api/dedupe/scan {"status":"published","threshold":6,"limit":500}
   ```

3. **Confirm the purge log** — read `data/ghost-purge.jsonl` tail to verify the zoo-calm IDs were actually quarantined (not dropped) so they can be restored if needed.

## Actions taken

- Scan executed exactly as specified.
- No deletes, no writes, no schema changes.
- Report written to this path per task spec.
- No escalation triggered — empty result is factually correct, not ambiguous or destructive.