Doing Viewer
repo: ~/Projects/doing-viewer · 19 commits · 0 in last 24h, 0 in last 7d ·
Authors
- Steve18
- auto-commit-fleet1
Skills used
- /claude6
- /code6
- /snapshot2
- /firefox1
- /contrarian1
- /source-down-since1
- /recovery1
- /favicon1
- /recovered1
Creative ideas + design notes
Commits with substantial prose (≥120 chars) — the rationale behind each move.
961d840 · 2026-09-14 · 5x: REPORT.md — fold in contrarian FIX FIRST round (false-green + money-endpoint verified, framing corrected)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Yk9ehSqj2L4frMztZNM2j
04dd24f · 2026-09-14 · 5x/contrarian FIX FIRST: make exit code honest — transient source-down exits 0, SUSTAINED (>=10m) exits 1
Cody caught that commit 3fad9e6 cited cron-fire-canary's artifact-freshness as
the safety net for its silent exit-0, but the job is manifest-flagged
artifact_weak (publish.log is StandardOutPath AND StandardErrorPath, refreshed
by a console line on EVERY tick regardless of outcome) — so the canary trusts
the launchd EXIT CODE for this job, and a blanket exit-0 made a SUSTAINED
source outage invisible (TK-11431 false-green).
Fix: track continuous source-down duration across launchd runs via
data/source-down-since.json. Exit 0 only while inside a 10-min self-heal grace
(transient pm2 restart), exit 1 once the outage is sustained so the canary
genuinely warns. Success/recovery clears the state. A real publish-path failure
(source up but rsync/JSON fails) still exits 1.
Verified: success->0+clear; first-down->0+record; sustained(20m)->1;
recovery->0+clear; source-up-but-garbage->1.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Yk9ehSqj2L4frMztZNM2j
234c987 · 2026-09-14 · 5x: REPORT.md — clean twice (favicon 404 fixed)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Yk9ehSqj2L4frMztZNM2j
ea854b7 · 2026-09-14 · 5x sweep 1: /favicon.ico -> 204 (was 404, console error on every load)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Yk9ehSqj2L4frMztZNM2j
3fad9e6 · 2026-09-14 · TK-11446: exit 0 (not 1) when doing-viewer source :9790 is transiently down
The canary reopened TK-11446 with a NEW failure mode the earlier timeout-retry
fix (9033cbe) didn't cover: connect ECONNREFUSED 127.0.0.1:9790. When the
doing-viewer source pm2 server is transiently down (e.g. a pm2 thundering-herd
restart, TK-11688), publish-snapshot.js exit-1'd every 180s tick, flapping
cron-fire-canary. That is a dependency outage, not a failure of this cron job's
own logic — and it is self-healing (keep-alive restarts the process; a LONG
outage makes the Kamatera snapshot go stale, which cron-fire-canary catches via
its primary artifact-freshness signal).
Classify connection-level source-down (ECONNREFUSED/ECONNRESET/ENOTFOUND/
EHOSTUNREACH) distinctly and exit 0 + WARN after a retry. A summarizer timeout,
malformed JSON (source up but broken), or a rsync-to-Kamatera failure still
exit 1 so a real publish-path problem genuinely warns — no false green.
Verified: source-up->exit0+published; source-down->exit0+WARN; source-up-but-
garbage->exit1.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Yk9ehSqj2L4frMztZNM2j
9033cbe · 2026-09-12 · TK-11446: make doing-viewer publish resilient to transient timeouts (retry once, bump local fetch to 30s)
Root cause: getLocal() fetch of the local board occasionally exceeded its 20s
timeout while computing summaries for ~56 doing tickets, throwing 'timeout' and
crashing an otherwise-healthy 180s run — cron-fire-canary flapped warn/recovered.
Now retries once with 5s backoff before exiting non-zero; a sustained failure
still exits 1 so the canary genuinely warns. Verified: success->exit0, dead
endpoint->retry->exit1.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M7Y6Sqsc2PzELRH1a3g4oy
311bd4d · 2026-08-25 · creds-safe fetch guard: resolve relative fetch vs credential-free location (creds-in-URL trap)
Fleet inoculation — opening this basic-auth app with credentials in the URL
poisoned document.baseURI and made relative fetch('/api/…') throw. Guard resolves
non-absolute request URLs against location instead. Ref: creds-in-url-fetch-guard-fleet-pattern.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
File tree
12 files tracked. Click any to browse the source at HEAD.
rendered in 0ms