Bug: `sprite exec` stdout silently drops bytes by volume on large streams
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Quiet
- Domain
- cli, networking
Research direction
Start by reproducing the issue through the sprite exec stdout entry point with a known-size or hash-checkable large stream, then inspect the WebSocket framing path. Done means large stdout is byte-exact, or an intended size limit produces an explicit non-zero-exit error at the threshold.
Written by the indexing model from the issue text.
Description
Summary
sprite exec stdout silently drops bytes by volume on large outputs. There is no error and no non-zero exit — the receiving side just gets corrupted/truncated data.
Reproduction
Run an in-box command that emits a large, verifiable stream to stdout (e.g. a known-size payload or a hash-checkable blob) and compare what the host receives against what the box produced.
Observed in our usage:
- Corruption begins at roughly 512 KB of stdout.
- Loss reaches ~76% at around 4 MB.
The failure is silent: exit code 0, no stderr, no truncation marker — the bytes are simply missing.
Impact
Any workflow that moves a sizable payload through sprite exec stdout (for example a base64-encoded file, a large log, or a build artifact manifest) receives corrupted data with no signal that anything went wrong. This is especially dangerous because a naive integrity assumption ("exec succeeded, so stdout is complete") silently holds false.
Our workaround
We abandoned moving any sizable data through sprite exec stdout and route every transfer through sprite file pull/push instead, which is byte-exact in our testing (verified byte-for-byte to ~16 MB pull / ~8 MB push). We additionally carry a sha256 + byte-count header end-to-end and re-verify on landing, so a lossy channel surfaces as an integrity error rather than corrupt input.
Ask
Either:
- fix the WebSocket framing so
sprite execstdout is byte-exact for large streams, or - if a hard size limit on exec stdout is intended, surface it as an explicit, non-zero-exit error at the threshold instead of silently truncating.
Happy to provide a minimal repro script if useful.
- Dominant language
- TypeScript
- Stars
- 51
- Forks
- 4
- Avg merge
- 23h 57m
- Merged PRs (30d)
- 12
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from superfly/sprites-docs
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
superfly/sprites-docs#226 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 75/100
superfly/sprites-docs#220 ·
-
superfly/sprites-docs#237 · 1 assignee ·
-
Difficulty 5/5 Over a week Newbie friendliness 30/100
superfly/sprites-docs#231 ·
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
superfly/sprites-docs#230 · 2 comments ·
All issues in superfly/sprites-docs
Similar issues
-
clawsweeper:fix-shape-clear clawsweeper:queueable-fix clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster no-stale P3
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficulty 1/5 Under an hour Newbie friendliness 76/100
-
code-quality refactoring
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
github/gh-aw-firewall#8816 ·
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
langchain-ai/deepagents#6450 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
vercel/react-tweet#225 ·