{
  "node": {
    "id": "term:digital-twin",
    "type": "Term",
    "label": "Digital twin",
    "properties": {
      "id": "digital-twin",
      "name": "Digital twin",
      "section": "topic-transport",
      "definition": "A model of a specific battery, kept in step with its real counterpart by live data, used to estimate state, predict life and plan operation. The term is used loosely; a model only earns it when it is continuously updated from the asset.",
      "related": [
        "aging-model",
        "state-of-health",
        "bms",
        "remaining-useful-life"
      ],
      "url": "https://lemonergy.com/learn/glossary/digital-twin/",
      "mentions": []
    }
  },
  "edges": [
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-constant",
      "source": "term:digital-twin",
      "target": "workflow:native-native-constant",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-step",
      "source": "term:digital-twin",
      "target": "workflow:native-native-step",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-ramp",
      "source": "term:digital-twin",
      "target": "workflow:native-native-ramp",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-sine",
      "source": "term:digital-twin",
      "target": "workflow:native-native-sine",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-time",
      "source": "term:digital-twin",
      "target": "workflow:native-native-time",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-dot-product",
      "source": "term:digital-twin",
      "target": "workflow:native-native-dot-product",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-matrix-multiply",
      "source": "term:digital-twin",
      "target": "workflow:native-native-matrix-multiply",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-bias",
      "source": "term:digital-twin",
      "target": "workflow:native-native-bias",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-math-function",
      "source": "term:digital-twin",
      "target": "workflow:native-native-math-function",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-polynomial",
      "source": "term:digital-twin",
      "target": "workflow:native-native-polynomial",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-reshape",
      "source": "term:digital-twin",
      "target": "workflow:native-native-reshape",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-rounding",
      "source": "term:digital-twin",
      "target": "workflow:native-native-rounding",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-trigonometric",
      "source": "term:digital-twin",
      "target": "workflow:native-native-trigonometric",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-vector-concatenate",
      "source": "term:digital-twin",
      "target": "workflow:native-native-vector-concatenate",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-complex-polar",
      "source": "term:digital-twin",
      "target": "workflow:native-native-complex-polar",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-complex-parts",
      "source": "term:digital-twin",
      "target": "workflow:native-native-complex-parts",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-find-nonzero",
      "source": "term:digital-twin",
      "target": "workflow:native-native-find-nonzero",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-polar-complex",
      "source": "term:digital-twin",
      "target": "workflow:native-native-polar-complex",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-product-elements",
      "source": "term:digital-twin",
      "target": "workflow:native-native-product-elements",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-parts-complex",
      "source": "term:digital-twin",
      "target": "workflow:native-native-parts-complex",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-sine-function",
      "source": "term:digital-twin",
      "target": "workflow:native-native-sine-function",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-squeeze",
      "source": "term:digital-twin",
      "target": "workflow:native-native-squeeze",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-sample-time-math",
      "source": "term:digital-twin",
      "target": "workflow:native-native-sample-time-math",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-assignment",
      "source": "term:digital-twin",
      "target": "workflow:native-native-assignment",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-permute-dimensions",
      "source": "term:digital-twin",
      "target": "workflow:native-native-permute-dimensions",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-adjustable-gain",
      "source": "term:digital-twin",
      "target": "workflow:native-native-adjustable-gain",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-algebraic-constraint",
      "source": "term:digital-twin",
      "target": "workflow:native-native-algebraic-constraint",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-reduce-elements",
      "source": "term:digital-twin",
      "target": "workflow:native-native-reduce-elements",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-transpose",
      "source": "term:digital-twin",
      "target": "workflow:native-native-transpose",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-diagonal-matrix",
      "source": "term:digital-twin",
      "target": "workflow:native-native-diagonal-matrix",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-cross-product",
      "source": "term:digital-twin",
      "target": "workflow:native-native-cross-product",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-identity-matrix",
      "source": "term:digital-twin",
      "target": "workflow:native-native-identity-matrix",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-matrix-concatenate",
      "source": "term:digital-twin",
      "target": "workflow:native-native-matrix-concatenate",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-gram-matrix",
      "source": "term:digital-twin",
      "target": "workflow:native-native-gram-matrix",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-expand-scalar",
      "source": "term:digital-twin",
      "target": "workflow:native-native-expand-scalar",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-extract-diagonal",
      "source": "term:digital-twin",
      "target": "workflow:native-native-extract-diagonal",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-hermitian-transpose",
      "source": "term:digital-twin",
      "target": "workflow:native-native-hermitian-transpose",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-is-hermitian",
      "source": "term:digital-twin",
      "target": "workflow:native-native-is-hermitian",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-is-symmetric",
      "source": "term:digital-twin",
      "target": "workflow:native-native-is-symmetric",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-is-triangular",
      "source": "term:digital-twin",
      "target": "workflow:native-native-is-triangular",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-permute-matrix",
      "source": "term:digital-twin",
      "target": "workflow:native-native-permute-matrix",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-submatrix",
      "source": "term:digital-twin",
      "target": "workflow:native-native-submatrix",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-boolean-operator",
      "source": "term:digital-twin",
      "target": "workflow:native-native-boolean-operator",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-compare-constant",
      "source": "term:digital-twin",
      "target": "workflow:native-native-compare-constant",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-compare-zero",
      "source": "term:digital-twin",
      "target": "workflow:native-native-compare-zero",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-interval-test",
      "source": "term:digital-twin",
      "target": "workflow:native-native-interval-test",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-dynamic-interval",
      "source": "term:digital-twin",
      "target": "workflow:native-native-dynamic-interval",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-bit-clear",
      "source": "term:digital-twin",
      "target": "workflow:native-native-bit-clear",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-bit-set",
      "source": "term:digital-twin",
      "target": "workflow:native-native-bit-set",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-bit-pack",
      "source": "term:digital-twin",
      "target": "workflow:native-native-bit-pack",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-bitwise-operator",
      "source": "term:digital-twin",
      "target": "workflow:native-native-bitwise-operator",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-truth-table",
      "source": "term:digital-twin",
      "target": "workflow:native-native-truth-table",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-extract-bits",
      "source": "term:digital-twin",
      "target": "workflow:native-native-extract-bits",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-float32-bits",
      "source": "term:digital-twin",
      "target": "workflow:native-native-float32-bits",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-integer-bits",
      "source": "term:digital-twin",
      "target": "workflow:native-native-integer-bits",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-arithmetic-shift",
      "source": "term:digital-twin",
      "target": "workflow:native-native-arithmetic-shift",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-lookup-1d",
      "source": "term:digital-twin",
      "target": "workflow:native-native-lookup-1d",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-lookup-2d",
      "source": "term:digital-twin",
      "target": "workflow:native-native-lookup-2d",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-lookup-nd",
      "source": "term:digital-twin",
      "target": "workflow:native-native-lookup-nd",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-prelookup",
      "source": "term:digital-twin",
      "target": "workflow:native-native-prelookup",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-interpolate-prelookup",
      "source": "term:digital-twin",
      "target": "workflow:native-native-interpolate-prelookup",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-direct-lookup",
      "source": "term:digital-twin",
      "target": "workflow:native-native-direct-lookup",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-dynamic-lookup",
      "source": "term:digital-twin",
      "target": "workflow:native-native-dynamic-lookup",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-quantized-sine",
      "source": "term:digital-twin",
      "target": "workflow:native-native-quantized-sine",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-dynamic-saturation",
      "source": "term:digital-twin",
      "target": "workflow:native-native-dynamic-saturation",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-friction",
      "source": "term:digital-twin",
      "target": "workflow:native-native-friction",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-deadzone",
      "source": "term:digital-twin",
      "target": "workflow:native-native-deadzone",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-dynamic-deadzone",
      "source": "term:digital-twin",
      "target": "workflow:native-native-dynamic-deadzone",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-quantizer",
      "source": "term:digital-twin",
      "target": "workflow:native-native-quantizer",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-wrap-zero",
      "source": "term:digital-twin",
      "target": "workflow:native-native-wrap-zero",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-array-map",
      "source": "term:digital-twin",
      "target": "workflow:native-native-array-map",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-neighborhood-map",
      "source": "term:digital-twin",
      "target": "workflow:native-native-neighborhood-map",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-pixel-map",
      "source": "term:digital-twin",
      "target": "workflow:native-native-pixel-map",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-multiport-switch",
      "source": "term:digital-twin",
      "target": "workflow:native-native-multiport-switch",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-manual-switch",
      "source": "term:digital-twin",
      "target": "workflow:native-native-manual-switch",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-demux",
      "source": "term:digital-twin",
      "target": "workflow:native-native-demux",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-selector",
      "source": "term:digital-twin",
      "target": "workflow:native-native-selector",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-signal-width",
      "source": "term:digital-twin",
      "target": "workflow:native-native-signal-width",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-signal-specification",
      "source": "term:digital-twin",
      "target": "workflow:native-native-signal-specification",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-type-conversion",
      "source": "term:digital-twin",
      "target": "workflow:native-native-type-conversion",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-rate-transition",
      "source": "term:digital-twin",
      "target": "workflow:native-native-rate-transition",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-initial-value",
      "source": "term:digital-twin",
      "target": "workflow:native-native-initial-value",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-data-store",
      "source": "term:digital-twin",
      "target": "workflow:native-native-data-store",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-scope",
      "source": "term:digital-twin",
      "target": "workflow:native-native-scope",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-display",
      "source": "term:digital-twin",
      "target": "workflow:native-native-display",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-recorder",
      "source": "term:digital-twin",
      "target": "workflow:native-native-recorder",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-terminator",
      "source": "term:digital-twin",
      "target": "workflow:native-native-terminator",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-assertion",
      "source": "term:digital-twin",
      "target": "workflow:native-native-assertion",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-check-range",
      "source": "term:digital-twin",
      "target": "workflow:native-native-check-range",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-check-dynamic-range",
      "source": "term:digital-twin",
      "target": "workflow:native-native-check-dynamic-range",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-check-lower",
      "source": "term:digital-twin",
      "target": "workflow:native-native-check-lower",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-check-upper",
      "source": "term:digital-twin",
      "target": "workflow:native-native-check-upper",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-check-dynamic-lower",
      "source": "term:digital-twin",
      "target": "workflow:native-native-check-dynamic-lower",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-check-dynamic-upper",
      "source": "term:digital-twin",
      "target": "workflow:native-native-check-dynamic-upper",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-check-gap",
      "source": "term:digital-twin",
      "target": "workflow:native-native-check-gap",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-check-resolution",
      "source": "term:digital-twin",
      "target": "workflow:native-native-check-resolution",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-check-static-gap",
      "source": "term:digital-twin",
      "target": "workflow:native-native-check-static-gap",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-check-dynamic-gap",
      "source": "term:digital-twin",
      "target": "workflow:native-native-check-dynamic-gap",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-check-gradient",
      "source": "term:digital-twin",
      "target": "workflow:native-native-check-gradient",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-stop-simulation",
      "source": "term:digital-twin",
      "target": "workflow:native-native-stop-simulation",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-playback",
      "source": "term:digital-twin",
      "target": "workflow:native-native-playback",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-repeating-sequence",
      "source": "term:digital-twin",
      "target": "workflow:native-native-repeating-sequence",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-pulse",
      "source": "term:digital-twin",
      "target": "workflow:native-native-pulse",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-chirp",
      "source": "term:digital-twin",
      "target": "workflow:native-native-chirp",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-uniform-random",
      "source": "term:digital-twin",
      "target": "workflow:native-native-uniform-random",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-normal-random",
      "source": "term:digital-twin",
      "target": "workflow:native-native-normal-random",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-counter",
      "source": "term:digital-twin",
      "target": "workflow:native-native-counter",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-native-digital-clock",
      "source": "term:digital-twin",
      "target": "workflow:native-native-digital-clock",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-bus-create",
      "source": "term:digital-twin",
      "target": "workflow:native-bus-create",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-bus-select",
      "source": "term:digital-twin",
      "target": "workflow:native-bus-select",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-bus-assign",
      "source": "term:digital-twin",
      "target": "workflow:native-bus-assign",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-bus-to-vector",
      "source": "term:digital-twin",
      "target": "workflow:native-bus-to-vector",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-vector-assemble",
      "source": "term:digital-twin",
      "target": "workflow:native-vector-assemble",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-vector-select",
      "source": "term:digital-twin",
      "target": "workflow:native-vector-select",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-data-store-memory",
      "source": "term:digital-twin",
      "target": "workflow:native-data-store-memory",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-data-store-read",
      "source": "term:digital-twin",
      "target": "workflow:native-data-store-read",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-data-store-write",
      "source": "term:digital-twin",
      "target": "workflow:native-data-store-write",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-goto",
      "source": "term:digital-twin",
      "target": "workflow:native-goto",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-from",
      "source": "term:digital-twin",
      "target": "workflow:native-from",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-variant-subsystem",
      "source": "term:digital-twin",
      "target": "workflow:native-variant-subsystem",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-variant-source",
      "source": "term:digital-twin",
      "target": "workflow:native-variant-source",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-variant-sink",
      "source": "term:digital-twin",
      "target": "workflow:native-variant-sink",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-manual-variant-source",
      "source": "term:digital-twin",
      "target": "workflow:native-manual-variant-source",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-manual-variant-sink",
      "source": "term:digital-twin",
      "target": "workflow:native-manual-variant-sink",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-variant-start",
      "source": "term:digital-twin",
      "target": "workflow:native-variant-start",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-variant-end",
      "source": "term:digital-twin",
      "target": "workflow:native-variant-end",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-goto-visibility",
      "source": "term:digital-twin",
      "target": "workflow:native-goto-visibility",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-signal-copy",
      "source": "term:digital-twin",
      "target": "workflow:native-signal-copy",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-type-inherit",
      "source": "term:digital-twin",
      "target": "workflow:native-type-inherit",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-type-duplicate",
      "source": "term:digital-twin",
      "target": "workflow:native-type-duplicate",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-type-propagation",
      "source": "term:digital-twin",
      "target": "workflow:native-type-propagation",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-scaled-constant",
      "source": "term:digital-twin",
      "target": "workflow:native-scaled-constant",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-scaling-strip",
      "source": "term:digital-twin",
      "target": "workflow:native-scaling-strip",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-enum-constant",
      "source": "term:digital-twin",
      "target": "workflow:native-enum-constant",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-enum-cast",
      "source": "term:digital-twin",
      "target": "workflow:native-enum-cast",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-unit-system",
      "source": "term:digital-twin",
      "target": "workflow:native-unit-system",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-subsystem",
      "source": "term:digital-twin",
      "target": "workflow:native-subsystem",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-inport",
      "source": "term:digital-twin",
      "target": "workflow:native-inport",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:digital-twin/workflow:native-outport",
      "source": "term:digital-twin",
      "target": "workflow:native-outport",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:belongsTo/term:digital-twin/topic:topic-transport",
      "source": "term:digital-twin",
      "target": "topic:topic-transport",
      "type": "belongsTo",
      "properties": {
        "sourceFile": "terms.json"
      }
    },
    {
      "id": "edge:relatedTo/term:digital-twin/term:aging-model",
      "source": "term:digital-twin",
      "target": "term:aging-model",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:digital-twin/term:state-of-health",
      "source": "term:digital-twin",
      "target": "term:state-of-health",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:digital-twin/term:bms",
      "source": "term:digital-twin",
      "target": "term:bms",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:digital-twin/term:remaining-useful-life",
      "source": "term:digital-twin",
      "target": "term:remaining-useful-life",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    }
  ],
  "neighbors": [
    {
      "id": "workflow:native-native-constant",
      "type": "Workflow",
      "label": "Array constant — worked example",
      "properties": {
        "id": "native-native-constant",
        "title": "Array constant — worked example",
        "kind": "studio",
        "summary": "Produces a configured scalar, vector or matrix throughout the simulation.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Uses the configured source values. Value at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Configured values must exactly match the declared shape and element type; a constant does not change during the run. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-constant",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-step",
      "type": "Workflow",
      "label": "Array step — worked example",
      "properties": {
        "id": "native-native-step",
        "title": "Array step — worked example",
        "kind": "studio",
        "summary": "Changes an entire signal from its before value to its after value at an exact time.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Uses the configured source values. Value at 0 s = 0; Value at 0.5 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Before and after arrays must have exactly the same shape and element type. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-step",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-ramp",
      "type": "Workflow",
      "label": "Ramp — worked example",
      "properties": {
        "id": "native-native-ramp",
        "title": "Ramp — worked example",
        "kind": "studio",
        "summary": "Produces a linearly changing value after a configured start time.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Uses the configured source values. Value at 0 s = 0; Value at 1 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-ramp",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-sine",
      "type": "Workflow",
      "label": "Sine source — worked example",
      "properties": {
        "id": "native-native-sine",
        "title": "Sine source — worked example",
        "kind": "studio",
        "summary": "Produces a sinusoidal signal with configurable amplitude, frequency, phase and bias.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Uses the configured source values. Value at 0 s = 0; Value at 1 s = 0.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-sine",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-time",
      "type": "Workflow",
      "label": "Simulation time — worked example",
      "properties": {
        "id": "native-native-time",
        "title": "Simulation time — worked example",
        "kind": "studio",
        "summary": "Exposes the current simulation time as a signal.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Uses the configured source values. Time at 0 s = 0; Time at 1 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-time",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-dot-product",
      "type": "Workflow",
      "label": "Dot product — worked example",
      "properties": {
        "id": "native-native-dot-product",
        "title": "Dot product — worked example",
        "kind": "studio",
        "summary": "Adds the pairwise products of two equal-length real arrays.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "A = [1,2,3]; B = [4,5,6]. Dot product at 0 s = 32.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Real equal-length arrays; no conjugating complex dot product. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-dot-product",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-matrix-multiply",
      "type": "Workflow",
      "label": "Matrix multiply — worked example",
      "properties": {
        "id": "native-native-matrix-multiply",
        "title": "Matrix multiply — worked example",
        "kind": "studio",
        "summary": "Multiplies two real matrices with compatible inner dimensions.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "A = [1,3,2,4]; B = [5,7,6,8]. Product at 0 s = [19,43,22,50].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Real 2-D column-major matrix multiplication with exact shape checks. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-matrix-multiply",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-bias",
      "type": "Workflow",
      "label": "Bias — worked example",
      "properties": {
        "id": "native-native-bias",
        "title": "Bias — worked example",
        "kind": "studio",
        "summary": "Adds a constant offset to every input element.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 3. Biased value at 0 s = 5.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-bias",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-math-function",
      "type": "Workflow",
      "label": "Math function — worked example",
      "properties": {
        "id": "native-native-math-function",
        "title": "Math function — worked example",
        "kind": "studio",
        "summary": "Applies a selected square root, exponential, logarithm, square, reciprocal or absolute-value function.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Values = [4,9]. Result at 0 s = [2,3].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Real sqrt, exp, ln, square, reciprocal and abs; unsupported operations and domain failures are refused. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-math-function",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-polynomial",
      "type": "Workflow",
      "label": "Polynomial — worked example",
      "properties": {
        "id": "native-native-polynomial",
        "title": "Polynomial — worked example",
        "kind": "studio",
        "summary": "Evaluates a polynomial whose coefficients are supplied in descending powers.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "x = 3. Polynomial value at 0 s = 10.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-polynomial",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-reshape",
      "type": "Workflow",
      "label": "Reshape array — worked example",
      "properties": {
        "id": "native-native-reshape",
        "title": "Reshape array — worked example",
        "kind": "studio",
        "summary": "Changes an array’s dimensions while preserving its element order.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Values = [1,2,3,4]. Matrix at 0 s = [1,2,3,4].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-reshape",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-rounding",
      "type": "Workflow",
      "label": "Rounding — worked example",
      "properties": {
        "id": "native-native-rounding",
        "title": "Rounding — worked example",
        "kind": "studio",
        "summary": "Rounds each value using floor, ceiling, truncation or nearest rounding.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Values = [1.8,-1.2]. Rounded at 0 s = [1,-2].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-rounding",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-trigonometric",
      "type": "Workflow",
      "label": "Trigonometric function — worked example",
      "properties": {
        "id": "native-native-trigonometric",
        "title": "Trigonometric function — worked example",
        "kind": "studio",
        "summary": "Applies a selected trigonometric, inverse-trigonometric or hyperbolic function.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Angles = [0,1.5707963267948966]. Result at 0 s = [0,1].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Real sin/cos/tan, inverse sin/cos/tan, sinh/cosh/tanh; radians; no atan2 or arbitrary complex trig. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-trigonometric",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-vector-concatenate",
      "type": "Workflow",
      "label": "Vector concatenate — worked example",
      "properties": {
        "id": "native-native-vector-concatenate",
        "title": "Vector concatenate — worked example",
        "kind": "studio",
        "summary": "Joins input arrays in their declared order into one output vector.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "A = [1,2]; B = [3,4]. Combined at 0 s = [1,2,3,4].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-vector-concatenate",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-complex-polar",
      "type": "Workflow",
      "label": "Complex to magnitude and angle — worked example",
      "properties": {
        "id": "native-native-complex-polar",
        "title": "Complex to magnitude and angle — worked example",
        "kind": "studio",
        "summary": "Separates each complex value into magnitude and phase angle.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Complex = [3,4]. Magnitude at 0 s = [5]; Angle at 0 s = [0.9272952180016122].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-complex-polar",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-complex-parts",
      "type": "Workflow",
      "label": "Complex to real and imaginary — worked example",
      "properties": {
        "id": "native-native-complex-parts",
        "title": "Complex to real and imaginary — worked example",
        "kind": "studio",
        "summary": "Separates each complex value into real and imaginary components.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Complex = [3,4]. Real at 0 s = [3]; Imaginary at 0 s = [4].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-complex-parts",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-find-nonzero",
      "type": "Workflow",
      "label": "Find nonzero elements — worked example",
      "properties": {
        "id": "native-native-find-nonzero",
        "title": "Find nonzero elements — worked example",
        "kind": "studio",
        "summary": "Finds nonzero elements and returns their zero-based indices and valid count.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Values = [0,3,0,-1]. Indices at 0 s = [1,3,0,0]; Count at 0 s = 2.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Zero-based fixed-capacity index vector with zero padding and a separate valid-count output. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-find-nonzero",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-polar-complex",
      "type": "Workflow",
      "label": "Magnitude and angle to complex — worked example",
      "properties": {
        "id": "native-native-polar-complex",
        "title": "Magnitude and angle to complex — worked example",
        "kind": "studio",
        "summary": "Constructs complex values from nonnegative magnitudes and phase angles.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Magnitude = [2]; Angle = [1.5707963267948966]. Complex at 0 s = [0,2].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-polar-complex",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-product-elements",
      "type": "Workflow",
      "label": "Product of elements — worked example",
      "properties": {
        "id": "native-native-product-elements",
        "title": "Product of elements — worked example",
        "kind": "studio",
        "summary": "Multiplies all elements of an input array.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Values = [2,3,4]. Product at 0 s = 24.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-product-elements",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-parts-complex",
      "type": "Workflow",
      "label": "Real and imaginary to complex — worked example",
      "properties": {
        "id": "native-native-parts-complex",
        "title": "Real and imaginary to complex — worked example",
        "kind": "studio",
        "summary": "Constructs complex values from separate real and imaginary inputs.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Real = [3]; Imaginary = [4]. Complex at 0 s = [3,4].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-parts-complex",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-sine-function",
      "type": "Workflow",
      "label": "Sine wave function — worked example",
      "properties": {
        "id": "native-native-sine-function",
        "title": "Sine wave function — worked example",
        "kind": "studio",
        "summary": "Evaluates a sinusoid using a connected time value.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Time = 0.25. Sine at 0 s = 3.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-sine-function",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-squeeze",
      "type": "Workflow",
      "label": "Remove singleton dimensions — worked example",
      "properties": {
        "id": "native-native-squeeze",
        "title": "Remove singleton dimensions — worked example",
        "kind": "studio",
        "summary": "Removes dimensions of size one without moving array elements.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Values = [2,3]. Result at 0 s = [2,3].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-squeeze",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-sample-time-math",
      "type": "Workflow",
      "label": "Weighted sample time math — worked example",
      "properties": {
        "id": "native-native-sample-time-math",
        "title": "Weighted sample time math — worked example",
        "kind": "studio",
        "summary": "Multiplies or divides a signal by an explicitly configured weighted sample period.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 5. Result at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Explicit configured sample period and weight; no inherited-rate inference. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-sample-time-math",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-assignment",
      "type": "Workflow",
      "label": "Array assignment — worked example",
      "properties": {
        "id": "native-native-assignment",
        "title": "Array assignment — worked example",
        "kind": "studio",
        "summary": "Replaces selected zero-based array elements with connected replacement values.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Original = [1,2,3]; Replacement = [9]. Result at 0 s = [1,9,3].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-assignment",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-permute-dimensions",
      "type": "Workflow",
      "label": "Permute array dimensions — worked example",
      "properties": {
        "id": "native-native-permute-dimensions",
        "title": "Permute array dimensions — worked example",
        "kind": "studio",
        "summary": "Reorders array axes while preserving each element’s coordinates.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Values = [1,2,3,4,5,6]. Result at 0 s = [1,3,5,2,4,6].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-permute-dimensions",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-adjustable-gain",
      "type": "Workflow",
      "label": "Adjustable gain — worked example",
      "properties": {
        "id": "native-native-adjustable-gain",
        "title": "Adjustable gain — worked example",
        "kind": "studio",
        "summary": "Scales the input by an editable gain.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 2. Scaled at 0 s = 6.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Native gain kernel and numeric parameter editor are operational. A live slider control is not supplied by this module. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-adjustable-gain",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-algebraic-constraint",
      "type": "Workflow",
      "label": "Algebraic residual constraint — worked example",
      "properties": {
        "id": "native-native-algebraic-constraint",
        "title": "Algebraic residual constraint — worked example",
        "kind": "studio",
        "summary": "Solves a connected residual equation for an unknown, starting from a configured guess.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "The Studio example connects the unknown to the residual x² − 4 and starts from x=1. The native nonlinear solve reaches x=2 with residual zero; an inconsistent constraint stops with a diagnostic.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Explicit unknown with configured initial guess and connected residual. Dense damped Newton solution; inconsistent/singular residuals fail. This is not singular-DAE support. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-algebraic-constraint",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-reduce-elements",
      "type": "Workflow",
      "label": "Sum or mean of elements — worked example",
      "properties": {
        "id": "native-native-reduce-elements",
        "title": "Sum or mean of elements — worked example",
        "kind": "studio",
        "summary": "Reduces an array to its sum or arithmetic mean.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Values = [1,2,3]. Result at 0 s = 2.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-reduce-elements",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-transpose",
      "type": "Workflow",
      "label": "Matrix transpose — worked example",
      "properties": {
        "id": "native-native-transpose",
        "title": "Matrix transpose — worked example",
        "kind": "studio",
        "summary": "Exchanges matrix rows and columns without conjugating complex values.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Matrix = [1,2,3,4,5,6]. Transposed at 0 s = [1,3,5,2,4,6].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-transpose",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-diagonal-matrix",
      "type": "Workflow",
      "label": "Create diagonal matrix — worked example",
      "properties": {
        "id": "native-native-diagonal-matrix",
        "title": "Create diagonal matrix — worked example",
        "kind": "studio",
        "summary": "Places vector elements on a matrix diagonal and fills other entries with zero.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Diagonal = [2,3]. Matrix at 0 s = [2,0,0,3].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-diagonal-matrix",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-cross-product",
      "type": "Workflow",
      "label": "Cross product — worked example",
      "properties": {
        "id": "native-native-cross-product",
        "title": "Cross product — worked example",
        "kind": "studio",
        "summary": "Calculates the three-dimensional cross product of two real vectors.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "A = [1,0,0]; B = [0,1,0]. Cross product at 0 s = [0,0,1].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-cross-product",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-identity-matrix",
      "type": "Workflow",
      "label": "Identity matrix — worked example",
      "properties": {
        "id": "native-native-identity-matrix",
        "title": "Identity matrix — worked example",
        "kind": "studio",
        "summary": "Produces a square identity matrix of the configured size.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Uses the configured source values. Identity at 0 s = [1,0,0,1].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-identity-matrix",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-matrix-concatenate",
      "type": "Workflow",
      "label": "Matrix concatenate — worked example",
      "properties": {
        "id": "native-native-matrix-concatenate",
        "title": "Matrix concatenate — worked example",
        "kind": "studio",
        "summary": "Joins two matrices along their row or column axis.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "A = [1,2]; B = [3,4]. Result at 0 s = [1,2,3,4].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-matrix-concatenate",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-gram-matrix",
      "type": "Workflow",
      "label": "Gram matrix — worked example",
      "properties": {
        "id": "native-native-gram-matrix",
        "title": "Gram matrix — worked example",
        "kind": "studio",
        "summary": "Calculates the Gram matrix AᴴA, including complex conjugation.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "A = [1,3,2,4]. AᴴA at 0 s = [10,14,14,20].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Gram matrix A^H*A (conjugating complex first factor), not A*A. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-gram-matrix",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-expand-scalar",
      "type": "Workflow",
      "label": "Expand scalar — worked example",
      "properties": {
        "id": "native-native-expand-scalar",
        "title": "Expand scalar — worked example",
        "kind": "studio",
        "summary": "Repeats a scalar value across a configured array shape.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 3. Matrix at 0 s = [3,3,3,3].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-expand-scalar",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-extract-diagonal",
      "type": "Workflow",
      "label": "Extract diagonal — worked example",
      "properties": {
        "id": "native-native-extract-diagonal",
        "title": "Extract diagonal — worked example",
        "kind": "studio",
        "summary": "Extracts a main or offset matrix diagonal.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Matrix = [1,3,2,4]. Diagonal at 0 s = [1,4].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-extract-diagonal",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-hermitian-transpose",
      "type": "Workflow",
      "label": "Hermitian transpose — worked example",
      "properties": {
        "id": "native-native-hermitian-transpose",
        "title": "Hermitian transpose — worked example",
        "kind": "studio",
        "summary": "Exchanges matrix rows and columns and conjugates complex values.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Matrix = [1,2,3,-4]. Conjugate transpose at 0 s = [1,-2,3,4].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-hermitian-transpose",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-is-hermitian",
      "type": "Workflow",
      "label": "Is Hermitian — worked example",
      "properties": {
        "id": "native-native-is-hermitian",
        "title": "Is Hermitian — worked example",
        "kind": "studio",
        "summary": "Tests whether a square matrix equals its conjugate transpose within a tolerance.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Matrix = [1,0,2,-3,2,3,4,0]. Hermitian at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-is-hermitian",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-is-symmetric",
      "type": "Workflow",
      "label": "Is symmetric — worked example",
      "properties": {
        "id": "native-native-is-symmetric",
        "title": "Is symmetric — worked example",
        "kind": "studio",
        "summary": "Tests whether a square matrix equals its transpose within a tolerance.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Matrix = [1,2,2,4]. Symmetric at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-is-symmetric",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-is-triangular",
      "type": "Workflow",
      "label": "Is triangular — worked example",
      "properties": {
        "id": "native-native-is-triangular",
        "title": "Is triangular — worked example",
        "kind": "studio",
        "summary": "Tests whether entries outside an upper or lower triangle are effectively zero.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Matrix = [1,0,2,4]. Triangular at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-is-triangular",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-permute-matrix",
      "type": "Workflow",
      "label": "Permute matrix rows and columns — worked example",
      "properties": {
        "id": "native-native-permute-matrix",
        "title": "Permute matrix rows and columns — worked example",
        "kind": "studio",
        "summary": "Reorders complete matrix rows and columns using explicit permutations.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Matrix = [1,3,2,4]. Result at 0 s = [3,1,4,2].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-permute-matrix",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-submatrix",
      "type": "Workflow",
      "label": "Extract submatrix — worked example",
      "properties": {
        "id": "native-native-submatrix",
        "title": "Extract submatrix — worked example",
        "kind": "studio",
        "summary": "Selects matrix rows and columns to form a smaller matrix.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Matrix = [1,2,3,4,5,6]. Result at 0 s = [2,6].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-submatrix",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-boolean-operator",
      "type": "Workflow",
      "label": "Boolean operator — worked example",
      "properties": {
        "id": "native-native-boolean-operator",
        "title": "Boolean operator — worked example",
        "kind": "studio",
        "summary": "Combines Boolean arrays using AND, OR, XOR, NAND, NOR or inversion.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "A = [1,0,1]; B = [1,1,0]. Result at 0 s = [1,0,0].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Boolean elementwise two-input AND/OR/XOR/NAND/NOR or NOT A; no integer truthiness coercion. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-boolean-operator",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-compare-constant",
      "type": "Workflow",
      "label": "Compare to constant — worked example",
      "properties": {
        "id": "native-native-compare-constant",
        "title": "Compare to constant — worked example",
        "kind": "studio",
        "summary": "Compares each input value with a configured constant.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 4. Result at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-compare-constant",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-compare-zero",
      "type": "Workflow",
      "label": "Compare to zero — worked example",
      "properties": {
        "id": "native-native-compare-zero",
        "title": "Compare to zero — worked example",
        "kind": "studio",
        "summary": "Compares each input value with zero.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = -2. Result at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-compare-zero",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-interval-test",
      "type": "Workflow",
      "label": "Interval test — worked example",
      "properties": {
        "id": "native-native-interval-test",
        "title": "Interval test — worked example",
        "kind": "studio",
        "summary": "Tests whether values lie inside configured lower and upper boundaries.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 3. Inside at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-interval-test",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-dynamic-interval",
      "type": "Workflow",
      "label": "Dynamic interval test — worked example",
      "properties": {
        "id": "native-native-dynamic-interval",
        "title": "Dynamic interval test — worked example",
        "kind": "studio",
        "summary": "Tests whether values lie between two connected bounds.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 3; Lower = 2; Upper = 4. Inside at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-dynamic-interval",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-bit-clear",
      "type": "Workflow",
      "label": "Clear bit — worked example",
      "properties": {
        "id": "native-native-bit-clear",
        "title": "Clear bit — worked example",
        "kind": "studio",
        "summary": "Clears a selected bit of an unsigned 32-bit word.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Word = 7. Result at 0 s = 5.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-bit-clear",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-bit-set",
      "type": "Workflow",
      "label": "Set bit — worked example",
      "properties": {
        "id": "native-native-bit-set",
        "title": "Set bit — worked example",
        "kind": "studio",
        "summary": "Sets a selected bit of an unsigned 32-bit word.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Word = 1. Result at 0 s = 9.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-bit-set",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-bit-pack",
      "type": "Workflow",
      "label": "Pack Boolean bits — worked example",
      "properties": {
        "id": "native-native-bit-pack",
        "title": "Pack Boolean bits — worked example",
        "kind": "studio",
        "summary": "Packs Boolean values into an unsigned word, least significant bit first.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Bits = [1,0,1,1]. Word at 0 s = 13.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Up to32 Boolean bits; least significant bit first; exact u32 output. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-bit-pack",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-bitwise-operator",
      "type": "Workflow",
      "label": "Bitwise operator — worked example",
      "properties": {
        "id": "native-native-bitwise-operator",
        "title": "Bitwise operator — worked example",
        "kind": "studio",
        "summary": "Applies bitwise logic to unsigned 32-bit words.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "A = 12; B = 10. Result at 0 s = 6.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-bitwise-operator",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-truth-table",
      "type": "Workflow",
      "label": "Truth table — worked example",
      "properties": {
        "id": "native-native-truth-table",
        "title": "Truth table — worked example",
        "kind": "studio",
        "summary": "Uses a Boolean input pattern to select a configured truth-table result.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Inputs = [1,0]. Result at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "At most10 Boolean address bits and one Boolean output table; input0 is least significant. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-truth-table",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-extract-bits",
      "type": "Workflow",
      "label": "Extract bit range — worked example",
      "properties": {
        "id": "native-native-extract-bits",
        "title": "Extract bit range — worked example",
        "kind": "studio",
        "summary": "Extracts a contiguous bit range from an unsigned 32-bit word.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Word = 44. Result at 0 s = 3.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-extract-bits",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-float32-bits",
      "type": "Workflow",
      "label": "Float32 bit pattern — worked example",
      "properties": {
        "id": "native-native-float32-bits",
        "title": "Float32 bit pattern — worked example",
        "kind": "studio",
        "summary": "Exposes the binary32 representation of a numeric value as an unsigned word.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 1. Bit pattern at 0 s = 1065353216.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Finite f64 values are rounded to binary32 then exposed as an exact u32 bit pattern. Binary64 decomposition and configurable sign/exponent/mantissa fields are not implemented. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-float32-bits",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-integer-bits",
      "type": "Workflow",
      "label": "Integer to Boolean bits — worked example",
      "properties": {
        "id": "native-native-integer-bits",
        "title": "Integer to Boolean bits — worked example",
        "kind": "studio",
        "summary": "Expands an unsigned word into Boolean bits, least significant bit first.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Word = 13. Bits at 0 s = [1,0,1,1].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Exact u32 to configured width≤32 Boolean outputs, least significant first. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-integer-bits",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-arithmetic-shift",
      "type": "Workflow",
      "label": "Arithmetic bit shift — worked example",
      "properties": {
        "id": "native-native-arithmetic-shift",
        "title": "Arithmetic bit shift — worked example",
        "kind": "studio",
        "summary": "Shifts signed 32-bit words with explicit arithmetic-right and wrapping-left rules.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Signed word = -8. Result at 0 s = -4.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Signed32-bit values, shifts -31..31; arithmetic right shift and wrapping left shift. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-arithmetic-shift",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-lookup-1d",
      "type": "Workflow",
      "label": "1-D lookup table — worked example",
      "properties": {
        "id": "native-native-lookup-1d",
        "title": "1-D lookup table — worked example",
        "kind": "studio",
        "summary": "Interpolates a calibration table along its input axes.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "x = 0.5. Value at 0 s = 5.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-lookup-1d",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-lookup-2d",
      "type": "Workflow",
      "label": "2-D lookup table — worked example",
      "properties": {
        "id": "native-native-lookup-2d",
        "title": "2-D lookup table — worked example",
        "kind": "studio",
        "summary": "Interpolates a calibration table along its input axes.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "x = 0.5; y = 1. Value at 0 s = 2.5.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-lookup-2d",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-lookup-nd",
      "type": "Workflow",
      "label": "N-D lookup table — worked example",
      "properties": {
        "id": "native-native-lookup-nd",
        "title": "N-D lookup table — worked example",
        "kind": "studio",
        "summary": "Interpolates a calibration table along its input axes.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "x = 0.5; y = 0.5; z = 0.5. Value at 0 s = 3.5.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Up to6 dimensions; strict increasing breakpoints; multilinear interpolation; clamp or linear extrapolation. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-lookup-nd",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-prelookup",
      "type": "Workflow",
      "label": "Prelookup — worked example",
      "properties": {
        "id": "native-native-prelookup",
        "title": "Prelookup — worked example",
        "kind": "studio",
        "summary": "Locates a breakpoint interval and computes the input’s fraction within it.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 15. Cell index at 0 s = 1; Fraction at 0 s = 0.5.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-prelookup",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-interpolate-prelookup",
      "type": "Workflow",
      "label": "Interpolate from prelookup — worked example",
      "properties": {
        "id": "native-native-interpolate-prelookup",
        "title": "Interpolate from prelookup — worked example",
        "kind": "studio",
        "summary": "Interpolates a table using already computed cell indices and fractions.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Cell indices = [0,0]; Fractions = [0.5,0.5]. Value at 0 s = 2.5.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-interpolate-prelookup",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-direct-lookup",
      "type": "Workflow",
      "label": "Direct N-D lookup — worked example",
      "properties": {
        "id": "native-native-direct-lookup",
        "title": "Direct N-D lookup — worked example",
        "kind": "studio",
        "summary": "Selects an exact table element using zero-based multidimensional indices.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Indices = [1,0]. Value at 0 s = 20.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-direct-lookup",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-dynamic-lookup",
      "type": "Workflow",
      "label": "Dynamic 1-D lookup — worked example",
      "properties": {
        "id": "native-native-dynamic-lookup",
        "title": "Dynamic 1-D lookup — worked example",
        "kind": "studio",
        "summary": "Interpolates a one-dimensional table whose breakpoints and values arrive through input ports.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "x = 0.5; Breakpoints = [0,1,2]; Table values = [0,10,40]. Value at 0 s = 5.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-dynamic-lookup",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-quantized-sine",
      "type": "Workflow",
      "label": "Quantized sine in cycles — worked example",
      "properties": {
        "id": "native-native-quantized-sine",
        "title": "Quantized sine in cycles — worked example",
        "kind": "studio",
        "summary": "Evaluates a sine from phase in cycles and rounds its value to 14 fractional bits.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Cycles = 0.25. Sine at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Input in cycles, periodic sine rounded to 14 fractional bits; numeric real ports rather than general fixed-point datatype propagation. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-quantized-sine",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-dynamic-saturation",
      "type": "Workflow",
      "label": "Dynamic saturation — worked example",
      "properties": {
        "id": "native-native-dynamic-saturation",
        "title": "Dynamic saturation — worked example",
        "kind": "studio",
        "summary": "Clips a signal to connected lower and upper bounds.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 5; Lower = 0; Upper = 3. Limited at 0 s = 3.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-dynamic-saturation",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-friction",
      "type": "Workflow",
      "label": "Coulomb and viscous friction — worked example",
      "properties": {
        "id": "native-native-friction",
        "title": "Coulomb and viscous friction — worked example",
        "kind": "studio",
        "summary": "Combines Coulomb and viscous friction terms from a velocity input.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Velocity = -3. Friction magnitude at 0 s = -3.5.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-friction",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-deadzone",
      "type": "Workflow",
      "label": "Dead zone — worked example",
      "properties": {
        "id": "native-native-deadzone",
        "title": "Dead zone — worked example",
        "kind": "studio",
        "summary": "Suppresses values inside a dead zone and subtracts the nearest edge outside it.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 3. Output at 0 s = 2.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-deadzone",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-dynamic-deadzone",
      "type": "Workflow",
      "label": "Dynamic dead zone — worked example",
      "properties": {
        "id": "native-native-dynamic-deadzone",
        "title": "Dynamic dead zone — worked example",
        "kind": "studio",
        "summary": "Applies a dead zone whose lower and upper edges arrive through input ports.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 3; Lower = -1; Upper = 1. Output at 0 s = 2.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-dynamic-deadzone",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-quantizer",
      "type": "Workflow",
      "label": "Quantizer — worked example",
      "properties": {
        "id": "native-native-quantizer",
        "title": "Quantizer — worked example",
        "kind": "studio",
        "summary": "Rounds values to the nearest multiple of a configured interval.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 1.13. Quantized at 0 s = 1.25.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-quantizer",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-wrap-zero",
      "type": "Workflow",
      "label": "Reset above threshold — worked example",
      "properties": {
        "id": "native-native-wrap-zero",
        "title": "Reset above threshold — worked example",
        "kind": "studio",
        "summary": "Outputs zero above a threshold and passes values at or below it.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 6. Output at 0 s = 0.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Input strictly greater than threshold becomes zero; equality and lower input pass through. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-wrap-zero",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-array-map",
      "type": "Workflow",
      "label": "Array element submodel — worked example",
      "properties": {
        "id": "native-native-array-map",
        "title": "Array element submodel — worked example",
        "kind": "studio",
        "summary": "Applies a configured stateless operation independently to each array element.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Array = [1,2,3]. Mapped array at 0 s = [3,4,5].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "One pure stateless nested kernel per element. Arbitrary multi-block nested graphs, per-element state and implicit residual kernels are explicitly refused. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed. Only one pure stateless nested kernel is executed. Arbitrary multi-block or stateful nested graphs are not supported.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-array-map",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-neighborhood-map",
      "type": "Workflow",
      "label": "Neighborhood submodel — worked example",
      "properties": {
        "id": "native-native-neighborhood-map",
        "title": "Neighborhood submodel — worked example",
        "kind": "studio",
        "summary": "Applies a configured stateless operation to each image neighborhood with explicit boundary handling.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Image = [1,2,3,4,5,6,7,8,9]. Result at 0 s = [1.3333333333333333,2.3333333333333335,1.7777777777777777,3,5,3.6666666666666665,2.6666666666666665,4.333333333333333,3.111111111111111].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "One pure stateless nested kernel per bounded column-major patch with zero/clamp/wrap boundary policy. Arbitrary multi-block and stateful nested graphs are refused. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed. Only one pure stateless nested kernel is executed. Arbitrary multi-block or stateful nested graphs are not supported.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-neighborhood-map",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-pixel-map",
      "type": "Workflow",
      "label": "Pixel channel submodel — worked example",
      "properties": {
        "id": "native-native-pixel-map",
        "title": "Pixel channel submodel — worked example",
        "kind": "studio",
        "summary": "Applies a configured stateless operation to each pixel’s channel vector.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Image channels = [1,2,3,4,4,5,6,7,7,8,9,10]. Mean channel at 0 s = [4,5,6,7].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "One pure stateless nested kernel per pixel channel vector; explicit column-major channel planes. Arbitrary multi-block and stateful nested graphs are refused. Shapes and element types are explicit. Values must be finite; automatic reshaping and unit conversion are not performed. Only one pure stateless nested kernel is executed. Arbitrary multi-block or stateful nested graphs are not supported.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-pixel-map",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-multiport-switch",
      "type": "Workflow",
      "label": "Multiport switch — worked example",
      "properties": {
        "id": "native-native-multiport-switch",
        "title": "Multiport switch — worked example",
        "kind": "studio",
        "summary": "Routes one whole data port selected by a zero-based integer. Out-of-range indices stop the run.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Index = 1; First signal = [1,2,3]; Second signal = [4,5,6]. Selected signal at 0 s = [4,5,6].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "All data inputs must have exactly the output shape, quantity and element type; an invalid index stops execution.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-multiport-switch",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-manual-switch",
      "type": "Workflow",
      "label": "Manual switch — worked example",
      "properties": {
        "id": "native-native-manual-switch",
        "title": "Manual switch — worked example",
        "kind": "studio",
        "summary": "Selects a configured input without changing its shape, units or element type.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "First signal = [1,2,3]; Second signal = [4,5,6]. Selected signal at 0 s = [4,5,6].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "The selected input is configured before the run; this is not a mid-run interactive control.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-manual-switch",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-demux",
      "type": "Workflow",
      "label": "Vector splitter — worked example",
      "properties": {
        "id": "native-native-demux",
        "title": "Vector splitter — worked example",
        "kind": "studio",
        "summary": "Splits a vector into separately connectable scalar ports in element order.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Vector = [2,4,6]. First at 0 s = 2; Second at 0 s = 4; Third at 0 s = 6.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Splits into scalar logical ports only, with at most 32 output ports.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-demux",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-selector",
      "type": "Workflow",
      "label": "Element selector — worked example",
      "properties": {
        "id": "native-native-selector",
        "title": "Element selector — worked example",
        "kind": "studio",
        "summary": "Selects column-major array elements by explicit zero-based indices, preserving their order and type.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Array = [2,4,6]. Selected elements at 0 s = [6,2].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Indices are configured before execution, zero-based and interpreted in column-major element order.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-selector",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-signal-width",
      "type": "Workflow",
      "label": "Signal width — worked example",
      "properties": {
        "id": "native-native-signal-width",
        "title": "Signal width — worked example",
        "kind": "studio",
        "summary": "Reports the declared number of elements in a signal, including all matrix dimensions.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Signal = [2,4,6]. Element count at 0 s = 3.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Reports declared element count, not an inferred sample period or memory byte count.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-signal-width",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-signal-specification",
      "type": "Workflow",
      "label": "Signal specification — worked example",
      "properties": {
        "id": "native-native-signal-specification",
        "title": "Signal specification — worked example",
        "kind": "studio",
        "summary": "Requires an exact shape, quantity and element type at a named boundary.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Signal = [2,4,6]. Validated signal at 0 s = [2,4,6].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Does not cast values, resample signals or convert units.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-signal-specification",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-type-conversion",
      "type": "Workflow",
      "label": "Numeric type conversion — worked example",
      "properties": {
        "id": "native-native-type-conversion",
        "title": "Numeric type conversion — worked example",
        "kind": "studio",
        "summary": "Converts real, Boolean or 32-bit integer elements. Integer conversion truncates toward zero and saturates at the target bounds.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Input = [2.9,-4.9,6]. Integer output at 0 s = [2,-4,6].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Real, Boolean, signed32 and unsigned32 types only; complex and fixed-point scaling conversions are not supported.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-type-conversion",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-rate-transition",
      "type": "Workflow",
      "label": "Rate transition — worked example",
      "properties": {
        "id": "native-native-rate-transition",
        "title": "Rate transition — worked example",
        "kind": "studio",
        "summary": "Samples a whole input at its declared period and holds the complete value between instants on the deterministic simulation clock.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Input = [2,4,6]. Held output at 0 s = [2,4,6].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Deterministic single simulation clock and a configured output sample grid; no asynchronous task scheduling or thread-race guarantee.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-rate-transition",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-initial-value",
      "type": "Workflow",
      "label": "Initial value override — worked example",
      "properties": {
        "id": "native-native-initial-value",
        "title": "Initial value override — worked example",
        "kind": "studio",
        "summary": "Publishes the configured value at the first sample only, then passes each current input through without a sample delay.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Input = [2,4,6]. Output at 0 s = [0,0,0].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Initial values must match every declared output lane. The override occurs only at initialization.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-initial-value",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-data-store",
      "type": "Workflow",
      "label": "Sampled storage — worked example",
      "properties": {
        "id": "native-native-data-store",
        "title": "Sampled storage — worked example",
        "kind": "studio",
        "summary": "Reads a snapshot at each sample, then commits the enabled write for the next sample. Each block instance owns independent typed storage.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Write value = [2,4,6]; Write enabled = 1. Stored value at 0 s = [0,0,0].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "One writer per local storage declaration. Reads use the current snapshot; enabled writes become visible at the next sample.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-data-store",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-scope",
      "type": "Workflow",
      "label": "Signal scope — worked example",
      "properties": {
        "id": "native-native-scope",
        "title": "Signal scope — worked example",
        "kind": "studio",
        "summary": "Plots the connected signal from the engine trace. Every array element has its own named trace channel.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Signal = [2,4,6]. Observed signal at 0 s = [2,4,6].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Does not cast values, resample signals or convert units.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-scope",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-display",
      "type": "Workflow",
      "label": "Live signal display — worked example",
      "properties": {
        "id": "native-native-display",
        "title": "Live signal display — worked example",
        "kind": "studio",
        "summary": "Displays values from the completed simulation trace during playback, with units and array-element labels.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Signal = [2,4,6]. Displayed signal at 0 s = [2,4,6].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Does not cast values, resample signals or convert units. Values come from a completed run and its playback cursor, not an external live acquisition stream.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-display",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-recorder",
      "type": "Workflow",
      "label": "Signal recorder — worked example",
      "properties": {
        "id": "native-native-recorder",
        "title": "Signal recorder — worked example",
        "kind": "studio",
        "summary": "Records the connected signal on the solver trace grid and exports its times, typed metadata and values as CSV or JSON.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Signal = [2,4,6]. Recorded signal at 0 s = [2,4,6].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Does not cast values, resample signals or convert units. Recording follows the solver trace grid; no independent recorder sampling schedule or automatic file write is performed.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-recorder",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-terminator",
      "type": "Workflow",
      "label": "Signal terminator — worked example",
      "properties": {
        "id": "native-native-terminator",
        "title": "Signal terminator — worked example",
        "kind": "studio",
        "summary": "Consumes a declared signal without forwarding its numeric value. The connected flag confirms that validation and execution succeeded.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Unused signal = [2,4,6]. Connected at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Reports a Boolean connection flag; no numeric downstream copy of the consumed input is produced.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-terminator",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-assertion",
      "type": "Workflow",
      "label": "Assertion — worked example",
      "properties": {
        "id": "native-native-assertion",
        "title": "Assertion — worked example",
        "kind": "studio",
        "summary": "Stops the simulation if its Boolean condition is false.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Condition = 1. Passed at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "A failed assertion is an error. Use Stop simulation for successful conditional completion.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-assertion",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-check-range",
      "type": "Workflow",
      "label": "Static range check — worked example",
      "properties": {
        "id": "native-native-check-range",
        "title": "Static range check — worked example",
        "kind": "studio",
        "summary": "Reports whether a scalar lies inside inclusive configured bounds.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 7. Within bounds at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Scalar real input and inclusive configured bounds.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-check-range",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-check-dynamic-range",
      "type": "Workflow",
      "label": "Dynamic range check — worked example",
      "properties": {
        "id": "native-native-check-dynamic-range",
        "title": "Dynamic range check — worked example",
        "kind": "studio",
        "summary": "Reports whether a scalar lies between two input bounds. Reversed bounds are invalid.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 7; Lower bound = 0; Upper bound = 10. Within bounds at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Scalar real inputs with identical quantities; reversed bounds stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-check-dynamic-range",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-check-lower",
      "type": "Workflow",
      "label": "Static lower-bound check — worked example",
      "properties": {
        "id": "native-native-check-lower",
        "title": "Static lower-bound check — worked example",
        "kind": "studio",
        "summary": "Reports whether a scalar is greater than or equal to its configured bound.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 2. Pass at 0 s = 0.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Scalar real input; equality with the lower bound passes.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-check-lower",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-check-upper",
      "type": "Workflow",
      "label": "Static upper-bound check — worked example",
      "properties": {
        "id": "native-native-check-upper",
        "title": "Static upper-bound check — worked example",
        "kind": "studio",
        "summary": "Reports whether a scalar is less than or equal to its configured bound.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 2. Pass at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Scalar real input; equality with the upper bound passes.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-check-upper",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-check-dynamic-lower",
      "type": "Workflow",
      "label": "Dynamic lower-bound check — worked example",
      "properties": {
        "id": "native-native-check-dynamic-lower",
        "title": "Dynamic lower-bound check — worked example",
        "kind": "studio",
        "summary": "Checks a scalar against a connected inclusive lower bound.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 2; Lower bound = 3. Pass at 0 s = 0.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Scalar real inputs with the same quantity; equality passes.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-check-dynamic-lower",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-check-dynamic-upper",
      "type": "Workflow",
      "label": "Dynamic upper-bound check — worked example",
      "properties": {
        "id": "native-native-check-dynamic-upper",
        "title": "Dynamic upper-bound check — worked example",
        "kind": "studio",
        "summary": "Checks a scalar against a connected inclusive upper bound.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 2; Upper bound = 3. Pass at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Scalar real inputs with the same quantity; equality passes.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-check-dynamic-upper",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-check-gap",
      "type": "Workflow",
      "label": "Signal gap check — worked example",
      "properties": {
        "id": "native-native-check-gap",
        "title": "Signal gap check — worked example",
        "kind": "studio",
        "summary": "Reports whether the absolute difference between two inputs is within a configured tolerance.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "First value = 2; Second value = 2.4. Pass at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Scalar real inputs with equal quantities; this is an absolute difference check.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-check-gap",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-check-resolution",
      "type": "Workflow",
      "label": "Input resolution check — worked example",
      "properties": {
        "id": "native-native-check-resolution",
        "title": "Input resolution check — worked example",
        "kind": "studio",
        "summary": "Checks distance to the nearest quantization grid point with an explicit absolute tolerance.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 1.5. On grid at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Positive grid spacing and absolute tolerance smaller than half the spacing are required.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-check-resolution",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-check-static-gap",
      "type": "Workflow",
      "label": "Forbidden interval check — worked example",
      "properties": {
        "id": "native-native-check-static-gap",
        "title": "Forbidden interval check — worked example",
        "kind": "studio",
        "summary": "Passes only values outside the closed forbidden interval; values equal to either boundary fail.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 3. Outside forbidden interval at 0 s = 0.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Values exactly on either forbidden boundary fail.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-check-static-gap",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-check-dynamic-gap",
      "type": "Workflow",
      "label": "Dynamic forbidden interval check — worked example",
      "properties": {
        "id": "native-native-check-dynamic-gap",
        "title": "Dynamic forbidden interval check — worked example",
        "kind": "studio",
        "summary": "Checks that a value is outside the closed interval supplied by the current lower and upper inputs.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 5; Lower bound = 2; Upper bound = 4. Outside forbidden interval at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Reversed bounds are invalid; both forbidden boundaries are excluded from passing values.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-check-dynamic-gap",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-check-gradient",
      "type": "Workflow",
      "label": "Sample difference check — worked example",
      "properties": {
        "id": "native-native-check-gradient",
        "title": "Sample difference check — worked example",
        "kind": "studio",
        "summary": "Checks absolute per-sample change against a strict maximum. The first comparison is skipped and reports zero change.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Value = 1. Pass at 0 s = 1; Absolute sample difference at 0 s = 0.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Checks change per sample, not change divided by elapsed time; the first comparison is skipped.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-check-gradient",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-stop-simulation",
      "type": "Workflow",
      "label": "Stop simulation — worked example",
      "properties": {
        "id": "native-native-stop-simulation",
        "title": "Stop simulation — worked example",
        "kind": "studio",
        "summary": "Finishes the run successfully at the first sample where the Boolean condition is true, preserving the trace and recording the stop reason.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Stop requested = 0. Stop accepted at 0 s = 0.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Requests are evaluated on the configured sample grid; a condition between samples is acted on at the next sample.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-stop-simulation",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-playback",
      "type": "Workflow",
      "label": "Recorded signal — worked example",
      "properties": {
        "id": "native-native-playback",
        "title": "Recorded signal — worked example",
        "kind": "studio",
        "summary": "Plays a local numeric time series with linear interpolation or previous-value hold. Values outside its time range hold the nearest endpoint.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Use the configured source parameters. Signal at 0 s = 0.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "At most 4096 strictly increasing nonnegative times and 65536 values; endpoint values are held outside the table. Local numeric CSV, TSV or semicolon-delimited data are supported; spreadsheet formulas and workbook formats are not evaluated.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-playback",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-repeating-sequence",
      "type": "Workflow",
      "label": "Repeating sequence — worked example",
      "properties": {
        "id": "native-native-repeating-sequence",
        "title": "Repeating sequence — worked example",
        "kind": "studio",
        "summary": "Repeats a tabulated profile with exact simulation boundaries at every authored knot and wrap.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Use the configured source parameters. Signal at 0 s = 0.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "The first knot must be at zero and the last no later than the positive repeat period. Repeating events are bounded to 100000 per source per run.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-repeating-sequence",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-pulse",
      "type": "Workflow",
      "label": "Pulse generator — worked example",
      "properties": {
        "id": "native-native-pulse",
        "title": "Pulse generator — worked example",
        "kind": "studio",
        "summary": "Generates a periodic rectangular signal with explicit amplitude, duty fraction, phase delay and bias.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Use the configured source parameters. Signal at 0 s = 2; Signal at 0.5 s = 0; Signal at 1 s = 2.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Scalar real output; duty must be between zero and one. Exact edges are bounded to 100000 per source per run.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-pulse",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-chirp",
      "type": "Workflow",
      "label": "Linear frequency sweep — worked example",
      "properties": {
        "id": "native-native-chirp",
        "title": "Linear frequency sweep — worked example",
        "kind": "studio",
        "summary": "Sweeps frequency linearly, then continues at the final frequency without a phase discontinuity.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Use the configured source parameters. Signal at 0 s = 0; Signal at 0.75 s = 0.19509032201612825.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Only a linear frequency sweep is implemented. Before the delay the initial phase value is held; after the sweep frequency remains at its final value.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-chirp",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-uniform-random",
      "type": "Workflow",
      "label": "Uniform random source — worked example",
      "properties": {
        "id": "native-native-uniform-random",
        "title": "Uniform random source — worked example",
        "kind": "studio",
        "summary": "Produces reproducible uniform samples from a nonzero 32-bit seed and holds each sample until the next instant.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Use the configured source parameters. Signal at 0 s = 0.00006295042111003994.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Deterministic simulation noise, not a cryptographic generator. Samples lie strictly between configured bounds; seed zero is invalid.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-uniform-random",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-normal-random",
      "type": "Workflow",
      "label": "Normal random source — worked example",
      "properties": {
        "id": "native-native-normal-random",
        "title": "Normal random source — worked example",
        "kind": "studio",
        "summary": "Produces reproducible Box–Muller Gaussian samples and holds them at the declared sample period.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Use the configured source parameters. Signal at 0 s = 4.376933234944767.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Gaussian samples use the xorshift32 sequence and the cosine Box–Muller transform. This is not a power-spectral-density-normalized band-limited noise block.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-normal-random",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-counter",
      "type": "Workflow",
      "label": "Bounded counter — worked example",
      "properties": {
        "id": "native-native-counter",
        "title": "Bounded counter — worked example",
        "kind": "studio",
        "summary": "Counts at sample instants with explicit initial value, increment, limits and wrap or saturate behavior.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Use the configured source parameters. Signal at 0 s = 0; Signal at 0.75 s = 3; Signal at 1 s = 0.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Integer-valued scalar output stored as a real number; each limit and increment is bounded in magnitude by 4294967295.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-counter",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-digital-clock",
      "type": "Workflow",
      "label": "Digital clock — worked example",
      "properties": {
        "id": "native-native-digital-clock",
        "title": "Digital clock — worked example",
        "kind": "studio",
        "summary": "Samples simulation time and holds that time between instants.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Use the configured source parameters. Signal at 0 s = 0.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Reports sampled simulation time, not wall-clock time.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-native-digital-clock",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-bus-create",
      "type": "Workflow",
      "label": "Update nested battery telemetry",
      "properties": {
        "id": "native-bus-create",
        "title": "Update nested battery telemetry",
        "kind": "studio",
        "summary": "Collects typed named fields into a bus, including nested buses.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Initial-SOC = 0.5; Updated-SOC = 0.6; Cell-voltage = 3.7. Before at 1 s = 0.5; After at 1 s = 0.6.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Bus declarations must be acyclic, at most 16 levels deep, with at most 4096 leaves.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-nested-bus",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-bus-select",
      "type": "Workflow",
      "label": "Update nested battery telemetry",
      "properties": {
        "id": "native-bus-select",
        "title": "Update nested battery telemetry",
        "kind": "studio",
        "summary": "Selects one declared field or nested field from a named bus.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Initial-SOC = 0.5; Updated-SOC = 0.6; Cell-voltage = 3.7. Before at 1 s = 0.5; After at 1 s = 0.6.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Paths must exist in the declared bus version; dynamic field names are not supported.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-nested-bus",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-bus-assign",
      "type": "Workflow",
      "label": "Update nested battery telemetry",
      "properties": {
        "id": "native-bus-assign",
        "title": "Update nested battery telemetry",
        "kind": "studio",
        "summary": "Replaces selected bus fields while preserving every other field.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Initial-SOC = 0.5; Updated-SOC = 0.6; Cell-voltage = 3.7. Before at 1 s = 0.5; After at 1 s = 0.6.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "A field and one of its descendants cannot be replaced in the same assignment; replacement paths must be distinct.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-nested-bus",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-bus-to-vector",
      "type": "Workflow",
      "label": "Convert a typed bus to a vector",
      "properties": {
        "id": "native-bus-to-vector",
        "title": "Convert a typed bus to a vector",
        "kind": "studio",
        "summary": "Converts real scalar bus leaves into a vector in declaration order.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "A = 1; B = 2; C = 3. Product at 1 s = 6.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Every leaf must be a real scalar with the same quantity; heterogeneous buses cannot be numerically flattened this way.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-bus-vector",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-vector-assemble",
      "type": "Workflow",
      "label": "Connect scalar and vector blocks",
      "properties": {
        "id": "native-vector-assemble",
        "title": "Connect scalar and vector blocks",
        "kind": "studio",
        "summary": "Collects separate scalar inputs into one real vector.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "A = 1; B = 2; C = 3. Result at 1 s = 24.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Inputs are real scalars sharing one quantity; the vector has a fixed declared length.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-vector-bridge",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-vector-select",
      "type": "Workflow",
      "label": "Connect scalar and vector blocks",
      "properties": {
        "id": "native-vector-select",
        "title": "Connect scalar and vector blocks",
        "kind": "studio",
        "summary": "Selects a configured element from a real vector.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "A = 1; B = 2; C = 3. Result at 1 s = 24.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "The selected index is configured before the run; use other routing operations for dynamic selection.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-vector-bridge",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-data-store-memory",
      "type": "Workflow",
      "label": "Read and update local sampled storage",
      "properties": {
        "id": "native-data-store-memory",
        "title": "Read and update local sampled storage",
        "kind": "studio",
        "summary": "Declares local typed storage with an initial snapshot and sample period.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Increment = 1. Stored-value at 0.2 s = 2.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Exactly one local declaration and at most one writer per storage name. No global cross-model storage or same-sample write visibility.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-local-storage",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-data-store-read",
      "type": "Workflow",
      "label": "Read and update local sampled storage",
      "properties": {
        "id": "native-data-store-read",
        "title": "Read and update local sampled storage",
        "kind": "studio",
        "summary": "Reads the current snapshot of a local named storage declaration.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Increment = 1. Stored-value at 0.2 s = 2.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "The declaration must exist in the same scope. Writes made at this tick appear at the next sample.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-local-storage",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-data-store-write",
      "type": "Workflow",
      "label": "Read and update local sampled storage",
      "properties": {
        "id": "native-data-store-write",
        "title": "Read and update local sampled storage",
        "kind": "studio",
        "summary": "Writes a value for the next sample when its enable input is true.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Increment = 1. Stored-value at 0.2 s = 2.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "At most one writer is allowed per local declaration. Combine competing write decisions explicitly before this port.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-local-storage",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-goto",
      "type": "Workflow",
      "label": "Route a local named signal",
      "properties": {
        "id": "native-goto",
        "title": "Route a local named signal",
        "kind": "studio",
        "summary": "Names a local typed signal so receivers can use it without a long visible wire.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Sensor = 3. Scaled-voltage at 1 s = 6.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Exactly one sender per tag in a scope; cross-scope visibility and global tags are not supported.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-named-signal",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-from",
      "type": "Workflow",
      "label": "Route a local named signal",
      "properties": {
        "id": "native-from",
        "title": "Route a local named signal",
        "kind": "studio",
        "summary": "Receives a typed signal from a uniquely named sender in the same scope.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Sensor = 3. Scaled-voltage at 1 s = 6.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "The tag must resolve to exactly one local sender; it does not search parent or global scopes.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-named-signal",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-variant-subsystem",
      "type": "Workflow",
      "label": "Variant submodel — executable model",
      "properties": {
        "id": "native-variant-subsystem",
        "title": "Variant submodel — executable model",
        "kind": "studio",
        "summary": "Selects one compatible submodel definition before compilation.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "A3-unit input enters the selected doubling model and produces6. Selecting the tripling model in a new run produces9.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Selection is fixed before the run. Choices must have identical named interfaces; arbitrary symbolic activation expressions and runtime switching are not supported.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-variant-subsystem",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-variant-source",
      "type": "Workflow",
      "label": "Variant source — executable model",
      "properties": {
        "id": "native-variant-source",
        "title": "Variant source — executable model",
        "kind": "studio",
        "summary": "Selects an input branch before execution and removes unused inactive producers.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Selecting the first source3 and applying gain2 produces6; selecting source7 produces14.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Static zero-based selection among1–32 fixed typed branches. Shared live producers are preserved.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-variant-source",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-variant-sink",
      "type": "Workflow",
      "label": "Variant sink — executable model",
      "properties": {
        "id": "native-variant-sink",
        "title": "Variant sink — executable model",
        "kind": "studio",
        "summary": "Activates one output branch before execution; inactive branch consumers are omitted.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Input3 reaches the active gain2 and produces6. The inactive gain100 is absent from execution.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Selection is fixed before execution. This does not emit zeros to inactive branches.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-variant-sink",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-manual-variant-source",
      "type": "Workflow",
      "label": "Manual variant source — executable model",
      "properties": {
        "id": "native-manual-variant-source",
        "title": "Manual variant source — executable model",
        "kind": "studio",
        "summary": "A manually configured compile-time input branch selection.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Select source3 before the run; the following gain2 produces6.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "The selection cannot change during execution. Types and dimensions must match across all branches.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-manual-variant-source",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-manual-variant-sink",
      "type": "Workflow",
      "label": "Manual variant sink — executable model",
      "properties": {
        "id": "native-manual-variant-sink",
        "title": "Manual variant sink — executable model",
        "kind": "studio",
        "summary": "A manually configured compile-time output branch selection.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Choose the first path: input3 is doubled to6; the other branch is not executed.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "At most32 typed branches. Mid-run changes require a different runtime switch operation.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-manual-variant-sink",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-variant-start",
      "type": "Workflow",
      "label": "Variant branch start — executable model",
      "properties": {
        "id": "native-variant-start",
        "title": "Variant branch start — executable model",
        "kind": "studio",
        "summary": "Starts a statically selected output branch with inactive-branch elimination.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "The first branch takes input3 through gain2, producing6.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Selected branch paths must remain consistent with the corresponding end selection. There are no symbolic condition expressions.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-variant-start",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-variant-end",
      "type": "Workflow",
      "label": "Variant branch end — executable model",
      "properties": {
        "id": "native-variant-end",
        "title": "Variant branch end — executable model",
        "kind": "studio",
        "summary": "Selects the active input at the end of a compile-time branch region.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "The first input3 is selected and doubled downstream to6.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Selection is configured before compilation; inactive paths are omitted rather than dynamically merged.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-variant-end",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-goto-visibility",
      "type": "Workflow",
      "label": "Signal visibility scope — executable model",
      "properties": {
        "id": "native-goto-visibility",
        "title": "Signal visibility scope — executable model",
        "kind": "studio",
        "summary": "Allows one named sender to be resolved inside this scope and its descendants.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "A root sensor value3 is received inside a child submodel and doubled to6.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "A visibility declaration must match exactly one sender and its declared type in the same scope. No global lookup outside the model hierarchy.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-goto-visibility",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-signal-copy",
      "type": "Workflow",
      "label": "Owned signal copy — executable model",
      "properties": {
        "id": "native-signal-copy",
        "title": "Owned signal copy — executable model",
        "kind": "studio",
        "summary": "Materializes a typed signal as an independent native output, including declared bus leaves.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Copying [2,4,6] preserves all three values on distinct output storage.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Copies fixed typed signals and declared buses. It does not create an opaque packed object or support variable-sized data.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-signal-copy",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-type-inherit",
      "type": "Workflow",
      "label": "Inherited numeric conversion — executable model",
      "properties": {
        "id": "native-type-inherit",
        "title": "Inherited numeric conversion — executable model",
        "kind": "studio",
        "summary": "Converts a signal to the numeric element type of a connected reference signal.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Input1.9 with an integer reference7 becomes1. Changing only the reference value to200 still produces1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Real, Boolean, signed32 and unsigned32 types are supported. Complex, scaled and enumeration references are excluded.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-type-inherit",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-type-duplicate",
      "type": "Workflow",
      "label": "Same-type constraint — executable model",
      "properties": {
        "id": "native-type-duplicate",
        "title": "Same-type constraint — executable model",
        "kind": "studio",
        "summary": "Requires two independent signals to have the same numeric type; forwards the first.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Two signed32 inputs10 and20 pass; the output is10. Changing the second input to real-valued storage is rejected.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Type equality includes enumeration identity and scaled-integer metadata. Different quantities or dimensions may still be independent inputs; this is a numeric-type constraint.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-type-duplicate",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-type-propagation",
      "type": "Workflow",
      "label": "Declared type propagation — executable model",
      "properties": {
        "id": "native-type-propagation",
        "title": "Declared type propagation — executable model",
        "kind": "studio",
        "summary": "Resolves an explicitly inherited native output type within this scope before compilation.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "A constant200 with an inherited output type becomes an unsigned32 signal under the declaration.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Targets one declared native output. This is not general arithmetic fixed-point inference or automatic propagation across all submodel boundaries.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-type-propagation",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-scaled-constant",
      "type": "Workflow",
      "label": "Scaled integer constant — executable model",
      "properties": {
        "id": "native-scaled-constant",
        "title": "Scaled integer constant — executable model",
        "kind": "studio",
        "summary": "Encodes exact real-world values as integer codes with an explicit slope and bias.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Values[1.5,−0.5] with slope0.25 and bias0 have raw codes[6,−2].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Values must be exactly representable and within storage bounds. This supplies a bounded scaled-integer source, not a general fixed-point arithmetic library.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-scaled-constant",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-scaling-strip",
      "type": "Workflow",
      "label": "Scaling strip — executable model",
      "properties": {
        "id": "native-scaling-strip",
        "title": "Scaling strip — executable model",
        "kind": "studio",
        "summary": "Removes scaled-integer metadata and exposes the stored integer codes unchanged.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Stripping scaling from values[1.5,−0.5] encoded at slope0.25 exposes integer codes[6,−2].",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Requires a declared scaled-integer signal. General fixed-point arithmetic and inherited scaling inference are not implemented.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-scaling-strip",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-enum-constant",
      "type": "Workflow",
      "label": "Enumeration constant — executable model",
      "properties": {
        "id": "native-enum-constant",
        "title": "Enumeration constant — executable model",
        "kind": "studio",
        "summary": "Emits a declared named enumeration member with its exact integer code.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "ChargeMode.CC emits code1; selecting ChargeMode.CV emits code2.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Up to256 unique names and signed32 codes. Conflicting declarations are rejected. Use an explicit enumeration-code conversion before ordinary numeric operations.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-enum-constant",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-enum-cast",
      "type": "Workflow",
      "label": "Enumeration code — executable model",
      "properties": {
        "id": "native-enum-cast",
        "title": "Enumeration code — executable model",
        "kind": "studio",
        "summary": "Explicitly converts a declared enumeration signal to its integer code.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Converting the declared ChargeMode.CC member yields integer1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "The input must carry a declared enumeration identity. This does not construct arbitrary enumeration members from unvalidated integers.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-enum-cast",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-unit-system",
      "type": "Workflow",
      "label": "Authored unit policy — executable model",
      "properties": {
        "id": "native-unit-system",
        "title": "Authored unit policy — executable model",
        "kind": "studio",
        "summary": "Rejects authored unit annotations outside a configured allowed-unit set.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "An annotated2-second parameter passes an SI-style policy. Annotating the same value in centimetres is rejected when cm is not allowed.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Checks annotations, not inferred units for every equation. Unannotated parameters are not assigned a unit automatically. The root policy applies to definitions unless they declare their own policy.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-unit-system",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-subsystem",
      "type": "Workflow",
      "label": "Typed input and output of a reusable submodel",
      "properties": {
        "id": "native-subsystem",
        "title": "Typed input and output of a reusable submodel",
        "kind": "studio",
        "summary": "Groups a model behind named typed inputs and outputs so it can be used as an independent instance inside another model.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "The example selects the doubling submodel. The parent supplies a constant 3 through the named input u. Inside the child, gain 2 produces 6 and the named output y returns it to the parent. The parent Result signal is 6 at 0.2 seconds. Selecting the alternate tripling definition for another run produces 9.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Internal versioned definitions share the parent simulation and solver. Separately loaded external models with independent solver settings or lifecycle are not supported. Containment must be acyclic and at most 16 levels deep. Interfaces, node counts and expanded graphs have explicit finite budgets. The linked example uses a compile-time selector to choose an ordinary typed submodel; the basic submodel itself does not select variants or provide conditional execution.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-variant-subsystem",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-inport",
      "type": "Workflow",
      "label": "Typed input and output of a reusable submodel",
      "properties": {
        "id": "native-inport",
        "title": "Typed input and output of a reusable submodel",
        "kind": "studio",
        "summary": "Makes one named parent input available inside a submodel without changing its value or timing.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "The example selects the doubling submodel. The parent supplies a constant 3 through the named input u. Inside the child, gain 2 produces 6 and the named output y returns it to the parent. The parent Result signal is 6 at 0.2 seconds. Selecting the alternate tripling definition for another run produces 9.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "This block belongs inside a submodel definition, not at the root model scope. Missing, duplicate and undeclared boundary identifiers are rejected. A bus boundary carries its complete declared bus. It does not define or select individual external bus fields as a field-oriented boundary block would. The boundary introduces no delay, resampling, cast or unit conversion.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-variant-subsystem",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-outport",
      "type": "Workflow",
      "label": "Typed input and output of a reusable submodel",
      "properties": {
        "id": "native-outport",
        "title": "Typed input and output of a reusable submodel",
        "kind": "studio",
        "summary": "Exposes one internal signal as a named typed output of a submodel.",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "The example selects the doubling submodel. The parent supplies a constant 3 through the named input u. Inside the child, gain 2 produces 6 and the named output y returns it to the parent. The parent Result signal is 6 at 0.2 seconds. Selecting the alternate tripling definition for another run produces 9.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Exactly one boundary is required for each declared child output; private internal nodes cannot be wired directly across the boundary. An entire declared bus may cross the boundary. This does not assemble an external bus hierarchy from separate field-oriented output-boundary nodes. The boundary introduces no sample delay or numerical conversion; scalar, shaped and bus type declarations must match.",
        "url": "https://design.lemonergy.com/cosim.html?example=routing-variant-subsystem",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "topic:topic-transport",
      "type": "Topic",
      "label": "Transport and modelling",
      "properties": {
        "id": "topic-transport",
        "name": "Transport and modelling",
        "lede": "How ions move, and the equations and models that describe a cell.",
        "context": "Specify phase, direction and boundaries.",
        "example": "The same concentration difference across 10 μm gives ten times the gradient across 100 μm; at equal D, first-law flux magnitude is ten times greater.",
        "lesson_url": "https://lemonergy.com/learn/transport/ficks-first-law/",
        "lesson_label": "Open diffusion"
      }
    },
    {
      "id": "term:aging-model",
      "type": "Term",
      "label": "Aging model",
      "properties": {
        "id": "aging-model",
        "name": "Aging model",
        "aka": [
          "degradation model",
          "lifetime model"
        ],
        "section": "topic-transport",
        "definition": "A model that predicts capacity fade and resistance growth as functions of time, temperature, SOC and throughput. Empirical models fit power laws and Arrhenius terms to test data; physics-based models simulate the SEI, plating and cracking mechanisms themselves.",
        "related": [
          "square-root-of-time",
          "arrhenius",
          "calendar-aging",
          "cycle-aging",
          "remaining-useful-life",
          "digital-twin"
        ],
        "url": "https://lemonergy.com/learn/glossary/aging-model/",
        "mentions": [
          "sei",
          "state-of-charge",
          "capacity-fade",
          "impedance-rise"
        ]
      }
    },
    {
      "id": "term:state-of-health",
      "type": "Term",
      "label": "State of health",
      "properties": {
        "id": "state-of-health",
        "name": "State of health",
        "abbr": "SOH",
        "section": "topic-state",
        "definition": "A summary of how far a cell has aged, often expressed through remaining capacity or increased resistance compared with when it was new. By convention a cell has reached end of life at 80 % of its rated capacity.",
        "unit": "%",
        "related": [
          "capacity-fade",
          "impedance-rise",
          "end-of-life",
          "remaining-useful-life",
          "state-of-charge",
          "state-of-certified-energy"
        ],
        "lesson": "fundamentals/capacity-and-c-rate/#real-cells",
        "url": "https://lemonergy.com/learn/glossary/state-of-health/",
        "mentions": [
          "nominal-capacity"
        ]
      }
    },
    {
      "id": "term:bms",
      "type": "Term",
      "label": "Battery management system",
      "properties": {
        "id": "bms",
        "name": "Battery management system",
        "abbr": "BMS",
        "section": "topic-pack",
        "definition": "The electronics and software that keep a battery inside its safe window: measuring every cell voltage and many temperatures, estimating SOC and SOH, balancing cells, computing current limits, controlling the contactors and reporting over the vehicle network.",
        "related": [
          "state-of-charge",
          "cell-balancing",
          "state-of-power",
          "cell-supervision-circuit",
          "contactor",
          "can-bus"
        ],
        "lesson": "fundamentals/battery-basics/#cell-module-pack",
        "url": "https://lemonergy.com/learn/glossary/bms/",
        "mentions": [
          "state-of-health",
          "cell-voltage"
        ]
      }
    },
    {
      "id": "term:remaining-useful-life",
      "type": "Term",
      "label": "Remaining useful life",
      "properties": {
        "id": "remaining-useful-life",
        "name": "Remaining useful life",
        "abbr": "RUL",
        "section": "topic-state",
        "definition": "A prediction of how many cycles, or how much time, a battery has left before reaching end of life. It is estimated from the trend of state of health, and is uncertain near a knee point where fade accelerates.",
        "related": [
          "state-of-health",
          "end-of-life",
          "knee-point",
          "cycle-life"
        ],
        "url": "https://lemonergy.com/learn/glossary/remaining-useful-life/",
        "mentions": []
      }
    }
  ]
}
