Source-pack contract
Understand archetypes, variants, adapter boundaries, support levels, and plan schemas before integrating a source.
Source-pack contract
A source pack is a versioned developer contract. It tells your migration project what to inventory, which specialist adapter boundaries to implement, which governed Airlift actions record the work, and which evidence is required. It does not embed credentials, run a hidden connector, or claim that a catalog entry has been certified against your estate.
Inspect the installed contract
fa sources --json | jq '.[] | {id, archetype, evidenceSupportLevel, implementationRoutingLevel, variants}'
fa source inspect dynamics_365 --json
fa source constructs synapse --variant synapse_dedicated_sql --json
fa source plan dynamics_365 \
--variant dynamics_365_finance_operations \
--json > .airlift/dynamics-finance-plan.jsonThe planner emits one archetype-aware schema. There is no legacy schema selector or alternate command spelling.
source constructs reads the repository-owned normalization and routing catalog. It reports
the canonical construct ID, artifact kind, disposition, target pattern, implementation
status, constraints, and validation-profile references consumed by assessment and conversion.
It is static implementation metadata—not a provider installation, execution, validation, or
support claim. Use fa capability matrix for the authenticated evidence-derived registry.
For ADF execution, only native_generator rows may enter the deterministic generated lane;
descriptor_only and routing_only rows remain repair or human work even when the catalog
can name a target shape.
Archetypes
| Archetype | Typical lifecycle |
|---|---|
warehouse | analyze, inventory, convert, transfer, validate, cut over, modernize |
operational_database | snapshot and CDC, code disposition, data parity, consumer cutover |
erp | business-object inventory, semantic mapping, governed ingestion, business validation |
saas | entity metadata, API/change cursor, relationship and deletion validation |
etl_platform | export pipelines, map semantics, implement, rehearse, switch schedules |
mainframe | encoding-aware inventory, unload/log capture, batch reconciliation, window control |
query_engine | catalog inventory, federate/register/materialize decision, SQL validation |
streaming | contract inventory, checkpoint bootstrap, parallel run, loss/duplicate/lag proof |
Support levels
Evidence-derived support levels are ordered claims. A profile's implementationRoutingLevel
is not one of these claims; it only describes the implementation workflow packaged with Airlift.
catalogedmeans the typed pack, variant registry, plan compiler, and documentation ship; it makes no execution or evidence claim.assessablerequires current hermetic proof for assessment and dependency lineage plus an explicit disposition for every construct in the independent required denominator.executablerequires every mandatory lifecycle capability and every required construct atworkspace_proven; no required construct may be unavailable.certifiablerequires the same complete lifecycle and construct set atclient_proven.cutover_certifiedadditionally requiresproduction_certifiedcutover and rollback proof.
See the independent required-construct denominator for the exact source-versioned counts. Missing contracts, cells, proof, or explicit dispositions always fail closed.
Never infer a higher level from an upstream connector or converter being available.
Adapter boundary
Read profile.adapter before implementing a route:
import {
createSourceMigrationPlan,
resolveSourceSystemProfile,
} from '@fabricorg/airlift';
const profile = resolveSourceSystemProfile('sap_s4hana');
const plan = createSourceMigrationPlan(profile.id, { variant: 'sap_s4hana' });
console.log(profile.adapter.inventoryInputs);
console.log(profile.adapter.movementOptions);
console.log(plan.steps.flatMap((step) => step.airliftActions));Adapters return artifact, cursor, checkpoint, and run references. Store OAuth tokens, passwords, keys, and connection strings in the platform that owns them; Airlift accepts only opaque references.
Check live evidence
Scheduled certification jobs produce an immutable manifest. Check it locally or in CI:
fa source certification-check source-certification.json --json
AIRLIFT_LIVE_SOURCE_MANIFEST=source-certification.json pnpm test:e2e:liveThe command exits non-zero when the requested level is missing required runs. It never changes the registry or mints a migration certificate.