← back to Wallco Ai
night-builder: land UNPUBLISHED — every new comfy roll requires curator approval (was auto-publishing 9+/day to storefront unreviewed); colorway variants INSERT is_published=FALSE; base post-2tone guard re-asserts FALSE (catches upstream regressions)
8581f87e5e806e7101449e7b14ef2771a8eb73fd · 2026-05-28 08:27:37 -0700 · Steve Abrams
Files touched
M scripts/night-builder.js
Diff
commit 8581f87e5e806e7101449e7b14ef2771a8eb73fd
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Thu May 28 08:27:37 2026 -0700
night-builder: land UNPUBLISHED — every new comfy roll requires curator approval (was auto-publishing 9+/day to storefront unreviewed); colorway variants INSERT is_published=FALSE; base post-2tone guard re-asserts FALSE (catches upstream regressions)
---
scripts/night-builder.js | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/scripts/night-builder.js b/scripts/night-builder.js
index 106c6e9..f27a388 100755
--- a/scripts/night-builder.js
+++ b/scripts/night-builder.js
@@ -15,7 +15,9 @@
// - Halt: touch /tmp/halt-night-builder.flag to stop after current image
// - Stop time: 07:30 local (Steve wakes ~8 AM)
// - Settlement gate inline (single-ink + no Part B elements = OK)
-// - is_published=TRUE so Steve sees them in /designs immediately
+// - is_published=FALSE — every new roll requires curator approval (Steve
+// 2026-05-28: night-builder used to auto-publish 9+ unreviewed designs/day
+// to the storefront; now they land in the cactus-curator queue for review)
// - Category: 'drunk-animals-designer' for the B-track (NOT 'drunk-animals')
// so Steve can sort + dedupe vs the kitsch originals
// - Cooldown: 5s between calls to be polite to Replicate
@@ -873,7 +875,7 @@ function generateOne(track, cw) {
// captures id, then a follow-up UPDATE writes the real URL.
const insertSql = `
INSERT INTO spoon_all_designs (brand, kind, width_in, height_in, panels, generator, prompt, image_url, local_path, dominant_hex, category, product_line, is_published, notes, parent_design_id, created_at)
- SELECT brand, kind, width_in, height_in, panels, generator, prompt || E'\\n[colorway-variant of #${id}]', '/designs/img/by-id/PLACEHOLDER', '${v.path.replace(/'/g, "''")}', '${v.ground.replace(/'/g, "''")}', '${cwTitle.replace(/'/g, "''")}', product_line, TRUE, E'colorway variant: ${v.slug} (ground=${v.ground}, figure=${v.figure}) of parent #${id}', ${id}, NOW()
+ SELECT brand, kind, width_in, height_in, panels, generator, prompt || E'\\n[colorway-variant of #${id}]', '/designs/img/by-id/PLACEHOLDER', '${v.path.replace(/'/g, "''")}', '${v.ground.replace(/'/g, "''")}', '${cwTitle.replace(/'/g, "''")}', product_line, FALSE, E'colorway variant: ${v.slug} (ground=${v.ground}, figure=${v.figure}) of parent #${id}', ${id}, NOW()
FROM spoon_all_designs WHERE id=${id}
RETURNING id;`;
try {
@@ -915,12 +917,19 @@ function generateOne(track, cw) {
logLine(` 2tone EXC id=${id}: ${e.message.slice(0, 200)}`);
}
}
- // Auto-publish so Steve sees it in /designs
+ // Land UNPUBLISHED (Steve directive 2026-05-28): new comfy rolls require
+ // curator approval before going live — bulk-publish via the cactus-curator
+ // grid, same workflow as the dogs/svg-tessellate batches. The auto-publish
+ // that used to happen here let unreviewed designs slip onto the storefront.
if (id) {
try {
- psql(`UPDATE spoon_all_designs SET is_published=TRUE WHERE id=${id};`);
+ // explicit re-assert: stays FALSE (the INSERT default for new rows in
+ // generate_designs.js is already FALSE; this guard catches any future
+ // upstream regression that flips it to TRUE).
+ psql(`UPDATE spoon_all_designs SET is_published=FALSE WHERE id=${id} AND is_published=TRUE;`);
+ logLine(`new ${track} #${id} landed UNPUBLISHED (curator-approval gate)`);
} catch (e) {
- logLine(`publish-flip FAIL id=${id}: ${e.message.slice(0, 120)}`);
+ logLine(`unpub-guard FAIL id=${id}: ${e.message.slice(0, 120)}`);
}
}
return { ok: true, id, category, colorway: cw.slug };
← 78c466d trade-login: wire transactional email send via sendTransacti
·
back to Wallco Ai
·
drunk-curator = canonical Hot-or-Not agent: add 🛒 Etsy buck e1ba323 →