Quickstart
Run the Airlift walking skeleton locally — the seeded console, the governed pipeline tests, and the mock cutover worker — with no Databricks workspace required.
Phase 0 is vendor-free by design: the whole governed pipeline (actions, policies, state machines, projections, the durable cutover workflow on the mock Temporal binding, and the console) runs locally with an in-memory event log. Databricks arrives in Phase 1 behind env-selected seams.
Prerequisites
- Node.js 22+
- pnpm (the repo pins its version via
packageManager)
Install and test
git clone https://github.com/Fabric-Pro/fabric-airlift
cd fabric-airlift
pnpm install
pnpm testpnpm test runs every package suite plus the repository contract test
(scripts/airlift-family-contract.test.ts) — the ADR-001 guardrails that reject direct
temporalio imports, local mutation pipelines, hand-rolled Databricks HTTP, and secret
material in governed sources.
Run the console
pnpm console:dev
# → http://localhost:3106The console boots a process-level runtime seeded with a believable migration: a Synapse
estate under assessment, objects across every funnel stage, an approved wave, and — on
purpose — blocked attempts (an agent reaching for a wave approval, a shallow parity
certificate). Policy denials are part of the demo: check the Audit page for the
ComplianceBlocked events.
Every seed write goes through runtime.invokeAction, exactly like the UI's own
mutations. The store is never touched directly.
Run the worker
pnpm worker:devThe worker composes the module, the Lakebridge stub adapter, the stub cutover effector,
and the mock Temporal binding. The cutover workflow is real workflow code — durable
approval gate, fail-closed expiry, governed completion — executed in-process; the real
Temporal server binding is a mechanical swap once @fabric-harness/temporal exposes its
custom-workflow factory.
Drive the loop from code
import {
AIRLIFT_ACTION_IDS,
AIRLIFT_PLATFORM_TENANT,
createAirliftRuntime,
} from '@fabricorg/airlift';
const runtime = createAirliftRuntime();
const installer = { actorId: 'svc-installer', actorType: 'system' as const };
const operator = { actorId: 'you@example.com', actorType: 'natural_person' as const };
// Orgs are governed registry state in the platform tenant.
await runtime.invokeAction(AIRLIFT_ACTION_IDS.orgProvision, {
tenantId: AIRLIFT_PLATFORM_TENANT,
...installer,
params: { orgId: 'acme', name: 'Acme' },
});
// Register an estate and record a (referenced, version-pinned) assessment.
const estate = await runtime.invokeAction(AIRLIFT_ACTION_IDS.estateRegister, {
tenantId: 'acme',
...operator,
params: {
name: 'Legacy Synapse DW',
sourceSystem: 'synapse',
owner: 'data-platform',
environment: 'prod',
},
});From there the funnel is the API: object_register, wave_plan, wave_assign,
conversion_start/conversion_record, parity_certify, wave_approve,
cutover_execute, cutover_record, evidence_export. Illegal transitions are rejected
structurally; policy denials come back with the blocking policy's reason.
What is Fabric Airlift?
The governed migration factory for Databricks — Lakebridge-assessed estates, agent-accelerated conversion, parity certificates that state their evidence, and cutover waves gated by policy.
Supported sources
Every source track in the Databricks M&M program is covered — Microsoft SQL, Snowflake, AWS Redshift, Azure Synapse, Oracle, Hadoop, and Teradata — plus Netezza beyond the list.