How they connect
Everything comes from the same reviewed plan: 7 tables, 6 with a key, and 6 relationships on the shop schema, each with the rule behind it, counted against the rows and corrected by you through keys and confirmed. The API for GraphQL, the Power BI semantic model, the ontology and the data products are each written from that plan, so they agree on how the tables relate: change the plan once, and each is written again from it.
The plan, checked against the rows, then drafts or created items: API for GraphQL, updated in place live; Power BI semantic model, created live; reviewed in Fabric; Fabric IQ ontology, created live; reviewed in Fabric; Silver notebook, created live; not yet run in Fabric; Gold views notebook, created live; not yet run in Fabric; Drift monitor notebook and pipeline, created live; not yet run in Fabric; Pipeline: silver, gold, then the check, draft; create_pipeline creates it (dry run by default; not yet created live), export_item_definitions gives it as files, no tool runs or schedules it; Views, dry run tested end to end; not yet created live; Data agent, dry run tested end to end; not yet created live; Data products and contracts, draft; creates nothing.
How a plan becomes Fabric items, with how far each has come in the words of the test status:
- The plan: keys and relationships, each with the rule behind it (
plan_backend: tested end to end on 27 October 2026). - Checked against the rows: duplicate keys, empty keys and references with no matching row, counted in Fabric (
validate_plan: tested end to end on 27 October 2026); you correct the plan withkeysandconfirmed. - Drafts or created items, each from that plan, as listed below.
Each item, created live, a dry run or a draft:
- API for GraphQL: updated in place live
- Power BI semantic model: created live; reviewed in Fabric
- Fabric IQ ontology: created live; reviewed in Fabric
- Silver notebook: created live; not yet run in Fabric
- Gold views notebook: created live; not yet run in Fabric
- Drift monitor notebook and pipeline: created live; not yet run in Fabric
- Pipeline: silver, gold, then the check: draft; create_pipeline creates it (dry run by default; not yet created live), export_item_definitions gives it as files, no tool runs or schedules it
- Views: dry run tested end to end; not yet created live
- Data agent: dry run tested end to end; not yet created live
- Data products and contracts: draft; creates nothing
One relationship, order_items.product_id → products.product_id, in each of them:
- The plan:
order_items.product_id→products.product_id, rule R1;validate_plancounts the references with no matching row. - The API for GraphQL: a relationship a query can nest, from
order_itemstoproducts. - The Power BI semantic model: an active relationship from
order_itemstoproducts. - The ontology: the relationship type
OrderItemsHasProducts, fromOrderItemstoProducts. - The data products: the interface between customers and products: customers holds the reference, products owns the key.
- The contract: a
foreignKeyfromorder_items.product_idtoproducts.product_idand the ruleorder_items_product_id_no_orphans(mustBe: 0).
A table without a key stays out wherever a key is needed: audit_log has no entity key in the ontology and no domain among the data products. What each piece is, and how far creating it has been tested, is in One plan, five Fabric pieces.