{"slug":"dw-staged-active-viewer","total":10,"limit":100,"offset":0,"since":null,"commits":[{"hash":"96f279a","date":"2026-09-16 14:15:49 -0700","author":"Steve","subject":"dw-staged-active-snapshot: retry transient blips + post-push heartbeat (TK-11298)","body":"The hourly job fired but crashed 61 times in 2042 runs (97% OK). Every failure was a\ntransient infra blip that self-healed on the next fire: 31 local-postgres socket\ndown/\"database system is starting up\" (exit 2), 28 rsync/ssh blips (exit 1). The script\nhad set -euo pipefail and NO retry, so a one-second blip killed the run and left prod an\nhour stale — producing 14 warn/recover pairs on the canary ticket.\n\n- retry with backoff around the DB build and the push; each attempt is logged, so a blip\n  stays visible in refresh.log instead of being silently swallowed.\n- per-run unique remote .tmp name. 8 of the 61 were \"mv: cannot stat …json.tmp\" with NO\n  rsync error, i.e. rsync exited 0 without leaving the shared tmp. A unique name makes the\n  \"something else consumed my tmp\" mechanism impossible and any residue self-describing.\n- single-instance lock (mkdir; macOS has no flock(1)) with stale reclaim.\n- remote mv now verifies the tmp is non-empty before replacing the live file.\n- data/heartbeat.json written ONLY after the remote mv succeeds. This is the artifact\n  cron-fire-canary measures, so freshness proves PROD HAS THE DATA. Deliberately not\n  data/staged-snapshot.json, which is written BEFORE the push and would read fresh while\n  prod is stale — the false-green class that hides push-side failure (28 of the 61).\n- one run-evidence line on launchd's own stdout: the plist declares StandardOutPath but\n  the body redirects into refresh.log, so that file sat 0 bytes since Jun 23, which is why\n  artifact discovery rejected it and the canary could not time-correlate a failing exit.\n\nVerified: dry run, lock-skip, retry absorb + give-up, real run (prod 21:11Z, heartbeat\nPASS, no tmp residue). Negative test: push forced to fail -> retries exhausted -> exit 1\n-> heartbeat NOT written (false green stays closed).\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01F1QMWkgyXkmmVQe6gSQUVb"},{"hash":"d211839","date":"2026-08-04 12:34:51 -0700","author":"steve","subject":"fix: take infinite-scroll .loading indicator out of flow (kills ~0.3-0.4 CLS scroll-jump)","body":""},{"hash":"68085d6","date":"2026-08-01 20:15:49 -0700","author":"Steve Studio","subject":"dw-staged-active-viewer: adopt href-to-deeper-data primitives (TK-10093)","body":""},{"hash":"7dfec84","date":"2026-07-03 08:07:59 -0700","author":"Steve","subject":"chore: macstudio3 migration — reconcile from mac2 + repoint paths (stevestudio2→macstudio3, node/npm/npx→/opt/homebrew)","body":""},{"hash":"6204a23","date":"2026-06-23 12:28:06 -0700","author":"Steve","subject":"Add hourly snapshot refresh+rsync script + launchd plist (fires :50) for Kamatera staged-viewer","body":""},{"hash":"c0d8341","date":"2026-06-23 12:21:43 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-23T12:21:34 (1 files) — server.js","body":""},{"hash":"1611bbd","date":"2026-06-23 12:20:55 -0700","author":"Steve","subject":"Snapshot mode for Kamatera deploy: SNAPSHOT_ONLY serves static JSON dumped from Mac2-canonical dw_unified + hourly refresh/rsync","body":""},{"hash":"b272a86","date":"2026-06-23 12:06:22 -0700","author":"Steve","subject":"Add Calendar tab (today/week/month) projecting cadence drain by vendor","body":"Mirrors run-cadence-hourly.sh + cadence-import.js rotate(): reads live\ncadence-cursor.json idx, simulates 18/slot x 6 vendors x 3 skus, 24 slots/day\nfired :40, decrements per-vendor staged counts until the 26,114 backlog drains\n(~138 days). Today view marks the 12 cap-blocked slots (0 created until ~12:40 PT).\nNew /api/calendar route, read-only. Existing grid + sort/density/date-chip intact."},{"hash":"ec00425","date":"2026-06-23 11:39:52 -0700","author":"Steve Studio","subject":"Add launchd agent plist (KeepAlive, RunAtLoad, port 9846) for permanent viewer","body":""},{"hash":"6c5fa37","date":"2026-06-23 11:35:48 -0700","author":"Steve Studio","subject":"Read-only viewer of cadence staged-for-active SKU backlog (matches --gate; sort+density+date-chip)","body":""}]}