docs(protocol): rewrite musewire-performance.md — Wall 24 resolved, Wall 25 documented
Remove all outdated batching/rotation/sleep content. Document the single-POST architecture and the current failure (Wall 25: H2 RST_STREAM via CF on large push).
Most atomic next test: W25-A0 — push via direct remote to bypass CF.
sha256:f8d865aab9749ea99d9c03b9dcee6e7476b8cb4fe625a91b40708939947fdc24
sha
+48
~2
−107
symbols
sha256:b04ee5daaa72ebd84827b49a793c3d13a920ab3838963443bf29291d8da9dc40
snapshot
+48
symbols added
~2
symbols modified
−107
symbols removed
0
dead code introduced
Semantic Changes
157 symbols
~
docs/protocol/musewire-performance.md
.md
48 symbols added, 107 symbols removed, 2 symbols modified
−
MuseWire Protocol — Explicit Frame Framing Roadmap
section MuseWire Protocol — Explicit Frame Framing Roadmap L1–1602
−
Architecture: Explicit Content-Addressed Frame Framing
section Architecture: Explicit Content-Addressed Frame Framing L368–417
−
The fix: one tight envelope around the existing protocol
section The fix: one tight envelope around the existing protocol L378–383
−
Phase 10 — Final verify 🔴 BLOCKED (Wall 9)
section Phase 10 — Final verify 🔴 BLOCKED (Wall 9) L499–505
−
Phase 11 — Legacy cleanup + Wall 9 fix ✅ DONE (client side)
section Phase 11 — Legacy cleanup + Wall 9 fix ✅ DONE (client side) L505–515
−
Phase 12 — Wall 10 (broken pipe) 🔴 BLOCKED
section Phase 12 — Wall 10 (broken pipe) 🔴 BLOCKED L560–594
−
Phase 13 — gRPC-only wire protocol ✅ DONE (image 15aba175-20260423103144)
section Phase 13 — gRPC-only wire protocol ✅ DONE (image 15aba175-20260423103144) L515–560
−
Phase 6 — Integration tests (T1–T6) ✅ DONE
section Phase 6 — Integration tests (T1–T6) ✅ DONE L470–481
−
Phase 7 — ASGI route tests (T7–T10) ✅ DONE
section Phase 7 — ASGI route tests (T7–T10) ✅ DONE L481–488
−
Phase 8 — Commit and push both repos ✅ DONE
section Phase 8 — Commit and push both repos ✅ DONE L488–493
−
Phase 9 — Deploy and verify ✅ DONE (Wall 8 fixed)
section Phase 9 — Deploy and verify ✅ DONE (Wall 8 fixed) L493–499
−
Phase 14 — Server-Side Object Streaming (GitHub Architecture Parity)
section Phase 14 — Server-Side Object Streaming (GitHub Architecture Parity) L193–368
−
Phase 14A — Inline streaming: no presign for objects ≤ 290 KB
section Phase 14A — Inline streaming: no presign for objects ≤ 290 KB L257–286
−
Phase 14B — OC-frame protocol: chunked large objects through the stream
section Phase 14B — OC-frame protocol: chunked large objects through the stream L286–343
−
Wall 1 — SSLV3 during R2 presigned PUTs (FIXED)
section Wall 1 — SSLV3 during R2 presigned PUTs (FIXED) L645–659
−
WriteError: [Errno 32] Broken pipe on streaming POST ✅ ROOT-CAUSED → superseded by Wall 11
section Wall 10 — httpx.WriteError: [Errno 32] Broken pipe on streaming POST ✅ ROOT-CAUSED → superseded by Wall 11 L780–804
−
Wall 11 — Server receives 0 bytes on push/stream — Cloudflare not forwarding body ✅ ROOT-CAUSED → superseded by Wall 12
section Wall 11 — Server receives 0 bytes on push/stream — Cloudflare not forwarding body ✅ ROOT-CAUSED → superseded by Wall 12 L804–826
−
SSLError: SSLV3_ALERT_BAD_RECORD_MAC on main push stream ✅ ROOT-CAUSED → superseded by Wall 13
section Wall 12 — ssl.SSLError: SSLV3_ALERT_BAD_RECORD_MAC on main push stream ✅ ROOT-CAUSED → superseded by Wall 13 L826–845
−
1 only); Cloudflare gRPC needs HTTP/2 to origin ✅ FIXED
section Wall 13 — Production runs uvicorn (HTTP/1.1 only); Cloudflare gRPC needs HTTP/2 to origin ✅ FIXED L845–885
−
Wall 14 — nginx grpc_pass h2c: request body not delivered to ASGI app ✅ FIXED
section Wall 14 — nginx grpc_pass h2c: request body not delivered to ASGI app ✅ FIXED L885–925
−
Wall 15 — _WireResponse not subclassing Response: FastAPI JSON-serialized it instead of calling __call__ ✅ FIXED
class
section Wall 15 — _WireResponse not subclassing Response: FastAPI JSON-serialized it instead of calling __call__ ✅ FIXED L925–960
−
Wall 16 — Large C frame (~4MB commits) truncated at ~248KB mid-stream ✅ FIXED
section Wall 16 — Large C frame (~4MB commits) truncated at ~248KB mid-stream ✅ FIXED L960–1062
−
Wall 17 — Empty WriteError on push_stream after all R2 PUTs succeed ✅ DIAGNOSED → superseded by Wall 19
section Wall 17 — Empty WriteError on push_stream after all R2 PUTs succeed ✅ DIAGNOSED → superseded by Wall 19 L1062–1120
−
Wall 18 — SSLV3_ALERT_BAD_RECORD_MAC on push stream after R2 PUTs
section Wall 18 — SSLV3_ALERT_BAD_RECORD_MAC on push stream after R2 PUTs L1120–1166
−
Wall 19 — Stream truncation: mid-batch at frame 116 + between-batch RST_STREAM
section Wall 19 — Stream truncation: mid-batch at frame 116 + between-batch RST_STREAM L1166–1240
−
Wall 2 — int is not allowed for map key when strict_map_key=True (INVALIDATED)
section Wall 2 — int is not allowed for map key when strict_map_key=True (INVALIDATED) L659–670
−
Wall 20 — Clean EOF mid-stream after grpc_buffer_size fix ✅ SUPERSEDED by Wall 21
section Wall 20 — Clean EOF mid-stream after grpc_buffer_size fix ✅ SUPERSEDED by Wall 21 L1240–1265
−
Wall 21 — SSLV3_ALERT_BAD_RECORD_MAC during response read, post-gRPC refactoring
section Wall 21 — SSLV3_ALERT_BAD_RECORD_MAC during response read, post-gRPC refactoring L1265–1349
−
Wall 22 — H2 RST_STREAM after ~4 batches on shared AsyncClient
section Wall 22 — H2 RST_STREAM after ~4 batches on shared AsyncClient L1349–1383
−
Wall 23 — SSLV3_ALERT_BAD_RECORD_MAC on 2nd batch of 2nd rotation group
section Wall 23 — SSLV3_ALERT_BAD_RECORD_MAC on 2nd batch of 2nd rotation group L1383–1427
−
Wall 24 — CF rate-limits sequential gRPC connections from same IP
section Wall 24 — CF rate-limits sequential gRPC connections from same IP L1427–1528
−
Wall 3 — SSLV3 on R2 PUT even with no keep-alive (FIXED)
section Wall 3 — SSLV3 on R2 PUT even with no keep-alive (FIXED) L670–688
−
Wall 4 — SSLV3 persists with fresh client per PUT (FIXED)
section Wall 4 — SSLV3 persists with fresh client per PUT (FIXED) L688–703
−
Wall 5 — 2662457625 exceeds max_map_len(1073741824) (FIXED)
section Wall 5 — 2662457625 exceeds max_map_len(1073741824) (FIXED) L703–734
−
Wall 6 — SSLV3 returns on R2 PUT #14 (PENDING RETRY)
section Wall 6 — SSLV3 returns on R2 PUT #14 (PENDING RETRY) L734–750
−
Wall 7 — T7+ ASGI route tests hang (FIXED)
section Wall 7 — T7+ ASGI route tests hang (FIXED) L1539–1562
−
Wall 8 — 401 on staging push stream after Content-Type rename (FIXED)
section Wall 8 — 401 on staging push stream after Content-Type rename (FIXED) L1528–1539
−
Wall 9 — invalid frame magic: b'b5ac' after Wall 8 fix (FIXED)
section Wall 9 — invalid frame magic: b'b5ac' after Wall 8 fix (FIXED) L750–780
+
MuseWire Protocol — Performance & Correctness Log
section MuseWire Protocol — Performance & Correctness Log L1–411
+
What was deleted (Wall 24 root cause fix, sha256:bb01c8ec)
section What was deleted (Wall 24 root cause fix, sha256:bb01c8ec) L50–67
+
Wall 25 — H2 RST_STREAM on single-POST push to staging
section Wall 25 — H2 RST_STREAM on single-POST push to staging L102–159
+
Wall 1 — SSLV3 during R2 presigned PUTs ✅ FIXED
section Wall 1 — SSLV3 during R2 presigned PUTs ✅ FIXED L225–231
+
WriteError: Broken pipe on streaming POST ✅ FIXED
section Wall 10 — httpx.WriteError: Broken pipe on streaming POST ✅ FIXED L287–295
+
Wall 11 — Server receives 0 bytes on push/stream ✅ FIXED
section Wall 11 — Server receives 0 bytes on push/stream ✅ FIXED L295–302
+
Wall 12 — SSLV3_ALERT_BAD_RECORD_MAC on main push stream ✅ FIXED
section Wall 12 — SSLV3_ALERT_BAD_RECORD_MAC on main push stream ✅ FIXED L302–309
+
Wall 13 — Production runs uvicorn; Cloudflare gRPC needs HTTP/2 to origin ✅ FIXED
section Wall 13 — Production runs uvicorn; Cloudflare gRPC needs HTTP/2 to origin ✅ FIXED L309–316
+
Wall 14 — nginx grpc_pass h2c: empty body delivered to ASGI app ✅ FIXED
section Wall 14 — nginx grpc_pass h2c: empty body delivered to ASGI app ✅ FIXED L316–323
+
Wall 15 — _WireResponse not subclassing Response: FastAPI JSON-serialized it ✅ FIXED
class
section Wall 15 — _WireResponse not subclassing Response: FastAPI JSON-serialized it ✅ FIXED L323–331
+
Wall 16 — Large C frame (~4MB commits) truncated at ~248KB mid-stream ✅ FIXED
section Wall 16 — Large C frame (~4MB commits) truncated at ~248KB mid-stream ✅ FIXED L331–339
+
Wall 17 — Empty WriteError on push_stream after R2 PUTs ✅ ROOT-CAUSED
section Wall 17 — Empty WriteError on push_stream after R2 PUTs ✅ ROOT-CAUSED L339–346
+
Wall 18 — SSLV3_ALERT_BAD_RECORD_MAC at __aenter__ ✅ FIXED
section Wall 18 — SSLV3_ALERT_BAD_RECORD_MAC at __aenter__ ✅ FIXED L346–353
+
Wall 19 — Non-deterministic mid-frame gRPC truncation ✅ FIXED
section Wall 19 — Non-deterministic mid-frame gRPC truncation ✅ FIXED L353–361
+
Wall 2 — int is not allowed for map key ✅ INVALIDATED
section Wall 2 — int is not allowed for map key ✅ INVALIDATED L231–237
+
Wall 20 — Clean EOF mid-stream after grpc_buffer_size fix ✅ SUPERSEDED
section Wall 20 — Clean EOF mid-stream after grpc_buffer_size fix ✅ SUPERSEDED L361–368
+
Wall 21 — SSLV3_ALERT_BAD_RECORD_MAC during response read, post-gRPC refactoring ✅ SUPERSEDED
section Wall 21 — SSLV3_ALERT_BAD_RECORD_MAC during response read, post-gRPC refactoring ✅ SUPERSEDED L368–376
+
Wall 22 — H2 RST_STREAM after ~4 batches on shared AsyncClient ✅ SUPERSEDED
section Wall 22 — H2 RST_STREAM after ~4 batches on shared AsyncClient ✅ SUPERSEDED L376–384
+
Wall 23 — SSLV3_ALERT_BAD_RECORD_MAC on 2nd batch of 2nd rotation group ✅ SUPERSEDED
section Wall 23 — SSLV3_ALERT_BAD_RECORD_MAC on 2nd batch of 2nd rotation group ✅ SUPERSEDED L384–392
+
Wall 24 — CF per-IP quota of ~28–32 sequential gRPC POSTs ✅ ROOT CAUSE FIXED
section Wall 24 — CF per-IP quota of ~28–32 sequential gRPC POSTs ✅ ROOT CAUSE FIXED L392–411
+
Wall 3 — SSLV3 on R2 PUT even with no keep-alive ✅ FIXED
section Wall 3 — SSLV3 on R2 PUT even with no keep-alive ✅ FIXED L237–244
+
Wall 4 — SSLV3 persists with fresh client per PUT ✅ FIXED
section Wall 4 — SSLV3 persists with fresh client per PUT ✅ FIXED L244–251
+
Wall 5 — 2662457625 exceeds max_map_len ✅ FIXED
section Wall 5 — 2662457625 exceeds max_map_len ✅ FIXED L251–259
+
Wall 6 — SSLV3 returns on R2 PUT #14 ✅ SUPERSEDED (presign deleted)
section Wall 6 — SSLV3 returns on R2 PUT #14 ✅ SUPERSEDED (presign deleted) L259–266
+
Wall 7 — T7+ ASGI route tests hang ✅ FIXED
section Wall 7 — T7+ ASGI route tests hang ✅ FIXED L266–273
+
Wall 8 — 401 on staging push stream after Content-Type rename ✅ FIXED
section Wall 8 — 401 on staging push stream after Content-Type rename ✅ FIXED L273–280
+
Wall 9 — invalid frame magic: b'b5ac' ✅ FIXED
section Wall 9 — invalid frame magic: b'b5ac' ✅ FIXED L280–287
0 comments
To add a comment, use the Muse CLI:
muse hub commit comment sha256:f8d865aab9749ea99d9c03b9dcee6e7476b8cb4fe625a91b40708939947fdc24 --body "your comment"
No comments yet. Be the first to start the discussion.