[object Object]

← back to Wallco Ai

Force TILE_CATEGORIES to comfy seamless path regardless of GEN_BACKEND

43ccc810991ebe001d104123d8b49fdb4ff7b4fe · 2026-05-26 09:59:26 -0700 · Steve Abrams

The cron (generator_tick.js) defaults to replicate, which uses padding=zeros
convolution and produces guaranteed top-bottom edge-wrap FAILs for tileable
categories. Comfy is the only backend with the SeamlessTile+MakeCircularVAE
circular-padding fix. Route damask/chinoiserie/scenic/etc. through it
unconditionally so the cron can't silently regenerate broken tile inventory.

Validated: replicate damask tb=15-65 dE FAIL vs comfy damask tb=2.14 PASS.

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

Files touched

Diff

commit 43ccc810991ebe001d104123d8b49fdb4ff7b4fe
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Tue May 26 09:59:26 2026 -0700

    Force TILE_CATEGORIES to comfy seamless path regardless of GEN_BACKEND
    
    The cron (generator_tick.js) defaults to replicate, which uses padding=zeros
    convolution and produces guaranteed top-bottom edge-wrap FAILs for tileable
    categories. Comfy is the only backend with the SeamlessTile+MakeCircularVAE
    circular-padding fix. Route damask/chinoiserie/scenic/etc. through it
    unconditionally so the cron can't silently regenerate broken tile inventory.
    
    Validated: replicate damask tb=15-65 dE FAIL vs comfy damask tb=2.14 PASS.
    
    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---
 scripts/generate_designs.js | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/scripts/generate_designs.js b/scripts/generate_designs.js
index 6e4f115..ff7d624 100644
--- a/scripts/generate_designs.js
+++ b/scripts/generate_designs.js
@@ -448,7 +448,18 @@ function genReplicateFlux(prompt, seed, outPath) {
 }
 
 function generate(prompt, seed, outPath, meta) {
-  switch (BACKEND) {
+  // 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.
+  // 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.
+  let backend = BACKEND;
+  if (meta && TILE_CATEGORIES.has(meta.category) && backend !== 'comfy') {
+    backend = 'comfy';
+  }
+  switch (backend) {
     case 'replicate': genReplicate(prompt, seed, outPath, meta); break;
     case 'flux':      genReplicateFlux(prompt, seed, outPath, meta); break;
     case 'comfy':     genComfy(prompt, seed, outPath, meta); break;

← 2c4735e add CLAUDE.md project guidance  ·  back to Wallco Ai  ·  Broaden seamless-comfy guard to kind==='seamless_tile' (cove 66addf6 →