codeburn/app/renderer/lib
iamtoruk 3317189dd6 fix: address adversarial review of the timeout watchdog (F1-F7)
F1 - `codeburn serve` lost an in-flight request's response when stdin closed
mid-flight: runStdioServe returned before its queue drained, and the explicit
process.exit(0) then hit runCaptured's monkeypatched exit, throwing ExitSignal
and exiting 1 with the frame never written. The finally now awaits the queue.

F2 - the SIGTERM rationale was false. armSignalCleanup unlinks the refresh lock
and re-raises; it publishes no partial cache, and a lock left by SIGKILL already
self-heals through the stale-pid takeover. SIGTERM-first is kept for the real
(smaller) benefit - a clean lock release instead of a takeover - and every
comment plus the CHANGELOG now says only that.

F3 - the cold gate had no exit. overviewWarmed only flips on success, so an
install that can never hydrate sat behind an indexing splash forever with no
error and no route to the CLI recovery. The cold claim now expires with the cold
window itself.

F4 - the real CLI does not heartbeat the way the demo did: a cold parse's
inter-provider cache save measured 31.6s of total silence, which a 45s window
survives only until the machine is 1.5x slower. Under CODEBURN_PROGRESS a
running parse now emits a keepalive every 10s regardless of phase, so silence
genuinely means stopped. Consumers that do not know the event ignore it.

F5 - the orphan-reap identity check matched any `cli.js` running `serve`. The
pidfile now records the exact argv and `ps -ww` must match it exactly.

F6 - bump() re-armed the watchdog after settle, leaving a timer finish() never
clears when a killed child's buffered output landed.

F7 - kill paths dropped the child from activeChildren before SIGTERM and the
SIGKILL backstop was unref'd, so a quit inside the 5s grace orphaned a child
that ignores SIGTERM. It now stays registered until it actually dies.

N8 - the silence test wrote its only byte at t~0, so it passed without the
re-arm. The byte now lands mid-window and the kill is asserted from it.
N9 - documented why mutations keep a plain total cap.
2026-08-22 09:58:59 -07:00
..
budget.ts feat(app): daily budget alert (USD or token cap) 2026-07-16 03:16:07 -07:00
build.ts fix: hydration completeness markers, cold-only splash, honest switching, prefetch 2026-07-16 14:05:11 -07:00
format.test.ts fix(app): real currency conversion, provider ids in picker, yield provider scoping 2026-07-16 01:36:59 -07:00
format.ts fix(app): real currency conversion, provider ids in picker, yield provider scoping 2026-07-16 01:36:59 -07:00
ipc.ts fix(app): no-output watchdog replaces fixed timeouts; graceful kills; cold floor everywhere; orphan serve reaping 2026-08-22 09:22:38 -07:00
modelSeries.ts polish(app): shared empty states, type ladder, AA contrast, honest affordances, a11y semantics 2026-07-16 02:27:41 -07:00
motion.test.tsx polish(app): consistency review nits 2026-07-16 05:11:10 -07:00
motion.ts feat(app): motion layer (gsap) — count-ups, chart grow-in, section fade, skeletons, toasts 2026-07-16 04:39:09 -07:00
pageVisibility.test.ts fix(app): zero background work when hidden; currency applies instantly 2026-07-16 18:41:28 -07:00
pageVisibility.ts fix(app): zero background work when hidden; currency applies instantly 2026-07-16 18:41:28 -07:00
period.test.ts app,dash: render pre-history days as no data, not a currency zero (#765) 2026-07-20 08:03:24 -07:00
period.ts app,dash: render pre-history days as no data, not a currency zero (#765) 2026-07-20 08:03:24 -07:00
platform.ts fix(desktop): make keyboard shortcuts work on Windows and Linux 2026-08-04 22:48:39 +03:00
refreshCadence.test.ts fix(app): zero background work when hidden; currency applies instantly 2026-07-16 18:41:28 -07:00
refreshCadence.tsx fix(app): zero background work when hidden; currency applies instantly 2026-07-16 18:41:28 -07:00
testMatchMedia.ts polish(app): consistency review nits 2026-07-16 05:11:10 -07:00
toast.ts feat(app): motion layer (gsap) — count-ups, chart grow-in, section fade, skeletons, toasts 2026-07-16 04:39:09 -07:00
types.ts fix: address adversarial review of the timeout watchdog (F1-F7) 2026-08-22 09:58:59 -07:00