FabricFabric
Migration

Compatibility matrix

Precise, evidence-based compatibility with Mojito, Behave, and Databricks workload surfaces.

Fabric does not use “full parity” as a blanket claim. Compatibility is tracked by observable behavior and independently verifiable evidence.

Status vocabulary

  • Shipped — implemented, covered by automated tests, and available in a published artifact.
  • Live-gated — shipped and exercised against configured infrastructure; evidence is produced on each run.
  • Certifying — the target and automated gate are configured, but the required observation window is incomplete.
  • Different by design — the user outcome is available through a different API or execution model.
  • Not supported — users must retain another tool or add an adapter.

Mojito compatibility

CapabilityFabric statusFabric surfaceMigration note
Deterministic bucketing and weighted variantsShippedWeb/Node SDK, assignment vectorsFrozen cross-SDK vectors protect assignment stability.
Sticky assignmentShippedCookie, localStorage, server storage adaptersStorage is pluggable.
DOM recipes, shared CSS/JS, triggers, holdback, divert, manual exposureShippedYAML, tag loader, SDKImporter maps supported Mojito wave fields and reports non-portable fields.
URL previewsDifferent by designSigned, expiring EdDSA preview tokenUnsigned mojito_* overrides are intentionally not accepted.
Exposure and conversion deliveryShippedBrowser/Node SDK → Cloudflare Queue/R2Tenant-scoped, batched, retry-safe ingestion.
Self-hosted/static deliveryShippedfx publish --static, CDN workerCloudflare is the managed edge target.
Project/property/feature/environment hierarchyShippedAPI and StudioImmutable publications and governed promotion add an explicit environment boundary.
Experiment authoring and lifecycle UIShippedStudioDraft → review → approved → running → paused/killed, with audit history.
Frequentist rate/lift, intervals, p-values, SRMShippedStudio and stats packageResults use first-exposure attribution.
Bayesian probability and credible intervalsShippedStudio and stats packageBeta-binomial with documented Beta(1,1) prior.
CUPED variance reductionShippedStudio, warehouse adapter, SQL templatesActivates only when the pre-period covariate has usable variance.
Time-to-convert and conversion depthShippedStudio and warehouse adapterMedian/P90 timing and 1+/2+/3+ depth are computed per variant.
Segmented resultsShippedSDK explicit dimensions, StudioOnly explicitly allow-listed, low-cardinality dimensions are collected.
R analyst workflowsShipped templatesR Markdown notebooksNot an embedded R session in Studio.
Arbitrary Mojito custom JavaScript internals/pluginsNot supportedPreserve the user outcome with a Fabric SDK adapter or keep the custom plugin.
Existing Mojito storageAdapter callbacksShipped bridgemojitoCompatibilityAdapter()Reuses onExposure, onRecipeFailure, and onVeilTimeout while delivery migrates.
Common trigger.js patternsShipped importerfx import-mojitoPath, URL-contains, DOM-ready, and wait-for-element patterns convert automatically; strict mode blocks remaining manual review.
Google Optimize identifiersNot supportedGA4 adapterGoogle Optimize is retired; identifiers are not migrated.

Behave compatibility

Fabric uses Cucumber Expressions and cucumber-js rather than emulating Behave's Python ABI. Feature text remains standard Gherkin, and user-visible runner capabilities have TypeScript equivalents. The matrix is checked against the Behave documentation while keeping Python source compatibility separate from behavioral parity.

For a practical migration sequence, see Move from Behave.

Behave capabilityFabric statusNotes
Feature, Background, Scenario, Scenario Outline, Examples, Rule, tagsShippedNative cucumber-js parsing and execution.
Given/When/Then step libraryShippedDatabricks SQL, Delta, UC, Jobs, Lakeflow, Volumes, Lakebase, notebooks, dbt.
before/after all, scenario, and step hooksShippedAfterAll drains shared fixtures; failure evidence is attached in AfterStep.
Run- and feature-scoped fixturesShipped with Cucumber lifecycleSetup is deduplicated by run or feature URI; cleanup runs in AfterAll because cucumber-js has no safe after_feature event.
context.add_cleanup()ShippedReverse-order, scenario-scoped addCleanup().
userdata and typed parametersShippedWorld parameters plus DBX_TEST_USERDATA_*; typed duration/run-state/table parameters.
Active tags and tag-scoped behaviorShipped@requires.* / @excludes.* plus Behave-compatible @use.with_* / @not.with_*; Cucumber tag-scoped hooks.
stdout/stderr/log captureShipped32 KiB per step, secret-redacted; direct child-process file descriptors remain outside the in-process boundary.
JUnit, HTML, rerun, pretty, WIP, dry-run, fail-fast, i18n, tag expressionsShippedCucumber formatters/profiles and scripts.
steps catalogShippedGenerated from the published TypeScript step library.
Central test-run historyExceeds Behave coreStudio Quality ingests Fabric evidence and standard JUnit, with CI metadata and Databricks deep links.
Interactive terminal operatorExceeds Behave corefx harness fiber opens Fabric Harness Fiber against tenant-scoped jobs; a loopback bridge preserves Databricks gateway plus Fabric credentials.
Parallel executionShipped with policyLocal DuckDB scenarios parallelize; shared live infrastructure remains serial.
Step definitions and hooks in TypeScriptShippedFabric ships and supports TypeScript steps; Python notebooks and pipelines remain valid workloads under test.
context.execute_steps() outcomeShipped TypeScript equivalentdefineAction() and world.runAction() provide typed, unit-testable composition without runtime Gherkin recursion.
Hierarchical feature/scenario contextShipped TypeScript equivalentsetState() / getState() / requireState() resolve scenario → feature → run and isolate scenarios.
cfparse cardinality fieldsShipped TypeScript equivalentparseCardinalityField() supports ?, *, and +; data tables remain preferred for structured values.
Behave runner subclass/stage/config outcomesShipped through CucumberCucumber profiles, custom formatters/support code, runFeatures(), DBX_TEST_STAGE, and world parameters are the extension surfaces. Python class/config-file source compatibility is not claimed.
Existing Python step/plugin sourceNot source-compatiblePort step bodies to TypeScript; third-party code that imports Behave internals must remain on Behave or be adapted.

Databricks workload support

SurfaceLocal/contract evidenceAzure live evidenceAWSGCP
SQL Statement Execution and serverless warehouseShippedLive-gatedNot a certified targetNot a certified target
Secretless workload identity federation (env-oidc / file-oidc)Unit testedAvailable; live certification pendingAvailable; not certifiedAvailable; not certified
Classic job clusterRequest/unit testedLive-gated: DBR 16.4 LTS, Standard_D2ds_v6, single-node, single-userNot a certified targetNot a certified target
Delta schema, time travel, backup/restoreDuckDB/SQL contract testsLive-gated scratch-schema checksNot a certified targetNot a certified target
Unity Catalog allow/deny governanceMock and BDD contractLive-gated restricted principalNot a certified targetNot a certified target
Lakeflow/Auto LoaderFixture and orchestration testsLive-gated isolated pipelineNot a certified targetNot a certified target
Volumes/Files APIMock testsLive-gated upload/read/deleteNot a certified targetNot a certified target
Jobs, notebooks, dbtMock and BDD stepsLive-gated serverless plus classic notebook probeNot a certified targetNot a certified target
Lakebase OAuth, credential refresh, pool swap, ephemeral branchesUnit/integration testsLive-gated per-run branchNot applicable until offered/supportedNot applicable until offered/supported
Databricks Apps and resource bindingsBundle validationLive-gated app/resource/health checksNot a certified targetNot a certified target
Performance, failure recovery, secret rotation, backup/restore, rollbackUnit-tested checksLive-gated and required in the nightly suiteNot a certified targetNot a certified target
Browser → Cloudflare → R2 → Auto Loader → Delta → StudioAutomated scriptLive-gated in staging; 7-night promotion window is still accumulatingCloudflare edge plus Azure data plane onlyCloudflare edge plus Azure data plane only
Advanced streaming, CDC, and Lakeflow ConnectTyped adapter and offline contract testsLive-gated streaming tables, AUTO CDC, and query-based Lakeflow ingestion; direct PostgreSQL CDC is excludedNot a certified targetNot a certified target
AI/BI dashboards and GenieTyped adapter and offline contract testsLive-gated dashboard access and Genie conversation startNot a certified targetNot a certified target
MLflow and Unity Catalog model lifecycleTyped adapter and offline contract testsLive-gated experiment and model-version accessNot a certified targetNot a certified target
Feature engineering and online servingTyped adapter and offline contract testsLive-gated Delta features, PostgreSQL Synced Table, and SQL freshnessNot a certified targetNot a certified target
Model Serving and AI GatewayTyped adapter and offline contract testsLive-gated inference and AI Gateway configurationNot a certified targetNot a certified target
Vector Search, RAG, and agent endpointsTyped adapter and offline contract testsLive-gated retrieval and agent invocationNot a certified targetNot a certified target
Federation, Delta Sharing, and Clean RoomsTyped adapter and offline contract testsLive-gated foreign catalog, Delta share, and two-metastore Clean RoomNot a certified targetNot a certified target
Network posture, compute policy, cost guardrail, and regional DR readinessTyped adapter and offline contract testsLive-gated disposable access list/policy, billing assertion, and second-region SQL assertionNot a certified targetNot a certified target

AWS and GCP are deliberately not marked portable merely because Databricks APIs are similar. They become supported targets only after infrastructure variables, node types, identity paths, external storage, and the complete live suite are certified in those clouds.

The Databricks target-pack guide lists the packs available today, their required checks, certification scope, and limitations. Fabric does not label an unlisted workload surface as first class.

Operational certification

GateCurrent requirementEvidence
Staging smoke7 consecutive scheduled green nightsstaging-certification.json artifact; counter resets after a failure
Databricks live suiteEvery required check passes with restricted identityJSON, JUnit, BDD HTML, and captured failure evidence
Published consumerPublic packages install and execute outside the monorepoconsumer repository nightly workflow
Quality evidenceBDD/live/JUnit/generic CLI results persist tenant-scoped in StudioQuality API, paginated Studio history, CLI clean-consumer test, nightly publication
Harness operator integrationCLI, Fiber, API, Studio, and Quality agree on one tenant-scoped job contractDual-auth credential bridge, dry-run assertions, audit events, scheduled Cloudflare and Databricks Apps certification
Production Quality policyNamed suites must be fresh and passing before production promotionTenant-scoped API enforcement, Studio status, 409 QUALITY_GATE_FAILED, durable audit event
Retention and legal hold30–3,650 day policy; legal hold suspends automated pruningOrganization governance settings and migration-backed prune policy
Authentication and tenancyGateway access and Fabric organization authorization remain independentBetter Auth membership, fixed RBAC roles, scoped/expiring keys, tenant predicates on every Quality/governance operation
Enterprise technical assuranceWeekly typed control exercise, signed evidence, SBOM, immutable archive, and accessibility scanEd25519 verification, CycloneDX 1.6, seven-year R2 retention lock, retrieval digest, and retained CI artifacts
Technical rollout decisionStaging window complete, backup verified, rollback tested, required workload packs passingThis is the functional gate for pilots and real project adoption.
Independent assurance decisionCustomer-required dated human or independent evidenceTracked separately; it does not convert missing product behavior into a pass and is not required to evaluate or pilot the software.

Current evidence (July 16, 2026)

  • The required Azure serverless/live suite passed every required SQL, Lakebase, Delta, Unity Catalog, Lakeflow, Volume, App, resilience, notebook, and dbt check.
  • The recurring Azure classic probe passed on DBR 16.4.x-scala2.12 with a single-node Standard_D2ds_v6; the disposable notebook and cleanup completed.
  • The published-package consumer installs the release from npm outside this monorepo and exercises typed actions, layered state, cardinality, active tags, and all 14 published target packs.
  • The complete browser-to-Studio staging path passed browser emission, Cloudflare/R2, Auto Loader/Delta, aggregate API, authenticated Studio, Bayesian, CUPED, time/depth, and segmentation assertions.
  • A clean-checkout fallback built and deployed the staging API, Studio, and edge workers.
  • Staging promotion remains Certifying until seven scheduled nightly runs succeed consecutively. The retained staging-certification.json artifact is the source of truth for the live counter. Manual workflow dispatches prove the path but do not increment it.

See Certification evidence for target details, the public reproducible consumer run, and the observation boundary. Raw Fabric-operated artifacts are not presented as customer-accessible links.

The compatibility matrix is a release surface. A capability moves to Shipped or Live-gated only with a test or evidence link; a failed certification moves it back to Certifying.

For controls outside workload compatibility, see enterprise security and operations.

On this page