Capability matrix
Analysis depth per supported bundler. For supported / partial / unsupported product cells (Node, package managers, report surfaces), see the compatibility matrix.
Rules consult recorded capabilities. Missing optional input creates
doctor/partial-analysis instead of pretending full analysis happened.
The “Manifest and stats” row is not a blanket Yes: Vite/Rolldown omit
mf-manifest.json / mf-stats.json unless manifest: true, and missing
webpack compilation stats on those bundlers is expected. See the
per-bundler matrix.
Adapters must not scrape private Module Federation plugin fields to invent
coverage — see
permanent guarantees / non-goals.
Dynamic-import completeness (v1)
MFDoctor’s import/shared analysis is not “static only.” Offline check /
adapter runs resolve the patterns below when evidence exists in source, config,
manifest facts, or an opt-in Observability export. Unresolvable dynamics yield
doctor/partial-analysis rather than fabricated certainty. MFDoctor still does
not claim 100% of arbitrary runtime JavaScript.
Supported (resolved when evidence exists)
Shared usage for shared/unused includes static imports, resolved dynamic /
loadShare* literals, and packages named in an opt-in runtime trace. Remote
aliases are not treated as shared packages.
Not resolved (honest partial analysis)
When unresolved package-capable dynamics exist, shared/unused does not
claim a package is unused — prefer doctor/partial-analysis over a false pass
or false unused finding.