test: validate current image under 4g memory limit

This commit is contained in:
mARTin-B78 2026-09-04 10:38:36 +02:00
parent b1374c50a0
commit 8f95978486
3 changed files with 8 additions and 9 deletions

View File

@ -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

13
TODO.md
View File

@ -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

View File

@ -1 +1 @@
1.24.21
1.24.22