You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[bug] Shell output cap drops final summaries after 64 MiB #247
The runner's absorber stops retaining every chunk after cumulative output exceeds 64 MiB. At close it calls capHeadTail on that retained prefix. The apparent “tail” is therefore not the actual final output. A verbose build/test can lose its final failure summary while preserving the process exit code.
Verification
Isolated reproduction of the exact absorber logic: a 64 MiB ASCII chunk followed by FINAL SUMMARY: 1 failed retains 67,108,864 bytes and loses the summary. This is an algorithm reproduction, not a full repository test run.
Fix / acceptance
Maintain bounded head and rolling tail buffers while continuing to drain both pipes; preserve the actual last bytes regardless of total output.
Decode UTF-8 incrementally so split multibyte characters remain valid. Report omitted bytes/truncation explicitly without inventing a summary.
Test a final marker beyond the cap, a single oversized chunk, interleaved stderr/stdout, split UTF-8, cancellation and timeout. The real final marker must survive and memory retention must stay bounded.
Preserve the authoritative exit status and cancellation/timeout distinctions.
Priority: P1. Independent of the new console shell features.
Re-reviewed the original acceptance requirements and completed the fix in merged PR #253 (e4845eb323038cddcbf68a860a885823925b487c).
Fixed bounded head/rolling-tail buffers continue draining both pipes and preserve the actual final output after 64 MiB. The same fix covers persistent user/model shell execution and explicit /shell-result sharing.
Independent incremental UTF-8 decoders and code-point-safe elision; omitted decoded UTF-8 bytes are reported explicitly. No summary is fabricated.
Real child regressions stream 66 MiB and preserve initial + final stdout/stderr markers and exit 7. Direct oversized append, rolling-memory bounds, interleaved/split Unicode, post-cap cancellation 130 and timeout 124, reset/refusal, and next-command isolation are covered.
Original seven integration regressions failed before the fix and passed afterward. Independent code reviews found no blockers; 5,000 randomized Unicode capture cases also passed.
Final local evidence: npm test exited 0; the complete bounded full-suite report confirms 2,930 tests, 2,919 passed, 11 skipped, 0 failed, 0 cancelled. Typecheck, generated docs, production package verification, and four independent Python contract verifiers passed. Two stale fixed-delay console routing fixtures were replaced with observed completion checks while retaining all original assertions.
Acceptance mapping: docs/issue-247-validation.md. Merged source tree matches the locally tested tree 2ac4ecfbebd4a2a8aaca8b5bab7210bae56e2b95.
Hosted limitation: CI and CodeQL jobs were rejected before execution because GitHub reports an account billing lock. These are not passing hosted checks; Windows CI remains unverified. No workflow/protection bypass was added.
All #247 functional acceptance items are satisfied; closing as completed by the merged fix.
Activity
AetherAI3 commentedon Oct 1, 2026
Re-reviewed the original acceptance requirements and completed the fix in merged PR #253 (
e4845eb323038cddcbf68a860a885823925b487c)./shell-resultsharing.Final local evidence:
npm testexited 0; the complete bounded full-suite report confirms 2,930 tests, 2,919 passed, 11 skipped, 0 failed, 0 cancelled. Typecheck, generated docs, production package verification, and four independent Python contract verifiers passed. Two stale fixed-delay console routing fixtures were replaced with observed completion checks while retaining all original assertions.Acceptance mapping: docs/issue-247-validation.md. Merged source tree matches the locally tested tree
2ac4ecfbebd4a2a8aaca8b5bab7210bae56e2b95.Hosted limitation: CI and CodeQL jobs were rejected before execution because GitHub reports an account billing lock. These are not passing hosted checks; Windows CI remains unverified. No workflow/protection bypass was added.
All #247 functional acceptance items are satisfied; closing as completed by the merged fix.