gabriel / musehub public
test mwp-2 task/mwp-2-walk-fallback #2 / 6
AI Agent gabriel · 25 days ago · Jun 29, 2026 · Diff

test(mwp-2): phase 4 E2E acceptance gate (MWP2_12, MWP2_13)

MWP2_12 — acceptance gate (repair patched out): Push C1→C2→C3 via _InMemBackend + wire_push_unpack_mpack. Delete C2's CommitGraph row. wire_fetch_mpack(force_build=True): fallback fires (graph_incomplete=True at C2 dead-end), returns {C1,C2,C3}. Assembled mpack contains all 3 commits and C3's blob. mock_repair.assert_not_called() confirms missing-row corruption is RC-2 not RC-1 (no snapshot mismatch). Without MWP-2, C1 would be absent from the clone.

MWP2_13 — composition proof (repair live): Same push+corrupt setup. First wire_fetch_mpack: fallback fires, complete. INSERT C2's CommitGraph row back (gen=1). Second _walk_commit_delta with _walk_commit_delta_dag patched to raise: no raise → fast path used after graph healed. Proves MWP-1 + MWP-2 compose correctly.

Also adds _InMemBackend, _e2e_push, _raw_commit, _IDENTITY_ID to test file. 23 tests GREEN (10 MWP2 + 13 MWP1), no regressions.

sha256:d939d288f2939676bf4c4d018c87b6b88322146f0e574e068839868be17e67b9 sha
+23 ~6 −1 symbols
sha256:55284913b344ba80c75d94478d1b1a509044b1f1ebb6391b2d234b9781cc5e0a snapshot
+23
symbols added
~6
symbols modified
−1
symbol removed
0
dead code introduced
Semantic Changes 30 symbols
~ docs/issues/mwp-2-walk-fallback.md .md 1 symbol added, 1 symbol removed, 2 symbols modified
Phase 4 — End-to-end regression (the acceptance gate) section Phase 4 — End-to-end regression (the acceptance gate) L253–265
+ Phase 4 — End-to-end regression (the acceptance gate) ✅ COMPLETE section Phase 4 — End-to-end regression (the acceptance gate) ✅ COMPLETE L253–279
~ tests/test_mwp2_walk_fallback.py .py 22 symbols added, 4 symbols modified
+ _IDENTITY_ID variable variable _IDENTITY_ID L62–62
+ _InMemBackend class class _InMemBackend L121–151
+ __init__ method method __init__ L129–130
+ get method async_method get L144–145
+ get_mpack method async_method get_mpack L135–136
+ presign_get method async_method presign_get L147–148
+ presign_mpack_get method async_method presign_mpack_get L138–139
+ put method async_method put L141–142
+ put_mpack method async_method put_mpack L132–133
+ quarantine_mpack method async_method quarantine_mpack L150–151
+ _e2e_backend_patch function function _e2e_backend_patch L673–680
+ _e2e_push function async_function _e2e_push L683–723
+ _raw_commit function function _raw_commit L154–180
+ _sa_insert import import _sa_insert L42–42
+ build_wire_mpack import import build_wire_mpack L46–46
+ compute_identity_id import import compute_identity_id L48–48
+ create_repo import import create_repo L53–53
+ parse_wire_mpack import import parse_wire_mpack L46–46
+ wire_fetch_mpack import import wire_fetch_mpack L54–54
+ wire_push_unpack_mpack import import wire_push_unpack_mpack L59–59
+ test_mwp2_12_e2e_fallback_alone_ships_complete_clone function async_function test_mwp2_12_e2e_fallback_alone_ships_complete_clone L732–832
+ test_mwp2_13_e2e_fast_path_after_graph_healed function async_function test_mwp2_13_e2e_fast_path_after_graph_healed L841–947
~ select

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