{
  "uid": "cogitave.learn.core-model-fundamentals.the-one-model",
  "kind": "moduleUnit",
  "href": "/modules/core-model-fundamentals/the-one-model/",
  "title": "The one-model thesis",
  "summary": "",
  "type": null,
  "products": [],
  "roles": [],
  "levels": [],
  "subjects": [],
  "headings": [
    "Nodes, edges, and one flat namespace",
    "Two identifiers, two jobs",
    "Three materializations, one source of truth",
    "Why this is &quot;one model,&quot; not three"
  ],
  "source": "The [Cogitave Core Architecture](../../../../core/docs/architecture.md) doc\nstates the thesis in one line: Cogitave Core is a single **typed property\ngraph** (a labeled property graph, LPG) with one identity rule and one change\nrule, materialized into three read shapes and served behind one query layer\nthat is MCP-native. Everything else in this unit is what that sentence cashes\nout to.\n\n## Nodes, edges, and one flat namespace\n\nThe graph has **18 node types** - `Org`, `Repo`, `Product`, `Service`, `Doc`,\n`Unit`, `Module`, `LearningPath`, `ADR`, `Agent`, `Skill`, `Standard`,\n`InfraResource`, `Decision`, `Team`, `Person`, and more - and a **closed set of\n11 edge types**, among them `partOf` (composition), `dependsOn`,\n`xref`, `appliesTo`, `teachesSkill`, and `derivedFrom`. The set is closed\ndeliberately: a fixed vocabulary is what keeps traversal queries, faceting, and\ncertification evidence stable over time. You are reading one instance of this\ngraph right now - this `Unit` is `partOf` this `Module`, exactly as the schema\ndescribes.\n\n## Two identifiers, two jobs\n\nThe graph separates identity from version:\n\n- **`uid`** is immutable identity - a dotted name (`cogitave.<area>.<name>`)\n  that is globally unique across the entire multi-org estate. There is one\n  flat namespace; a UID names exactly one node everywhere, so an edge or an\n  `@uid` reference resolves the same way regardless of which org issued it.\n  The URL may change; the UID never does.\n- **`contentHash`** is a content-addressed digest of the canonicalized node\n  payload. Two materializations with the same hash are byte-identical and\n  stored once - the same Merkle-DAG discipline Git and IPFS use for their own\n  object models.\n\nIdentity also carries **no PII**: a `Person` node holds only a non-PII handle\nand coarse role labels, with any personal data held in a separate,\naccess-controlled store keyed by the same UID.\n\n## Three materializations, one source of truth\n\nThe graph is the source of truth; reads are served from three derived,\nrebuildable indexes - a **catalog** (UID-keyed flat records), a **graph\nstore** (typed adjacency for traversal), and a **search index** (lexical +\nvector). All three are pure functions of the graph at a given content root,\nso any of them can be rebuilt independently without touching the source.\n\n## Why this is \"one model,\" not three\n\nBecause the estate itself - orgs, teams, services, infra, standards, controls,\nobservability signals - is *nodes and edges in this same graph*, \"if code\nchanges, docs are mandatory\" generalizes into a graph-level invariant rather\nthan a CI afterthought: a `Repo` node changing without a connected `Doc` or\n`Decision` node is something the graph itself can flag, not just a check\nbolted on top of it.\n",
  "partOf": "cogitave.learn.core-model-fundamentals",
  "durationInMinutes": 7,
  "quiz": null
}