Repository navigation
Conversation
nwparker
force-pushed
the
oom/17-b-native-chat-speech
branch
from
July 24, 2026 07:48
814e0ac to
a84c732
Compare
nwparker
force-pushed
the
oom/17-b-native-chat-speech
branch
from
July 25, 2026 02:21
a84c732 to
8b66f08
Compare
nwparker
force-pushed
the
oom/17-b-native-chat-speech
branch
from
July 25, 2026 02:40
8b66f08 to
704235f
Compare
nwparker
force-pushed
the
oom/17-b-native-chat-speech
branch
from
July 25, 2026 03:11
704235f to
5c1dffb
Compare
Files: 32 applied, 0 deleted (from 6eb70d8) Co-authored-by: Orca <help@stably.ai>
nwparker
force-pushed
the
oom/17-b-native-chat-speech
branch
from
July 25, 2026 03:34
5c1dffb to
375ef05
Compare
Contributor
Author
|
Superseded by #10548, which re-scopes this work to the bound-at-ingress doctrine (see #10533 and An audit found the original #10179 scope was ~50x the size of the fix for the crash it targeted, and that bounds had landed ahead of their callers. Every file in these slices was re-adjudicated individually: ingress bounds (transport frames, PTY flow control, on-disk transcripts, parsing, enumeration, media decode, user-keyed accumulators) were kept; interior ceilings behind an already-bounded input were dropped. 1,882 files → 1,155, full suite green, and no No memory protection was lost — only speculation. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
OOM hardening slice 17/29 — bound native chat transcript & speech input
Summary
Re-introduces OOM ceilings across native-chat transcript reading (per-record/page/retention byte caps, message-count cap, and a process-wide concurrency+byte admission gate for transcript reads) and speech (cloud-audio sample cap, credential/response/stderr size caps, and bounded model-cache migration + directory scans). The most significant user-visible shift is that native-chat transcript reads are no longer "entire file, no cap" — they now return the newest bounded window with pagination.
ELI5
Imagine a chat log that could grow to any size. Before, the app tried to load the whole thing into memory at once, which could crash it on huge logs. Now it loads the newest chunk (still very large) and lets you scroll back for older parts, and it only lets a couple of these big loads happen at the same time so memory stays safe. The speech-to-text side gets similar seatbelts: caps on how much audio, error text, and model-folder scanning it will hold. Ordinary users won't notice; only enormous logs or extreme conditions hit the limits.
Proof of OOM fix
Regressions
Normal-path (ordinary use, below the new limits): none — behavior is unchanged below the ceilings.
Overload-only (extreme input / sustained backpressure) — intended, documented degradations:
limitmessages once the 16 MiB per-page retained-byte budget is hit, requiring the UI to page for the rest. Only reachable when records approach the 2 MiB per-record cap (tens of near-max records); ordinary KB-sized messages keep tens of thousands within 16 MiB. (only when: Paging a transcript composed of many very large (near-2 MiB) records.)Build / CI
Adversarial review
Files
32 files changed (+1703 / −166).
🤖 Decomposed, reviewed & assembled by Claude Code from the reverted #10179. Draft — do not merge out of order.
Made with Orca 🐋