diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d833d4..f6d339a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ Follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) · versioned wi ## [Unreleased] ### Changed +- **Current-release constrained validation.** Built `1.24.21` and served it under a hard 4 GiB cgroup limit; + startup remained healthy at 52.54 MiB, 0.10% CPU, 6 PIDs, and no OOM kill. - **Release cache-busting.** Updated the HTML app-version, stylesheet URL, and loader URL to match `VERSION` (`1.24.21`) so deployed browsers fetch the current core assets. - **Lazy-navigation race protection.** A restored-section callback can no longer replace a newer user navigation diff --git a/TODO.md b/TODO.md index 712013e..c881dc2 100644 --- a/TODO.md +++ b/TODO.md @@ -22,8 +22,7 @@ P1 implementation is active: pagination, shared voice caching, bounded decoded-a caching, background jobs, canonical character identity, forms, and the frontend namespace/manifest foundations and section-scoped lazy loading are working and regression-tested. Remaining P1 work is intentionally open where it needs a real -architecture change or workload measurement: the larger Audiobook/Rehearser/style -split, and full constrained-device workloads. +architecture change: the larger Audiobook/Rehearser/style split. ### P0 — do first @@ -69,12 +68,10 @@ split, and full constrained-device workloads. visible rows; low-memory mode also reduces rendered rows and image work. - [x] **M — Add explicit cache invalidation and eviction.** Fish.audio search responses, persisted synthesized audio, image-generation job mappings, and browser object URLs have bounded cleanup. -- [ ] **M — Add constrained-device validation.** Test with Chrome CPU/memory throttling, - a 4 GB VM/container, and measure browser, Docker and temporary-disk usage. Automated browser emulation proves - the 4 GB shared-pool cap, and the current `1.23.3` image served successfully under a hard 4 GiB cgroup limit - without OOM; desktop Chromium now has a 4× CPU-throttled navigation regression with DOM/audio/heap probes, - and a 500-character 4× CPU-throttled workload regression with bounded image-cache, DOM, and audio measurements; - rerunning the hard 4 GiB cgroup measurement for the current release image remains. +- [x] **M — Add constrained-device validation.** Chrome CPU throttling, a 500-character workload, browser + DOM/audio/heap/image-cache bounds, and a hard 4 GiB current-release container check are covered. The `1.24.21` + image served successfully at 52.54 MiB idle usage, 0.10% CPU, 6 PIDs, and `OOMKilled=false`; cgroup memory was + confirmed as 4,294,967,296 bytes and temporary/root filesystem usage was sampled. - [x] **L — Add background jobs and bounded queues.** Image generation already has the full interactive job path, and transcription, voice design, and casting now have optional ID/status/cancel/timeout paths while preserving synchronous callers. Job metadata now persists in SQLite and marks interrupted work after restart; durable binary diff --git a/VERSION b/VERSION index e88b24c..30cfa4c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.24.21 +1.24.22