← back to Secrets Manager
secrets-manager: fix 2 pre-existing fan bugs (contrarian Hole 4, TK-10045)
a6259c866f31b37577d237eb82214260da640bbf · 2026-07-30 07:15:10 -0700 · Steve
- SHOPIFY_ORDERS_TOKEN skill dest used 'path' not 'name' -> fanOut skill branch built skills/undefined/.env (token never reached weekend-csv-products). Fixed to name.
- cmdSync iterated only ROUTES.services, skipping ~37 top-level legacy routes (SHOPIFY_ORDERS_TOKEN, SPOONFLOWER_*, GOOGLE_DRIVE_*, TWILIO_*...) on every sync. Now fans services+top-level = 103 keys.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Files touched
Diff
commit a6259c866f31b37577d237eb82214260da640bbf
Author: Steve <steve@designerwallcoverings.com>
Date: Thu Jul 30 07:15:10 2026 -0700
secrets-manager: fix 2 pre-existing fan bugs (contrarian Hole 4, TK-10045)
- SHOPIFY_ORDERS_TOKEN skill dest used 'path' not 'name' -> fanOut skill branch built skills/undefined/.env (token never reached weekend-csv-products). Fixed to name.
- cmdSync iterated only ROUTES.services, skipping ~37 top-level legacy routes (SHOPIFY_ORDERS_TOKEN, SPOONFLOWER_*, GOOGLE_DRIVE_*, TWILIO_*...) on every sync. Now fans services+top-level = 103 keys.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
cli.js | 9 ++++++++-
routes.json | 2 +-
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/cli.js b/cli.js
index 8988044..cfa47c0 100755
--- a/cli.js
+++ b/cli.js
@@ -411,7 +411,14 @@ async function cmdCheck(key) {
function cmdSync() {
const master = loadEnvFile(MASTER_ENV);
let total = 0;
- for (const k of Object.keys(ROUTES.services)) {
+ // Iterate BOTH .services AND legacy top-level routed keys — cmdSync previously
+ // only walked .services, so ~47 top-level routes (SHOPIFY_ORDERS_TOKEN, SPOONFLOWER_*,
+ // GOOGLE_DRIVE_*, TWILIO_*, the OPENAI/ELEVENLABS legacy entries…) never re-fanned
+ // on `sync` — the same .services-only blind spot that caused the 2026-06-03 half-fire.
+ const META = new Set(['_comment', 'services', 'leak_patterns']);
+ const topLevel = Object.keys(ROUTES).filter(k => !META.has(k) && ROUTES[k] && ROUTES[k].destinations);
+ const allKeys = [...new Set([...Object.keys(ROUTES.services), ...topLevel])];
+ for (const k of allKeys) {
if (master[k]) total += fanOut(k, master[k]).length;
}
console.log(`sync: re-wrote ${total} destination entries from master`);
diff --git a/routes.json b/routes.json
index c329a6c..b5d64d5 100644
--- a/routes.json
+++ b/routes.json
@@ -1447,7 +1447,7 @@
"destinations": [
{
"type": "skill",
- "path": "/Users/macstudio3/.claude/skills/weekend-csv-products/.env"
+ "name": "weekend-csv-products"
}
]
},
← f9531b0 scoping: mark skill .env as review_required (Claude-consumed
·
back to Secrets Manager
·
auto-save: 2026-07-30T07:45:45 (1 files) — registry.json acccd86 →