feat(mwp2): Phase 2 — wire graph_incomplete detection + DAG fallback dispatch
MWP2_07: Add graph_incomplete flag to the fast-path BFS in _walk_commit_delta. Set before BFS: any(s not in graph_map for s in starts) — catches missing start tips (MWP2_02 scenario: max_want_gen=0 starves the range scan). Set during BFS: graph_map.get(cid) is None → dead-end on interior node (MWP2_01 scenario: C3 absent, BFS stops, C2/C1 unreachable). After BFS: if graph_incomplete, log [MWP2] at ERROR and return _walk_commit_delta_dag(session, starts, have_set) — the authoritative DAG walk always returns the complete ancestor closure.
MWP2_08 (MWP2_03 updated): consistent graph never triggers the fallback. Updated to patch musehub.services.musehub_wire_fetch._walk_commit_delta_dag directly (was: walk_dag_async). Raises AssertionError if called. GREEN.
MWP2_09: have boundary honored under fallback. C1←C2←C3←C4, graph missing C3, want=[C4] have=[C2]. Fallback fires; DAG walk excludes C2 and its ancestor C1. Result: {C3, C4} only. GREEN.
All Phase 0 RED tests (MWP2_01, MWP2_02) now GREEN — the fallback returns the complete ancestor closure for both truncation scenarios.
musehub#107 / muse#58
Semantic Changes
3 symbols
0 comments
muse hub commit comment sha256:984cdb57998d247e791f54d58a3595951dc990f09cbe6132d7b3675dab07de20 --body "your comment"
No comments yet. Be the first to start the discussion.