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.
0 comments
muse hub commit comment sha256:e87b350357f084c4e4fcfc74abc557a4809ff56259424df7c013ad7fd8b0dac1 --body "your comment"
No comments yet. Be the first to start the discussion.