gabriel / muse public
fix patch task/mwp9-structured-delta-clone-loss #1 / 1
AI Agent gabriel · 3 hours ago · Oct 21, 2026 · Diff

fix: structured_delta silently discarded on every clone/fetch/pull

_coerce_commit_dict() in transport.py hardcoded structured_delta=None instead of reading it from the incoming wire commit dict -- every other field correctly read via raw.get(...), this one didn't. The server has always sent structured_delta correctly (confirmed via musehub_wire_shared.py _to_wire_commit and a live push+fetch round trip against staging); the client silently dropped it on every single clone, fetch, and pull.

Discovered while investigating a reported 'muse clone timed out' + a muse verify failure on a fresh clone of gabriel/musehub. This is one of two distinct bugs found in that investigation -- the other (~1,179 historical commits with invalid signatures, not reproducible on a live push+fetch cycle) is unrelated, pre-existing data corruption, not a live protocol bug, and is tracked separately.

TDD: tests/test_transport_coerce_commit_dict.py, 4 tests, confirmed RED (1 failing exactly as predicted) before the fix, GREEN after. Full wire protocol regression suite: 378 tests across clone/fetch/push/pull/mpack/ mwp5/mwp7 suites, zero regressions. Verified end-to-end with muse-dev against the real staging server -- structured_delta now survives a full clone of gabriel/musehub intact.

sha256:75efb092935f0cbc7d69f0f46de5d2db6f39568f0273550b5457fd4da2e50957 sha
+8 ~3 symbols
3 changed · 1208 in snapshot files
sha256:ab529449cc06248dbe6d69eebe1641c958c2dff61a066347a5050b27880ba9f8 snapshot
+8
symbols added
~3
symbols modified
3
files changed
1208
files in snapshot
0
dead code introduced
Semantic Changes 11 symbols
+ TestCoerceCommitDictStructuredDelta class class TestCoerceCommitDictStructuredDelta L55–84
+ test_missing_structured_delta_stays_none method method test_missing_structured_delta_stays_none L61–65
+ test_non_dict_structured_delta_is_rejected_not_passed_through method method test_non_dict_structured_delta_is_rejected_not_passed_through L67–72
+ test_other_fields_unaffected method method test_other_fields_unaffected L74–84
+ test_real_structured_delta_is_preserved method method test_real_structured_delta_is_preserved L56–59
+ _raw_wire_commit function function _raw_wire_commit L22–52
+ _coerce_commit_dict import import _coerce_commit_dict L19–19
+ annotations import import annotations L17–17
~ muse/core/transport.py .py 1 symbol modified
~ pyproject.toml .toml 2 symbols modified
Files Changed
+1 ~2
1208 in snapshot
← Older Oldest on task/mwp9-structured-delta-clone-loss
All commits
Newer → Latest on task/mwp9-structured-delta-clone-loss

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:75efb092935f0cbc7d69f0f46de5d2db6f39568f0273550b5457fd4da2e50957 --body "your comment"