[object Object]

← back to Wallco Ai

wallco-ai: gate butterfly-trellis + drunk-animals batches through settlement skill; drunk-animals skips BLOCK/NEEDS_REVIEW prompts mid-batch instead of dying

45ff467e9f93ec755b7c6bf629705dafa9b1c277 · 2026-05-13 12:21:28 -0700 · SteveStudio2

Files touched

Diff

commit 45ff467e9f93ec755b7c6bf629705dafa9b1c277
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date:   Wed May 13 12:21:28 2026 -0700

    wallco-ai: gate butterfly-trellis + drunk-animals batches through settlement skill; drunk-animals skips BLOCK/NEEDS_REVIEW prompts mid-batch instead of dying
---
 scripts/drunk_animals_batch.js              | 14 ++++++++++++--
 scripts/generate-butterfly-trellis-batch.js |  2 ++
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/scripts/drunk_animals_batch.js b/scripts/drunk_animals_batch.js
index 97340fe..c107d64 100644
--- a/scripts/drunk_animals_batch.js
+++ b/scripts/drunk_animals_batch.js
@@ -13,6 +13,7 @@
 const { spawnSync } = require('child_process');
 const path = require('path');
 const { buildN } = require('./drunk_animal_prompts');
+const { checkPrompt } = require('./settlement-gate');
 
 const N = parseInt(process.argv[2] || '20', 10);
 const ROOT = path.join(__dirname, '..');
@@ -20,10 +21,19 @@ const ROOT = path.join(__dirname, '..');
 console.log(`\n=== Drunk-animal batch: firing ${N} designs ===\n`);
 
 const prompts = buildN(N);
-let ok = 0, fail = 0;
+let ok = 0, fail = 0, skipped = 0;
 
 for (let i = 0; i < prompts.length; i++) {
   const p = prompts[i];
+  // Settlement gate — per-variant filter. Skip any prompt that BLOCKs so the
+  // batch keeps moving instead of dying at the first violation. NEEDS_REVIEW
+  // also skips (we don't want is_published=true from auto-batch).
+  const gate = checkPrompt(p);
+  if (gate.verdict !== 'OK') {
+    console.log(`\n--- [${i+1}/${N}] SKIP (settlement: ${gate.verdict}) — ${gate.reason || ''}`);
+    skipped++;
+    continue;
+  }
   console.log(`\n--- [${i+1}/${N}] ${p.slice(0, 90)}…`);
   const r = spawnSync('node', [
     path.join(ROOT, 'scripts', 'generate_designs.js'),
@@ -35,7 +45,7 @@ for (let i = 0; i < prompts.length; i++) {
   if (r.status === 0) ok++; else fail++;
 }
 
-console.log(`\n=== Batch done: ${ok} ok, ${fail} failed ===`);
+console.log(`\n=== Batch done: ${ok} ok, ${fail} failed, ${skipped} settlement-skipped ===`);
 
 // Refresh designs.json from PG and push live server to reload its in-memory
 // grid so the new batch shows on wallco.ai immediately.
diff --git a/scripts/generate-butterfly-trellis-batch.js b/scripts/generate-butterfly-trellis-batch.js
index ddc5e4d..5afc399 100644
--- a/scripts/generate-butterfly-trellis-batch.js
+++ b/scripts/generate-butterfly-trellis-batch.js
@@ -17,6 +17,7 @@ const fs = require('fs');
 const path = require('path');
 const crypto = require('crypto');
 const { execSync, spawnSync } = require('child_process');
+const { gateOrExit } = require('./settlement-gate');
 
 const KEY = process.env.GEMINI_API_KEY;
 if (!KEY) { console.error('GEMINI_API_KEY missing'); process.exit(1); }
@@ -68,6 +69,7 @@ async function generateOne(v, idx) {
   if (!fs.existsSync(srcPath)) throw new Error(`source not found: ${srcPath}`);
   const imageB64 = fs.readFileSync(srcPath).toString('base64');
   const fullPrompt = v.prompt + ' ' + SHARED;
+  gateOrExit(fullPrompt);  // settlement Part A + Part B check
   const body = {
     contents: [{
       parts: [

← bbf4173 settlement: pre-generation legal gate + wallco-ai/scripts/se  ·  back to Wallco Ai  ·  settlement: db-level trigger blocks is_published=true UPDATE 77d9a4b →