← back to Wallco Ai
id-collision resolutions 1..14999 (134 rows): 106 Mac2 re-published (F,T verdict A), 27 skipped (F,F), 1 escalated (T,F verdict C)
c72fe453674a98183036156944dc4ed55c989815 · 2026-05-29 22:31:58 -0700 · Steve
Files touched
A data/id-collision-resolutions-2026-05-29.jsonlA scripts/resolve-id-collisions-20260529.py
Diff
commit c72fe453674a98183036156944dc4ed55c989815
Author: Steve <steve@designerwallcoverings.com>
Date: Fri May 29 22:31:58 2026 -0700
id-collision resolutions 1..14999 (134 rows): 106 Mac2 re-published (F,T verdict A), 27 skipped (F,F), 1 escalated (T,F verdict C)
---
data/id-collision-resolutions-2026-05-29.jsonl | 134 +++++++++++++++++++++++++
scripts/resolve-id-collisions-20260529.py | 117 +++++++++++++++++++++
2 files changed, 251 insertions(+)
diff --git a/data/id-collision-resolutions-2026-05-29.jsonl b/data/id-collision-resolutions-2026-05-29.jsonl
new file mode 100644
index 0000000..765ddeb
--- /dev/null
+++ b/data/id-collision-resolutions-2026-05-29.jsonl
@@ -0,0 +1,134 @@
+{"id": 81, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 83, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 84, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 85, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 87, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 91, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 92, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 93, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 97, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 102, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 107, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 108, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 109, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 110, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 111, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 112, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 113, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 114, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 115, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 117, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 119, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 120, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 121, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 122, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 123, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 125, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 126, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 129, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 130, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 132, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 133, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 134, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 136, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10123, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10124, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10125, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10126, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10127, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10128, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10129, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10130, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10131, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10132, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10133, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10134, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10135, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10136, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10137, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10138, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10139, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10140, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10141, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10142, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10143, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10144, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10145, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10146, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10147, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10148, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10149, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10150, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10151, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10152, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10153, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10154, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10155, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10156, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10157, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10158, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10159, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10160, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10161, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10162, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10163, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10164, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10165, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10166, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10167, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10168, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10169, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10170, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10171, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10172, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10173, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10174, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10175, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10176, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10177, "bucket": "(T,F)", "dtd_verdict": "C", "action": "escalate", "side": "none", "ok": false, "notes": "both-published-different-art landmine if prod flipped; Mac2=damask(live in designs.json) vs prod=muybridge-plate; codex C (stronger arg) + qwen ERR -> escalate to Steve"}
+{"id": 10178, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10179, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10180, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10181, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10182, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10183, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10184, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10185, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10186, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10187, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10188, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10189, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10190, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10191, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10192, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10193, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10194, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10195, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10196, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10197, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10198, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10199, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10200, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10201, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10202, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10203, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10204, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10205, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10206, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10207, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10208, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10209, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10210, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10211, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10212, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10213, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10214, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10215, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10216, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10217, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10218, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10219, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10220, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10221, "bucket": "(F,F)", "dtd_verdict": "none", "action": "skip", "side": "none", "ok": true, "notes": "both_unpublished"}
+{"id": 10222, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
+{"id": 10223, "bucket": "(F,T)", "dtd_verdict": "A", "action": "mac2_published", "side": "mac2", "ok": true, "notes": "already_published_or_reread_true"}
diff --git a/scripts/resolve-id-collisions-20260529.py b/scripts/resolve-id-collisions-20260529.py
new file mode 100644
index 0000000..03ca43b
--- /dev/null
+++ b/scripts/resolve-id-collisions-20260529.py
@@ -0,0 +1,117 @@
+#!/usr/bin/env python3
+"""
+Resolve 134 id-collisions between Mac2 PG and prod PG in wallco-ai all_designs
+(id range 1..14999). Per-bucket policy decided via /dtd; applied PER-ROW so a
+settlement-gate no-op on one row never sinks the batch.
+
+DTD verdicts (2026-05-29):
+ (F,F) 27 rows -> skip (both unpublished, no customer impact) [no /dtd]
+ (F,T) 106 rows -> A: re-publish Mac2 row to match prod's live side [Claude A, Codex A, Qwen ERR]
+ (T,F) 1 row -> C: escalate (would manufacture both-pub diff-art) [Claude A, Codex C, Qwen ERR -> C on stronger arg + safer option]
+
+HARD GUARDRAILS honored:
+ - NO destructive deletes. Only is_published flips.
+ - Per-row loop, not bulk.
+ - Mac2 settlement_publish_check() trigger SILENTLY no-ops a TRUE flip
+ (no error raised). So after each UPDATE we re-read is_published; a row
+ still FALSE => action=blocked_by_gate (NOT force-overridden — the task
+ wants gate-blocked rows logged, not bypassed).
+ - We touch ONLY all_designs (curator state). We do NOT touch spoon_all_designs
+ (the snapshot source) so designs.json / the live catalog is unaffected by
+ (F,T) option A.
+"""
+import json, subprocess, sys, os
+
+DATA = "/tmp/collisions-data.json"
+AUDIT = os.path.join(os.path.dirname(__file__), "..", "data",
+ "id-collision-resolutions-2026-05-29.jsonl")
+AUDIT = os.path.abspath(AUDIT)
+
+def mac2_psql(sql):
+ """Run SQL on Mac2 dw_unified. Returns (ok, stdout, stderr)."""
+ p = subprocess.run(
+ ["psql", "-d", "dw_unified", "-v", "ON_ERROR_STOP=1", "-tA", "-c", sql],
+ capture_output=True, text=True, timeout=30)
+ return (p.returncode == 0, p.stdout.strip(), p.stderr.strip())
+
+def bucket_key(m, p):
+ return "(%s,%s)" % ('T' if m else 'F', 'T' if p else 'F')
+
+def main():
+ data = json.load(open(DATA))
+ rows = data['collisions']
+ out = []
+
+ for c in rows:
+ cid = c['id']
+ m_pub = c['mac2']['pub']; p_pub = c['prod']['pub']
+ b = bucket_key(m_pub, p_pub)
+
+ if b == "(F,F)":
+ out.append({"id": cid, "bucket": b, "dtd_verdict": "none",
+ "action": "skip", "side": "none", "ok": True,
+ "notes": "both_unpublished"})
+ continue
+
+ if b == "(T,F)":
+ # DTD verdict C — escalate, no SQL.
+ out.append({"id": cid, "bucket": b, "dtd_verdict": "C",
+ "action": "escalate", "side": "none", "ok": False,
+ "notes": "both-published-different-art landmine if prod flipped; "
+ "Mac2=damask(live in designs.json) vs prod=muybridge-plate; "
+ "codex C (stronger arg) + qwen ERR -> escalate to Steve"})
+ continue
+
+ if b == "(F,T)":
+ # DTD verdict A — re-publish Mac2 row to match prod's live side.
+ # Idempotent guard + post-update verify against the silent-no-op trigger.
+ sql = ("UPDATE all_designs SET is_published=TRUE "
+ "WHERE id=%d AND is_published=FALSE "
+ "RETURNING is_published;" % cid)
+ ok, sout, serr = mac2_psql(sql)
+ if not ok:
+ # Trigger RAISED (settlement violation) or other SQL error.
+ out.append({"id": cid, "bucket": b, "dtd_verdict": "A",
+ "action": "blocked_by_gate", "side": "mac2",
+ "ok": False, "notes": ("sql_error: " + serr)[:300]})
+ continue
+ # Verify true post-state (RETURNING reflects post-BEFORE-trigger value;
+ # empty => row was already TRUE or no row matched -> re-read to be sure).
+ vok, vout, verr = mac2_psql(
+ "SELECT is_published FROM all_designs WHERE id=%d;" % cid)
+ final_pub = (vout == 't')
+ if final_pub:
+ note = "" if sout == 't' else "already_published_or_reread_true"
+ out.append({"id": cid, "bucket": b, "dtd_verdict": "A",
+ "action": "mac2_published", "side": "mac2",
+ "ok": True, "notes": note})
+ else:
+ # UPDATE reported success but is_published still FALSE => silent gate no-op.
+ out.append({"id": cid, "bucket": b, "dtd_verdict": "A",
+ "action": "blocked_by_gate", "side": "mac2",
+ "ok": False, "notes": "settlement gate silently no-op'd publish flip"})
+ continue
+
+ if b == "(T,T)":
+ out.append({"id": cid, "bucket": b, "dtd_verdict": "escalate",
+ "action": "escalate", "side": "none", "ok": False,
+ "notes": "both published with different art -> never auto-pick"})
+ continue
+
+ with open(AUDIT, "w") as f:
+ for r in out:
+ f.write(json.dumps(r) + "\n")
+
+ # summary to stdout
+ from collections import Counter
+ bc = Counter((r['bucket'], r['action']) for r in out)
+ print("audit rows:", len(out), "->", AUDIT)
+ for (bk, act), n in sorted(bc.items()):
+ print(" %-7s %-18s %d" % (bk, act, n))
+ blocked = [r for r in out if r['action'] == 'blocked_by_gate']
+ esc = [r for r in out if r['action'] == 'escalate']
+ print("blocked_by_gate:", len(blocked))
+ print("escalated ids:", [r['id'] for r in esc])
+
+if __name__ == "__main__":
+ main()
← a049441 PDP: fall back to wallco_rooms table for room_mockups when d
·
back to Wallco Ai
·
wallco PDP: gate unpublished /design/:id from public direct- 851af25 →