gabriel / muse public
main #30 / 55
AI Agent gabriel · 118 days ago · May 8, 2026 · Diff

debug: update push hash mismatch doc — local verified, staging instrumentation deployed

sha256:38167901f0c4b5c714c56e85f444405ec51a358c3e5a9fea5f812245130cbdd1 sha
+22 ~4 −28 symbols
sha256:28a4d7208bbf1570af3075548ed2356aaf6df58ad1bb7bbb02154ecd7b34c3f3 snapshot
+22
symbols added
~4
symbols modified
−28
symbols removed
0
dead code introduced
Semantic Changes 54 symbols
~ DEBUG_PUSH_HASH_MISMATCH.md .md 22 symbols added, 28 symbols removed, 4 symbols modified
Atomic test plan section Atomic test plan L86–128
Level 0 — Unit: server correctly parses an O-frame section Level 0 — Unit: server correctly parses an O-frame L90–100
code@L92 variable variable code@L92 L92–97
Level 1 — Unit: delta+zlib reconstruction produces correct hash section Level 1 — Unit: delta+zlib reconstruction produces correct hash L100–110
code@L102 variable variable code@L102 L102–107
Level 2 — Integration: push a single delta object through stream path section Level 2 — Integration: push a single delta object through stream path L110–118
code@L112 variable variable code@L112 L112–117
Level 3 — End-to-end: muse push staging main with delta objects section Level 3 — End-to-end: muse push staging main with delta objects L118–128
code@L120 variable variable code@L120 L120–125
Ceiling: presign path latent bug section Ceiling: presign path latent bug L150–192
Fix for next ceiling section Fix for next ceiling L170–192
code[python]@L177 variable variable code[python]@L177 L177–185
code[python]@L186 variable variable code[python]@L186 L186–189
What happens on presign path today section What happens on presign path today L154–170
code[python]@L161 variable variable code[python]@L161 L161–164
Fix section Fix L128–150
code[python]@L134 variable variable code[python]@L134 L134–147
Root cause: field name mismatch between client and server section Root cause: field name mismatch between client and server L50–86
py:273) section Client O-frame (transport.py:273) L52–65
code[python]@L54 variable variable code[python]@L54 L54–64
py:1749) section Server push handler (musehub_wire.py:1749) L65–77
code[python]@L67 variable variable code[python]@L67 L67–73
What happens section What happens L77–86
The object is correct locally section The object is correct locally L14–23
code[bash]@L16 variable variable code[bash]@L16 L16–20
The push sent delta+zlib objects section The push sent delta+zlib objects L28–37
The push used the stream path (not presign) section The push used the stream path (not presign) L23–28
The server computed a wrong hash section The server computed a wrong hash L37–50
+ Current ceiling: what bytes does staging actually have for sha256:ab1054a8? section Current ceiling: what bytes does staging actually have for sha256:ab1054a8? L102–139
+ Hypothesis A: double-decompression section Hypothesis A: double-decompression L108–118
+ Hypothesis B: R2 stored the object with different bytes due to a prior push bug section Hypothesis B: R2 stored the object with different bytes due to a prior push bug L118–125
+ Hypothesis C: the Phase 2 push failed too (silently), or ab1054a8 was never stored section Hypothesis C: the Phase 2 push failed too (silently), or ab1054a8 was never stored L125–131
+ Hypothesis D: decompress_if_needed called twice on the base section Hypothesis D: decompress_if_needed called twice on the base L131–139
+ Fixes landed so far section Fixes landed so far L160–181
+ Fix 1: split_object_into_oc_frames field names (muse) section Fix 1: split_object_into_oc_frames field names (muse) L162–171
+ Fix 2: Delta+zlib T5/T6 tests (musehub) section Fix 2: Delta+zlib T5/T6 tests (musehub) L171–181
+ Next ceiling: what bytes does staging actually have for sha256:ab1054a8? section Next ceiling: what bytes does staging actually have for sha256:ab1054a8? L139–160
+ code@L144 variable variable code@L144 L144–153
+ Presign path latent bug (ceiling 2, not yet triggered) section Presign path latent bug (ceiling 2, not yet triggered) L181–193
+ Client sends correct frames section Client sends correct frames L23–35
+ code@L26 variable variable code@L26 L26–29
+ Commit history context section Commit history context L84–102
+ code@L86 variable variable code@L86 L86–92
+ Local round-trip is correct (verified) section Local round-trip is correct (verified) L41–60
+ code[python]@L47 variable variable code[python]@L47 L47–56
+ Server is applying the delta (not treating as raw) section Server is applying the delta (not treating as raw) L35–41
+ Server's apply_delta logic is correct (T5/T6 tests pass) section Server's apply_delta logic is correct (T5/T6 tests pass) L60–65
+ The base object exists on staging (returns non-None) section The base object exists on staging (returns non-None) L65–73
+ code@L68 variable variable code@L68 L68–71
+ f97a3383 is not any obvious transform of known data section f97a3383 is not any obvious transform of known data L73–84
~ Status

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:38167901f0c4b5c714c56e85f444405ec51a358c3e5a9fea5f812245130cbdd1 --body "your comment"