[object Object]

← back to Wallco Ai

refiner_compare: skip already-rendered images so a crash+restart resumes instead of restarting from pair 0

252f1797c8c21bc054e6394007f6adeadf0f2e53 · 2026-05-19 12:08:21 -0700 · SteveStudio2

Files touched

Diff

commit 252f1797c8c21bc054e6394007f6adeadf0f2e53
Author: SteveStudio2 <steve@designerwallcoverings.com>
Date:   Tue May 19 12:08:21 2026 -0700

    refiner_compare: skip already-rendered images so a crash+restart resumes instead of restarting from pair 0
---
 scripts/refiner_compare.js | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/scripts/refiner_compare.js b/scripts/refiner_compare.js
index 435746f..75620da 100644
--- a/scripts/refiner_compare.js
+++ b/scripts/refiner_compare.js
@@ -107,11 +107,21 @@ function render(workflow, outPath) {
     const save = done => fs.writeFileSync(path.join(OUT, 'progress.json'),
       JSON.stringify({ done, total: STYLES.length, rows }, null, 1));
     save(i);
-    try { row.base = render(baseWorkflow(seed, POS), path.join(OUT, baseFile)) ? baseFile : false; }
-    catch (e) { row.base = false; console.log(`  ${i} base ERR ${e.message}`); }
+    // resume-safe: a render that already produced a real file is skipped, so a
+    // crash + restart picks up where it left off instead of re-rendering pair 0.
+    const basePath = path.join(OUT, baseFile), refPath = path.join(OUT, refFile);
+    const haveImg = p => { try { return fs.statSync(p).size > 1000; } catch { return false; } };
+    if (haveImg(basePath)) { row.base = baseFile; console.log(`  ${i} base — skip (already rendered)`); }
+    else {
+      try { row.base = render(baseWorkflow(seed, POS), basePath) ? baseFile : false; }
+      catch (e) { row.base = false; console.log(`  ${i} base ERR ${e.message}`); }
+    }
     save(i);
-    try { row.refiner = render(refinerWorkflow(seed, POS), path.join(OUT, refFile)) ? refFile : false; }
-    catch (e) { row.refiner = false; console.log(`  ${i} refiner ERR ${e.message}`); }
+    if (haveImg(refPath)) { row.refiner = refFile; console.log(`  ${i} refiner — skip (already rendered)`); }
+    else {
+      try { row.refiner = render(refinerWorkflow(seed, POS), refPath) ? refFile : false; }
+      catch (e) { row.refiner = false; console.log(`  ${i} refiner ERR ${e.message}`); }
+    }
     save(i + 1);
     console.log(`[${i + 1}/25] ${style} · ${pal.brand} — base:${row.base ? 'ok' : 'FAIL'} refiner:${row.refiner ? 'ok' : 'FAIL'} · ${((Date.now() - t0) / 1000 / 60).toFixed(1)}min`);
   }

← 498edd4 fix: designs had empty image_url -> blank cards on /designs.  ·  back to Wallco Ai  ·  add refiner_compare watchdog — auto-restart on crash, exit o 838379d →