{
  "docVersion": 1,
  "id": "template-federated-data-mesh",
  "name": "Data mesh — federated products",
  "purpose": "Three domain-owned data products queried through a federated engine with pushdown; a semantic layer standardizes metrics; a catalog makes products discoverable.",
  "nodes": {
    "analyst": {
      "type": "user",
      "label": "Analyst",
      "x": 0,
      "y": 300,
      "runtime": "one SQL, three domains"
    },
    "sem": {
      "type": "analytics",
      "label": "Semantic Layer",
      "x": 260,
      "y": 300,
      "runtime": "metric definitions",
      "color": "purple",
      "notes": "'Active customer', 'net revenue' — defined once here, compiled into queries. Ends the five-dashboards-five-answers problem."
    },
    "engine": {
      "type": "search",
      "label": "Federated Engine",
      "x": 520,
      "y": 300,
      "runtime": "planner · pushdown",
      "color": "blue",
      "patterns": [
        "stateless"
      ]
    },
    "cat": {
      "type": "registry",
      "label": "Catalog & Lineage",
      "x": 520,
      "y": 80,
      "runtime": "discovery · ownership"
    },
    "p1": {
      "type": "database",
      "label": "orders product",
      "x": 840,
      "y": 80,
      "runtime": "owner: commerce team",
      "patterns": [
        "replicated"
      ]
    },
    "p2": {
      "type": "database",
      "label": "customers product",
      "x": 840,
      "y": 300,
      "runtime": "owner: CRM team"
    },
    "p3": {
      "type": "datalake",
      "label": "events product",
      "x": 840,
      "y": 520,
      "runtime": "owner: platform team",
      "patterns": [
        "sharded"
      ]
    }
  },
  "edges": {
    "e1": {
      "from": "analyst",
      "to": "sem",
      "fromSide": "right",
      "toSide": "left",
      "label": "metric query",
      "animated": true
    },
    "e2": {
      "from": "sem",
      "to": "engine",
      "fromSide": "right",
      "toSide": "left",
      "label": "compiled SQL",
      "animated": true
    },
    "e3": {
      "from": "engine",
      "to": "cat",
      "fromSide": "top",
      "toSide": "bottom",
      "label": "resolve products"
    },
    "e4": {
      "from": "engine",
      "to": "p1",
      "fromSide": "right",
      "toSide": "left",
      "label": "pushdown: filter+project",
      "patterns": [
        "timeout"
      ]
    },
    "e5": {
      "from": "engine",
      "to": "p2",
      "fromSide": "right",
      "toSide": "left",
      "label": "pushdown",
      "patterns": [
        "timeout"
      ]
    },
    "e6": {
      "from": "engine",
      "to": "p3",
      "fromSide": "right",
      "toSide": "left",
      "label": "partition-pruned scan",
      "patterns": [
        "rate-limit"
      ]
    }
  },
  "boxes": {
    "b1": {
      "x": 800,
      "y": -20,
      "w": 280,
      "h": 720,
      "label": "domain-owned — data stays home",
      "color": "green",
      "opacity": 0.04
    }
  },
  "texts": {
    "t1": {
      "x": 0,
      "y": 500,
      "text": "mesh is an org-chart pattern wearing an\narchitecture costume: it works exactly as well\nas domain teams actually own their products.",
      "color": "amber",
      "size": 12
    }
  },
  "meta": {
    "createdAt": "2026-07-13T09:00:00.000Z",
    "modifiedAt": "2026-07-13T09:00:00.000Z"
  }
}