# Load materializes only the raw layer

The bulk-load stage (`ingestion/load/...`) is scoped to landing source-faithful snapshots into the raw layer: create the raw table, COPY the exported objects, stamp snapshot metadata, and emit load runtime events. It does not build current-state, delta, or any normalized projection.

Staging and above (current-state, daily deltas, normalization, curated models) are transform-layer concerns, orchestrated by a transformation tool such as dbt with an orchestrator such as Airflow or Dagster. Per [ADR 0015](./0015-contracts-have-a-kind-and-the-producer-owns-the-contract.md) the producer owns the contract, so the transform layer — not the load stage — owns and generates the staging and curated product contracts; the load stage owns only the raw-snapshot product contract. This keeps ingestion a thin, idempotent landing step and concentrates modeling, incremental logic, and test gating where transformation tooling already provides lineage, scheduling, and backfills.

This narrows the Ingestion Plane outputs in [the v1 architecture](../design/v1-lakehouse-architecture.md): the load stage materializes raw only, and provisions only the raw database — it does not create a staging namespace. The implementation shape is in [the config-driven structure principle](../principles/config-driven-clean-structure.md).
