{
  "id": "interface",
  "title": "The precision service dock",
  "subtitle": "Borrowing exact-constraint design from precision machines to make modular robotics practical.",
  "overview": "A proposed common datum with separate typed resource islands, independent preload and physical verification. Contact geometry is explicit; performance still needs a bench test.",
  "camera": {
    "position": [
      1.2,
      0.9,
      1.2
    ],
    "target": [
      0.07,
      0.14,
      0
    ]
  },
  "groups": [
    {
      "id": "upper",
      "position": [
        0,
        0,
        0
      ],
      "explode": [
        0,
        0.35,
        0
      ]
    },
    {
      "id": "services",
      "position": [
        0,
        0,
        0
      ],
      "explode": [
        0.3,
        0,
        0.22
      ]
    }
  ],
  "parts": [
    {
      "id": "base-plate",
      "component": "datum",
      "type": "box",
      "position": [
        0,
        0.025,
        0
      ],
      "material": "metal",
      "size": [
        0.62,
        0.05,
        0.52
      ],
      "color": "#86988a"
    },
    {
      "id": "upper-plate",
      "component": "carrier",
      "type": "box",
      "position": [
        0,
        0.23,
        0
      ],
      "material": "metal",
      "size": [
        0.56,
        0.06,
        0.46
      ],
      "group": "upper",
      "color": "#d3d1bd"
    },
    {
      "id": "foot-0",
      "component": "datum",
      "type": "cylinder",
      "position": [
        -0.24,
        -0.005,
        -0.19
      ],
      "material": "dark",
      "radius": 0.035,
      "height": 0.04
    },
    {
      "id": "base-fastener-0",
      "component": "datum",
      "type": "cylinder",
      "position": [
        -0.24,
        0.058,
        -0.19
      ],
      "material": "metal",
      "radius": 0.012,
      "height": 0.016,
      "segments": 6,
      "color": "#47564b"
    },
    {
      "id": "carrier-fastener-0",
      "component": "carrier",
      "type": "cylinder",
      "position": [
        -0.24,
        0.272,
        -0.19
      ],
      "material": "metal",
      "radius": 0.011,
      "height": 0.018,
      "segments": 6,
      "group": "upper",
      "color": "#576658"
    },
    {
      "id": "foot-1",
      "component": "datum",
      "type": "cylinder",
      "position": [
        0.24,
        -0.005,
        -0.19
      ],
      "material": "dark",
      "radius": 0.035,
      "height": 0.04
    },
    {
      "id": "base-fastener-1",
      "component": "datum",
      "type": "cylinder",
      "position": [
        0.24,
        0.058,
        -0.19
      ],
      "material": "metal",
      "radius": 0.012,
      "height": 0.016,
      "segments": 6,
      "color": "#47564b"
    },
    {
      "id": "carrier-fastener-1",
      "component": "carrier",
      "type": "cylinder",
      "position": [
        0.24,
        0.272,
        -0.19
      ],
      "material": "metal",
      "radius": 0.011,
      "height": 0.018,
      "segments": 6,
      "group": "upper",
      "color": "#576658"
    },
    {
      "id": "foot-2",
      "component": "datum",
      "type": "cylinder",
      "position": [
        -0.24,
        -0.005,
        0.19
      ],
      "material": "dark",
      "radius": 0.035,
      "height": 0.04
    },
    {
      "id": "base-fastener-2",
      "component": "datum",
      "type": "cylinder",
      "position": [
        -0.24,
        0.058,
        0.19
      ],
      "material": "metal",
      "radius": 0.012,
      "height": 0.016,
      "segments": 6,
      "color": "#47564b"
    },
    {
      "id": "carrier-fastener-2",
      "component": "carrier",
      "type": "cylinder",
      "position": [
        -0.24,
        0.272,
        0.19
      ],
      "material": "metal",
      "radius": 0.011,
      "height": 0.018,
      "segments": 6,
      "group": "upper",
      "color": "#576658"
    },
    {
      "id": "foot-3",
      "component": "datum",
      "type": "cylinder",
      "position": [
        0.24,
        -0.005,
        0.19
      ],
      "material": "dark",
      "radius": 0.035,
      "height": 0.04
    },
    {
      "id": "base-fastener-3",
      "component": "datum",
      "type": "cylinder",
      "position": [
        0.24,
        0.058,
        0.19
      ],
      "material": "metal",
      "radius": 0.012,
      "height": 0.016,
      "segments": 6,
      "color": "#47564b"
    },
    {
      "id": "carrier-fastener-3",
      "component": "carrier",
      "type": "cylinder",
      "position": [
        0.24,
        0.272,
        0.19
      ],
      "material": "metal",
      "radius": 0.011,
      "height": 0.018,
      "segments": 6,
      "group": "upper",
      "color": "#576658"
    },
    {
      "id": "contact-island-0",
      "component": "grooves",
      "type": "box",
      "position": [
        0.18,
        0.083,
        0
      ],
      "material": "metal",
      "size": [
        0.13,
        0.06,
        0.1
      ],
      "rotation": [
        0,
        0,
        0
      ],
      "color": "#5d7361"
    },
    {
      "id": "groove-rod-0--1",
      "component": "grooves",
      "type": "cylinder",
      "position": [
        0.18,
        0.12,
        -0.018
      ],
      "material": "metal",
      "radius": 0.012,
      "height": 0.1,
      "axis": "x",
      "rotation": [
        0,
        0,
        0
      ],
      "color": "#bcc6bc"
    },
    {
      "id": "groove-rod-0-1",
      "component": "grooves",
      "type": "cylinder",
      "position": [
        0.18,
        0.12,
        0.018
      ],
      "material": "metal",
      "radius": 0.012,
      "height": 0.1,
      "axis": "x",
      "rotation": [
        0,
        0,
        0
      ],
      "color": "#bcc6bc"
    },
    {
      "id": "datum-ball-0",
      "component": "balls",
      "type": "sphere",
      "position": [
        0.18,
        0.15232645975048922,
        0
      ],
      "material": "metal",
      "radius": 0.025,
      "group": "upper",
      "color": "#d9ddd1"
    },
    {
      "id": "ball-stud-0",
      "component": "balls",
      "type": "cylinder",
      "position": [
        0.18,
        0.185,
        0
      ],
      "material": "metal",
      "radius": 0.015,
      "height": 0.03,
      "group": "upper",
      "color": "#aab6a7"
    },
    {
      "id": "island-screw-0--1",
      "component": "grooves",
      "type": "cylinder",
      "position": [
        0.135,
        0.117,
        0
      ],
      "material": "metal",
      "radius": 0.006,
      "height": 0.009,
      "segments": 6,
      "color": "#435247"
    },
    {
      "id": "island-screw-0-1",
      "component": "grooves",
      "type": "cylinder",
      "position": [
        0.22499999999999998,
        0.117,
        0
      ],
      "material": "metal",
      "radius": 0.006,
      "height": 0.009,
      "segments": 6,
      "color": "#435247"
    },
    {
      "id": "contact-island-1",
      "component": "grooves",
      "type": "box",
      "position": [
        -0.08999999999999996,
        0.083,
        0.15588457268119896
      ],
      "material": "metal",
      "size": [
        0.13,
        0.06,
        0.1
      ],
      "rotation": [
        0,
        -119.99999999999999,
        0
      ],
      "color": "#5d7361"
    },
    {
      "id": "groove-rod-1--1",
      "component": "grooves",
      "type": "cylinder",
      "position": [
        -0.07441154273188005,
        0.12,
        0.16488457268119897
      ],
      "material": "metal",
      "radius": 0.012,
      "height": 0.1,
      "axis": "x",
      "rotation": [
        0,
        -119.99999999999999,
        0
      ],
      "color": "#bcc6bc"
    },
    {
      "id": "groove-rod-1-1",
      "component": "grooves",
      "type": "cylinder",
      "position": [
        -0.10558845726811986,
        0.12,
        0.14688457268119895
      ],
      "material": "metal",
      "radius": 0.012,
      "height": 0.1,
      "axis": "x",
      "rotation": [
        0,
        -119.99999999999999,
        0
      ],
      "color": "#bcc6bc"
    },
    {
      "id": "datum-ball-1",
      "component": "balls",
      "type": "sphere",
      "position": [
        -0.08999999999999996,
        0.15232645975048922,
        0.15588457268119896
      ],
      "material": "metal",
      "radius": 0.025,
      "group": "upper",
      "color": "#d9ddd1"
    },
    {
      "id": "ball-stud-1",
      "component": "balls",
      "type": "cylinder",
      "position": [
        -0.08999999999999996,
        0.185,
        0.15588457268119896
      ],
      "material": "metal",
      "radius": 0.015,
      "height": 0.03,
      "group": "upper",
      "color": "#aab6a7"
    },
    {
      "id": "island-screw-1--1",
      "component": "grooves",
      "type": "cylinder",
      "position": [
        -0.06749999999999996,
        0.117,
        0.11691342951089922
      ],
      "material": "metal",
      "radius": 0.006,
      "height": 0.009,
      "segments": 6,
      "color": "#435247"
    },
    {
      "id": "island-screw-1-1",
      "component": "grooves",
      "type": "cylinder",
      "position": [
        -0.11249999999999995,
        0.117,
        0.1948557158514987
      ],
      "material": "metal",
      "radius": 0.006,
      "height": 0.009,
      "segments": 6,
      "color": "#435247"
    },
    {
      "id": "contact-island-2",
      "component": "grooves",
      "type": "box",
      "position": [
        -0.09000000000000008,
        0.083,
        -0.15588457268119893
      ],
      "material": "metal",
      "size": [
        0.13,
        0.06,
        0.1
      ],
      "rotation": [
        0,
        -239.99999999999997,
        0
      ],
      "color": "#5d7361"
    },
    {
      "id": "groove-rod-2--1",
      "component": "grooves",
      "type": "cylinder",
      "position": [
        -0.10558845726811997,
        0.12,
        -0.14688457268119892
      ],
      "material": "metal",
      "radius": 0.012,
      "height": 0.1,
      "axis": "x",
      "rotation": [
        0,
        -239.99999999999997,
        0
      ],
      "color": "#bcc6bc"
    },
    {
      "id": "groove-rod-2-1",
      "component": "grooves",
      "type": "cylinder",
      "position": [
        -0.07441154273188019,
        0.12,
        -0.16488457268119894
      ],
      "material": "metal",
      "radius": 0.012,
      "height": 0.1,
      "axis": "x",
      "rotation": [
        0,
        -239.99999999999997,
        0
      ],
      "color": "#bcc6bc"
    },
    {
      "id": "datum-ball-2",
      "component": "balls",
      "type": "sphere",
      "position": [
        -0.09000000000000008,
        0.15232645975048922,
        -0.15588457268119893
      ],
      "material": "metal",
      "radius": 0.025,
      "group": "upper",
      "color": "#d9ddd1"
    },
    {
      "id": "ball-stud-2",
      "component": "balls",
      "type": "cylinder",
      "position": [
        -0.09000000000000008,
        0.185,
        -0.15588457268119893
      ],
      "material": "metal",
      "radius": 0.015,
      "height": 0.03,
      "group": "upper",
      "color": "#aab6a7"
    },
    {
      "id": "island-screw-2--1",
      "component": "grooves",
      "type": "cylinder",
      "position": [
        -0.06750000000000006,
        0.117,
        -0.1169134295108992
      ],
      "material": "metal",
      "radius": 0.006,
      "height": 0.009,
      "segments": 6,
      "color": "#435247"
    },
    {
      "id": "island-screw-2-1",
      "component": "grooves",
      "type": "cylinder",
      "position": [
        -0.1125000000000001,
        0.117,
        -0.19485571585149866
      ],
      "material": "metal",
      "radius": 0.006,
      "height": 0.009,
      "segments": 6,
      "color": "#435247"
    },
    {
      "id": "clamp-mount-0",
      "component": "preload",
      "type": "box",
      "position": [
        0.20698178762275454,
        0.095,
        0.1391928733192891
      ],
      "material": "metal",
      "size": [
        0.06,
        0.09,
        0.055
      ],
      "color": "#83917c"
    },
    {
      "id": "clamp-pin-0",
      "component": "preload",
      "type": "cylinder",
      "position": [
        0.20698178762275454,
        0.14,
        0.1391928733192891
      ],
      "material": "metal",
      "radius": 0.008,
      "height": 0.075,
      "axis": "z",
      "color": "#434f42"
    },
    {
      "id": "clamp-arm-0",
      "component": "preload",
      "type": "box",
      "position": [
        0.20698178762275454,
        0.255,
        0.1391928733192891
      ],
      "material": "metal",
      "size": [
        0.065,
        0.025,
        0.035
      ],
      "color": "#9a674d"
    },
    {
      "id": "clamp-adjuster-0",
      "component": "preload",
      "type": "cylinder",
      "position": [
        0.20698178762275454,
        0.23,
        0.1391928733192891
      ],
      "material": "metal",
      "radius": 0.009,
      "height": 0.06,
      "color": "#b6bfb0"
    },
    {
      "id": "preload-pad-0",
      "component": "preload",
      "type": "cylinder",
      "position": [
        0.20698178762275454,
        0.2,
        0.1391928733192891
      ],
      "material": "polymer",
      "radius": 0.015,
      "height": 0.008
    },
    {
      "id": "clamp-mount-1",
      "component": "preload",
      "type": "box",
      "position": [
        -0.239758662173403,
        0.095,
        0.08897218574983555
      ],
      "material": "metal",
      "size": [
        0.06,
        0.09,
        0.055
      ],
      "color": "#83917c"
    },
    {
      "id": "clamp-pin-1",
      "component": "preload",
      "type": "cylinder",
      "position": [
        -0.239758662173403,
        0.14,
        0.08897218574983555
      ],
      "material": "metal",
      "radius": 0.008,
      "height": 0.075,
      "axis": "z",
      "color": "#434f42"
    },
    {
      "id": "clamp-arm-1",
      "component": "preload",
      "type": "box",
      "position": [
        -0.239758662173403,
        0.255,
        0.08897218574983555
      ],
      "material": "metal",
      "size": [
        0.065,
        0.025,
        0.035
      ],
      "color": "#9a674d"
    },
    {
      "id": "clamp-adjuster-1",
      "component": "preload",
      "type": "cylinder",
      "position": [
        -0.239758662173403,
        0.23,
        0.08897218574983555
      ],
      "material": "metal",
      "radius": 0.009,
      "height": 0.06,
      "color": "#b6bfb0"
    },
    {
      "id": "preload-pad-1",
      "component": "preload",
      "type": "cylinder",
      "position": [
        -0.239758662173403,
        0.2,
        0.08897218574983555
      ],
      "material": "polymer",
      "radius": 0.015,
      "height": 0.008
    },
    {
      "id": "clamp-mount-2",
      "component": "preload",
      "type": "box",
      "position": [
        0.03277687455064848,
        0.095,
        -0.2281650590691246
      ],
      "material": "metal",
      "size": [
        0.06,
        0.09,
        0.055
      ],
      "color": "#83917c"
    },
    {
      "id": "clamp-pin-2",
      "component": "preload",
      "type": "cylinder",
      "position": [
        0.03277687455064848,
        0.14,
        -0.2281650590691246
      ],
      "material": "metal",
      "radius": 0.008,
      "height": 0.075,
      "axis": "z",
      "color": "#434f42"
    },
    {
      "id": "clamp-arm-2",
      "component": "preload",
      "type": "box",
      "position": [
        0.03277687455064848,
        0.255,
        -0.2281650590691246
      ],
      "material": "metal",
      "size": [
        0.065,
        0.025,
        0.035
      ],
      "color": "#9a674d"
    },
    {
      "id": "clamp-adjuster-2",
      "component": "preload",
      "type": "cylinder",
      "position": [
        0.03277687455064848,
        0.23,
        -0.2281650590691246
      ],
      "material": "metal",
      "radius": 0.009,
      "height": 0.06,
      "color": "#b6bfb0"
    },
    {
      "id": "preload-pad-2",
      "component": "preload",
      "type": "cylinder",
      "position": [
        0.03277687455064848,
        0.2,
        -0.2281650590691246
      ],
      "material": "polymer",
      "radius": 0.015,
      "height": 0.008
    },
    {
      "id": "service-bracket",
      "component": "services",
      "type": "box",
      "position": [
        0.35,
        0.12,
        0
      ],
      "material": "metal",
      "size": [
        0.09,
        0.2,
        0.4
      ],
      "group": "services",
      "color": "#94a18e"
    },
    {
      "id": "socket-body-0",
      "component": "services",
      "type": "cylinder",
      "position": [
        0.35,
        0.2,
        -0.12
      ],
      "material": "metal",
      "radius": 0.029,
      "height": 0.09,
      "group": "services",
      "color": "#6697ad",
      "cutaway": true
    },
    {
      "id": "socket-rim-0",
      "component": "services",
      "type": "torus",
      "position": [
        0.35,
        0.246,
        -0.12
      ],
      "material": "metal",
      "radius": 0.026,
      "tube": 0.004,
      "axis": "y",
      "group": "services",
      "color": "#6697ad"
    },
    {
      "id": "isolating-poppet-0",
      "component": "isolation",
      "type": "cylinder",
      "position": [
        0.35,
        0.212,
        -0.12
      ],
      "material": "metal",
      "radius": 0.013,
      "height": 0.035,
      "group": "services",
      "color": "#c3c8bb"
    },
    {
      "id": "seal-0",
      "component": "isolation",
      "type": "torus",
      "position": [
        0.35,
        0.234,
        -0.12
      ],
      "material": "polymer",
      "radius": 0.014,
      "tube": 0.003,
      "axis": "y",
      "group": "services",
      "color": "#394c40"
    },
    {
      "id": "return-spring-0",
      "component": "isolation",
      "group": "services",
      "type": "pipe",
      "path": [
        [
          0.362,
          0.165,
          -0.12
        ],
        [
          0.36039230484541324,
          0.16572916666666668,
          -0.11399999999999999
        ],
        [
          0.356,
          0.16645833333333335,
          -0.10960769515458674
        ],
        [
          0.35,
          0.16718750000000002,
          -0.108
        ],
        [
          0.344,
          0.1679166666666667,
          -0.10960769515458674
        ],
        [
          0.3396076951545867,
          0.16864583333333333,
          -0.11399999999999999
        ],
        [
          0.33799999999999997,
          0.169375,
          -0.12
        ],
        [
          0.3396076951545867,
          0.17010416666666667,
          -0.126
        ],
        [
          0.344,
          0.17083333333333334,
          -0.13039230484541325
        ],
        [
          0.35,
          0.1715625,
          -0.132
        ],
        [
          0.356,
          0.17229166666666668,
          -0.13039230484541325
        ],
        [
          0.36039230484541324,
          0.17302083333333335,
          -0.126
        ],
        [
          0.362,
          0.17375000000000002,
          -0.12
        ],
        [
          0.36039230484541324,
          0.17447916666666669,
          -0.114
        ],
        [
          0.356,
          0.17520833333333335,
          -0.10960769515458674
        ],
        [
          0.35,
          0.1759375,
          -0.108
        ],
        [
          0.344,
          0.17666666666666667,
          -0.10960769515458672
        ],
        [
          0.3396076951545867,
          0.17739583333333334,
          -0.114
        ],
        [
          0.33799999999999997,
          0.178125,
          -0.12
        ],
        [
          0.3396076951545867,
          0.17885416666666668,
          -0.12599999999999997
        ],
        [
          0.344,
          0.17958333333333334,
          -0.13039230484541325
        ],
        [
          0.35,
          0.18031250000000001,
          -0.132
        ],
        [
          0.356,
          0.18104166666666668,
          -0.13039230484541325
        ],
        [
          0.36039230484541324,
          0.18177083333333335,
          -0.126
        ],
        [
          0.362,
          0.1825,
          -0.12
        ],
        [
          0.36039230484541324,
          0.18322916666666667,
          -0.11399999999999999
        ],
        [
          0.356,
          0.18395833333333333,
          -0.10960769515458674
        ],
        [
          0.35,
          0.1846875,
          -0.108
        ],
        [
          0.344,
          0.18541666666666667,
          -0.10960769515458674
        ],
        [
          0.3396076951545867,
          0.18614583333333334,
          -0.11399999999999998
        ],
        [
          0.33799999999999997,
          0.186875,
          -0.11999999999999998
        ],
        [
          0.3396076951545867,
          0.18760416666666668,
          -0.12599999999999997
        ],
        [
          0.344,
          0.18833333333333335,
          -0.13039230484541325
        ],
        [
          0.3499999999999999,
          0.18906250000000002,
          -0.132
        ],
        [
          0.356,
          0.1897916666666667,
          -0.13039230484541325
        ],
        [
          0.36039230484541324,
          0.19052083333333333,
          -0.126
        ],
        [
          0.362,
          0.19125,
          -0.12000000000000001
        ],
        [
          0.36039230484541324,
          0.19197916666666667,
          -0.114
        ],
        [
          0.356,
          0.19270833333333334,
          -0.10960769515458674
        ],
        [
          0.35,
          0.1934375,
          -0.108
        ],
        [
          0.344,
          0.19416666666666668,
          -0.10960769515458674
        ],
        [
          0.3396076951545867,
          0.19489583333333335,
          -0.11399999999999999
        ],
        [
          0.33799999999999997,
          0.19562500000000002,
          -0.11999999999999998
        ],
        [
          0.3396076951545867,
          0.19635416666666666,
          -0.12599999999999997
        ],
        [
          0.344,
          0.19708333333333333,
          -0.13039230484541325
        ],
        [
          0.3499999999999999,
          0.1978125,
          -0.132
        ],
        [
          0.356,
          0.19854166666666667,
          -0.13039230484541325
        ],
        [
          0.36039230484541324,
          0.19927083333333334,
          -0.126
        ],
        [
          0.362,
          0.2,
          -0.12000000000000001
        ]
      ],
      "radius": 0.0015,
      "color": "#7f8c7c",
      "material": "metal"
    },
    {
      "id": "key-block-0",
      "component": "keys",
      "type": "box",
      "position": [
        0.395,
        0.14,
        -0.12
      ],
      "material": "metal",
      "size": [
        0.016,
        0.025,
        0.027
      ],
      "group": "services",
      "color": "#6697ad"
    },
    {
      "id": "island-bolt-0--0.028",
      "component": "services",
      "type": "cylinder",
      "position": [
        0.32199999999999995,
        0.23,
        -0.12
      ],
      "material": "metal",
      "radius": 0.0035,
      "height": 0.015,
      "group": "services",
      "segments": 6,
      "color": "#3b5142"
    },
    {
      "id": "island-bolt-0-0.028",
      "component": "services",
      "type": "cylinder",
      "position": [
        0.378,
        0.23,
        -0.12
      ],
      "material": "metal",
      "radius": 0.0035,
      "height": 0.015,
      "group": "services",
      "segments": 6,
      "color": "#3b5142"
    },
    {
      "id": "socket-body-1",
      "component": "services",
      "type": "cylinder",
      "position": [
        0.35,
        0.2,
        0
      ],
      "material": "metal",
      "radius": 0.029,
      "height": 0.09,
      "group": "services",
      "color": "#b08856",
      "cutaway": true
    },
    {
      "id": "socket-rim-1",
      "component": "services",
      "type": "torus",
      "position": [
        0.35,
        0.246,
        0
      ],
      "material": "metal",
      "radius": 0.026,
      "tube": 0.004,
      "axis": "y",
      "group": "services",
      "color": "#b08856"
    },
    {
      "id": "isolating-poppet-1",
      "component": "isolation",
      "type": "cylinder",
      "position": [
        0.35,
        0.212,
        0
      ],
      "material": "metal",
      "radius": 0.013,
      "height": 0.035,
      "group": "services",
      "color": "#c3c8bb"
    },
    {
      "id": "seal-1",
      "component": "isolation",
      "type": "torus",
      "position": [
        0.35,
        0.234,
        0
      ],
      "material": "polymer",
      "radius": 0.014,
      "tube": 0.003,
      "axis": "y",
      "group": "services",
      "color": "#394c40"
    },
    {
      "id": "return-spring-1",
      "component": "isolation",
      "group": "services",
      "type": "pipe",
      "path": [
        [
          0.362,
          0.165,
          0
        ],
        [
          0.36039230484541324,
          0.16572916666666668,
          0.005999999999999999
        ],
        [
          0.356,
          0.16645833333333335,
          0.010392304845413263
        ],
        [
          0.35,
          0.16718750000000002,
          0.012
        ],
        [
          0.344,
          0.1679166666666667,
          0.010392304845413265
        ],
        [
          0.3396076951545867,
          0.16864583333333333,
          0.005999999999999999
        ],
        [
          0.33799999999999997,
          0.169375,
          1.4695761589768239e-18
        ],
        [
          0.3396076951545867,
          0.17010416666666667,
          -0.006000000000000002
        ],
        [
          0.344,
          0.17083333333333334,
          -0.010392304845413262
        ],
        [
          0.35,
          0.1715625,
          -0.012
        ],
        [
          0.356,
          0.17229166666666668,
          -0.010392304845413263
        ],
        [
          0.36039230484541324,
          0.17302083333333335,
          -0.006000000000000005
        ],
        [
          0.362,
          0.17375000000000002,
          -2.9391523179536477e-18
        ],
        [
          0.36039230484541324,
          0.17447916666666669,
          0.0059999999999999915
        ],
        [
          0.356,
          0.17520833333333335,
          0.010392304845413265
        ],
        [
          0.35,
          0.1759375,
          0.012
        ],
        [
          0.344,
          0.17666666666666667,
          0.01039230484541327
        ],
        [
          0.3396076951545867,
          0.17739583333333334,
          0.0059999999999999975
        ],
        [
          0.33799999999999997,
          0.178125,
          4.408728476930471e-18
        ],
        [
          0.3396076951545867,
          0.17885416666666668,
          -0.00599999999999999
        ],
        [
          0.344,
          0.17958333333333334,
          -0.010392304845413265
        ],
        [
          0.35,
          0.18031250000000001,
          -0.012
        ],
        [
          0.356,
          0.18104166666666668,
          -0.01039230484541327
        ],
        [
          0.36039230484541324,
          0.18177083333333335,
          -0.005999999999999998
        ],
        [
          0.362,
          0.1825,
          -5.8783046359072955e-18
        ],
        [
          0.36039230484541324,
          0.18322916666666667,
          0.006000000000000007
        ],
        [
          0.356,
          0.18395833333333333,
          0.010392304845413255
        ],
        [
          0.35,
          0.1846875,
          0.012
        ],
        [
          0.344,
          0.18541666666666667,
          0.01039230484541326
        ],
        [
          0.3396076951545867,
          0.18614583333333334,
          0.006000000000000019
        ],
        [
          0.33799999999999997,
          0.186875,
          7.34788079488412e-18
        ],
        [
          0.3396076951545867,
          0.18760416666666668,
          -0.005999999999999987
        ],
        [
          0.344,
          0.18833333333333335,
          -0.010392304845413253
        ],
        [
          0.3499999999999999,
          0.18906250000000002,
          -0.012
        ],
        [
          0.356,
          0.1897916666666667,
          -0.01039230484541326
        ],
        [
          0.36039230484541324,
          0.19052083333333333,
          -0.006000000000000002
        ],
        [
          0.362,
          0.19125,
          -8.817456953860942e-18
        ],
        [
          0.36039230484541324,
          0.19197916666666667,
          0.005999999999999986
        ],
        [
          0.356,
          0.19270833333333334,
          0.010392304845413253
        ],
        [
          0.35,
          0.1934375,
          0.012
        ],
        [
          0.344,
          0.19416666666666668,
          0.010392304845413262
        ],
        [
          0.3396076951545867,
          0.19489583333333335,
          0.006000000000000003
        ],
        [
          0.33799999999999997,
          0.19562500000000002,
          1.0287033112837767e-17
        ],
        [
          0.3396076951545867,
          0.19635416666666666,
          -0.0059999999999999845
        ],
        [
          0.344,
          0.19708333333333333,
          -0.010392304845413251
        ],
        [
          0.3499999999999999,
          0.1978125,
          -0.012
        ],
        [
          0.356,
          0.19854166666666667,
          -0.010392304845413262
        ],
        [
          0.36039230484541324,
          0.19927083333333334,
          -0.0060000000000000045
        ],
        [
          0.362,
          0.2,
          -1.1756609271814591e-17
        ]
      ],
      "radius": 0.0015,
      "color": "#7f8c7c",
      "material": "metal"
    },
    {
      "id": "key-block-1",
      "component": "keys",
      "type": "box",
      "position": [
        0.395,
        0.14,
        0
      ],
      "material": "metal",
      "size": [
        0.016,
        0.025,
        0.032
      ],
      "group": "services",
      "color": "#b08856"
    },
    {
      "id": "island-bolt-1--0.028",
      "component": "services",
      "type": "cylinder",
      "position": [
        0.32199999999999995,
        0.23,
        0
      ],
      "material": "metal",
      "radius": 0.0035,
      "height": 0.015,
      "group": "services",
      "segments": 6,
      "color": "#3b5142"
    },
    {
      "id": "island-bolt-1-0.028",
      "component": "services",
      "type": "cylinder",
      "position": [
        0.378,
        0.23,
        0
      ],
      "material": "metal",
      "radius": 0.0035,
      "height": 0.015,
      "group": "services",
      "segments": 6,
      "color": "#3b5142"
    },
    {
      "id": "socket-body-2",
      "component": "services",
      "type": "cylinder",
      "position": [
        0.35,
        0.2,
        0.12
      ],
      "material": "metal",
      "radius": 0.029,
      "height": 0.09,
      "group": "services",
      "color": "#5b7160",
      "cutaway": true
    },
    {
      "id": "socket-rim-2",
      "component": "services",
      "type": "torus",
      "position": [
        0.35,
        0.246,
        0.12
      ],
      "material": "metal",
      "radius": 0.026,
      "tube": 0.004,
      "axis": "y",
      "group": "services",
      "color": "#5b7160"
    },
    {
      "id": "isolating-poppet-2",
      "component": "isolation",
      "type": "cylinder",
      "position": [
        0.35,
        0.212,
        0.12
      ],
      "material": "metal",
      "radius": 0.013,
      "height": 0.035,
      "group": "services",
      "color": "#c3c8bb"
    },
    {
      "id": "seal-2",
      "component": "isolation",
      "type": "torus",
      "position": [
        0.35,
        0.234,
        0.12
      ],
      "material": "polymer",
      "radius": 0.014,
      "tube": 0.003,
      "axis": "y",
      "group": "services",
      "color": "#394c40"
    },
    {
      "id": "return-spring-2",
      "component": "isolation",
      "group": "services",
      "type": "pipe",
      "path": [
        [
          0.362,
          0.165,
          0.12
        ],
        [
          0.36039230484541324,
          0.16572916666666668,
          0.126
        ],
        [
          0.356,
          0.16645833333333335,
          0.13039230484541325
        ],
        [
          0.35,
          0.16718750000000002,
          0.132
        ],
        [
          0.344,
          0.1679166666666667,
          0.13039230484541325
        ],
        [
          0.3396076951545867,
          0.16864583333333333,
          0.126
        ],
        [
          0.33799999999999997,
          0.169375,
          0.12
        ],
        [
          0.3396076951545867,
          0.17010416666666667,
          0.11399999999999999
        ],
        [
          0.344,
          0.17083333333333334,
          0.10960769515458674
        ],
        [
          0.35,
          0.1715625,
          0.108
        ],
        [
          0.356,
          0.17229166666666668,
          0.10960769515458674
        ],
        [
          0.36039230484541324,
          0.17302083333333335,
          0.11399999999999999
        ],
        [
          0.362,
          0.17375000000000002,
          0.12
        ],
        [
          0.36039230484541324,
          0.17447916666666669,
          0.126
        ],
        [
          0.356,
          0.17520833333333335,
          0.13039230484541325
        ],
        [
          0.35,
          0.1759375,
          0.132
        ],
        [
          0.344,
          0.17666666666666667,
          0.13039230484541325
        ],
        [
          0.3396076951545867,
          0.17739583333333334,
          0.126
        ],
        [
          0.33799999999999997,
          0.178125,
          0.12
        ],
        [
          0.3396076951545867,
          0.17885416666666668,
          0.114
        ],
        [
          0.344,
          0.17958333333333334,
          0.10960769515458674
        ],
        [
          0.35,
          0.18031250000000001,
          0.108
        ],
        [
          0.356,
          0.18104166666666668,
          0.10960769515458672
        ],
        [
          0.36039230484541324,
          0.18177083333333335,
          0.11399999999999999
        ],
        [
          0.362,
          0.1825,
          0.12
        ],
        [
          0.36039230484541324,
          0.18322916666666667,
          0.126
        ],
        [
          0.356,
          0.18395833333333333,
          0.13039230484541325
        ],
        [
          0.35,
          0.1846875,
          0.132
        ],
        [
          0.344,
          0.18541666666666667,
          0.13039230484541325
        ],
        [
          0.3396076951545867,
          0.18614583333333334,
          0.126
        ],
        [
          0.33799999999999997,
          0.186875,
          0.12000000000000001
        ],
        [
          0.3396076951545867,
          0.18760416666666668,
          0.114
        ],
        [
          0.344,
          0.18833333333333335,
          0.10960769515458674
        ],
        [
          0.3499999999999999,
          0.18906250000000002,
          0.108
        ],
        [
          0.356,
          0.1897916666666667,
          0.10960769515458674
        ],
        [
          0.36039230484541324,
          0.19052083333333333,
          0.11399999999999999
        ],
        [
          0.362,
          0.19125,
          0.11999999999999998
        ],
        [
          0.36039230484541324,
          0.19197916666666667,
          0.12599999999999997
        ],
        [
          0.356,
          0.19270833333333334,
          0.13039230484541325
        ],
        [
          0.35,
          0.1934375,
          0.132
        ],
        [
          0.344,
          0.19416666666666668,
          0.13039230484541325
        ],
        [
          0.3396076951545867,
          0.19489583333333335,
          0.126
        ],
        [
          0.33799999999999997,
          0.19562500000000002,
          0.12000000000000001
        ],
        [
          0.3396076951545867,
          0.19635416666666666,
          0.11400000000000002
        ],
        [
          0.344,
          0.19708333333333333,
          0.10960769515458674
        ],
        [
          0.3499999999999999,
          0.1978125,
          0.108
        ],
        [
          0.356,
          0.19854166666666667,
          0.10960769515458674
        ],
        [
          0.36039230484541324,
          0.19927083333333334,
          0.11399999999999999
        ],
        [
          0.362,
          0.2,
          0.11999999999999998
        ]
      ],
      "radius": 0.0015,
      "color": "#7f8c7c",
      "material": "metal"
    },
    {
      "id": "key-block-2",
      "component": "keys",
      "type": "box",
      "position": [
        0.395,
        0.14,
        0.12
      ],
      "material": "metal",
      "size": [
        0.016,
        0.025,
        0.037
      ],
      "group": "services",
      "color": "#5b7160"
    },
    {
      "id": "island-bolt-2--0.028",
      "component": "services",
      "type": "cylinder",
      "position": [
        0.32199999999999995,
        0.23,
        0.12
      ],
      "material": "metal",
      "radius": 0.0035,
      "height": 0.015,
      "group": "services",
      "segments": 6,
      "color": "#3b5142"
    },
    {
      "id": "island-bolt-2-0.028",
      "component": "services",
      "type": "cylinder",
      "position": [
        0.378,
        0.23,
        0.12
      ],
      "material": "metal",
      "radius": 0.0035,
      "height": 0.015,
      "group": "services",
      "segments": 6,
      "color": "#3b5142"
    },
    {
      "id": "identity-window",
      "component": "identity",
      "type": "box",
      "position": [
        0.045,
        0.267,
        0
      ],
      "material": "dark",
      "size": [
        0.09,
        0.01,
        0.065
      ],
      "group": "upper"
    },
    {
      "id": "identity-mark-0",
      "component": "identity",
      "type": "box",
      "position": [
        0.012,
        0.274,
        -0.012
      ],
      "material": "polymer",
      "size": [
        0.004,
        0.002,
        0.008
      ],
      "group": "upper",
      "color": "#dce1cf"
    },
    {
      "id": "identity-mark-1",
      "component": "identity",
      "type": "box",
      "position": [
        0.02,
        0.274,
        0
      ],
      "material": "polymer",
      "size": [
        0.004,
        0.002,
        0.008
      ],
      "group": "upper",
      "color": "#dce1cf"
    },
    {
      "id": "identity-mark-2",
      "component": "identity",
      "type": "box",
      "position": [
        0.028,
        0.274,
        0.012
      ],
      "material": "polymer",
      "size": [
        0.004,
        0.002,
        0.008
      ],
      "group": "upper",
      "color": "#dce1cf"
    },
    {
      "id": "identity-mark-3",
      "component": "identity",
      "type": "box",
      "position": [
        0.036000000000000004,
        0.274,
        -0.012
      ],
      "material": "polymer",
      "size": [
        0.004,
        0.002,
        0.008
      ],
      "group": "upper",
      "color": "#dce1cf"
    },
    {
      "id": "identity-mark-4",
      "component": "identity",
      "type": "box",
      "position": [
        0.044,
        0.274,
        0
      ],
      "material": "polymer",
      "size": [
        0.004,
        0.002,
        0.008
      ],
      "group": "upper",
      "color": "#dce1cf"
    },
    {
      "id": "identity-mark-5",
      "component": "identity",
      "type": "box",
      "position": [
        0.052000000000000005,
        0.274,
        0.012
      ],
      "material": "polymer",
      "size": [
        0.004,
        0.002,
        0.008
      ],
      "group": "upper",
      "color": "#dce1cf"
    },
    {
      "id": "identity-mark-6",
      "component": "identity",
      "type": "box",
      "position": [
        0.06,
        0.274,
        -0.012
      ],
      "material": "polymer",
      "size": [
        0.004,
        0.002,
        0.008
      ],
      "group": "upper",
      "color": "#dce1cf"
    },
    {
      "id": "identity-mark-7",
      "component": "identity",
      "type": "box",
      "position": [
        0.068,
        0.274,
        0
      ],
      "material": "polymer",
      "size": [
        0.004,
        0.002,
        0.008
      ],
      "group": "upper",
      "color": "#dce1cf"
    },
    {
      "id": "identity-mark-8",
      "component": "identity",
      "type": "box",
      "position": [
        0.076,
        0.274,
        0.012
      ],
      "material": "polymer",
      "size": [
        0.004,
        0.002,
        0.008
      ],
      "group": "upper",
      "color": "#dce1cf"
    },
    {
      "id": "engagement-switch",
      "component": "verify",
      "type": "box",
      "position": [
        -0.21,
        0.095,
        0.21
      ],
      "material": "dark",
      "size": [
        0.045,
        0.04,
        0.025
      ]
    },
    {
      "id": "engagement-plunger",
      "component": "verify",
      "type": "cylinder",
      "position": [
        -0.21,
        0.13,
        0.21
      ],
      "material": "metal",
      "radius": 0.006,
      "height": 0.025,
      "color": "#a46f4f"
    },
    {
      "id": "sensor-target",
      "component": "verify",
      "type": "box",
      "position": [
        -0.21,
        0.19,
        0.21
      ],
      "material": "metal",
      "size": [
        0.027,
        0.02,
        0.025
      ],
      "group": "upper",
      "color": "#b3bea9"
    }
  ],
  "flows": [],
  "stages": [
    {
      "id": "isolate",
      "title": "Isolate the resource",
      "duration": 4,
      "explanation": "Stop the process, isolate and prove safe before moving the carrier.",
      "activeComponents": [
        "isolation",
        "services"
      ],
      "poses": {
        "upper": {
          "position": [
            0,
            0,
            0
          ],
          "rotation": [
            0,
            0,
            0
          ]
        }
      },
      "observable": "No live fluid exchange or energized hot-swap is depicted.",
      "inputs": "Isolated hardware, allowed payload and clean contacts",
      "outputs": "A verified positioning state, not automatic process permission",
      "failure": "Wrong part, debris, insufficient preload, stuck sensor or trapped pressure"
    },
    {
      "id": "withdraw",
      "title": "Release and withdraw",
      "duration": 4,
      "explanation": "Manual or separately qualified robot exchange begins after isolation and clamp release.",
      "activeComponents": [
        "carrier",
        "preload"
      ],
      "poses": {
        "upper": {
          "position": [
            0,
            0.45,
            0
          ],
          "rotation": [
            0,
            0,
            0
          ]
        }
      },
      "observable": "Lift the payload along a known extraction axis.",
      "inputs": "Isolated hardware, allowed payload and clean contacts",
      "outputs": "A verified positioning state, not automatic process permission",
      "failure": "Wrong part, debris, insufficient preload, stuck sensor or trapped pressure"
    },
    {
      "id": "approach",
      "title": "Guided approach",
      "duration": 4,
      "explanation": "A robot uses coarse guides before exact contacts engage.",
      "activeComponents": [
        "carrier",
        "balls"
      ],
      "poses": {
        "upper": {
          "position": [
            0.04,
            0.22,
            0.02
          ],
          "rotation": [
            0,
            0,
            0
          ]
        }
      },
      "observable": "Misalignment is visible; precision contacts are not yet seated.",
      "inputs": "Isolated hardware, allowed payload and clean contacts",
      "outputs": "A verified positioning state, not automatic process permission",
      "failure": "Wrong part, debris, insufficient preload, stuck sensor or trapped pressure"
    },
    {
      "id": "align",
      "title": "Center the carrier",
      "duration": 4,
      "explanation": "Bring the carrier over the three contact islands.",
      "activeComponents": [
        "balls",
        "grooves"
      ],
      "poses": {
        "upper": {
          "position": [
            0,
            0.07,
            0
          ],
          "rotation": [
            0,
            0,
            0
          ]
        }
      },
      "observable": "Software pose confidence is not final contact evidence.",
      "inputs": "Isolated hardware, allowed payload and clean contacts",
      "outputs": "A verified positioning state, not automatic process permission",
      "failure": "Wrong part, debris, insufficient preload, stuck sensor or trapped pressure"
    },
    {
      "id": "seat",
      "title": "Seat the six contacts",
      "duration": 4,
      "explanation": "Lower to the geometric rest position.",
      "activeComponents": [
        "balls",
        "grooves"
      ],
      "poses": {
        "upper": {
          "position": [
            0,
            0,
            0
          ],
          "rotation": [
            0,
            0,
            0
          ]
        }
      },
      "observable": "The six nominal contact constraints are now closed.",
      "inputs": "Isolated hardware, allowed payload and clean contacts",
      "outputs": "A verified positioning state, not automatic process permission",
      "failure": "Wrong part, debris, insufficient preload, stuck sensor or trapped pressure"
    },
    {
      "id": "preload",
      "title": "Apply retention preload",
      "duration": 4,
      "explanation": "A separate retention system keeps the exact-constraint contacts engaged.",
      "activeComponents": [
        "preload"
      ],
      "poses": {
        "upper": {
          "position": [
            0,
            0,
            0
          ],
          "rotation": [
            0,
            0,
            0
          ]
        }
      },
      "observable": "Clamps in this figure are static explanatory geometry, not an actuated changer simulation.",
      "inputs": "Isolated hardware, allowed payload and clean contacts",
      "outputs": "A verified positioning state, not automatic process permission",
      "failure": "Wrong part, debris, insufficient preload, stuck sensor or trapped pressure"
    },
    {
      "id": "verify",
      "title": "Verify identity and engagement",
      "duration": 4,
      "explanation": "Reject wrong revision or ambiguous seat status before process operation.",
      "activeComponents": [
        "identity",
        "verify",
        "keys"
      ],
      "poses": {
        "upper": {
          "position": [
            0,
            0,
            0
          ],
          "rotation": [
            0,
            0,
            0
          ]
        }
      },
      "observable": "Independent physical checks must agree.",
      "inputs": "Isolated hardware, allowed payload and clean contacts",
      "outputs": "A verified positioning state, not automatic process permission",
      "failure": "Wrong part, debris, insufficient preload, stuck sensor or trapped pressure"
    },
    {
      "id": "recommission",
      "title": "Recommission the process",
      "duration": 4,
      "explanation": "Test leak/flow/protection and record the returned configuration.",
      "activeComponents": [
        "services",
        "isolation"
      ],
      "poses": {
        "upper": {
          "position": [
            0,
            0,
            0
          ],
          "rotation": [
            0,
            0,
            0
          ]
        }
      },
      "observable": "Illustrative connection architecture; no certified connector or procedure is supplied.",
      "inputs": "Isolated hardware, allowed payload and clean contacts",
      "outputs": "A verified positioning state, not automatic process permission",
      "failure": "Wrong part, debris, insufficient preload, stuck sensor or trapped pressure"
    }
  ],
  "components": [
    {
      "id": "datum",
      "name": "Stable reference plate",
      "role": "Keeps the six-contact positioning interface separate from the rough field frame.",
      "principle": "A stiff local datum can provide a repeatable process reference even if the surrounding deployable structure is less precise.",
      "materials": "Proposed machined aluminum plate and replaceable steel inserts; no tolerance or fatigue approval.",
      "interfaces": "Bolted structural attachment; no sealing contact in precision datum.",
      "failure": "Bending, thermal distortion or loose anchoring changes the robot reference.",
      "test": "Measure plate deflection and full fixture re-seating, not a single ball position.",
      "evidence": [
        "I01",
        "I02"
      ],
      "status": "Proposed integration"
    },
    {
      "id": "carrier",
      "name": "Robot-handled carrier",
      "role": "Carries a crop cassette, filter or service payload on the same positioning convention.",
      "principle": "Separate the payload-specific upper fixture from a common positioning pattern; verify allowable mass and center of gravity per variant.",
      "materials": "CNC plate or molded carrier with replaceable contact mounts.",
      "interfaces": "Three contact studs and independent preload; tool handle added for a qualified payload.",
      "failure": "A heavy or offset payload overloads the same-looking coupling.",
      "test": "Repeat docking under the worst allowed payload and center-of-gravity envelope.",
      "evidence": [
        "I01"
      ],
      "status": "Proposed integration"
    },
    {
      "id": "grooves",
      "name": "Three radial V-grooves",
      "role": "Provide six discrete positioning contacts.",
      "principle": "Each ball contacts two round rails; three differently oriented grooves constrain six rigid-body degrees of freedom when preloaded.",
      "materials": "Six proposed hardened round rails in machined mounts; corrosion, hardness and wear need selection.",
      "interfaces": "Point contacts are positioning features, not fluid seals.",
      "failure": "Dust, dents, friction and contact deformation defeat repeatability.",
      "test": "Measure six-axis re-seating error through clean and dusty cycle tests with declared preload.",
      "evidence": [
        "I01",
        "I02"
      ],
      "status": "Commercial design principle"
    },
    {
      "id": "balls",
      "name": "Three spherical datum contacts",
      "role": "Seat against the paired rails without redundant rigid contact surfaces.",
      "principle": "For the depicted radii, vertical center offset is sqrt((R+r)^2−d²). Contacts meet geometrically; this is not a stiffness model.",
      "materials": "Proposed 25 mm radius steel spheres; radius is an authored demonstrator dimension.",
      "interfaces": "Replaceable studs attach to the upper plate.",
      "failure": "Surface contamination and Hertzian deformation create offsets.",
      "test": "Inspect contact marks, repeatability and force/deflection across preload range.",
      "evidence": [
        "I01"
      ],
      "status": "Commercial design principle"
    },
    {
      "id": "preload",
      "name": "Independent preload clamps",
      "role": "Hold the exact-constraint contacts closed.",
      "principle": "A coupling requires a defined closing force; precise location is not equivalent to retention under vibration.",
      "materials": "Proposed adjustable clamp arms and replaceable pads.",
      "interfaces": "Three clamps hold the carrier without adding a second rigid location scheme.",
      "failure": "Too little force permits lift-off; too much increases deformation or damages contacts.",
      "test": "Prove retention and repeatability together under realistic handling disturbance.",
      "evidence": [
        "I01",
        "I02"
      ],
      "status": "Proposed integration"
    },
    {
      "id": "services",
      "name": "Separated resource islands",
      "role": "Keep resource connection physically distinct from mechanical positioning.",
      "principle": "A shared mounting arrangement can hold different typed connectors without making their chemistry, voltage or sanitation interchangeable.",
      "materials": "Illustrative port bodies; actual rated commercial couplings remain to be selected.",
      "interfaces": "Separate supply/return/low-power examples. High power, potable and dirty service require additional separation.",
      "failure": "Wrong media or an unrated connector creates leakage, contamination or electrical hazard.",
      "test": "Fault-inject wrong identity, misalignment, residual pressure and incomplete engagement.",
      "evidence": [
        "I02"
      ],
      "status": "Proposed integration"
    },
    {
      "id": "isolation",
      "name": "Dry-break principle cutaway",
      "role": "Explains why disconnecting a wet service is more than unbolting a cartridge.",
      "principle": "Spring-return closures and seals can limit release when disconnected; the model shows an illustrative internal arrangement, not a selected vendor design.",
      "materials": "Elastomer seal, corrosion-compatible poppet and spring must be chosen per fluid.",
      "interfaces": "Isolation and depressurization precede exchange. Do not apply this drawing as a plumbing instruction.",
      "failure": "Seal damage, trapped fluid, fouling or failed closure releases residual liquid.",
      "test": "Measure residual release, pressure drop, leak rate and cleanability through cycles.",
      "evidence": [
        "I02"
      ],
      "status": "Proposed integration"
    },
    {
      "id": "keys",
      "name": "Physical media keying",
      "role": "Makes wrong connection harder before software is consulted.",
      "principle": "Geometry and marking complement identity checks; the ability to fit is not authorization to run.",
      "materials": "Proposed keyed inserts and durable labels.",
      "interfaces": "Each media family has distinct rated parts and keyed geometry.",
      "failure": "Wear, adapters or forced engagement bypass the intended distinction.",
      "test": "Blind wrong-part tests including damaged and contaminated connectors.",
      "evidence": [
        "I02"
      ],
      "status": "Proposed integration"
    },
    {
      "id": "identity",
      "name": "Readable module identity",
      "role": "Links physical hardware to its configuration, allowed media and service history.",
      "principle": "A visible code is a reference, not a substitute for physical engagement or safe fluid quality.",
      "materials": "Laser-marked plate; illustration is not a valid machine-readable code.",
      "interfaces": "Local registry and revision record, readable without cloud access.",
      "failure": "Stale identity, wrong revision or unreadable label misleads the controller.",
      "test": "Swap a visually identical wrong revision and require rejection.",
      "evidence": [
        "I02"
      ],
      "status": "Proposed integration"
    },
    {
      "id": "verify",
      "name": "Independent seat confirmation",
      "role": "Checks the physical result rather than trusting a successful motion command.",
      "principle": "Engagement indication must be combined with process-specific evidence such as leak/flow or electrical checks.",
      "materials": "Illustrative plunger and target; actual sensing must match hazards and environment.",
      "interfaces": "Local protective controller; not a general-purpose planner authority.",
      "failure": "A stuck sensor reports a seated carrier that is not retained.",
      "test": "Inject stuck-on and disconnected-sensor faults before enabling process services.",
      "evidence": [
        "I02"
      ],
      "status": "Proposed integration"
    }
  ],
  "limits": [
    "All dimensions are proposed demonstrator dimensions.",
    "The model is a geometric explanation, not certified hardware or a complete collision/strength analysis.",
    "Clamp motion and vendor-specific dry-break internals are not validated."
  ]
}