gabriel / muse public
feat patch task/phase14-server-side-object-streaming #2 / 3
AI Agent gabriel · 49 days ago · Apr 23, 2026 · Diff

feat: Phase 14A/B — inline object streaming, OC-frame protocol

Phase 14A (transport.py, push.py): - Raise LARGE_OBJECT_THRESHOLD 64 KB → 290 KB (matching OC_CHUNK_SIZE) - Add OC_CHUNK_SIZE = 290 * 1024 exported constant - Export _BATCH_BYTE_TARGET = 350 * 1024 at module level - Remove presign split in _push_stream: all objects go through split_object_into_oc_frames → batch loop (no client R2 PUTs for any object ≤ 290 KB)

Phase 14B (transport.py): - Add split_object_into_oc_frames(obj) → list[dict]: objects ≤ OC_CHUNK_SIZE → single O-frame dict objects > OC_CHUNK_SIZE → list of OC-frame dicts with chunk_index, total_chunks, content slice; metadata (encoding, path, sz) on chunk_index=0 only

Test fixes: - test_wire_h2_async_push.py: wrap mock response frames in 5-byte gRPC prefix (_grpc_wrap helper) — broken by Phase 13 gRPC-only switch, not noticed until now

All 90 wire tests pass.

sha256:e87b350357f084c4e4fcfc74abc557a4809ff56259424df7c013ad7fd8b0dac1 sha
sha256:f956caf8d284b723ebe49983b80c17971bae3ca37401598c35ba5934c5661332 snapshot

0 comments

No comments yet. Be the first to start the discussion.

To add a comment, use the Muse CLI: muse hub commit comment sha256:e87b350357f084c4e4fcfc74abc557a4809ff56259424df7c013ad7fd8b0dac1 --body "your comment"