[object Object]

← back to Wild Wallcoverings

seamless pass2 script: aggressive denoise for stubborn files

3b219e7ff93ff8967b6944fa4390dffe7f358fd6 · 2026-07-22 20:42:08 -0700 · Steve Abrams

Files touched

Diff

commit 3b219e7ff93ff8967b6944fa4390dffe7f358fd6
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed Jul 22 20:42:08 2026 -0700

    seamless pass2 script: aggressive denoise for stubborn files
---
 data/choices.json                          |  83 ++++++++++++++++-
 data/designs.json                          |  47 +++++-----
 data/regen-additions.json                  | 140 +++++++++++++++++++++++++++++
 output/designs/arcade-memory-v1-nano.png   | Bin 150844 -> 133997 bytes
 output/designs/arcade-memory-v10-nano.png  | Bin 0 -> 62076 bytes
 output/designs/arcade-memory-v2-sdxl.png   | Bin 70053 -> 77105 bytes
 output/designs/arcade-memory-v3-sdxl.png   | Bin 81751 -> 97163 bytes
 output/designs/arcade-memory-v6-nano.png   | Bin 146408 -> 145768 bytes
 output/designs/arcade-memory-v8-nano.png   | Bin 0 -> 196534 bytes
 output/designs/arcade-memory-v9-nano.png   | Bin 0 -> 155012 bytes
 output/designs/bodega-cats-v10-nano.png    | Bin 0 -> 117691 bytes
 output/designs/bodega-cats-v8-nano.png     | Bin 0 -> 95628 bytes
 output/designs/bodega-cats-v9-nano.png     | Bin 0 -> 123040 bytes
 output/designs/campfire-toile-v2-sdxl.png  | Bin 122611 -> 136811 bytes
 output/designs/campfire-toile-v3-sdxl.png  | Bin 125317 -> 128479 bytes
 output/designs/daily-dose-v2-sdxl.png      | Bin 115614 -> 102176 bytes
 output/designs/daily-dose-v3-sdxl.png      | Bin 103986 -> 101168 bytes
 output/designs/daily-dose-v7-nano.png      | Bin 0 -> 32885 bytes
 output/designs/daily-dose-v8-nano.png      | Bin 0 -> 22069 bytes
 output/designs/daily-dose-v9-nano.png      | Bin 0 -> 14451 bytes
 output/designs/dream-clouds-v7-nano.png    | Bin 0 -> 49085 bytes
 output/designs/dream-clouds-v8-nano.png    | Bin 0 -> 18933 bytes
 output/designs/dream-clouds-v9-nano.png    | Bin 0 -> 39303 bytes
 output/designs/herbarium-press-v7-nano.png | Bin 0 -> 257634 bytes
 output/designs/herbarium-press-v8-nano.png | Bin 0 -> 281067 bytes
 output/designs/herbarium-press-v9-nano.png | Bin 0 -> 290901 bytes
 output/designs/mod-orbit-v7-nano.png       | Bin 0 -> 20424 bytes
 output/designs/mod-orbit-v8-nano.png       | Bin 0 -> 77897 bytes
 output/designs/mod-orbit-v9-nano.png       | Bin 0 -> 50225 bytes
 output/designs/plumbline-v7-nano.png       | Bin 0 -> 122957 bytes
 output/designs/plumbline-v8-nano.png       | Bin 0 -> 53933 bytes
 output/designs/plumbline-v9-nano.png       | Bin 0 -> 57311 bytes
 output/designs/regatta-day-v1-nano.png     | Bin 71999 -> 69733 bytes
 output/designs/regatta-day-v2-sdxl.png     | Bin 98285 -> 110705 bytes
 output/designs/regatta-day-v3-sdxl.png     | Bin 105590 -> 131630 bytes
 output/designs/regatta-day-v4-nano.png     | Bin 148361 -> 143743 bytes
 output/designs/regatta-day-v5-nano.png     | Bin 269156 -> 184284 bytes
 output/designs/robot-parade-v10-nano.png   | Bin 0 -> 55757 bytes
 output/designs/robot-parade-v11-nano.png   | Bin 0 -> 42970 bytes
 output/designs/robot-parade-v12-nano.png   | Bin 0 -> 141504 bytes
 output/designs/robot-parade-v7-nano.png    | Bin 0 -> 55034 bytes
 output/designs/robot-parade-v8-nano.png    | Bin 0 -> 44178 bytes
 output/designs/robot-parade-v9-nano.png    | Bin 0 -> 57630 bytes
 scripts/seamless_pass2.py                  |  38 ++++++++
 44 files changed, 286 insertions(+), 22 deletions(-)

diff --git a/data/choices.json b/data/choices.json
index 0967ef4..e5589b6 100644
--- a/data/choices.json
+++ b/data/choices.json
@@ -1 +1,82 @@
-{}
+{
+  "bodega-cats": {
+    "variant": "none",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  },
+  "dream-clouds": {
+    "variant": "dream-clouds-v4-nano.png",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  },
+  "campfire-toile": {
+    "variant": "campfire-toile-v4-nano.png",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  },
+  "circle-fields": {
+    "variant": "circle-fields-v6-nano.png",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  },
+  "regatta-day": {
+    "variant": "regatta-day-v6-nano.png",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  },
+  "fungi-skyline": {
+    "variant": "fungi-skyline-v1-nano.png",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  },
+  "lagoon-legends": {
+    "variant": "lagoon-legends-v4-nano.png",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  },
+  "plumbline": {
+    "variant": "none",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  },
+  "lost-continent": {
+    "variant": "lost-continent-v4-nano.png",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  },
+  "mod-orbit": {
+    "variant": "mod-orbit-v1-nano.png",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  },
+  "tidepool-bloom": {
+    "variant": "tidepool-bloom-v5-nano.png",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  },
+  "painted-feathers": {
+    "variant": "painted-feathers-v7-nano.png",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  },
+  "golden-pineapple": {
+    "variant": "golden-pineapple-v4-nano.png",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  },
+  "night-jungle": {
+    "variant": "night-jungle-v6-nano.png",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  },
+  "moonrise-ikat": {
+    "variant": "moonrise-ikat-v2-sdxl.png",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  },
+  "ray-shadow": {
+    "variant": "ray-shadow-v4-nano.png",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  },
+  "desert-choir": {
+    "variant": "desert-choir-v5-nano.png",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  },
+  "galaxy-bots": {
+    "variant": "galaxy-bots-v1-nano.png",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  },
+  "midnight-frequency": {
+    "variant": "midnight-frequency-v1-nano.png",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  },
+  "astral-tiger": {
+    "variant": "astral-tiger-v1-nano.png",
+    "chosen_at": "2026-07-23T03:27:53.684Z"
+  }
+}
\ No newline at end of file
diff --git a/data/designs.json b/data/designs.json
index 23cf39c..d7a9ab8 100644
--- a/data/designs.json
+++ b/data/designs.json
@@ -2385,8 +2385,8 @@
      "acceptable": true
     },
     "tile": {
-     "verdict": "FAIL",
-     "max": null
+     "verdict": "EDGES-FAIL",
+     "healed": true
     },
     "copycheck": "CLEAN"
    },
@@ -2404,8 +2404,8 @@
      "acceptable": false
     },
     "tile": {
-     "verdict": "FAIL",
-     "max": null
+     "verdict": "EDGES-FAIL",
+     "healed": true
     },
     "copycheck": "CLEAN"
    },
@@ -2424,7 +2424,8 @@
      "acceptable": false
     },
     "tile": {
-     "verdict": "WARN"
+     "verdict": "EDGES-PASS",
+     "healed": true
     }
    },
    {
@@ -2442,7 +2443,8 @@
      "acceptable": false
     },
     "tile": {
-     "verdict": "WARN"
+     "verdict": "EDGES-PASS",
+     "healed": true
     }
    },
    {
@@ -2460,7 +2462,8 @@
      "acceptable": false
     },
     "tile": {
-     "verdict": "FAIL"
+     "verdict": "EDGES-FAIL",
+     "healed": true
     }
    },
    {
@@ -2510,8 +2513,8 @@
      "acceptable": false
     },
     "tile": {
-     "verdict": "FAIL",
-     "max": null
+     "verdict": "EDGES-PASS",
+     "healed": true
     },
     "copycheck": "CLEAN"
    },
@@ -2529,8 +2532,8 @@
      "acceptable": false
     },
     "tile": {
-     "verdict": "FAIL",
-     "max": null
+     "verdict": "EDGES-FAIL",
+     "healed": true
     },
     "copycheck": "CLEAN"
    },
@@ -2567,7 +2570,8 @@
      "acceptable": false
     },
     "tile": {
-     "verdict": "WARN"
+     "verdict": "EDGES-PASS",
+     "healed": true
     }
    },
    {
@@ -2621,7 +2625,8 @@
      "acceptable": false
     },
     "tile": {
-     "verdict": "WARN"
+     "verdict": "EDGES-PASS",
+     "healed": true
     }
    }
   ],
@@ -2653,8 +2658,8 @@
      "acceptable": false
     },
     "tile": {
-     "verdict": "FAIL",
-     "max": null
+     "verdict": "EDGES-PASS",
+     "healed": true
     },
     "copycheck": "CLEAN"
    },
@@ -2672,8 +2677,8 @@
      "acceptable": false
     },
     "tile": {
-     "verdict": "FAIL",
-     "max": null
+     "verdict": "EDGES-PASS",
+     "healed": true
     },
     "copycheck": "CLEAN"
    },
@@ -2903,8 +2908,8 @@
      "acceptable": true
     },
     "tile": {
-     "verdict": "FAIL",
-     "max": null
+     "verdict": "EDGES-FAIL",
+     "healed": true
     },
     "copycheck": "CLEAN"
    },
@@ -2922,8 +2927,8 @@
      "acceptable": true
     },
     "tile": {
-     "verdict": "FAIL",
-     "max": null
+     "verdict": "EDGES-PASS",
+     "healed": true
     },
     "copycheck": "CLEAN"
    },
diff --git a/data/regen-additions.json b/data/regen-additions.json
new file mode 100644
index 0000000..e1d04c9
--- /dev/null
+++ b/data/regen-additions.json
@@ -0,0 +1,140 @@
+{
+ "mod-orbit": [
+  {
+   "file": "mod-orbit-v7-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:19:43.197713+00:00",
+   "fresh": true
+  },
+  {
+   "file": "mod-orbit-v8-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:19:50.320153+00:00",
+   "fresh": true
+  },
+  {
+   "file": "mod-orbit-v9-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:19:57.546051+00:00",
+   "fresh": true
+  }
+ ],
+ "dream-clouds": [
+  {
+   "file": "dream-clouds-v7-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:21:16.332534+00:00",
+   "fresh": true
+  },
+  {
+   "file": "dream-clouds-v8-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:21:22.884802+00:00",
+   "fresh": true
+  },
+  {
+   "file": "dream-clouds-v9-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:21:30.064744+00:00",
+   "fresh": true
+  }
+ ],
+ "arcade-memory": [
+  {
+   "file": "arcade-memory-v8-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:21:47.341193+00:00",
+   "fresh": true
+  },
+  {
+   "file": "arcade-memory-v9-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:21:54.661231+00:00",
+   "fresh": true
+  },
+  {
+   "file": "arcade-memory-v10-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:22:01.838921+00:00",
+   "fresh": true
+  }
+ ],
+ "plumbline": [
+  {
+   "file": "plumbline-v7-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:22:53.757515+00:00",
+   "fresh": true
+  },
+  {
+   "file": "plumbline-v8-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:23:00.251472+00:00",
+   "fresh": true
+  },
+  {
+   "file": "plumbline-v9-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:23:08.370542+00:00",
+   "fresh": true
+  }
+ ],
+ "herbarium-press": [
+  {
+   "file": "herbarium-press-v7-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:25:27.418397+00:00",
+   "fresh": true
+  },
+  {
+   "file": "herbarium-press-v8-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:25:34.695573+00:00",
+   "fresh": true
+  },
+  {
+   "file": "herbarium-press-v9-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:25:41.981144+00:00",
+   "fresh": true
+  }
+ ],
+ "robot-parade": [
+  {
+   "file": "robot-parade-v7-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:26:04.499847+00:00",
+   "fresh": true
+  },
+  {
+   "file": "robot-parade-v8-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:26:12.609677+00:00",
+   "fresh": true
+  },
+  {
+   "file": "robot-parade-v9-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:26:20.163185+00:00",
+   "fresh": true
+  },
+  {
+   "file": "robot-parade-v10-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:26:46.344037+00:00",
+   "fresh": true
+  },
+  {
+   "file": "robot-parade-v11-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:26:53.207951+00:00",
+   "fresh": true
+  },
+  {
+   "file": "robot-parade-v12-nano.png",
+   "engine": "nano-banana",
+   "created_at": "2026-07-23T03:27:00.417219+00:00",
+   "fresh": true
+  }
+ ]
+}
\ No newline at end of file
diff --git a/output/designs/arcade-memory-v1-nano.png b/output/designs/arcade-memory-v1-nano.png
index f3b00ff..823d512 100644
Binary files a/output/designs/arcade-memory-v1-nano.png and b/output/designs/arcade-memory-v1-nano.png differ
diff --git a/output/designs/arcade-memory-v10-nano.png b/output/designs/arcade-memory-v10-nano.png
new file mode 100644
index 0000000..bd76963
Binary files /dev/null and b/output/designs/arcade-memory-v10-nano.png differ
diff --git a/output/designs/arcade-memory-v2-sdxl.png b/output/designs/arcade-memory-v2-sdxl.png
index 677b2c8..06ad24a 100644
Binary files a/output/designs/arcade-memory-v2-sdxl.png and b/output/designs/arcade-memory-v2-sdxl.png differ
diff --git a/output/designs/arcade-memory-v3-sdxl.png b/output/designs/arcade-memory-v3-sdxl.png
index c279fb7..0cc134d 100644
Binary files a/output/designs/arcade-memory-v3-sdxl.png and b/output/designs/arcade-memory-v3-sdxl.png differ
diff --git a/output/designs/arcade-memory-v6-nano.png b/output/designs/arcade-memory-v6-nano.png
index bebd1f6..7ed1fb9 100644
Binary files a/output/designs/arcade-memory-v6-nano.png and b/output/designs/arcade-memory-v6-nano.png differ
diff --git a/output/designs/arcade-memory-v8-nano.png b/output/designs/arcade-memory-v8-nano.png
new file mode 100644
index 0000000..006313d
Binary files /dev/null and b/output/designs/arcade-memory-v8-nano.png differ
diff --git a/output/designs/arcade-memory-v9-nano.png b/output/designs/arcade-memory-v9-nano.png
new file mode 100644
index 0000000..e2ee809
Binary files /dev/null and b/output/designs/arcade-memory-v9-nano.png differ
diff --git a/output/designs/bodega-cats-v10-nano.png b/output/designs/bodega-cats-v10-nano.png
new file mode 100644
index 0000000..2c0f7cd
Binary files /dev/null and b/output/designs/bodega-cats-v10-nano.png differ
diff --git a/output/designs/bodega-cats-v8-nano.png b/output/designs/bodega-cats-v8-nano.png
new file mode 100644
index 0000000..4900839
Binary files /dev/null and b/output/designs/bodega-cats-v8-nano.png differ
diff --git a/output/designs/bodega-cats-v9-nano.png b/output/designs/bodega-cats-v9-nano.png
new file mode 100644
index 0000000..b0e615a
Binary files /dev/null and b/output/designs/bodega-cats-v9-nano.png differ
diff --git a/output/designs/campfire-toile-v2-sdxl.png b/output/designs/campfire-toile-v2-sdxl.png
index 6297da3..87b0772 100644
Binary files a/output/designs/campfire-toile-v2-sdxl.png and b/output/designs/campfire-toile-v2-sdxl.png differ
diff --git a/output/designs/campfire-toile-v3-sdxl.png b/output/designs/campfire-toile-v3-sdxl.png
index c8a0f45..8590699 100644
Binary files a/output/designs/campfire-toile-v3-sdxl.png and b/output/designs/campfire-toile-v3-sdxl.png differ
diff --git a/output/designs/daily-dose-v2-sdxl.png b/output/designs/daily-dose-v2-sdxl.png
index 202b0a4..2c98eeb 100644
Binary files a/output/designs/daily-dose-v2-sdxl.png and b/output/designs/daily-dose-v2-sdxl.png differ
diff --git a/output/designs/daily-dose-v3-sdxl.png b/output/designs/daily-dose-v3-sdxl.png
index 69d6207..be2497f 100644
Binary files a/output/designs/daily-dose-v3-sdxl.png and b/output/designs/daily-dose-v3-sdxl.png differ
diff --git a/output/designs/daily-dose-v7-nano.png b/output/designs/daily-dose-v7-nano.png
new file mode 100644
index 0000000..9396af3
Binary files /dev/null and b/output/designs/daily-dose-v7-nano.png differ
diff --git a/output/designs/daily-dose-v8-nano.png b/output/designs/daily-dose-v8-nano.png
new file mode 100644
index 0000000..95d7796
Binary files /dev/null and b/output/designs/daily-dose-v8-nano.png differ
diff --git a/output/designs/daily-dose-v9-nano.png b/output/designs/daily-dose-v9-nano.png
new file mode 100644
index 0000000..0a43944
Binary files /dev/null and b/output/designs/daily-dose-v9-nano.png differ
diff --git a/output/designs/dream-clouds-v7-nano.png b/output/designs/dream-clouds-v7-nano.png
new file mode 100644
index 0000000..cd0b260
Binary files /dev/null and b/output/designs/dream-clouds-v7-nano.png differ
diff --git a/output/designs/dream-clouds-v8-nano.png b/output/designs/dream-clouds-v8-nano.png
new file mode 100644
index 0000000..4308748
Binary files /dev/null and b/output/designs/dream-clouds-v8-nano.png differ
diff --git a/output/designs/dream-clouds-v9-nano.png b/output/designs/dream-clouds-v9-nano.png
new file mode 100644
index 0000000..27837fc
Binary files /dev/null and b/output/designs/dream-clouds-v9-nano.png differ
diff --git a/output/designs/herbarium-press-v7-nano.png b/output/designs/herbarium-press-v7-nano.png
new file mode 100644
index 0000000..9b2c4c3
Binary files /dev/null and b/output/designs/herbarium-press-v7-nano.png differ
diff --git a/output/designs/herbarium-press-v8-nano.png b/output/designs/herbarium-press-v8-nano.png
new file mode 100644
index 0000000..9af6415
Binary files /dev/null and b/output/designs/herbarium-press-v8-nano.png differ
diff --git a/output/designs/herbarium-press-v9-nano.png b/output/designs/herbarium-press-v9-nano.png
new file mode 100644
index 0000000..7b8e316
Binary files /dev/null and b/output/designs/herbarium-press-v9-nano.png differ
diff --git a/output/designs/mod-orbit-v7-nano.png b/output/designs/mod-orbit-v7-nano.png
new file mode 100644
index 0000000..896552e
Binary files /dev/null and b/output/designs/mod-orbit-v7-nano.png differ
diff --git a/output/designs/mod-orbit-v8-nano.png b/output/designs/mod-orbit-v8-nano.png
new file mode 100644
index 0000000..ed319d0
Binary files /dev/null and b/output/designs/mod-orbit-v8-nano.png differ
diff --git a/output/designs/mod-orbit-v9-nano.png b/output/designs/mod-orbit-v9-nano.png
new file mode 100644
index 0000000..ea69a1f
Binary files /dev/null and b/output/designs/mod-orbit-v9-nano.png differ
diff --git a/output/designs/plumbline-v7-nano.png b/output/designs/plumbline-v7-nano.png
new file mode 100644
index 0000000..856358e
Binary files /dev/null and b/output/designs/plumbline-v7-nano.png differ
diff --git a/output/designs/plumbline-v8-nano.png b/output/designs/plumbline-v8-nano.png
new file mode 100644
index 0000000..eedcc2a
Binary files /dev/null and b/output/designs/plumbline-v8-nano.png differ
diff --git a/output/designs/plumbline-v9-nano.png b/output/designs/plumbline-v9-nano.png
new file mode 100644
index 0000000..ac9296f
Binary files /dev/null and b/output/designs/plumbline-v9-nano.png differ
diff --git a/output/designs/regatta-day-v1-nano.png b/output/designs/regatta-day-v1-nano.png
index d8a8021..01abe40 100644
Binary files a/output/designs/regatta-day-v1-nano.png and b/output/designs/regatta-day-v1-nano.png differ
diff --git a/output/designs/regatta-day-v2-sdxl.png b/output/designs/regatta-day-v2-sdxl.png
index 5eb4b8f..563fbb3 100644
Binary files a/output/designs/regatta-day-v2-sdxl.png and b/output/designs/regatta-day-v2-sdxl.png differ
diff --git a/output/designs/regatta-day-v3-sdxl.png b/output/designs/regatta-day-v3-sdxl.png
index 81988be..8e6c12e 100644
Binary files a/output/designs/regatta-day-v3-sdxl.png and b/output/designs/regatta-day-v3-sdxl.png differ
diff --git a/output/designs/regatta-day-v4-nano.png b/output/designs/regatta-day-v4-nano.png
index cebc2be..12455b6 100644
Binary files a/output/designs/regatta-day-v4-nano.png and b/output/designs/regatta-day-v4-nano.png differ
diff --git a/output/designs/regatta-day-v5-nano.png b/output/designs/regatta-day-v5-nano.png
index 1273212..01cf13a 100644
Binary files a/output/designs/regatta-day-v5-nano.png and b/output/designs/regatta-day-v5-nano.png differ
diff --git a/output/designs/robot-parade-v10-nano.png b/output/designs/robot-parade-v10-nano.png
new file mode 100644
index 0000000..3fd271a
Binary files /dev/null and b/output/designs/robot-parade-v10-nano.png differ
diff --git a/output/designs/robot-parade-v11-nano.png b/output/designs/robot-parade-v11-nano.png
new file mode 100644
index 0000000..a96630a
Binary files /dev/null and b/output/designs/robot-parade-v11-nano.png differ
diff --git a/output/designs/robot-parade-v12-nano.png b/output/designs/robot-parade-v12-nano.png
new file mode 100644
index 0000000..8f76775
Binary files /dev/null and b/output/designs/robot-parade-v12-nano.png differ
diff --git a/output/designs/robot-parade-v7-nano.png b/output/designs/robot-parade-v7-nano.png
new file mode 100644
index 0000000..4304b92
Binary files /dev/null and b/output/designs/robot-parade-v7-nano.png differ
diff --git a/output/designs/robot-parade-v8-nano.png b/output/designs/robot-parade-v8-nano.png
new file mode 100644
index 0000000..7f0f7fa
Binary files /dev/null and b/output/designs/robot-parade-v8-nano.png differ
diff --git a/output/designs/robot-parade-v9-nano.png b/output/designs/robot-parade-v9-nano.png
new file mode 100644
index 0000000..c33604d
Binary files /dev/null and b/output/designs/robot-parade-v9-nano.png differ
diff --git a/scripts/seamless_pass2.py b/scripts/seamless_pass2.py
new file mode 100644
index 0000000..0ac16d8
--- /dev/null
+++ b/scripts/seamless_pass2.py
@@ -0,0 +1,38 @@
+#!/usr/bin/env python3
+"""Second seamless pass: only EDGES-FAIL files, aggressive denoise (0.65, 0.8).
+Higher denoise redraws more but circular padding keeps it on-design via the
+prompt + palette snap. $0 local. Usage: seamless_pass2.py"""
+import json, os, sys, importlib.util
+
+ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+spec = importlib.util.spec_from_file_location("ms", os.path.join(ROOT, "scripts", "make_seamless.py"))
+ms = importlib.util.module_from_spec(spec); spec.loader.exec_module(ms)
+
+def main():
+    briefs = {b["id"]: b for b in json.load(open(os.path.join(ROOT, "data", "briefs.json")))}
+    d = json.load(open(os.path.join(ROOT, "data", "designs.json")))
+    todo = [(x["id"], v) for x in d for v in x["variants"]
+            if v.get("tile", {}).get("verdict") == "EDGES-FAIL"]
+    print(f"pass2: {len(todo)} stubborn files", flush=True)
+    for did, v in todo:
+        path = os.path.join(ROOT, "output", "designs", v["file"])
+        try:
+            for dn in (0.65, 0.8):
+                ms.run_job(path, briefs[did]["prompt"], dn)
+                import subprocess
+                subprocess.run([sys.executable, os.path.join(ROOT, "scripts", "snap_palette.py"),
+                                path, did], capture_output=True)
+                gate, full = ms.scan_verdict(path)
+                print(f"{v['file']} denoise={dn} -> {gate}", flush=True)
+                if gate == "EDGES-PASS":
+                    break
+            v["tile"] = {"verdict": gate, "healed": True, "pass2": True}
+        except Exception as e:
+            print(v["file"], "ERROR", e, flush=True)
+        json.dump(d, open(os.path.join(ROOT, "data", "designs.json"), "w"), indent=1)
+    from collections import Counter
+    c = Counter(v.get("tile", {}).get("verdict", "?") for x in d for v in x["variants"])
+    print("pass2 done:", dict(c))
+
+if __name__ == "__main__":
+    main()

← a9e930b per-row Regenerate button: 3 fresh gated versions on demand,  ·  back to Wild Wallcoverings  ·  Skip button also regenerates the SKU (fires /api/regen + liv 0de8a58 →