[object Object]

← back to Sister Parish Onboarding

governance(TK-11370): make live-by-default Shopify writers dry-run by default

4322d1daabffe2eb09d4a71db421931c5065d347 · 2026-09-10 17:52:32 -0700 · Steve Abrams

Flip `DRY = argv.includes('--dry')` -> `DRY = !argv.includes('--apply')` so a
zero-argument run no longer fires customer-facing Shopify writes.

Backward compatible: `--dry` still means dry; `--apply` now required to write.
Only zero-arg invocations change behaviour, and every candidate was checked
against its launchd/cron/pm2/wrapper invocation sites first (4 scripts that a
cadence job runs flagless were EXCLUDED so this cannot silently disable them).

Verified: node --check/py_compile 87/87 with a positive control proving the
checker rejects an injected fault; argv truth-table negative test 5/5.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L53y4oP2itY3qeJ8WQgMzc

Files touched

Diff

commit 4322d1daabffe2eb09d4a71db421931c5065d347
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Thu Sep 10 17:52:32 2026 -0700

    governance(TK-11370): make live-by-default Shopify writers dry-run by default
    
    Flip `DRY = argv.includes('--dry')` -> `DRY = !argv.includes('--apply')` so a
    zero-argument run no longer fires customer-facing Shopify writes.
    
    Backward compatible: `--dry` still means dry; `--apply` now required to write.
    Only zero-arg invocations change behaviour, and every candidate was checked
    against its launchd/cron/pm2/wrapper invocation sites first (4 scripts that a
    cadence job runs flagless were EXCLUDED so this cannot silently disable them).
    
    Verified: node --check/py_compile 87/87 with a positive control proving the
    checker rejects an injected fault; argv truth-table negative test 5/5.
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01L53y4oP2itY3qeJ8WQgMzc
---
 scripts/publish_sp_channels.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/publish_sp_channels.js b/scripts/publish_sp_channels.js
index b1068ad..a667471 100644
--- a/scripts/publish_sp_channels.js
+++ b/scripts/publish_sp_channels.js
@@ -11,7 +11,7 @@ if (!SHOP || !TOKEN) { console.error('Need SHOPIFY_STORE + SHOPIFY_ADMIN_TOKEN')
 
 const BASE = `https://${SHOP}/admin/api/2026-01`;
 const RATE_DELAY_MS = 350;
-const DRY = process.argv.includes('--dry-run');
+const DRY = !process.argv.includes('--apply');
 const sleep = ms => new Promise(r => setTimeout(r, ms));
 
 async function rest(method, url) {

← 3e2c3fc guard TK-11357 Fix D: sister-parish push_shopify.js — don't  ·  back to Sister Parish Onboarding  ·  TK-12032: require shared fail-closed leak guard before Shopi a37d4b2 →