[object Object]

← back to Wallco Ai

Honor force in bulk /api/cactus-decision live path — bulk Publish now bypasses the 100% gate (frontend already sent force:true; backend was dropping it → everything parked)

c9f199fdb9a9a94daa35a2c3cb44c215f65270d4 · 2026-05-29 12:57:55 -0700 · Steve

Files touched

Diff

commit c9f199fdb9a9a94daa35a2c3cb44c215f65270d4
Author: Steve <steve@designerwallcoverings.com>
Date:   Fri May 29 12:57:55 2026 -0700

    Honor force in bulk /api/cactus-decision live path — bulk Publish now bypasses the 100% gate (frontend already sent force:true; backend was dropping it → everything parked)
---
 server.js | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/server.js b/server.js
index bd465fa..8621556 100644
--- a/server.js
+++ b/server.js
@@ -2121,10 +2121,14 @@ app.post('/api/cactus-decision/bulk', express.json({ limit: '256kb' }), (req, re
 
   // 'live' — per-id, because each design runs its own publish gate.
   if (action === 'live') {
+    // force:true is the "Publish anyway" override — bypasses the 100% publish
+    // gate for an explicit human bulk-publish (Steve: "always publish — dont
+    // stop if we say publish"). Without it each design must clear runPublishGate.
+    const force = req.body?.force === true;
     let ok = 0, err = 0, held = 0; const results = [];
     for (const id of ids) {
       try {
-        const r = applyCactusDecision(id, action);
+        const r = applyCactusDecision(id, action, { force });
         if (r && r.gate_held) { results.push({ id, ok: true, gate_held: true, reasons: r.reasons }); held++; }
         else                  { results.push({ id, ok: true }); ok++; }
       }

← 08eb2ac Fix cactus-curator 'Published only' toggle to filter the mai  ·  back to Wallco Ai  ·  feat(curator): force-publish stoned-animals (Steve explicit 6e172f4 →