# Command: `websites:cleanup-duplicates`

**Description**: Find and clean up duplicate websites (including IDN Unicode/Punycode duplicates)
**Status**: completed
**Started**: 2026-07-10 15:20:34 | **Ended**: 2026-07-10 15:20:36 | **Duration**: 2s
**Jobs**: 0 dispatched / 0 completed / 0 failed

---

## Command Output

15:20:34 [INFO] Lock acquired for command: websites:cleanup-duplicates

15:20:34 [INFO] 🔍 Starting duplicate website cleanup...

15:20:34 [INFO] Found 1 group(s) of duplicate websites.

15:20:34 [INFO] Re-keying domain-keyed data onto the keeper BEFORE merging, so nothing is orphaned.

15:20:34 [INFO] <fg=yellow\>Duplicate group for: https://adlogger.org</\>

15:20:34 [INFO] <fg=green\>KEEP: ID 3cfc1c33-d85c-456e-8fcb-31cba35e16b8, www.adlogger.org (type LINK, status LIVE)</\>

15:20:34 [INFO] <fg=red\>DELETE: ID 3f145f93-5828-402a-b852-856ed442282b, adlogger.org (type LINK, status LIVE)</\>

15:20:35 [INFO] ↳ accuranker\_keywords\_aggregation: derived view — re-keyed via its source collection

15:20:35 [WARNING] ⚠️ mongo:system.views reassign failed: cannot write to kokos.system.views

15:20:36 [WARNING] ⚠️ mongo:accuranker\_keywords\_aggregation reassign failed: Namespace kokos.accuranker\_keywords\_aggregation is a view, not a collection

15:20:36 [WARNING] ⏭ Skipped loser ID 3f145f93-5828-402a-b852-856ed442282b (adlogger.org): reassign had 2 failure(s); left in place, resolve and re-run.

15:20:36 [WARNING] ⚠️ Keeper hostname canonicalize failed (non-fatal; run websites:canonicalize-hosts): SQLSTATE\[23000\]: Integrity constraint violation: 1062 Duplicate entry 'adlogger.org' for key 'websites\_hostname\_unique' (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: kokos, SQL: update 'websites' set 'hostname' = adlogger.org, 'updated\_at' = 2026-07-10 15:20:36 where 'id' = 3cfc1c33-d85c-456e-8fcb-31cba35e16b8)

15:20:36 [INFO] 📊 Cleanup complete:

15:20:36 [INFO] ✅ Groups processed: 1

15:20:36 [INFO] ⏭  Groups skipped (re-key/keeper failures): 0

15:20:36 [INFO] ❗ Groups aborted (unexpected error): 0

15:20:36 [INFO] 🔄 Domain-keyed docs re-keyed onto keepers: 16

15:20:36 [INFO] 🧹 Logical duplicates merged: 11

15:20:36 [INFO] ✅ Losers deleted: 0

15:20:36 [INFO] ⏭  Losers skipped (reassign failures): 1

15:20:36 [INFO] 🔤 Keepers canonicalized: 1

15:20:36 [INFO] 💡 Re-run websites:audit-idn-duplicate-data to confirm 0 at-risk docs for the merged groups.

15:20:36 [INFO] Lock released for websites:cleanup-duplicates

---

## Jobs (0)

*No jobs dispatched*

*Exported at 2026-08-27T07:06:32+00:00*
