perf: add ImplicitEdgeCache to eliminate redundant framework plugin runs
build_implicit_edge_graph re-read every Python blob and re-ran all framework plugins (FastAPI, Flask, Celery) on every invocation — ~10s for the muse repo.
ImplicitEdgeCache persists the per-file edge list keyed by the SHA-256 object_id from the manifest. On a warm cache, read_object, parse_symbols, and all plugin detect_entry_points calls are skipped.
Cold: 10,744 ms → Warm: 150 ms (72× speedup)
Also fixes pre-existing test failures in test_callgraph.py, test_framework_plugins.py, and test_core_symbol_cache.py where _write_snapshot / _make_manifest helpers used bare hex digests instead of blob_id() — rejected by validate_object_id.
sha256:d6ac48300babe0f2424dcd727be8f8cab7474380373778e3d52d0e42edc5c538
sha
+98
~8
symbols
sha256:713166d8cacc6a5c94fc07fd281718eed1e8eac35c3327fa5d54092cc7559399
snapshot
+98
symbols added
~8
symbols modified
0
dead code introduced
Semantic Changes
106 symbols
+
test_explicit_cache_hit_skips_read_object
method
method test_explicit_cache_hit_skips_read_object L469–484
+
test_no_framework_file_cached_as_empty_list
method
method test_no_framework_file_cached_as_empty_list L516–528
+
test_edge_missing_required_field_skipped
method
method test_edge_missing_required_field_skipped L377–383
+
test_invalid_entry_skipped_valid_survive
method
method test_invalid_entry_skipped_valid_survive L352–375
+
test_get_returns_implicit_entry_edge_instances
method
method test_get_returns_implicit_entry_edge_instances L187–193
+
test_multiple_entries_survive_round_trip
method
method test_multiple_entries_survive_round_trip L302–317
+
test_with_empty_muse_dir_returns_empty
method
method test_with_empty_muse_dir_returns_empty L420–423
~
run
0 comments
To add a comment, use the Muse CLI:
muse hub commit comment sha256:d6ac48300babe0f2424dcd727be8f8cab7474380373778e3d52d0e42edc5c538 --body "your comment"
No comments yet. Be the first to start the discussion.