feat: add framework entry-point detection system
Introduces an abstract FrameworkPlugin protocol and built-in plugins for FastAPI, Flask, and Celery. Framework-wired symbols (route handlers, tasks, lifecycle hooks) are now treated as implicit entry points rather than dead code.
Changes: - muse/plugins/code/_framework.py (new): ImplicitEntryEdge dataclass, FrameworkPlugin protocol, _FastAPIPlugin / _FlaskPlugin / _CeleryPlugin, _CustomPatternPlugin (user-defined decorator rules), build_implicit_edge_graph, load_framework_config (.muse/code_config.toml support) - muse/plugins/code/_callgraph.py: re-exports ImplicitEntryEdge, ImplicitEdgeGraph, build_implicit_edge_graph for caller convenience - muse/cli/commands/impact.py: surfaces entry-point annotations in text and JSON output when a symbol has no explicit callers but is framework-wired - muse/cli/commands/dead.py: excludes framework entry-point addresses from dead-code candidates; imports Manifest from canonical muse.core._types - tests/test_framework_plugins.py (new): 65 unit + integration tests covering all three built-in plugins, _CustomPatternPlugin, build_implicit_edge_graph, load_framework_config, and dead-code exclusion integration
Zero mypy errors in changed files. Zero typing_audit violations.
0 comments
muse hub commit comment sha256:1b06c30c3c1ef33d54b84efed3ab027d0ddc2cb89af9d46b2bdd79687a038c56 --body "your comment"
No comments yet. Be the first to start the discussion.