← 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
M scripts/drunk_animals_batch.jsM scripts/generate-butterfly-trellis-batch.js
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 →