{
  "generated_at": "2026-08-20T17:55:06.348Z",
  "nodes": [
    {
      "slug": "access-scope",
      "name": "Access Scope",
      "type": "platform-surface",
      "status": "draft",
      "route": "/platform/access-and-security/access-scope"
    },
    {
      "slug": "workspace",
      "name": "Workspace",
      "type": "platform-surface",
      "status": "draft",
      "route": "/platform/access-and-security/workspace"
    },
    {
      "slug": "canonical-library",
      "name": "Canonical Library",
      "type": "concept",
      "status": "draft",
      "route": "/platform/data-model/canonical-library"
    },
    {
      "slug": "object",
      "name": "Object",
      "type": "data-model",
      "status": "published",
      "route": "/platform/data-model/object"
    },
    {
      "slug": "property",
      "name": "Property",
      "type": "data-model",
      "status": "published",
      "route": "/platform/data-model/property"
    },
    {
      "slug": "record",
      "name": "Record",
      "type": "data-model",
      "status": "published",
      "route": "/platform/data-model/record"
    },
    {
      "slug": "value-type",
      "name": "Value Type",
      "type": "data-model",
      "status": "published",
      "route": "/platform/data-model/value-type"
    },
    {
      "slug": "capability",
      "name": "Capability",
      "type": "capability",
      "status": "published",
      "route": "/platform/modules-and-automation/capability"
    },
    {
      "slug": "module",
      "name": "Module",
      "type": "module",
      "status": "published",
      "route": "/platform/modules-and-automation/module"
    },
    {
      "slug": "platform-extensions",
      "name": "Platform Extensions",
      "type": "concept",
      "status": "draft",
      "route": "/platform/platform-extensions"
    }
  ],
  "edges": [
    {
      "from": "workspace",
      "kind": "enables",
      "to": "module",
      "cardinality": "many-to-many",
      "note": "Workspaces selectively enable Modules to expand a tenant's available feature set and object graph."
    },
    {
      "from": "object",
      "kind": "composed-of",
      "to": "property",
      "cardinality": "one-to-many",
      "note": "An Object's shape is the set of Properties declared on it."
    },
    {
      "from": "property",
      "kind": "typed-by",
      "to": "value-type",
      "cardinality": "many-to-one",
      "note": "Every Property declares one Value Type."
    },
    {
      "from": "record",
      "kind": "instance-of",
      "to": "object",
      "cardinality": "many-to-one",
      "note": "Every Record is an instance of exactly one Object."
    },
    {
      "from": "capability",
      "kind": "acts-on",
      "to": "record",
      "cardinality": "many-to-many",
      "note": "Capabilities read and mutate Records under permission."
    },
    {
      "from": "module",
      "kind": "packages",
      "to": "object",
      "cardinality": "one-to-many",
      "note": "Modules ship canonical Objects as part of their bundle."
    },
    {
      "from": "module",
      "kind": "exposes",
      "to": "capability",
      "cardinality": "one-to-many",
      "note": "Modules make their functionality available as Capabilities."
    },
    {
      "from": "module",
      "kind": "depends-on",
      "to": "object",
      "cardinality": "many-to-many",
      "note": "Modules declare references to the foundational canonical Objects they need to interact with, without owning them."
    }
  ],
  "kinds": {
    "composed-of": {
      "label": "is composed of",
      "inverse": "is part of",
      "family": "behavioural",
      "description": "The source is made up of the target as a structural part.",
      "allowed_from_types": [
        "data-model",
        "platform-surface",
        "module",
        "capability"
      ],
      "allowed_to_types": [
        "data-model",
        "platform-surface",
        "capability"
      ]
    },
    "instance-of": {
      "label": "is an instance of",
      "inverse": "has instance",
      "family": "classification",
      "description": "The source is a concrete instance of the target definition.",
      "allowed_from_types": [
        "data-model",
        "capability",
        "canonical-object",
        "concept"
      ],
      "allowed_to_types": [
        "data-model",
        "platform-surface",
        "capability",
        "concept"
      ]
    },
    "typed-by": {
      "label": "is typed by",
      "inverse": "types",
      "family": "behavioural",
      "description": "The source takes its type from the target.",
      "allowed_from_types": [
        "data-model"
      ],
      "allowed_to_types": [
        "data-model"
      ]
    },
    "packages": {
      "label": "packages",
      "inverse": "is packaged by",
      "family": "structural",
      "description": "The source bundles the target for distribution.",
      "allowed_from_types": [
        "module"
      ],
      "allowed_to_types": [
        "data-model",
        "capability",
        "canonical-object",
        "platform-surface"
      ]
    },
    "exposes": {
      "label": "exposes",
      "inverse": "is exposed by",
      "family": "behavioural",
      "description": "The source surfaces the target to consumers.",
      "allowed_from_types": [
        "module",
        "platform-surface"
      ],
      "allowed_to_types": [
        "capability",
        "data-model"
      ]
    },
    "depends-on": {
      "label": "depends on",
      "inverse": "is depended on by",
      "family": "behavioural",
      "description": "The source requires the target to function.",
      "allowed_from_types": [
        "module",
        "capability",
        "platform-surface",
        "solution-area",
        "concept"
      ],
      "allowed_to_types": [
        "data-model",
        "capability",
        "module",
        "platform-surface",
        "concept",
        "canonical-object"
      ]
    },
    "enables": {
      "label": "enables",
      "inverse": "is enabled by",
      "family": "behavioural",
      "description": "The source makes the target possible.",
      "allowed_from_types": [
        "platform-surface",
        "capability",
        "data-model"
      ],
      "allowed_to_types": [
        "module",
        "capability",
        "platform-surface",
        "workflow"
      ]
    },
    "acts-on": {
      "label": "acts on",
      "inverse": "is acted on by",
      "family": "behavioural",
      "description": "The source reads or operates on the target.",
      "allowed_from_types": [
        "capability",
        "platform-surface",
        "module"
      ],
      "allowed_to_types": [
        "data-model",
        "capability",
        "module",
        "canonical-object"
      ]
    },
    "publishes": {
      "label": "publishes",
      "inverse": "is published by",
      "family": "behavioural",
      "description": "The source issues the target as governed content.",
      "allowed_from_types": [
        "concept",
        "platform-surface"
      ],
      "allowed_to_types": [
        "canonical-object",
        "data-model"
      ]
    },
    "needs": {
      "label": "needs",
      "inverse": "needed by",
      "family": "behavioural",
      "description": "This page depends on a definition, object or capability to work. Used from a solution area to mark the information it requires. (Was EMPTY/unusable in the wiki — defined here.)",
      "allowed_from_types": [
        "solution-area"
      ],
      "allowed_to_types": [
        "data-model",
        "canonical-object",
        "capability",
        "concept"
      ]
    },
    "realised-by": {
      "label": "is realised by",
      "inverse": "realises",
      "family": "behavioural",
      "description": "This area of need is delivered by a module, surface or capability. No edges means the implementation is still undesigned. (Was EMPTY/unusable in the wiki — defined here.)",
      "allowed_from_types": [
        "solution-area"
      ],
      "allowed_to_types": [
        "module",
        "capability",
        "platform-surface"
      ]
    }
  },
  "types": {
    "folder": {
      "label": "Folder",
      "description": "Pure navigation node. No body, no edges, never in the graph.",
      "is_collection": true
    },
    "data-model": {
      "label": "Data model",
      "description": "Part of the platform data model — how information is shaped, stored and typed."
    },
    "platform-surface": {
      "label": "Platform surface",
      "description": "A surface of the running platform that people or systems interact with or configure."
    },
    "capability": {
      "label": "Capability",
      "description": "A discrete, governed unit of platform functionality that can be granted, gated or exposed to agents."
    },
    "module": {
      "label": "Module",
      "description": "A packaged vertical slice of IMOS — workflows, capabilities and UI for one area of the business."
    },
    "canonical-object": {
      "label": "Canonical object",
      "description": "A platform-owned Object definition published through the Canonical Library."
    },
    "industry": {
      "label": "Industry",
      "description": "A vertical industry the platform serves."
    },
    "segment": {
      "label": "Segment",
      "description": "A market segment inside an industry."
    },
    "persona": {
      "label": "Persona",
      "description": "A user archetype the platform is built for."
    },
    "role": {
      "label": "Role",
      "description": "A job role or responsibility in the platform ecosystem."
    },
    "workflow": {
      "label": "Workflow",
      "description": "An end-to-end process or user journey."
    },
    "solution-area": {
      "label": "Solution area",
      "description": "A coherent area of business need IMOS must serve, written before deciding how to build it."
    },
    "equipment-type": {
      "label": "Equipment type",
      "description": "A kind of production machine used in an industry."
    },
    "vision": {
      "label": "Vision",
      "description": "The overarching product vision or north star."
    },
    "concept": {
      "label": "Concept",
      "description": "Unclassified. Prefer a specific type; a growing count signals the vocabulary needs extending."
    }
  }
}