[object Object]

← back to Wallco Ai

Broaden seamless-comfy guard to kind==='seamless_tile' (covers drunk-*)

66addf635e22d9b809c1dc375cceba40365319a7 · 2026-05-26 10:01:19 -0700 · Steve Abrams

The cron emits --kind seamless_tile for every recipe, so gating the comfy
override on kind (not just the curated TILE_CATEGORIES set) routes ALL tiles
through circular padding — drunk-animals silhouettes included, which were
still FAILing top-bottom (tb=15.70) on replicate. Decouples backend routing
(needs edge-wrap) from prompt selection (dense vs silhouette). Murals keep
GEN_BACKEND since they don't tile.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit 66addf635e22d9b809c1dc375cceba40365319a7
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Tue May 26 10:01:19 2026 -0700

    Broaden seamless-comfy guard to kind==='seamless_tile' (covers drunk-*)
    
    The cron emits --kind seamless_tile for every recipe, so gating the comfy
    override on kind (not just the curated TILE_CATEGORIES set) routes ALL tiles
    through circular padding — drunk-animals silhouettes included, which were
    still FAILing top-bottom (tb=15.70) on replicate. Decouples backend routing
    (needs edge-wrap) from prompt selection (dense vs silhouette). Murals keep
    GEN_BACKEND since they don't tile.
    
    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---
 scripts/generate_designs.js | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/scripts/generate_designs.js b/scripts/generate_designs.js
index ff7d624..9442ee0 100644
--- a/scripts/generate_designs.js
+++ b/scripts/generate_designs.js
@@ -448,15 +448,20 @@ function genReplicateFlux(prompt, seed, outPath) {
 }
 
 function generate(prompt, seed, outPath, meta) {
-  // 2026-05-26 — TILE_CATEGORIES (damask/chinoiserie/scenic/etc.) only render
-  // seamlessly on the comfy backend, which patches the UNet+VAE Conv2d to
-  // circular padding (SeamlessTile + MakeCircularVAE). replicate/flux/stub ship
-  // padding='zeros' → guaranteed top-bottom edge-wrap FAIL no prompt can fix.
+  // 2026-05-26 — Any seamless tile must wrap edge-to-edge, which only the comfy
+  // backend delivers: it patches the UNet+VAE Conv2d to circular padding
+  // (SeamlessTile + MakeCircularVAE). replicate/flux/stub ship padding='zeros'
+  // → guaranteed top-bottom edge-wrap FAIL that no prompt can fix.
   // Validated: replicate damask tb=15-65 ΔE FAIL vs comfy damask tb=2.14 PASS.
-  // Force comfy for these categories regardless of GEN_BACKEND so the cron
-  // (which defaults to replicate) can't silently produce broken tile designs.
+  // Gate on kind==='seamless_tile' (every tile the cron emits) plus the
+  // TILE_CATEGORIES set as a belt-and-suspenders, so the cron (which defaults
+  // to replicate) can't silently produce broken tile inventory — drunk-*
+  // silhouettes included. Murals (kind==='mural') are single scenes that don't
+  // tile, so they keep whatever GEN_BACKEND is set.
   let backend = BACKEND;
-  if (meta && TILE_CATEGORIES.has(meta.category) && backend !== 'comfy') {
+  const needsCircularPadding = meta &&
+    (meta.kind === 'seamless_tile' || TILE_CATEGORIES.has(meta.category));
+  if (needsCircularPadding && backend !== 'comfy') {
     backend = 'comfy';
   }
   switch (backend) {

← 43ccc81 Force TILE_CATEGORIES to comfy seamless path regardless of G  ·  back to Wallco Ai  ·  geometric pilot: bulk-verify ghost-detector (stable 3-vote) e0387ff →