# mfdoctor > Diagnostics for Vite, Rspack, Rsbuild, Webpack, and Modern.js federation projects ## Anleitung - [Erste Schritte](https://mfdoctor.kevinbeier.com/1.0.0/de/setup.md): mfdoctor installieren, den Build-Adapter hinzufügen und die ersten lokalen und Workspace-Prüfungen ausführen. - [Production readiness](https://mfdoctor.kevinbeier.com/1.0.0/de/production-readiness.md): mfdoctor treats Module Federation as three linked surfaces: build configuration,emitted manifest/stats/type artifacts,federation-wide runtime contracts. A config can be valid by itself and still fail after deployment. For example, an externalRuntime remote is only safe when a pure top-level consumer provides the runtime first. mfdoctor therefore keeps local and cross-project checks separate. - [Limitations](https://mfdoctor.kevinbeier.com/1.0.0/de/limitations.md): MVP supports Vite (including Rolldown-integrated Vite and Vite Plus as a partial matrix cell, lifecycle coverage without a dedicated CI smoke build yet), direct Rspack, Rsbuild, Webpack, and Modern.js as a partial matrix cell, adapter API plus an Rspack-under-the-hood smoke (not a full @modern-js/app-tools build yet). Gaps below are tracked as GitHub issues and milestones so each one can be removed from this page when it ships. Roadmap: v1.0 · post-v1 · epic #30. - [Bundler-Integrationen](https://mfdoctor.kevinbeier.com/1.0.0/de/integrations.md): mfdoctor zu Vite, Vite Plus, Nuxt, Rspack, Rsbuild, Webpack oder Modern.js hinzufügen. - [Monorepos](https://mfdoctor.kevinbeier.com/1.0.0/de/monorepos.md): Build each federation app with the mfdoctor plugin so it writes .mf/doctor/project.json. Then run the one-shot workspace gate from the monorepo root (or scoped roots): That discovers project facts and checks version ranges, providers, singleton choices, and share scopes across projects. Exit 0 / 1 / 2 match the rest of the CLI. ## Konfiguration - [Configuration audit](https://mfdoctor.kevinbeier.com/1.0.0/de/configuration-audit.md): This page separates common Module Federation config from Vite-only controls. Use it as a review checklist even when a rule does not yet automate the check. - [Vite integration notes](https://mfdoctor.kevinbeier.com/1.0.0/de/vite-integration.md): The Vite plugin is not a thin copy of the Rspack plugin. mfdoctor keeps its Vite-only facts under the vite section of project.json. - [Custom rules](https://mfdoctor.kevinbeier.com/1.0.0/de/custom-rules.md): Custom rules use defineRule and receive frozen normalized facts only. A rule may be async. It reports findings through context.report and cannot mutate facts. Facts come from public MF options, manifests, stats, and recorded capabilities, not private plugin state (limitations). Register custom rules through extends (alone or inside a policy pack): - [Evidence-aware rules](https://mfdoctor.kevinbeier.com/1.0.0/de/evidence-aware-rules.md): Built-in rules in mfdoctor now declare prerequisites, applicability, confidence ceilings, and typed evaluation outcomes. This guide is for maintainers and custom-rule authors who need to understand how evidence-aware semantics differ from the legacy defineRule "report or stay silent" model. The machine-checked migration inventory lives in fixtures/rule-inventory/v1.json and is validated by pnpm inventory:check. - [Governance: suppressions and allowlists](https://mfdoctor.kevinbeier.com/1.0.0/de/suppressions.md): mfdoctor already supports intentional allow/deny of specific rules. Use this page when a finding is known and accepted, for example enterprise nesting that keeps direct remoteEntry URLs, so CI stays green without disabling mfdoctor. This is the short Governance reference for rules: { "id": "off" }, severity overrides, policy packs, fingerprint baselines, and failOn. There is no source-comment eslint-disable style in v1. Prefer config rules, policy packs, or fingerprint baselines. - [Fingerprint baselines](https://mfdoctor.kevinbeier.com/1.0.0/de/baselines.md): Baselines let teams turn on CI failOn without fixing every legacy finding on day one. New fingerprints still fail the gate; known debt is tracked in a checked-in file and should shrink over time. For whole-rule "off", severity overrides, packs, and failOn, see Suppressions and allowlists. Baselines are debt, not a permanent mute. Prefer fixing findings. Use a baseline only for incremental adoption, and prune entries as debt is paid. Do not add per-line eslint-disable-style source comments, fingerprint baselines are enough for v1. - [Policy packs and named presets](https://mfdoctor.kevinbeier.com/1.0.0/de/policy-packs.md): Encode Module Federation governance once and reuse it across hosts and remotes, the same idea as ESLint shareable configs. For per-app "off" / severity overrides, baselines, and failOn, see Suppressions and allowlists. ## CLI - [CLI-Befehlsreferenz](https://mfdoctor.kevinbeier.com/1.0.0/de/cli.md): mfdoctor lokal und in der CI ausführen, für einen Workspace, gegen Laufzeitspuren oder gegen ein bereitgestelltes Manifest. ## Regeln - [Regelreferenz](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/index.md): Rule pages are generated from package metadata. Each page explains the issue, impact, fix, and upstream evidence. Browse by folder in the sidebar: Config, Shared, Artifact, Bridge, SSR, Reliability, Runtime, Runtime plugins, Federation, Performance, Vite, Security, and mfdoctor. Printed terminal docs: links open the same pages. - [config/dts-output-dir-mismatch](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/dts-output-dir-mismatch.md): Kategorie: reliabilityStandardschweregrad: warning - [config/duplicate-plugin-registration](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/duplicate-plugin-registration.md): Kategorie: correctnessStandardschweregrad: error - [config/eager-tree-shaking-conflict](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/eager-tree-shaking-conflict.md): Kategorie: correctnessStandardschweregrad: error - [config/expose-key-invalid](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/expose-key-invalid.md): Kategorie: correctnessStandardschweregrad: error - [config/expose-path-missing](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/expose-path-missing.md): Kategorie: correctnessStandardschweregrad: error - [config/external-runtime-conflict](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/external-runtime-conflict.md): Kategorie: correctnessStandardschweregrad: error - [config/external-runtime-with-exposes](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/external-runtime-with-exposes.md): Kategorie: correctnessStandardschweregrad: error - [config/filename-invalid](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/filename-invalid.md): Kategorie: securityStandardschweregrad: error - [config/get-public-path-invalid](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/get-public-path-invalid.md): Kategorie: correctnessStandardschweregrad: error - [config/get-public-path-unused](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/get-public-path-unused.md): Kategorie: toolingStandardschweregrad: info - [config/implementation-suspicious](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/implementation-suspicious.md): Kategorie: reliabilityStandardschweregrad: info - [config/library-remote-type-mismatch](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/library-remote-type-mismatch.md): Kategorie: correctnessStandardschweregrad: warning - [config/name-required](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/name-required.md): Kategorie: correctnessStandardschweregrad: error - [config/observability-plugin-recommended](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/observability-plugin-recommended.md): Kategorie: toolingStandardschweregrad: info - [config/plugin-package-mismatch](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/plugin-package-mismatch.md): Kategorie: correctnessStandardschweregrad: warning - [config/remote-alias-prefix-collision](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/remote-alias-prefix-collision.md): Kategorie: correctnessStandardschweregrad: error - [config/remote-capability-disabled](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/remote-capability-disabled.md): Kategorie: correctnessStandardschweregrad: error - [config/remote-entry-invalid](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/remote-entry-invalid.md): Kategorie: correctnessStandardschweregrad: error - [config/remote-http-insecure](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/remote-http-insecure.md): Kategorie: securityStandardschweregrad: warning - [config/remote-localhost-in-production](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/remote-localhost-in-production.md): Kategorie: reliabilityStandardschweregrad: warning - [config/remote-manifest-recommended](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/remote-manifest-recommended.md): Kategorie: toolingStandardschweregrad: info - [config/runtime-plugin-missing](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/runtime-plugin-missing.md): Kategorie: correctnessStandardschweregrad: error - [config/share-scope-undeclared](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/share-scope-undeclared.md): Kategorie: correctnessStandardschweregrad: error - [config/shared-capability-disabled](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/shared-capability-disabled.md): Kategorie: correctnessStandardschweregrad: error - [config/transform-import-share-conflict](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/transform-import-share-conflict.md): Kategorie: correctnessStandardschweregrad: warning - [config/tree-shaking-server-calc-injection](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/config/tree-shaking-server-calc-injection.md): Kategorie: correctnessStandardschweregrad: warning - [shared/candidate](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/shared/candidate.md): Kategorie: performanceStandardschweregrad: info - [shared/deep-import-bypass](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/shared/deep-import-bypass.md): Kategorie: performanceStandardschweregrad: warning - [shared/eager-without-singleton](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/shared/eager-without-singleton.md): Kategorie: performanceStandardschweregrad: warning - [shared/prefix-share-recommended](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/shared/prefix-share-recommended.md): Kategorie: performanceStandardschweregrad: info - [shared/react-host-missing](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/shared/react-host-missing.md): Kategorie: correctnessStandardschweregrad: warning - [shared/singleton-mismatch](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/shared/singleton-mismatch.md): Kategorie: reliabilityStandardschweregrad: warning - [shared/singleton-risk](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/shared/singleton-risk.md): Kategorie: reliabilityStandardschweregrad: warning - [shared/unused](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/shared/unused.md): Kategorie: performanceStandardschweregrad: warning - [shared/version-unsatisfied](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/shared/version-unsatisfied.md): Kategorie: correctnessStandardschweregrad: error - [bridge/consumer-api-manual](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/bridge/consumer-api-manual.md): Kategorie: reliabilityStandardschweregrad: warning - [bridge/disable-alias-deprecated](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/bridge/disable-alias-deprecated.md): Kategorie: toolingStandardschweregrad: info - [bridge/export-app-missing](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/bridge/export-app-missing.md): Kategorie: reliabilityStandardschweregrad: warning - [bridge/lazy-plugin-unregistered](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/bridge/lazy-plugin-unregistered.md): Kategorie: correctnessStandardschweregrad: error - [bridge/missing-fallback-loading](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/bridge/missing-fallback-loading.md): Kategorie: reliabilityStandardschweregrad: warning - [bridge/provider-shape-invalid](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/bridge/provider-shape-invalid.md): Kategorie: correctnessStandardschweregrad: error - [bridge/react-dom-prefix-missing](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/bridge/react-dom-prefix-missing.md): Kategorie: correctnessStandardschweregrad: error - [bridge/react-version-entry-mismatch](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/bridge/react-version-entry-mismatch.md): Kategorie: correctnessStandardschweregrad: error - [bridge/react-version-entry-prefer](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/bridge/react-version-entry-prefer.md): Kategorie: reliabilityStandardschweregrad: warning - [bridge/router-implicit-enable](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/bridge/router-implicit-enable.md): Kategorie: toolingStandardschweregrad: info - [bridge/router-shared-conflict](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/bridge/router-shared-conflict.md): Kategorie: correctnessStandardschweregrad: error - [bridge/ssr-instanceid-hydration](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/bridge/ssr-instanceid-hydration.md): Kategorie: toolingStandardschweregrad: info - [bridge/ssr-server-entry-leak](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/bridge/ssr-server-entry-leak.md): Kategorie: correctnessStandardschweregrad: error - [bridge/tanstack-router-conflict](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/bridge/tanstack-router-conflict.md): Kategorie: toolingStandardschweregrad: info - [bridge/vue-consumer-manual](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/bridge/vue-consumer-manual.md): Kategorie: reliabilityStandardschweregrad: warning - [bridge/vue-server-entry](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/bridge/vue-server-entry.md): Kategorie: reliabilityStandardschweregrad: warning - [bridge/vue-share-missing](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/bridge/vue-share-missing.md): Kategorie: correctnessStandardschweregrad: error - [bridge/vue-ssr-fresh-context](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/bridge/vue-ssr-fresh-context.md): Kategorie: reliabilityStandardschweregrad: warning - [ssr/node-library-dts](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/ssr/node-library-dts.md): Kategorie: reliabilityStandardschweregrad: warning - [ssr/node-remote-manifest](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/ssr/node-remote-manifest.md): Kategorie: correctnessStandardschweregrad: error - [ssr/node-runtime-plugin-missing](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/ssr/node-runtime-plugin-missing.md): Kategorie: correctnessStandardschweregrad: error - [artifact/dts-disabled](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/artifact/dts-disabled.md): Kategorie: reliabilityStandardschweregrad: warning - [artifact/expose-missing](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/artifact/expose-missing.md): Kategorie: correctnessStandardschweregrad: error - [artifact/manifest-assets-disabled](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/artifact/manifest-assets-disabled.md): Kategorie: reliabilityStandardschweregrad: warning - [artifact/manifest-disabled](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/artifact/manifest-disabled.md): Kategorie: toolingStandardschweregrad: warning - [artifact/manifest-expose-assets-empty](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/artifact/manifest-expose-assets-empty.md): Kategorie: reliabilityStandardschweregrad: warning - [artifact/manifest-invalid](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/artifact/manifest-invalid.md): Kategorie: correctnessStandardschweregrad: error - [artifact/manifest-name-mismatch](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/artifact/manifest-name-mismatch.md): Kategorie: correctnessStandardschweregrad: error - [artifact/manifest-remote-entry-missing](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/artifact/manifest-remote-entry-missing.md): Kategorie: correctnessStandardschweregrad: error - [artifact/manifest-shared-version-mismatch](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/artifact/manifest-shared-version-mismatch.md): Kategorie: reliabilityStandardschweregrad: warning - [artifact/public-path-non-string-manifest](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/artifact/public-path-non-string-manifest.md): Kategorie: correctnessStandardschweregrad: warning - [artifact/public-path-suspicious](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/artifact/public-path-suspicious.md): Kategorie: correctnessStandardschweregrad: warning - [artifact/remote-entry-missing](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/artifact/remote-entry-missing.md): Kategorie: correctnessStandardschweregrad: error - [artifact/types-metadata-missing](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/artifact/types-metadata-missing.md): Kategorie: toolingStandardschweregrad: warning - [artifact/types-missing](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/artifact/types-missing.md): Kategorie: toolingStandardschweregrad: warning - [reliability/async-startup-library-promise](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/reliability/async-startup-library-promise.md): Kategorie: reliabilityStandardschweregrad: warning - [reliability/external-runtime-provider-unverified](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/reliability/external-runtime-provider-unverified.md): Kategorie: reliabilityStandardschweregrad: warning - [reliability/shared-import-false](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/reliability/shared-import-false.md): Kategorie: reliabilityStandardschweregrad: warning - [reliability/snapshot-capability-disabled](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/reliability/snapshot-capability-disabled.md): Kategorie: reliabilityStandardschweregrad: warning - [reliability/tree-shaking-server-calc-contract](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/reliability/tree-shaking-server-calc-contract.md): Kategorie: reliabilityStandardschweregrad: warning - [reliability/version-first-offline-remotes](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/reliability/version-first-offline-remotes.md): Kategorie: reliabilityStandardschweregrad: warning - [reliability/vite-fixed-parse-timeout](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/reliability/vite-fixed-parse-timeout.md): Kategorie: reliabilityStandardschweregrad: info - [runtime/error-correlated](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/runtime/error-correlated.md): Kategorie: reliabilityStandardschweregrad: error - [runtime/init-failed](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/runtime/init-failed.md): Kategorie: reliabilityStandardschweregrad: error - [runtime/remote-load-failed](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/runtime/remote-load-failed.md): Kategorie: reliabilityStandardschweregrad: error - [runtime/remote-unknown](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/runtime/remote-unknown.md): Kategorie: toolingStandardschweregrad: warning - [runtime/shared-mismatch](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/runtime/shared-mismatch.md): Kategorie: reliabilityStandardschweregrad: error - [runtime-plugins/create-script-cors-parity](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/runtime-plugins/create-script-cors-parity.md): Kategorie: reliabilityStandardschweregrad: warning - [runtime-plugins/create-script-without-link](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/runtime-plugins/create-script-without-link.md): Kategorie: reliabilityStandardschweregrad: info - [runtime-plugins/invalid-factory](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/runtime-plugins/invalid-factory.md): Kategorie: correctnessStandardschweregrad: warning - [federation/circular-remote-graph](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/federation/circular-remote-graph.md): Kategorie: reliabilityStandardschweregrad: warning - [federation/external-runtime-provider-missing](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/federation/external-runtime-provider-missing.md): Kategorie: correctnessStandardschweregrad: error - [federation/ghost-shares](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/federation/ghost-shares.md): Kategorie: performanceStandardschweregrad: info - [federation/host-gaps](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/federation/host-gaps.md): Kategorie: performanceStandardschweregrad: warning - [federation/missing-provider](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/federation/missing-provider.md): Kategorie: reliabilityStandardschweregrad: error - [federation/name-conflict](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/federation/name-conflict.md): Kategorie: correctnessStandardschweregrad: error - [federation/share-scope-mismatch](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/federation/share-scope-mismatch.md): Kategorie: correctnessStandardschweregrad: error - [federation/share-strategy-mismatch](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/federation/share-strategy-mismatch.md): Kategorie: reliabilityStandardschweregrad: warning - [federation/version-conflict](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/federation/version-conflict.md): Kategorie: correctnessStandardschweregrad: error - [performance/asset-budget](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/performance/asset-budget.md): Kategorie: performanceStandardschweregrad: warning - [performance/version-first-startup](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/performance/version-first-startup.md): Kategorie: performanceStandardschweregrad: info - [performance/vite-bundle-all-css](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/performance/vite-bundle-all-css.md): Kategorie: performanceStandardschweregrad: warning - [vite/alias-share-bypass](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/vite/alias-share-bypass.md): Kategorie: correctnessStandardschweregrad: warning - [vite/hashed-remote-filename](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/vite/hashed-remote-filename.md): Kategorie: reliabilityStandardschweregrad: warning - [vite/host-init-inject-ssr](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/vite/host-init-inject-ssr.md): Kategorie: correctnessStandardschweregrad: error - [vite/manual-chunks-conflict](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/vite/manual-chunks-conflict.md): Kategorie: reliabilityStandardschweregrad: info - [vite/remote-hmr-dev](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/vite/remote-hmr-dev.md): Kategorie: toolingStandardschweregrad: info - [vite/remotes-prefer-module](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/vite/remotes-prefer-module.md): Kategorie: correctnessStandardschweregrad: warning - [vite/server-origin](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/vite/server-origin.md): Kategorie: reliabilityStandardschweregrad: info - [vite/ssr-nitro-externals](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/vite/ssr-nitro-externals.md): Kategorie: reliabilityStandardschweregrad: warning - [vite/var-filename-interop](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/vite/var-filename-interop.md): Kategorie: toolingStandardschweregrad: info - [security/get-public-path-dynamic-code](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/security/get-public-path-dynamic-code.md): Kategorie: securityStandardschweregrad: warning - [doctor/partial-analysis](https://mfdoctor.kevinbeier.com/1.0.0/de/rules/doctor/partial-analysis.md): Kategorie: toolingStandardschweregrad: warning ## Others - [Capability matrix](https://mfdoctor.kevinbeier.com/1.0.0/de/capabilities.md): 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. - [Compatibility matrix](https://mfdoctor.kevinbeier.com/1.0.0/de/compatibility.md): Documented and CI-exercised support for every bundler and runtime mfdoctor claims in v1. Status labels are tied to analysis capabilities and real build+mfdoctor paths, not fixture-only confidence. Related: capabilities · limitations · #15 (MFDOCTOR-106). - [Examples](https://mfdoctor.kevinbeier.com/1.0.0/de/examples.md): Runnable fixtures that show how mfdoctor behaves on real Module Federation graphs. Start here, then open a specific page for commands and expected findings. Root helpers: pnpm demo:showcase, pnpm demo:standalone, pnpm demo:mixed-issues, pnpm demo:nested, and pnpm demo:examples (showcase + standalone + mixed-issues + nested). - [Mixed federation example](https://mfdoctor.kevinbeier.com/1.0.0/de/mixed-example.md): The repository example uses a Vite host on 5173, a direct Rspack remote on 3001, and an Rsbuild remote on 3002. Both remotes expose visible React components and share React as a singleton. Each app registers the mfdoctor plugin next to Module Federation (federationDoctor, moduleFederationDoctorPlugin, pluginModuleFederationDoctor, or ModuleFederationDoctorPlugin). Playwright proves both remotes render without console errors. This path stays clean on purpose so e2e and adapter dogfood stay green. The Vite host intentionally turns off config/remote-manifest-recommended and reliability/version-first-offline-remotes with comments, that is the canonical suppression pattern for accepted host choices (see Suppressions and allowlists). For nested multi-bundler orchestration (Vite → Vite/Rsbuild → Rspack/Webpack), see Nested federation example. For intentional mfdoctor findings: Examples overview, full catalogOne-rule showcase, CLI one-rule fixturesStandalone findings, per-bundler build+mfdoctor demosMixed federation issues, same multi-bundler shape, red on purpose - [Mixed federation issues example](https://mfdoctor.kevinbeier.com/1.0.0/de/mixed-issues-example.md): Same Vite + Rspack + Rsbuild topology as the healthy mixed example, but configured so mfdoctor reports shared and cross-project conflicts. This suite is a CLI demo only. Playwright e2e stays on the green mixed federation path. - [Nested federation example](https://mfdoctor.kevinbeier.com/1.0.0/de/nested-example.md): A multi-level Module Federation graph across bundlers: Each app wires the mfdoctor adapter for its bundler. Build the suite, then gate cross-app facts: This path stays green. Consumers that use remoteEntry.js turn off config/remote-manifest-recommended (and Vite consumers also turn off reliability/version-first-offline-remotes) with comments, same suppression pattern as the mixed example. For intentional red findings, use mixed issues or the one-rule showcase. Per-bundler build+mfdoctor demos: standalone findings. - [Performance checks](https://mfdoctor.kevinbeier.com/1.0.0/de/performance.md): Performance advice must preserve runtime correctness. Module Federation owns part of the chunk and initialization graph, so generic bundler advice can be harmful. - [Report schemas](https://mfdoctor.kevinbeier.com/1.0.0/de/report-schemas.md): mfdoctor writes: .mf/doctor/project.json: portable, schema-versioned project facts..mf/doctor/report.json: capabilities, summary, and sorted findings..mf/doctor/results.sarif: source locations and stable fingerprints..mf/doctor/evidence.json will be the v2 evidence graph output in the next compatibility slice. Its public contract ships now. Comparable content has no timestamps. Paths are workspace relative. Schema version 1 changes only through an intentional compatibility change. Additive import-analysis fields (dynamicPackages, remotes, unresolvedDynamic, evidenceSources) document mfdoctor's dynamic-import completeness bar without breaking older project.json files that omit them. - [External runtime capture contract](https://mfdoctor.kevinbeier.com/1.0.0/de/runtime-capture.md): The runtime capture contract is an explicit handoff boundary for a future external capture tool. It is not a mfdoctor runtime agent. Capture must be invoked by a user with an approved target or export file. It must not run from check, a bundler adapter, application startup, or a client bundle. Capture reads existing public Observability or DevTools exports and strictly projected fallback evidence. It never injects plugins, calls runtime mutators, reads storage, or exports headers, bodies, cookies, source, props, factories, or raw stacks. The contract records source capabilities as exact, partial, unavailable, not-applicable, or unknown. Missing old/preview fields stay unknown. It also scopes every record by capture, navigation, realm, and sequence so equal trace IDs from separate realms do not merge. The default limits are 5 MiB, 100 reports, 5,000 events, 500 snapshots, 100 instances, 2,000 network records, 200 errors, 4 KiB strings, depth 12, and 100 object keys. The hard total ceiling is 25 MiB; truncation must be recorded. The contract and bounded file-only import are the first safe slice. Browser transport, safe snapshot projections, network/error fallback, and automatic capture remain separate stacked slices for issue #84. The bounded file-only import is now available through the existing offline runtime command: The command accepts only contract version 1, rejects oversized or unsafe files before analysis, and keeps the existing runtime output shape. Browser and DevTools transport, snapshot probing, network/error fallback, and runtime mutation remain deferred. - [Runtime, manifests, and snapshots](https://mfdoctor.kevinbeier.com/1.0.0/de/runtime-manifests.md) - [One-rule CLI showcase](https://mfdoctor.kevinbeier.com/1.0.0/de/showcase.md): examples/showcase holds themed, intentional misconfigs for the CLI. Run them to see the exact rule IDs mfdoctor reports one fixture at a time: For per-bundler build+mfdoctor demos (Vite / Webpack / Rspack / Rsbuild), see standalone findings (pnpm demo:standalone). Prefer fixtures where a missing or weak config would still reach a Module Federation plugin or build. Hard plugin failures (for example an empty name) stay as rules, not showcases. - [Standalone per-bundler findings](https://mfdoctor.kevinbeier.com/1.0.0/de/standalone-findings.md): examples/standalone-findings has four standalone cells, one per supported bundler, that run a real pnpm build with the matching mfdoctor adapter and emit intentional findings. They are not nested. Nested multi-app orchestration lives in examples/nested-federation (nested docs). Each cell sets failOn: "never" so the build still completes and writes .mf/doctor/report.json. The demo script asserts the expected rule IDs are present. For one-rule CLI fixtures, see the one-rule showcase. For a flat multi-bundler red combo, see mixed federation issues.