{
 "id": "kinsim-facility",
 "title": "Kinematic-sim facility inputs",
 "titleProperty": "name",
 "source": "py_dataclass_viewer examples/10_kinsim_inputs (facility.py, belt.py, pick.py): BASE_FACILITY",
 "properties": {
  "name": {
   "type": "text",
   "label": "Field",
   "readOnly": true
  },
  "path": {
   "type": "text",
   "label": "Path",
   "readOnly": true,
   "note": "the dotted name the viewer's edit API addresses"
  },
  "parent": {
   "type": "text",
   "label": "Parent",
   "hidden": true,
   "readOnly": true
  },
  "kind": {
   "type": "text",
   "label": "Kind",
   "display": "badge",
   "readOnly": true,
   "colors": {
    "instance": 7,
    "reference": 1,
    "nested": 3,
    "value": 0
   }
  },
  "class": {
   "type": "text",
   "label": "Class",
   "readOnly": true
  },
  "type": {
   "type": "text",
   "label": "Type",
   "readOnly": true
  },
  "value": {
   "type": "number",
   "label": "Value",
   "note": "Value(value, unit, low=, high=, basis=, source=, notes=)"
  },
  "measured_by": {
   "type": "text",
   "label": "Measured by",
   "note": "what will measure it (the Value's measured_by)"
  },
  "refers_to": {
   "type": "text",
   "label": "Refers to",
   "readOnly": true
  },
  "file": {
   "type": "text",
   "label": "File",
   "readOnly": true
  },
  "hidden": {
   "type": "boolean",
   "label": "Hidden in the view",
   "readOnly": true,
   "note": "the class's view_hidden"
  }
 },
 "rows": [
  {
   "id": "BASE_FACILITY",
   "name": "BASE_FACILITY",
   "path": "BASE_FACILITY",
   "parent": null,
   "kind": "instance",
   "class": "Facility",
   "type": "Facility",
   "value": null,
   "measured_by": null,
   "file": "facility.py",
   "hidden": false,
   "refers_to": null
  },
  {
   "id": "BASE_FACILITY.belt",
   "name": "belt",
   "path": "BASE_FACILITY.belt",
   "parent": "BASE_FACILITY",
   "kind": "reference",
   "class": "Belt",
   "type": "Belt",
   "value": null,
   "measured_by": null,
   "file": "belt.py",
   "hidden": false,
   "refers_to": "DEFAULT_BELT"
  },
  {
   "id": "BASE_FACILITY.belt.width_m",
   "name": "width_m",
   "path": "BASE_FACILITY.belt.width_m",
   "parent": "BASE_FACILITY.belt",
   "kind": "value",
   "class": "Belt",
   "type": "float",
   "value": {
    "value": 1.2,
    "unit": "m",
    "low": 0.6,
    "high": 1.85,
    "basis": "chosen",
    "source": "chosen; Remcon sort belts 0.3-1.8 m, [ZenRobotics](https://www.terex.com/zenrobotics) up to 1.85 m; see [[Facility Model — Hand Calc Then Simulate (2026-10-04)]]",
    "note": "A chosen design input, not a measurement: belt width is capped by the arm's reach across, and the sim sweeps it between low and high."
   },
   "measured_by": null,
   "file": "belt.py",
   "hidden": false,
   "refers_to": null
  },
  {
   "id": "BASE_FACILITY.belt.max_speed_m_s",
   "name": "max_speed_m_s",
   "path": "BASE_FACILITY.belt.max_speed_m_s",
   "parent": "BASE_FACILITY.belt",
   "kind": "value",
   "class": "Belt",
   "type": "float",
   "value": {
    "value": 0.5,
    "unit": "m/s",
    "low": 0.25,
    "high": 1.0,
    "basis": "assumed",
    "source": "Max-AI AQC runs on 0.5-1.0 m/s; manual sort belts up to 0.76 m/s"
   },
   "measured_by": "F1 line sim + F2 kinematic sim",
   "file": "belt.py",
   "hidden": false,
   "refers_to": null
  },
  {
   "id": "BASE_FACILITY.belt.items_per_m2",
   "name": "items_per_m2",
   "path": "BASE_FACILITY.belt.items_per_m2",
   "parent": "BASE_FACILITY.belt",
   "kind": "value",
   "class": "Belt",
   "type": "float",
   "value": {
    "value": 25,
    "unit": "items/m^2",
    "low": 10,
    "high": 60,
    "basis": "assumed",
    "source": "guess: 50 g items spread one layer deep with gaps to grasp"
   },
   "measured_by": "F1 line sim + site trial",
   "file": "belt.py",
   "hidden": false,
   "refers_to": null
  },
  {
   "id": "BASE_FACILITY.belt.infeed_length_m",
   "name": "infeed_length_m",
   "path": "BASE_FACILITY.belt.infeed_length_m",
   "parent": "BASE_FACILITY.belt",
   "kind": "value",
   "class": "Belt",
   "type": "float",
   "value": {
    "value": 8,
    "unit": "m",
    "low": 4,
    "high": 15,
    "basis": "assumed",
    "source": "guess: loading, spreading and the camera before the first arm"
   },
   "measured_by": "layout",
   "file": "belt.py",
   "hidden": false,
   "refers_to": null
  },
  {
   "id": "BASE_FACILITY.belt.cost_usd_per_m",
   "name": "cost_usd_per_m",
   "path": "BASE_FACILITY.belt.cost_usd_per_m",
   "parent": "BASE_FACILITY.belt",
   "kind": "value",
   "class": "Belt",
   "type": "float",
   "value": {
    "value": 2500,
    "unit": "USD/m",
    "low": 1000,
    "high": 5000,
    "basis": "assumed",
    "source": "guess for an installed sorting conveyor"
   },
   "measured_by": "vendor quote",
   "file": "belt.py",
   "hidden": false,
   "refers_to": null
  },
  {
   "id": "BASE_FACILITY.belt.power_w_per_m",
   "name": "power_w_per_m",
   "path": "BASE_FACILITY.belt.power_w_per_m",
   "parent": "BASE_FACILITY.belt",
   "kind": "value",
   "class": "Belt",
   "type": "float",
   "value": {
    "value": 50,
    "unit": "W/m",
    "low": 20,
    "high": 150,
    "basis": "assumed",
    "source": "guess"
   },
   "measured_by": "vendor quote",
   "file": "belt.py",
   "hidden": false,
   "refers_to": null
  },
  {
   "id": "BASE_FACILITY.belt.life_years",
   "name": "life_years",
   "path": "BASE_FACILITY.belt.life_years",
   "parent": "BASE_FACILITY.belt",
   "kind": "value",
   "class": "Belt",
   "type": "float",
   "value": {
    "value": 15,
    "unit": "yr",
    "low": 10,
    "high": 20,
    "basis": "assumed",
    "source": "guess"
   },
   "measured_by": "vendor quote",
   "file": "belt.py",
   "hidden": true,
   "refers_to": null
  },
  {
   "id": "BASE_FACILITY.move",
   "name": "move",
   "path": "BASE_FACILITY.move",
   "parent": "BASE_FACILITY",
   "kind": "reference",
   "class": "PickMove",
   "type": "PickMove",
   "value": null,
   "measured_by": null,
   "file": "pick.py",
   "hidden": false,
   "refers_to": "DEFAULT_MOVE"
  },
  {
   "id": "BASE_FACILITY.move.decision_latency_s",
   "name": "decision_latency_s",
   "path": "BASE_FACILITY.move.decision_latency_s",
   "parent": "BASE_FACILITY.move",
   "kind": "value",
   "class": "PickMove",
   "type": "float",
   "value": {
    "value": 0.2,
    "unit": "s",
    "low": 0.05,
    "high": 1.0,
    "basis": "assumed",
    "source": "grasp_v6 'User Grasp Complete' 191 ms warm (Jan 14 2025, grasping MOC)"
   },
   "measured_by": "F4 reality (profiling); grasping KPI S3",
   "file": "pick.py",
   "hidden": false,
   "refers_to": null
  },
  {
   "id": "BASE_FACILITY.move.travel_m",
   "name": "travel_m",
   "path": "BASE_FACILITY.move.travel_m",
   "parent": "BASE_FACILITY.move",
   "kind": "value",
   "class": "PickMove",
   "type": "float",
   "value": {
    "value": 0.5,
    "unit": "m",
    "low": 0.3,
    "high": 0.8,
    "basis": "assumed",
    "source": "guess: pick point to chute, one way"
   },
   "measured_by": "F2 kinematic sim",
   "file": "pick.py",
   "hidden": false,
   "refers_to": null
  },
  {
   "id": "BASE_FACILITY.move.grasp_dwell_s",
   "name": "grasp_dwell_s",
   "path": "BASE_FACILITY.move.grasp_dwell_s",
   "parent": "BASE_FACILITY.move",
   "kind": "value",
   "class": "PickMove",
   "type": "float",
   "value": {
    "value": 0.25,
    "unit": "s",
    "low": 0.1,
    "high": 0.6,
    "basis": "assumed",
    "source": "guess: descend, close, lift"
   },
   "measured_by": "F3 physics sim",
   "file": "pick.py",
   "hidden": false,
   "refers_to": null
  },
  {
   "id": "BASE_FACILITY.move.release_dwell_s",
   "name": "release_dwell_s",
   "path": "BASE_FACILITY.move.release_dwell_s",
   "parent": "BASE_FACILITY.move",
   "kind": "value",
   "class": "PickMove",
   "type": "float",
   "value": {
    "value": 0.15,
    "unit": "s",
    "low": 0.05,
    "high": 0.4,
    "basis": "assumed",
    "source": "guess"
   },
   "measured_by": "F3 physics sim",
   "file": "pick.py",
   "hidden": false,
   "refers_to": null
  },
  {
   "id": "BASE_FACILITY.arms_per_belt",
   "name": "arms_per_belt",
   "path": "BASE_FACILITY.arms_per_belt",
   "parent": "BASE_FACILITY",
   "kind": "value",
   "class": "Facility",
   "type": "int",
   "value": {
    "value": 4,
    "low": 1,
    "high": 12,
    "basis": "assumed",
    "source": "guess: arm pitch along the belt"
   },
   "measured_by": "F1 line sim",
   "file": "facility.py",
   "hidden": false,
   "refers_to": null
  },
  {
   "id": "BASE_FACILITY.shift_hours",
   "name": "shift_hours",
   "path": "BASE_FACILITY.shift_hours",
   "parent": "BASE_FACILITY",
   "kind": "value",
   "class": "Facility",
   "type": "float",
   "value": {
    "value": 8,
    "unit": "h",
    "low": 6,
    "high": 24,
    "basis": "chosen",
    "source": "one shift"
   },
   "measured_by": null,
   "file": "facility.py",
   "hidden": false,
   "refers_to": null
  }
 ]
}
