[object Object]

← back to Gmc Titlefix

Fail-closed verify gate: step-c writes PASS marker, step-d blocks without it (vp-compliance-policy ask)

3a4844999db3686e8ceac46c085c3a72169f9ea8 · 2026-06-17 12:33:10 -0700 · Steve

Files touched

Diff

commit 3a4844999db3686e8ceac46c085c3a72169f9ea8
Author: Steve <steve@designerwallcoverings.com>
Date:   Wed Jun 17 12:33:10 2026 -0700

    Fail-closed verify gate: step-c writes PASS marker, step-d blocks without it (vp-compliance-policy ask)
---
 step-c-verify-one.js | 9 ++++++++-
 step-d-scale-all.js  | 8 ++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/step-c-verify-one.js b/step-c-verify-one.js
index a65789e..f8a7172 100644
--- a/step-c-verify-one.js
+++ b/step-c-verify-one.js
@@ -12,5 +12,12 @@ if(!offerId){ console.error('Usage: node step-c-verify-one.js <offerId>'); proce
   console.log('HTTP',r.status);
   console.log('offerId :',offerId);
   console.log('EFFECTIVE title now:', j.title);
-  console.log(/^Sample:/.test(j.title||'') ? 'PASS ✅ title flipped to Sample-prefixed' : 'NOT YET — feed may take a few min to reprocess; re-run.');
+  const pass = /^Sample:/.test(j.title||'');
+  if(pass){
+    fs.writeFileSync('/tmp/gmc-titlefix-verify-pass.txt', offerId);
+    console.log('PASS ✅ title flipped to Sample-prefixed — step-d is now UNLOCKED for this offer.');
+  } else {
+    try{ fs.unlinkSync('/tmp/gmc-titlefix-verify-pass.txt'); }catch(e){}
+    console.log('NOT YET ❌ — feed may take a few min to reprocess; re-run. step-d stays LOCKED until this PASSES.');
+  }
 })();
diff --git a/step-d-scale-all.js b/step-d-scale-all.js
index f17b607..982bfec 100644
--- a/step-d-scale-all.js
+++ b/step-d-scale-all.js
@@ -1,7 +1,15 @@
 // GATED WRITE — pushes title overrides for ALL risky offers. Usage: node step-d-scale-all.js <dataSourceName>
 const {token,MERCHANT}=require('./_auth');
+const fs=require('fs');
 const DS=process.argv[2];
 if(!DS){ console.error('Usage: node step-d-scale-all.js <dataSourceName from step A>'); process.exit(1); }
+// FAIL-CLOSED GATE (vp-compliance-policy ask): refuse to scale unless step-c verify PASSED.
+// Override only deliberately: SKIP_VERIFY_GATE=1 node step-d-scale-all.js <DS>
+if(!process.env.SKIP_VERIFY_GATE && !fs.existsSync('/tmp/gmc-titlefix-verify-pass.txt')){
+  console.error('BLOCKED: step-c verify has not PASSED (no /tmp/gmc-titlefix-verify-pass.txt).');
+  console.error('Run step-b then step-c and confirm the canary title flipped before scaling 29,672 offers.');
+  process.exit(2);
+}
 const list=require('./gmc_titlefix_list.json');
 const sleep=ms=>new Promise(r=>setTimeout(r,ms));
 (async()=>{

← d584d28 GMC $4.25 sample-only title-fix: list + draft Merchant API s  ·  back to Gmc Titlefix  ·  canary diag: verified full override chain (supplemental→owni 18e376c →