This map was written after v0.1.0 shipped — the release predates the parity map
itself, and a git tag is immutable — so it is a retrospective reading rather
than a document published at the time. It is drawn from three pieces of evidence
at the v0.1.0 tag:
docs/13-roadmap.md — 28 items [x] done, 12 [ ] open,
docs/12-e2e-matrix.md — what CI actually proved,
- the source tree — which packages existed at all (a 🔴 below usually means the
package is simply absent at that tag, e.g.
internal/tds, internal/pipeline).
The shape of v0.1.0: the contract planes were done (P0–P3 — control plane,
CI/CD + git, the identity handshake, the OneLake DFS surface), and the entire
R — Real compute track was still open. No Blob endpoint, no conditional
writes, no Spark, no warehouse engine, no pipeline interpreter — and exactly one
real third-party client (fabric-cicd) driven in CI.
Row names deliberately match the current map so the
parity changelog can diff them.
| Meaning |
|---|
| 🟢 Real | Genuine work: real signed JWTs, real bytes on disk, a real engine/client computes, real logic enforced — no pretending. |
| 🟡 Emulated | Faithful API contract + persisted state, but no engine — status is clock-derived / management-only. |
| 🟠 Bring-your-own-engine | Real when a real external engine is attached; contract-only (honest 501) otherwise. |
| 🔴 Not implemented | Honest 501 or absent. |
| Fabric feature | Emulator | Type |
|---|
| Workspaces CRUD | Full | 🟢 Real (state persists) |
| Items CRUD + 12 typed collections | Full | 🟢 Real |
| Role assignments / workspace RBAC | Enforced from the validated bearer principal | 🟢 Real |
| Folders | Full (internal/store/folders.go) | 🟢 Real |
| Capacities (list, assign / unassign) | Full state, no billing/SKU enforcement | 🟢 Real state |
| Long-running operations (202 → poll) | Clock-derived | 🟡 Emulated |
Item job execution (jobs/instances) | Status clock-derived for every item type — no engine behind any job | 🟡 Emulated |
| Fabric feature | Emulator | Type |
|---|
| Entra OAuth2 tokens / JWKS / client-credentials | entra-emulator mints real signed JWTs | 🟢 Real |
| Workspace managed identity handshake | Provisioned via entra admin API; the identity’s own token passes RBAC | 🟢 Real |
| Key Vault references in connections | — AKV-reference connections still on the roadmap | 🔴 Not implemented |
| Tenant settings / audit / admin-portal APIs | — | 🔴 Not implemented |
Purview / lineage / sensitivity labels (governance/) | — | 🔴 Not implemented |
| Fabric feature | Emulator | Type |
|---|
| ADLS Gen2 DFS surface (create → append → flush, ranged read, list) | Real bytes over the Host-routed DFS subset. No ranged reads yet — Range/206 arrived with R0 | 🟢 Real (real bytes) |
| Blob surface | — internal/onelake/blob.go does not exist at this tag | 🔴 Not implemented |
| Delta commits (put-if-absent atomicity) | — no ETags / conditional requests; the R0 correctness gap | 🔴 Not implemented |
| Shortcuts (OneLake → OneLake) | — internal/api/shortcuts.go does not exist at this tag | 🔴 Not implemented |
| Shortcuts to external targets (S3 / ADLS Gen2 / Dataverse) | — | 🔴 Not implemented |
| Fabric feature | Emulator | Type |
|---|
| Lakehouse item + Tables/Files storage | Full (via OneLake) | 🟢 Real |
| Notebook authoring / definition round-trip | Full | 🟢 Real |
notebookutils / mssparkutils (fs, credentials, getSecret, lakehouse, runtime) | — R4 open; python/notebookutils does not exist | 🔴 Not implemented |
| Spark session / statement / batch via the Livy API | — R2 open; no Livy routes at this tag | 🔴 Not implemented |
| Notebook cell execution | — internal/notebook does not exist | 🔴 Not implemented |
| Livy High-Concurrency (5-REPL) sessions | — | 🔴 Not implemented |
| Environments, Spark Job Definitions | Item management only | 🟡 Emulated |
| Fabric feature | Emulator | Type |
|---|
| SQL-analytics-endpoint semantics over lakehouse Delta | — R3 open | 🔴 Not implemented |
| Warehouse item management | Full (typed item collection) | 🟢 Real |
| T-SQL over TDS + Entra FedAuth | — internal/tds does not exist | 🔴 Not implemented |
| Lakehouse SQL analytics endpoint — Delta → engine | — | 🔴 Not implemented |
| Warehouse — read-write T-SQL | — internal/warehouse does not exist | 🔴 Not implemented |
| Per-item isolation (each item = its own SQL Server database) | — | 🔴 Not implemented |
| RBAC → SQL permissions | — | 🔴 Not implemented |
information_schema / sys.* introspection | — | 🔴 Not implemented |
| Per-column type fidelity (real SQL types over the wire) | — | 🔴 Not implemented |
| Connection by item name (vs GUID) | — | 🔴 Not implemented |
| Fabric feature | Emulator | Type |
|---|
Data Pipeline control flow (If / ForEach / Until / Switch / Filter / Fail, expression language, dependsOn) | — item management only; internal/pipeline does not exist (R5 open) | 🔴 Not implemented |
| Pipeline → notebook activity (TridentNotebook) | — | 🔴 Not implemented |
queryactivityruns detail | — | 🔴 Not implemented |
| Copy activity — OneLake → OneLake | — | 🔴 Not implemented |
| Lookup activity — OneLake CSV/JSON/Parquet/Delta | — | 🔴 Not implemented |
| GetMetadata activity — OneLake path | — | 🔴 Not implemented |
| Web / external-connector leaves | — | 🔴 Not implemented |
| Dataflow Gen2 (Power Query M engine) | — | 🔴 Not implemented |
| Connectors / on-prem gateways | — | 🔴 Not implemented |
| Fabric feature | Emulator | Type |
|---|
| Git integration (connect / status / commit / update / disconnect) | Full, backed by a local per-branch definition store | 🟢 Real |
fabric-cicd tool publishing | Microsoft’s real tool publishes into the emulator, unmodified | 🟢 Real |
| Deployment pipelines | — | 🔴 Not implemented |
At v0.1.0 exactly one real third-party client was driven against the emulator in
CI. Every other witness below arrived with the R track in v0.2.0.
| Real client (pinned) | Surface exercised | Status |
|---|
fabric-cicd (Microsoft) | Control plane / CI-CD publish | 🟢 e2e/fabric-cicd |
Fabric CLI fab (Microsoft) | Control plane | 🔴 Not wired |
deltalake (delta-rs) | OneLake Delta write/read | 🔴 Not wired |
azure-storage-file-datalake + Blob SDK | OneLake ADLS Gen2 DFS + Blob | 🔴 Not wired |
azcopy (Microsoft) | OneLake Blob multi-block transfer | 🔴 Not wired |
| DuckDB | Lakehouse SQL over Delta/Parquet | 🔴 Not wired |
| PySpark behind the Livy API | Spark sessions / statements | 🔴 Not wired |
notebookutils | Notebook utility shim | 🔴 Not wired |
go-mssqldb | Warehouse/Lakehouse TDS + FedAuth | 🔴 Not wired |
dbt-fabricspark (Microsoft) | Fabric Spark via Livy HC sessions | 🔴 Not wired |
dbt-fabric (Microsoft) | Warehouse TDS via ODBC Driver 18 | 🔴 Not wired |
| Fabric area | Emulator | Type |
|---|
Real-Time Intelligence — Eventhouse / KQL DB / Eventstream (real-time-intelligence/) | Item management only | 🟡 Emulated |
Mirroring — Mirrored Database (mirroring/) | Item management only | 🟡 Emulated |
Power BI — Semantic Model query (executeQueries) | — | 🔴 Not implemented |
| Power BI — Reports / rendering; full DAX; SemPy over XMLA | — | 🔴 Not implemented |
Data Science — ML models / experiments / MLflow (data-science/) | — | 🔴 Not implemented |