{
  "node": {
    "id": "term:plant-model",
    "type": "Term",
    "label": "Plant model",
    "properties": {
      "id": "plant-model",
      "name": "Plant model",
      "aka": [
        "system model"
      ],
      "section": "topic-data",
      "definition": "A model of the system being controlled — cells, pack, cooling loop, charger — as distinct from the controller itself. Engineers tune and verify BMS software against it in model-, software- and hardware-in-the-loop tests, so its fidelity, often an equivalent circuit model coupled to a thermal model, limits how much those tests prove.",
      "related": [
        "hil",
        "equivalent-circuit-model",
        "thermal-model",
        "digital-twin",
        "battery-emulator"
      ],
      "url": "https://lemonergy.com/learn/glossary/plant-model/",
      "mentions": [
        "charger",
        "bms",
        "firmware"
      ]
    }
  },
  "edges": [
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-constant",
      "source": "term:plant-model",
      "target": "workflow:native-native-constant",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-step",
      "source": "term:plant-model",
      "target": "workflow:native-native-step",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-ramp",
      "source": "term:plant-model",
      "target": "workflow:native-native-ramp",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-sine",
      "source": "term:plant-model",
      "target": "workflow:native-native-sine",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-time",
      "source": "term:plant-model",
      "target": "workflow:native-native-time",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-dot-product",
      "source": "term:plant-model",
      "target": "workflow:native-native-dot-product",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-matrix-multiply",
      "source": "term:plant-model",
      "target": "workflow:native-native-matrix-multiply",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-bias",
      "source": "term:plant-model",
      "target": "workflow:native-native-bias",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-math-function",
      "source": "term:plant-model",
      "target": "workflow:native-native-math-function",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-polynomial",
      "source": "term:plant-model",
      "target": "workflow:native-native-polynomial",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-reshape",
      "source": "term:plant-model",
      "target": "workflow:native-native-reshape",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-rounding",
      "source": "term:plant-model",
      "target": "workflow:native-native-rounding",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-trigonometric",
      "source": "term:plant-model",
      "target": "workflow:native-native-trigonometric",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-vector-concatenate",
      "source": "term:plant-model",
      "target": "workflow:native-native-vector-concatenate",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-complex-polar",
      "source": "term:plant-model",
      "target": "workflow:native-native-complex-polar",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-complex-parts",
      "source": "term:plant-model",
      "target": "workflow:native-native-complex-parts",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-find-nonzero",
      "source": "term:plant-model",
      "target": "workflow:native-native-find-nonzero",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-polar-complex",
      "source": "term:plant-model",
      "target": "workflow:native-native-polar-complex",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-product-elements",
      "source": "term:plant-model",
      "target": "workflow:native-native-product-elements",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-parts-complex",
      "source": "term:plant-model",
      "target": "workflow:native-native-parts-complex",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-sine-function",
      "source": "term:plant-model",
      "target": "workflow:native-native-sine-function",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-squeeze",
      "source": "term:plant-model",
      "target": "workflow:native-native-squeeze",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-sample-time-math",
      "source": "term:plant-model",
      "target": "workflow:native-native-sample-time-math",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-assignment",
      "source": "term:plant-model",
      "target": "workflow:native-native-assignment",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-permute-dimensions",
      "source": "term:plant-model",
      "target": "workflow:native-native-permute-dimensions",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-adjustable-gain",
      "source": "term:plant-model",
      "target": "workflow:native-native-adjustable-gain",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-algebraic-constraint",
      "source": "term:plant-model",
      "target": "workflow:native-native-algebraic-constraint",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-reduce-elements",
      "source": "term:plant-model",
      "target": "workflow:native-native-reduce-elements",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-transpose",
      "source": "term:plant-model",
      "target": "workflow:native-native-transpose",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-diagonal-matrix",
      "source": "term:plant-model",
      "target": "workflow:native-native-diagonal-matrix",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-cross-product",
      "source": "term:plant-model",
      "target": "workflow:native-native-cross-product",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-identity-matrix",
      "source": "term:plant-model",
      "target": "workflow:native-native-identity-matrix",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-matrix-concatenate",
      "source": "term:plant-model",
      "target": "workflow:native-native-matrix-concatenate",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-gram-matrix",
      "source": "term:plant-model",
      "target": "workflow:native-native-gram-matrix",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-expand-scalar",
      "source": "term:plant-model",
      "target": "workflow:native-native-expand-scalar",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-extract-diagonal",
      "source": "term:plant-model",
      "target": "workflow:native-native-extract-diagonal",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-hermitian-transpose",
      "source": "term:plant-model",
      "target": "workflow:native-native-hermitian-transpose",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-is-hermitian",
      "source": "term:plant-model",
      "target": "workflow:native-native-is-hermitian",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-is-symmetric",
      "source": "term:plant-model",
      "target": "workflow:native-native-is-symmetric",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-is-triangular",
      "source": "term:plant-model",
      "target": "workflow:native-native-is-triangular",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-permute-matrix",
      "source": "term:plant-model",
      "target": "workflow:native-native-permute-matrix",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-submatrix",
      "source": "term:plant-model",
      "target": "workflow:native-native-submatrix",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-boolean-operator",
      "source": "term:plant-model",
      "target": "workflow:native-native-boolean-operator",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-compare-constant",
      "source": "term:plant-model",
      "target": "workflow:native-native-compare-constant",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-compare-zero",
      "source": "term:plant-model",
      "target": "workflow:native-native-compare-zero",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-interval-test",
      "source": "term:plant-model",
      "target": "workflow:native-native-interval-test",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-dynamic-interval",
      "source": "term:plant-model",
      "target": "workflow:native-native-dynamic-interval",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-bit-clear",
      "source": "term:plant-model",
      "target": "workflow:native-native-bit-clear",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-bit-set",
      "source": "term:plant-model",
      "target": "workflow:native-native-bit-set",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-bit-pack",
      "source": "term:plant-model",
      "target": "workflow:native-native-bit-pack",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-bitwise-operator",
      "source": "term:plant-model",
      "target": "workflow:native-native-bitwise-operator",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-truth-table",
      "source": "term:plant-model",
      "target": "workflow:native-native-truth-table",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-extract-bits",
      "source": "term:plant-model",
      "target": "workflow:native-native-extract-bits",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-float32-bits",
      "source": "term:plant-model",
      "target": "workflow:native-native-float32-bits",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-integer-bits",
      "source": "term:plant-model",
      "target": "workflow:native-native-integer-bits",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-arithmetic-shift",
      "source": "term:plant-model",
      "target": "workflow:native-native-arithmetic-shift",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-lookup-1d",
      "source": "term:plant-model",
      "target": "workflow:native-native-lookup-1d",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-lookup-2d",
      "source": "term:plant-model",
      "target": "workflow:native-native-lookup-2d",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-lookup-nd",
      "source": "term:plant-model",
      "target": "workflow:native-native-lookup-nd",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-prelookup",
      "source": "term:plant-model",
      "target": "workflow:native-native-prelookup",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-interpolate-prelookup",
      "source": "term:plant-model",
      "target": "workflow:native-native-interpolate-prelookup",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-direct-lookup",
      "source": "term:plant-model",
      "target": "workflow:native-native-direct-lookup",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-dynamic-lookup",
      "source": "term:plant-model",
      "target": "workflow:native-native-dynamic-lookup",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-quantized-sine",
      "source": "term:plant-model",
      "target": "workflow:native-native-quantized-sine",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-delay",
      "source": "term:plant-model",
      "target": "workflow:native-native-delay",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-discrete-integrator",
      "source": "term:plant-model",
      "target": "workflow:native-native-discrete-integrator",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-discrete-derivative",
      "source": "term:plant-model",
      "target": "workflow:native-native-discrete-derivative",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-discrete-filter",
      "source": "term:plant-model",
      "target": "workflow:native-native-discrete-filter",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-fir-filter",
      "source": "term:plant-model",
      "target": "workflow:native-native-fir-filter",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-resettable-delay",
      "source": "term:plant-model",
      "target": "workflow:native-native-resettable-delay",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-variable-delay",
      "source": "term:plant-model",
      "target": "workflow:native-native-variable-delay",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-change",
      "source": "term:plant-model",
      "target": "workflow:native-native-change",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-increase",
      "source": "term:plant-model",
      "target": "workflow:native-native-increase",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-decrease",
      "source": "term:plant-model",
      "target": "workflow:native-native-decrease",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-rising-edge",
      "source": "term:plant-model",
      "target": "workflow:native-native-rising-edge",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-falling-edge",
      "source": "term:plant-model",
      "target": "workflow:native-native-falling-edge",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-running-minmax",
      "source": "term:plant-model",
      "target": "workflow:native-native-running-minmax",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-sample-hold",
      "source": "term:plant-model",
      "target": "workflow:native-native-sample-hold",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-discrete-state-space",
      "source": "term:plant-model",
      "target": "workflow:native-native-discrete-state-space",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-sampled-rate-limiter",
      "source": "term:plant-model",
      "target": "workflow:native-native-sampled-rate-limiter",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-sampled-backlash",
      "source": "term:plant-model",
      "target": "workflow:native-native-sampled-backlash",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-sampled-relay",
      "source": "term:plant-model",
      "target": "workflow:native-native-sampled-relay",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-conditional-hold",
      "source": "term:plant-model",
      "target": "workflow:native-native-conditional-hold",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-difference",
      "source": "term:plant-model",
      "target": "workflow:native-native-difference",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-tapped-delay",
      "source": "term:plant-model",
      "target": "workflow:native-native-tapped-delay",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-rise-positive",
      "source": "term:plant-model",
      "target": "workflow:native-native-rise-positive",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-fall-nonpositive",
      "source": "term:plant-model",
      "target": "workflow:native-native-fall-nonpositive",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-rise-nonnegative",
      "source": "term:plant-model",
      "target": "workflow:native-native-rise-nonnegative",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-fall-negative",
      "source": "term:plant-model",
      "target": "workflow:native-native-fall-negative",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-resettable-minmax",
      "source": "term:plant-model",
      "target": "workflow:native-native-resettable-minmax",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-discrete-zero-pole",
      "source": "term:plant-model",
      "target": "workflow:native-native-discrete-zero-pole",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-discrete-first-order",
      "source": "term:plant-model",
      "target": "workflow:native-native-discrete-first-order",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-discrete-lead-lag",
      "source": "term:plant-model",
      "target": "workflow:native-native-discrete-lead-lag",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-discrete-real-zero",
      "source": "term:plant-model",
      "target": "workflow:native-native-discrete-real-zero",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-dynamic-rate-limiter",
      "source": "term:plant-model",
      "target": "workflow:native-native-dynamic-rate-limiter",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-duty-pwm",
      "source": "term:plant-model",
      "target": "workflow:native-native-duty-pwm",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-variable-pulse",
      "source": "term:plant-model",
      "target": "workflow:native-native-variable-pulse",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-state-space",
      "source": "term:plant-model",
      "target": "workflow:native-native-state-space",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-transfer-function",
      "source": "term:plant-model",
      "target": "workflow:native-native-transfer-function",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-second-order-integrator",
      "source": "term:plant-model",
      "target": "workflow:native-native-second-order-integrator",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-bounded-integrator",
      "source": "term:plant-model",
      "target": "workflow:native-native-bounded-integrator",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-zero-pole",
      "source": "term:plant-model",
      "target": "workflow:native-native-zero-pole",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-descriptor-state-space",
      "source": "term:plant-model",
      "target": "workflow:native-native-descriptor-state-space",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-filtered-derivative",
      "source": "term:plant-model",
      "target": "workflow:native-native-filtered-derivative",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-dynamic-saturation",
      "source": "term:plant-model",
      "target": "workflow:native-native-dynamic-saturation",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-friction",
      "source": "term:plant-model",
      "target": "workflow:native-native-friction",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-deadzone",
      "source": "term:plant-model",
      "target": "workflow:native-native-deadzone",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-dynamic-deadzone",
      "source": "term:plant-model",
      "target": "workflow:native-native-dynamic-deadzone",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-quantizer",
      "source": "term:plant-model",
      "target": "workflow:native-native-quantizer",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-wrap-zero",
      "source": "term:plant-model",
      "target": "workflow:native-native-wrap-zero",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-transport-delay",
      "source": "term:plant-model",
      "target": "workflow:native-native-transport-delay",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-variable-time-delay",
      "source": "term:plant-model",
      "target": "workflow:native-native-variable-time-delay",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-variable-transport-delay",
      "source": "term:plant-model",
      "target": "workflow:native-native-variable-transport-delay",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-step-memory",
      "source": "term:plant-model",
      "target": "workflow:native-native-step-memory",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-linear-hold",
      "source": "term:plant-model",
      "target": "workflow:native-native-linear-hold",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-propagation-delay",
      "source": "term:plant-model",
      "target": "workflow:native-native-propagation-delay",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-array-map",
      "source": "term:plant-model",
      "target": "workflow:native-native-array-map",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-neighborhood-map",
      "source": "term:plant-model",
      "target": "workflow:native-native-neighborhood-map",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-pixel-map",
      "source": "term:plant-model",
      "target": "workflow:native-native-pixel-map",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-multiport-switch",
      "source": "term:plant-model",
      "target": "workflow:native-native-multiport-switch",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-manual-switch",
      "source": "term:plant-model",
      "target": "workflow:native-native-manual-switch",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-demux",
      "source": "term:plant-model",
      "target": "workflow:native-native-demux",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-selector",
      "source": "term:plant-model",
      "target": "workflow:native-native-selector",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-signal-width",
      "source": "term:plant-model",
      "target": "workflow:native-native-signal-width",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-signal-specification",
      "source": "term:plant-model",
      "target": "workflow:native-native-signal-specification",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-type-conversion",
      "source": "term:plant-model",
      "target": "workflow:native-native-type-conversion",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-rate-transition",
      "source": "term:plant-model",
      "target": "workflow:native-native-rate-transition",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-initial-value",
      "source": "term:plant-model",
      "target": "workflow:native-native-initial-value",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-data-store",
      "source": "term:plant-model",
      "target": "workflow:native-native-data-store",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-scope",
      "source": "term:plant-model",
      "target": "workflow:native-native-scope",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-display",
      "source": "term:plant-model",
      "target": "workflow:native-native-display",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-recorder",
      "source": "term:plant-model",
      "target": "workflow:native-native-recorder",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-terminator",
      "source": "term:plant-model",
      "target": "workflow:native-native-terminator",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-assertion",
      "source": "term:plant-model",
      "target": "workflow:native-native-assertion",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-check-range",
      "source": "term:plant-model",
      "target": "workflow:native-native-check-range",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-check-dynamic-range",
      "source": "term:plant-model",
      "target": "workflow:native-native-check-dynamic-range",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-check-lower",
      "source": "term:plant-model",
      "target": "workflow:native-native-check-lower",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-check-upper",
      "source": "term:plant-model",
      "target": "workflow:native-native-check-upper",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-check-dynamic-lower",
      "source": "term:plant-model",
      "target": "workflow:native-native-check-dynamic-lower",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-check-dynamic-upper",
      "source": "term:plant-model",
      "target": "workflow:native-native-check-dynamic-upper",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-check-gap",
      "source": "term:plant-model",
      "target": "workflow:native-native-check-gap",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-check-resolution",
      "source": "term:plant-model",
      "target": "workflow:native-native-check-resolution",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-check-static-gap",
      "source": "term:plant-model",
      "target": "workflow:native-native-check-static-gap",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-check-dynamic-gap",
      "source": "term:plant-model",
      "target": "workflow:native-native-check-dynamic-gap",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-check-gradient",
      "source": "term:plant-model",
      "target": "workflow:native-native-check-gradient",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-stop-simulation",
      "source": "term:plant-model",
      "target": "workflow:native-native-stop-simulation",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-playback",
      "source": "term:plant-model",
      "target": "workflow:native-native-playback",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-repeating-sequence",
      "source": "term:plant-model",
      "target": "workflow:native-native-repeating-sequence",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-pulse",
      "source": "term:plant-model",
      "target": "workflow:native-native-pulse",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-chirp",
      "source": "term:plant-model",
      "target": "workflow:native-native-chirp",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-uniform-random",
      "source": "term:plant-model",
      "target": "workflow:native-native-uniform-random",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-normal-random",
      "source": "term:plant-model",
      "target": "workflow:native-native-normal-random",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-counter",
      "source": "term:plant-model",
      "target": "workflow:native-native-counter",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-native-digital-clock",
      "source": "term:plant-model",
      "target": "workflow:native-native-digital-clock",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-bus-create",
      "source": "term:plant-model",
      "target": "workflow:native-bus-create",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-bus-select",
      "source": "term:plant-model",
      "target": "workflow:native-bus-select",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-bus-assign",
      "source": "term:plant-model",
      "target": "workflow:native-bus-assign",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-bus-to-vector",
      "source": "term:plant-model",
      "target": "workflow:native-bus-to-vector",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-vector-assemble",
      "source": "term:plant-model",
      "target": "workflow:native-vector-assemble",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-vector-select",
      "source": "term:plant-model",
      "target": "workflow:native-vector-select",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-data-store-memory",
      "source": "term:plant-model",
      "target": "workflow:native-data-store-memory",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-data-store-read",
      "source": "term:plant-model",
      "target": "workflow:native-data-store-read",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-data-store-write",
      "source": "term:plant-model",
      "target": "workflow:native-data-store-write",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-goto",
      "source": "term:plant-model",
      "target": "workflow:native-goto",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-from",
      "source": "term:plant-model",
      "target": "workflow:native-from",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-variant-subsystem",
      "source": "term:plant-model",
      "target": "workflow:native-variant-subsystem",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-variant-source",
      "source": "term:plant-model",
      "target": "workflow:native-variant-source",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-variant-sink",
      "source": "term:plant-model",
      "target": "workflow:native-variant-sink",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-manual-variant-source",
      "source": "term:plant-model",
      "target": "workflow:native-manual-variant-source",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-manual-variant-sink",
      "source": "term:plant-model",
      "target": "workflow:native-manual-variant-sink",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-variant-start",
      "source": "term:plant-model",
      "target": "workflow:native-variant-start",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-variant-end",
      "source": "term:plant-model",
      "target": "workflow:native-variant-end",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-goto-visibility",
      "source": "term:plant-model",
      "target": "workflow:native-goto-visibility",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-signal-copy",
      "source": "term:plant-model",
      "target": "workflow:native-signal-copy",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-type-inherit",
      "source": "term:plant-model",
      "target": "workflow:native-type-inherit",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-type-duplicate",
      "source": "term:plant-model",
      "target": "workflow:native-type-duplicate",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-type-propagation",
      "source": "term:plant-model",
      "target": "workflow:native-type-propagation",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-scaled-constant",
      "source": "term:plant-model",
      "target": "workflow:native-scaled-constant",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-scaling-strip",
      "source": "term:plant-model",
      "target": "workflow:native-scaling-strip",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-enum-constant",
      "source": "term:plant-model",
      "target": "workflow:native-enum-constant",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-enum-cast",
      "source": "term:plant-model",
      "target": "workflow:native-enum-cast",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-unit-system",
      "source": "term:plant-model",
      "target": "workflow:native-unit-system",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-subsystem",
      "source": "term:plant-model",
      "target": "workflow:native-subsystem",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-inport",
      "source": "term:plant-model",
      "target": "workflow:native-inport",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:plant-model/workflow:native-outport",
      "source": "term:plant-model",
      "target": "workflow:native-outport",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:belongsTo/term:plant-model/topic:topic-data",
      "source": "term:plant-model",
      "target": "topic:topic-data",
      "type": "belongsTo",
      "properties": {
        "sourceFile": "terms.json"
      }
    },
    {
      "id": "edge:relatedTo/term:plant-model/term:hil",
      "source": "term:plant-model",
      "target": "term:hil",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:plant-model/term:equivalent-circuit-model",
      "source": "term:plant-model",
      "target": "term:equivalent-circuit-model",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:plant-model/term:thermal-model",
      "source": "term:plant-model",
      "target": "term:thermal-model",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:plant-model/term:digital-twin",
      "source": "term:plant-model",
      "target": "term:digital-twin",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:plant-model/term:battery-emulator",
      "source": "term:plant-model",
      "target": "term:battery-emulator",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:mentions/plant-model/charger",
      "source": "term:plant-model",
      "target": "term:charger",
      "type": "mentions",
      "properties": {
        "sourceFile": "terms.json",
        "method": "build_glossary.mention_index + mentions",
        "field": "definition",
        "meaning": "Text mention; not a causal claim"
      }
    },
    {
      "id": "edge:mentions/plant-model/bms",
      "source": "term:plant-model",
      "target": "term:bms",
      "type": "mentions",
      "properties": {
        "sourceFile": "terms.json",
        "method": "build_glossary.mention_index + mentions",
        "field": "definition",
        "meaning": "Text mention; not a causal claim"
      }
    },
    {
      "id": "edge:mentions/plant-model/firmware",
      "source": "term:plant-model",
      "target": "term:firmware",
      "type": "mentions",
      "properties": {
        "sourceFile": "terms.json",
        "method": "build_glossary.mention_index + mentions",
        "field": "definition",
        "meaning": "Text mention; 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-delay",
      "type": "Workflow",
      "label": "Sample delay — worked example",
      "properties": {
        "id": "native-native-delay",
        "title": "Sample delay — worked example",
        "kind": "studio",
        "summary": "Returns an input from a configured number of sample ticks earlier.",
        "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. Delayed at 0 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-delay",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-discrete-integrator",
      "type": "Workflow",
      "label": "Discrete integrator — worked example",
      "properties": {
        "id": "native-native-discrete-integrator",
        "title": "Discrete integrator — worked example",
        "kind": "studio",
        "summary": "Accumulates a signal over elapsed sample intervals with optional output 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 = 2. Integral at 1 s = 2.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Elapsed-time rectangular integration with configured gain, initial value and bounds; zero elapsed duration at initialization. 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-discrete-integrator",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-discrete-derivative",
      "type": "Workflow",
      "label": "Discrete derivative — worked example",
      "properties": {
        "id": "native-native-discrete-derivative",
        "title": "Discrete derivative — worked example",
        "kind": "studio",
        "summary": "Estimates a rate of change from successive samples and their elapsed 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": "Value = 2. Derivative at 0 s = 0.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Backward difference at configured ticks; initialization output zero. 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-discrete-derivative",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-discrete-filter",
      "type": "Workflow",
      "label": "Discrete transfer function — worked example",
      "properties": {
        "id": "native-native-discrete-filter",
        "title": "Discrete transfer function — worked example",
        "kind": "studio",
        "summary": "Applies a causal discrete transfer function with separate input and output histories.",
        "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. Filtered 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-discrete-filter",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-fir-filter",
      "type": "Workflow",
      "label": "FIR filter — worked example",
      "properties": {
        "id": "native-native-fir-filter",
        "title": "FIR filter — worked example",
        "kind": "studio",
        "summary": "Applies a finite set of weighted current and previous input samples.",
        "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. Filtered 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-fir-filter",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-resettable-delay",
      "type": "Workflow",
      "label": "Resettable sample delay — worked example",
      "properties": {
        "id": "native-native-resettable-delay",
        "title": "Resettable sample delay — worked example",
        "kind": "studio",
        "summary": "Returns the previous sample or resets its stored value on a Boolean command.",
        "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; Reset = 1. Delayed 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-resettable-delay",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-variable-delay",
      "type": "Workflow",
      "label": "Variable integer delay — worked example",
      "properties": {
        "id": "native-native-variable-delay",
        "title": "Variable integer delay — worked example",
        "kind": "studio",
        "summary": "Selects an input from a connected number of previous sample ticks.",
        "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; Delay samples = 0. Delayed 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-variable-delay",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-change",
      "type": "Workflow",
      "label": "Detect change — worked example",
      "properties": {
        "id": "native-native-change",
        "title": "Detect change — worked example",
        "kind": "studio",
        "summary": "Reports whether the input changed since its previous sample.",
        "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. Detected 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-change",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-increase",
      "type": "Workflow",
      "label": "Detect increase — worked example",
      "properties": {
        "id": "native-native-increase",
        "title": "Detect increase — worked example",
        "kind": "studio",
        "summary": "Reports whether the input increased since its previous sample.",
        "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. Detected 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-increase",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-decrease",
      "type": "Workflow",
      "label": "Detect decrease — worked example",
      "properties": {
        "id": "native-native-decrease",
        "title": "Detect decrease — worked example",
        "kind": "studio",
        "summary": "Reports whether the input decreased since its previous sample.",
        "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. Detected 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-decrease",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-rising-edge",
      "type": "Workflow",
      "label": "Detect rising edge — worked example",
      "properties": {
        "id": "native-native-rising-edge",
        "title": "Detect rising edge — worked example",
        "kind": "studio",
        "summary": "Reports a Boolean transition from false to 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": "Value = 1. Detected 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-rising-edge",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-falling-edge",
      "type": "Workflow",
      "label": "Detect falling edge — worked example",
      "properties": {
        "id": "native-native-falling-edge",
        "title": "Detect falling edge — worked example",
        "kind": "studio",
        "summary": "Reports a Boolean transition from true to 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": "Value = 0. Detected 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-falling-edge",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-running-minmax",
      "type": "Workflow",
      "label": "Running minimum and maximum — worked example",
      "properties": {
        "id": "native-native-running-minmax",
        "title": "Running minimum and maximum — worked example",
        "kind": "studio",
        "summary": "Tracks the smallest and largest observed values for each 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. Minimum at 0 s = 3; Maximum 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-running-minmax",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-sample-hold",
      "type": "Workflow",
      "label": "Zero-order hold — worked example",
      "properties": {
        "id": "native-native-sample-hold",
        "title": "Zero-order hold — worked example",
        "kind": "studio",
        "summary": "Captures the input at sample ticks and holds it unchanged between them.",
        "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. Held 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-sample-hold",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-discrete-state-space",
      "type": "Workflow",
      "label": "Discrete state space — worked example",
      "properties": {
        "id": "native-native-discrete-state-space",
        "title": "Discrete state space — worked example",
        "kind": "studio",
        "summary": "Advances a discrete linear state model and computes its output at each tick.",
        "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 = 1. Output at 0 s = 0.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Real, dense, constant A/B/C/D; up to128 discrete states; difference-equation updates occur once per tick. 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-discrete-state-space",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-sampled-rate-limiter",
      "type": "Workflow",
      "label": "Sampled rate limiter — worked example",
      "properties": {
        "id": "native-native-sampled-rate-limiter",
        "title": "Sampled rate limiter — worked example",
        "kind": "studio",
        "summary": "Limits how quickly each sampled output can rise or fall.",
        "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 = 10. Limited at 1 s = 2.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Actual elapsed sample duration limits each output change. Ideal continuous slew tracking and continuous zero-crossing localization 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-sampled-rate-limiter",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-sampled-backlash",
      "type": "Workflow",
      "label": "Sampled backlash — worked example",
      "properties": {
        "id": "native-native-sampled-backlash",
        "title": "Sampled backlash — worked example",
        "kind": "studio",
        "summary": "Models a sampled mechanical deadband whose output retains its previous position inside the gap.",
        "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": "Backlash memory updates on configured sample instants. Continuous reversal localization is 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-sampled-backlash",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-sampled-relay",
      "type": "Workflow",
      "label": "Sampled hysteresis relay — worked example",
      "properties": {
        "id": "native-native-sampled-relay",
        "title": "Sampled hysteresis relay — worked example",
        "kind": "studio",
        "summary": "Switches between two output levels using separate on and off thresholds.",
        "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 = 5.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Hysteresis commits on configured sample instants. Continuous threshold event localization is 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-sampled-relay",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-conditional-hold",
      "type": "Workflow",
      "label": "Conditional hold — worked example",
      "properties": {
        "id": "native-native-conditional-hold",
        "title": "Conditional hold — worked example",
        "kind": "studio",
        "summary": "Updates a held value only while a Boolean 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": "Value = 5; Enable = 0. Held 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-conditional-hold",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-difference",
      "type": "Workflow",
      "label": "Sample difference — worked example",
      "properties": {
        "id": "native-native-difference",
        "title": "Sample difference — worked example",
        "kind": "studio",
        "summary": "Subtracts the previous sample from the current sample without dividing by 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": "Value = 3. Difference 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-difference",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-tapped-delay",
      "type": "Workflow",
      "label": "Tapped sample delay — worked example",
      "properties": {
        "id": "native-native-tapped-delay",
        "title": "Tapped sample delay — worked example",
        "kind": "studio",
        "summary": "Returns several previous samples simultaneously, newest 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": "Value = 5. Previous samples at 0 s = [0,0,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-tapped-delay",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-rise-positive",
      "type": "Workflow",
      "label": "Detect rise positive — worked example",
      "properties": {
        "id": "native-native-rise-positive",
        "title": "Detect rise positive — worked example",
        "kind": "studio",
        "summary": "Reports a sampled crossing from zero or negative into positive 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": "Value = 1. Detected at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Sampled crossings at zero have explicit strict/non-strict variants. Continuous event localization, arbitrary crossing offset and event notification 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-rise-positive",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-fall-nonpositive",
      "type": "Workflow",
      "label": "Detect fall nonpositive — worked example",
      "properties": {
        "id": "native-native-fall-nonpositive",
        "title": "Detect fall nonpositive — worked example",
        "kind": "studio",
        "summary": "Reports a sampled crossing from positive into zero or negative 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": "Value = 0. Detected 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-fall-nonpositive",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-rise-nonnegative",
      "type": "Workflow",
      "label": "Detect rise nonnegative — worked example",
      "properties": {
        "id": "native-native-rise-nonnegative",
        "title": "Detect rise nonnegative — worked example",
        "kind": "studio",
        "summary": "Reports a sampled crossing from negative into zero or positive 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": "Value = 0. Detected 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-rise-nonnegative",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-fall-negative",
      "type": "Workflow",
      "label": "Detect fall negative — worked example",
      "properties": {
        "id": "native-native-fall-negative",
        "title": "Detect fall negative — worked example",
        "kind": "studio",
        "summary": "Reports a sampled crossing from zero or positive into negative 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": "Value = -1. Detected 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-fall-negative",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-resettable-minmax",
      "type": "Workflow",
      "label": "Resettable running minimum and maximum — worked example",
      "properties": {
        "id": "native-native-resettable-minmax",
        "title": "Resettable running minimum and maximum — worked example",
        "kind": "studio",
        "summary": "Tracks running extrema and resets both to the current value on command.",
        "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; Reset = 0. Minimum at 0 s = 3; Maximum at 0 s = 3.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Per-element running extrema with Boolean reset, evaluated at configured sample instants. 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-resettable-minmax",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-discrete-zero-pole",
      "type": "Workflow",
      "label": "Discrete pole-zero model — worked example",
      "properties": {
        "id": "native-native-discrete-zero-pole",
        "title": "Discrete pole-zero model — worked example",
        "kind": "studio",
        "summary": "Builds a causal discrete filter from real-coefficient poles, zeros and 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": "Input = 1. Output at 0 s = 0.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Proper real-coefficient transfer in z, conjugate-compatible roots, zero input/output histories. 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-discrete-zero-pole",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-discrete-first-order",
      "type": "Workflow",
      "label": "Discrete first-order filter — worked example",
      "properties": {
        "id": "native-native-discrete-first-order",
        "title": "Discrete first-order filter — worked example",
        "kind": "studio",
        "summary": "Smooths a signal with a stable first-order discrete filter.",
        "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. Output at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Stable scalar pole parameter |a|<1; y[k]=(1-a)u[k]+a*y[k-1]. 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-discrete-first-order",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-discrete-lead-lag",
      "type": "Workflow",
      "label": "Discrete lead-lag filter — worked example",
      "properties": {
        "id": "native-native-discrete-lead-lag",
        "title": "Discrete lead-lag filter — worked example",
        "kind": "studio",
        "summary": "Applies a discrete lead-lag response derived from configured continuous time constants.",
        "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 = 5. Output at 0 s = 3.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Bilinear-transform realization with nonnegative lead time, positive lag time and explicit sample time. 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-discrete-lead-lag",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-discrete-real-zero",
      "type": "Workflow",
      "label": "Discrete real-zero filter — worked example",
      "properties": {
        "id": "native-native-discrete-real-zero",
        "title": "Discrete real-zero filter — worked example",
        "kind": "studio",
        "summary": "Applies a gain and one real zero to successive input samples.",
        "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 = 3. Output at 0 s = 6.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "gain*(u[k]-zero*u[k-1]), zero initial history. 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-discrete-real-zero",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-dynamic-rate-limiter",
      "type": "Workflow",
      "label": "Sampled dynamic rate limiter — worked example",
      "properties": {
        "id": "native-native-dynamic-rate-limiter",
        "title": "Sampled dynamic rate limiter — worked example",
        "kind": "studio",
        "summary": "Limits sampled output changes using connected rising and falling rate 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 = 10; Rising rate = 2; Falling rate magnitude = 3. Limited at 1 s = 2.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Connected rising/falling rates limit elapsed sample changes. Ideal continuous-rate dynamics 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-dynamic-rate-limiter",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-duty-pwm",
      "type": "Workflow",
      "label": "Sampled duty-controlled PWM — worked example",
      "properties": {
        "id": "native-native-duty-pwm",
        "title": "Sampled duty-controlled PWM — worked example",
        "kind": "studio",
        "summary": "Generates sampled pulse-width modulation from a connected duty ratio.",
        "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": "Duty ratio = 0.25. Pulse at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Connected duty ratio is compared with a configured carrier at exact sample instants. Carrier crossings between samples are not continuously localized. 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-duty-pwm",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-variable-pulse",
      "type": "Workflow",
      "label": "Sampled variable pulse generator — worked example",
      "properties": {
        "id": "native-native-variable-pulse",
        "title": "Sampled variable pulse generator — worked example",
        "kind": "studio",
        "summary": "Generates sampled pulses from connected period and duty inputs while preserving carrier phase.",
        "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": "Period = 0.5; Duty ratio = 0.25. Pulse at 0 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Connected period and duty drive sampled elapsed-time phase accumulation without resetting phase. Continuous carrier crossings between samples are not localized. 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-variable-pulse",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-state-space",
      "type": "Workflow",
      "label": "Continuous state space — worked example",
      "properties": {
        "id": "native-native-state-space",
        "title": "Continuous state space — worked example",
        "kind": "studio",
        "summary": "Simulates a continuous linear state model with configurable A, B, C and D matrices.",
        "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 = 1. Output at 1 s = 0.6321205588285577.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Real, dense, constant A/B/C/D; up to128 states per block; graph/solver resource limits also apply. 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-state-space",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-transfer-function",
      "type": "Workflow",
      "label": "Continuous transfer function — worked example",
      "properties": {
        "id": "native-native-transfer-function",
        "title": "Continuous transfer function — worked example",
        "kind": "studio",
        "summary": "Simulates a proper continuous transfer function using companion states.",
        "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 = 1. Output at 1 s = 0.6321205588285577.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Real proper transfer functions, companion states, degree≤64. Improper transfer functions 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-transfer-function",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-second-order-integrator",
      "type": "Workflow",
      "label": "Second-order integrator — worked example",
      "properties": {
        "id": "native-native-second-order-integrator",
        "title": "Second-order integrator — worked example",
        "kind": "studio",
        "summary": "Integrates acceleration into velocity and position.",
        "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": "Acceleration = 2. Position at 1 s = 1; Velocity at 1 s = 2.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Position and velocity states, configurable initial values; no external reset or state-limit event handling. 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-second-order-integrator",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-bounded-integrator",
      "type": "Workflow",
      "label": "Bounded continuous integrator — worked example",
      "properties": {
        "id": "native-native-bounded-integrator",
        "title": "Bounded continuous integrator — worked example",
        "kind": "studio",
        "summary": "Integrates a rate while preventing further outward motion at 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": "Rate = 2. Integral at 1 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-bounded-integrator",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-zero-pole",
      "type": "Workflow",
      "label": "Continuous pole-zero model — worked example",
      "properties": {
        "id": "native-native-zero-pole",
        "title": "Continuous pole-zero model — worked example",
        "kind": "studio",
        "summary": "Simulates a real-coefficient continuous model defined by poles, zeros and 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": "Input = 1. Output at 1 s = 0.8646647167633873.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Real-coefficient proper models; complex roots must form conjugate-compatible real polynomials, degree≤64. 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-zero-pole",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-descriptor-state-space",
      "type": "Workflow",
      "label": "Nonsingular descriptor state model — worked example",
      "properties": {
        "id": "native-native-descriptor-state-space",
        "title": "Nonsingular descriptor state model — worked example",
        "kind": "studio",
        "summary": "Simulates a descriptor state equation when its E matrix is nonsingular.",
        "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 = 1. Output at 1 s = 0.6321205588285577.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Nonsingular E is solved with pivoted elimination at configuration time. Singular descriptor DAEs and algebraic state constraints are explicitly 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-descriptor-state-space",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-filtered-derivative",
      "type": "Workflow",
      "label": "Filtered continuous derivative — worked example",
      "properties": {
        "id": "native-native-filtered-derivative",
        "title": "Filtered continuous derivative — worked example",
        "kind": "studio",
        "summary": "Estimates a continuous derivative through a finite-bandwidth filter.",
        "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 = 1. Derivative at 1 s = 0.03368973499542734.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Finite-bandwidth derivative s/(tau*s+1), tau>0. An ideal derivative of arbitrary input, accepted-step numerical derivative and discontinuity impulse semantics 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-filtered-derivative",
        "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-transport-delay",
      "type": "Workflow",
      "label": "Continuous transport delay — worked example",
      "properties": {
        "id": "native-native-transport-delay",
        "title": "Continuous transport delay — worked example",
        "kind": "studio",
        "summary": "Delays a continuous signal using accepted simulation history.",
        "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 = 5. Delayed at 1 s = 5.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Fixed strictly positive delay; immutable accepted-step linear history; source and prehistory discontinuities propagate through cascaded delays. Method-of-steps bound and finite buffer are enforced. 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-transport-delay",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-variable-time-delay",
      "type": "Workflow",
      "label": "Variable time delay — worked example",
      "properties": {
        "id": "native-native-variable-time-delay",
        "title": "Variable time delay — worked example",
        "kind": "studio",
        "summary": "Reads accepted signal history at a connected time 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 = 5; Delay = 0.2. Delayed at 1 s = 5.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Real accepted-step history at t minus connected delay; configured positive minimum/maximum bounds, method-of-steps limit and finite buffer. Moving discontinuity arrival is not root-localized. 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-variable-time-delay",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-variable-transport-delay",
      "type": "Workflow",
      "label": "Variable transport progress delay — worked example",
      "properties": {
        "id": "native-native-variable-transport-delay",
        "title": "Variable transport progress delay — worked example",
        "kind": "studio",
        "summary": "Delays a signal according to accumulated transport progress rather than a simple time offset.",
        "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 = 5; Transit time = 0.2. Transported at 1 s = 5.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Continuous progress state integrates 1/transit-time; history is interpolated at progress minus one. Positive transit bounds and finite buffer; moving discontinuity arrival is not root-localized. 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-variable-transport-delay",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-step-memory",
      "type": "Workflow",
      "label": "Accepted solver-step memory — worked example",
      "properties": {
        "id": "native-native-step-memory",
        "title": "Accepted solver-step memory — worked example",
        "kind": "studio",
        "summary": "Returns the input from the previous accepted solver step.",
        "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 = 5. Previous accepted input at 0 s = 0.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Previous accepted major-step input with explicit initial output; pure trial reads and transactional accepted-step commits. Rejected steps do not advance memory. 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-memory",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-linear-hold",
      "type": "Workflow",
      "label": "Causal first-order hold — worked example",
      "properties": {
        "id": "native-native-linear-hold",
        "title": "Causal first-order hold — worked example",
        "kind": "studio",
        "summary": "Reconstructs a linear signal from the latest two captured samples.",
        "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 = 5. Linear reconstruction at 0 s = 5.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Causal linear extrapolation from the latest two samples at simulation-start-relative ticks; initial slope zero. Capture uses pre-commit graph inputs; no future-sample interpolation. 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-linear-hold",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-native-propagation-delay",
      "type": "Workflow",
      "label": "Boolean transport propagation delay — worked example",
      "properties": {
        "id": "native-native-propagation-delay",
        "title": "Boolean transport propagation delay — worked example",
        "kind": "studio",
        "summary": "Delays accepted Boolean transitions while preserving their transport 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": "Input = 1. Delayed at 1 s = 1.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Accepted Boolean transitions use a fixed positive timestamped transport delay and propagated boundaries. Inertial pulse suppression and dynamic propagation delay 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-propagation-delay",
        "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-data",
      "type": "Topic",
      "label": "Data, communication and electronics",
      "properties": {
        "id": "topic-data",
        "name": "Data, communication and electronics",
        "lede": "The control units, chips, protocols and file formats through which a battery is measured, controlled and logged.",
        "context": "Separate quantities from encoding and transport.",
        "example": "2500 in a log might mean 25.00 °C, 2.5 V or raw counts. Units and scale must accompany the value.",
        "lesson_url": "https://lemonergy.com/learn/fundamentals/battery-basics/",
        "lesson_label": "Open battery basics"
      }
    },
    {
      "id": "term:hil",
      "type": "Term",
      "label": "Hardware-in-the-loop",
      "properties": {
        "id": "hil",
        "name": "Hardware-in-the-loop",
        "abbr": "HIL",
        "aka": [
          "SIL",
          "MIL",
          "software-in-the-loop",
          "model-in-the-loop"
        ],
        "section": "topic-data",
        "definition": "Testing a real BMS controller against a real-time simulation of the battery, vehicle and charger, so faults that would be dangerous on real cells can be injected safely. It follows model-in-the-loop and software-in-the-loop, where the same logic is tested as a model or as code on a PC.",
        "related": [
          "battery-emulator",
          "fpga",
          "bmu",
          "functional-safety",
          "equivalent-circuit-model",
          "fault-injection-testing"
        ],
        "url": "https://lemonergy.com/learn/glossary/hil/",
        "mentions": [
          "charger",
          "bms"
        ]
      }
    },
    {
      "id": "term:equivalent-circuit-model",
      "type": "Term",
      "label": "Equivalent circuit model",
      "properties": {
        "id": "equivalent-circuit-model",
        "name": "Equivalent circuit model",
        "abbr": "ECM",
        "aka": [
          "Thevenin model"
        ],
        "section": "topic-transport",
        "definition": "A cell model built from a voltage source for OCV, a series resistor and one or more RC pairs for the slower dynamics. Its few parameters are fitted from pulse tests, and it is what most battery management systems run in real time.",
        "related": [
          "rc-pair",
          "open-circuit-voltage",
          "hppc",
          "kalman-filter",
          "single-particle-model"
        ],
        "url": "https://lemonergy.com/learn/glossary/equivalent-circuit-model/",
        "mentions": []
      }
    },
    {
      "id": "term:thermal-model",
      "type": "Term",
      "label": "Thermal model",
      "properties": {
        "id": "thermal-model",
        "name": "Thermal model",
        "aka": [
          "lumped thermal model"
        ],
        "section": "topic-thermal",
        "definition": "A model of cell temperature: at its simplest one thermal mass with heat generation inside and convection outside, at its most detailed a 3D simulation of the pack. Temperature feeds back into every rate, so electrical and thermal models are usually solved together.",
        "related": [
          "heat-generation",
          "thermal-management",
          "arrhenius",
          "newman-model",
          "thermal-characterisation"
        ],
        "url": "https://lemonergy.com/learn/glossary/thermal-model/",
        "mentions": [
          "thermal-mass",
          "heat-transfer-modes"
        ]
      }
    },
    {
      "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": []
      }
    },
    {
      "id": "term:battery-emulator",
      "type": "Term",
      "label": "Battery and cell emulator",
      "properties": {
        "id": "battery-emulator",
        "name": "Battery and cell emulator",
        "section": "topic-data",
        "definition": "A programmable power source that behaves like a battery or like each cell of a string, so a BMS or charger can be tested at any voltage, state of charge or fault without real cells. Cell emulators drive every AFE input separately.",
        "related": [
          "hil",
          "afe",
          "fpga",
          "cycler"
        ],
        "url": "https://lemonergy.com/learn/glossary/battery-emulator/",
        "mentions": [
          "charger",
          "state-of-charge",
          "bms"
        ]
      }
    },
    {
      "id": "term:charger",
      "type": "Term",
      "label": "Charger",
      "properties": {
        "id": "charger",
        "name": "Charger",
        "section": "topic-charging",
        "definition": "The power electronics that convert mains or DC supply into the controlled current and voltage a battery needs. For lithium-ion it runs the CC-CV profile within the limits the BMS communicates, and stops rather than floats when the cell is full.",
        "related": [
          "cc-cv-charging",
          "bms",
          "onboard-charger",
          "dc-fast-charging"
        ],
        "url": "https://lemonergy.com/learn/glossary/charger/",
        "mentions": []
      }
    },
    {
      "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:firmware",
      "type": "Term",
      "label": "Firmware",
      "properties": {
        "id": "firmware",
        "name": "Firmware",
        "aka": [
          "embedded software",
          "BMS software"
        ],
        "section": "topic-data",
        "definition": "The software that runs on a BMS or charger controller. Its version decides how SOC, limits and faults behave, so it is tracked like a part number, updated by flashing over CAN or over the air, and recorded in the battery passport.",
        "related": [
          "mcu",
          "flashing",
          "bmu",
          "battery-passport",
          "functional-safety"
        ],
        "url": "https://lemonergy.com/learn/glossary/firmware/",
        "mentions": [
          "charger",
          "state-of-charge",
          "bms",
          "over-the-air-update"
        ]
      }
    }
  ]
}
