Skip to content

Bound publication memory and recover saved forecast publishing - #47

Merged
elsehow merged 2 commits into
mainfrom
fix/bounded-publication-memory
Oct 29, 2026
Merged

elsehow merged 2 commits into
mainfrom
fix/bounded-publication-memory

Conversation

@elsehow

@elsehow elsehow commented Oct 29, 2026 •

Copy link
Copy Markdown
Member

The October 28 forecasts completed and passed integrity validation, but dashboard publication was killed while the CSV exporter retained the entire historical instrument log. This change streams export rows into a disk-backed stable sort, preserving CSV bytes and ordering, and retains only the selected day/protocol for policy and capability views. Validation hashes logs in chunks.

Publication builds each component in a fresh process with a 2048 MiB address-space limit and logs elapsed time and peak RSS. airo status now shows the latest receipts by start time so forecast failures are visible. The deployment guide documents recovery from saved forecasts without rerunning paid calls.

Validation: byte-for-byte CSV sorting regression coverage; a generated 160 MiB export under a 96 MiB memory limit; existing publication failure, integrity, panel selection, and golden-output tests. All four required CI checks passed on bb169fe: tests on Python 3.11, 3.12, and 3.13, plus reproduction. Local publication/export/golden, conditional/instrument/dispatch, cache, and memory regression tests passed. Production-data profiling reduced policy/capability view peak RSS from about 1.8 GiB to 462 MiB; the original CSV exporter exceeded a 2.5 GiB limit while loading history. The fixed production-sized export completed at 33 MiB peak RSS (870,294 forecasts, 156,277 rationales, 1,004 debriefs), including the download bundle, under a 1 GiB address-space limit.

After merge, deploy with airo deploy --publish-data to validate and publish the already-saved forecasts. No new forecasting calls are required.

@elsehow
elsehow merged commit 7021844 into main Oct 29, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants