← back to Dw Yolo Loop
gmc-feed-guard TK-10952: mirror crash artifact to skill dir, fix cron-fire-canary detection
7e33d8b3d2cf1d8a32fa43bb3d2788a4b43b8640 · 2026-09-01 04:13:04 -0700 · Steve Abrams
- Add _SKILL_GUARD constant and mirror crash-handler writes to
~/.claude/skills/gmc-feed-guard/data/latest.json so the crash
artifact stays in sync with the main artifact path.
- Previous session (HEAD) already added SKILL_DIR mirror for normal
runs and verdict field — this extends the same pattern to crashes.
- Rebuilt cron-fire-canary manifest: primary_artifact_path now set to
skill dir, so cron-fire-canary correctly detects freshness vs stale
and classifies exit=2 (FAIL verdict) as a designed signal exit (ok),
not a crash.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Files touched
M scripts/gmc-feed-guard/gmc-feed-guard.mjs
Diff
commit 7e33d8b3d2cf1d8a32fa43bb3d2788a4b43b8640
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Tue Sep 1 04:13:04 2026 -0700
gmc-feed-guard TK-10952: mirror crash artifact to skill dir, fix cron-fire-canary detection
- Add _SKILL_GUARD constant and mirror crash-handler writes to
~/.claude/skills/gmc-feed-guard/data/latest.json so the crash
artifact stays in sync with the main artifact path.
- Previous session (HEAD) already added SKILL_DIR mirror for normal
runs and verdict field — this extends the same pattern to crashes.
- Rebuilt cron-fire-canary manifest: primary_artifact_path now set to
skill dir, so cron-fire-canary correctly detects freshness vs stale
and classifies exit=2 (FAIL verdict) as a designed signal exit (ok),
not a crash.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---
scripts/gmc-feed-guard/gmc-feed-guard.mjs | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/scripts/gmc-feed-guard/gmc-feed-guard.mjs b/scripts/gmc-feed-guard/gmc-feed-guard.mjs
index ca2cd2c..13be5ee 100644
--- a/scripts/gmc-feed-guard/gmc-feed-guard.mjs
+++ b/scripts/gmc-feed-guard/gmc-feed-guard.mjs
@@ -11,17 +11,17 @@
// to data/latest.json (heartbeat stays honest) and exit 1 (not silent exit 2).
import fs from 'fs';
const _DIR_GUARD = process.env.HOME+'/Projects/dw-yolo-loop/scripts/gmc-feed-guard/data';
+const _SKILL_GUARD = process.env.HOME+'/.claude/skills/gmc-feed-guard/data';
process.on('unhandledRejection', (err) => {
console.error('[gmc-feed-guard] CRASH:', err?.message || err);
- try {
- fs.mkdirSync(_DIR_GUARD, {recursive:true});
- fs.writeFileSync(_DIR_GUARD+'/latest.json', JSON.stringify({
- generated_at: new Date().toISOString(),
- verdict: 'FAIL', domain_verdict: 'CRASH',
- headline: 'gmc-feed-guard crashed: ' + (err?.message || String(err)),
- status: 'FAIL', sample_leaks: -1, error: String(err?.message || err),
- }, null, 2));
- } catch(_) {}
+ const crashOut = JSON.stringify({
+ generated_at: new Date().toISOString(),
+ verdict: 'FAIL', domain_verdict: 'CRASH',
+ headline: 'gmc-feed-guard crashed: ' + (err?.message || String(err)),
+ status: 'FAIL', sample_leaks: -1, error: String(err?.message || err),
+ }, null, 2);
+ try { fs.mkdirSync(_DIR_GUARD, {recursive:true}); fs.writeFileSync(_DIR_GUARD+'/latest.json', crashOut); } catch(_) {}
+ try { fs.mkdirSync(_SKILL_GUARD, {recursive:true}); fs.writeFileSync(_SKILL_GUARD+'/latest.json', crashOut); } catch(_) {}
process.exit(1);
});
const T=(fs.readFileSync(process.env.HOME+'/Projects/secrets-manager/.env','utf8').match(/^SHOPIFY_ADMIN_TOKEN=(.+)$/m)||[])[1];
← 1956af9 TK-10952: gmc-feed-guard — add unhandledRejection handler fo
·
back to Dw Yolo Loop
·
fix(gmc-feed-guard): variant-based sample-leak classifier — 6108f5b →