benikigai/plus-onePublic

Plus One

u-cell.json · 3.9 KB · commit #5 · Nov 2, 2026

SHA-256 ea5f021cb34d416b8ca2a6df74708b890f0755040bb6bdf3e145b5d645291f5f

{
 "schema": "factory-n1/layout/v1",
 "revision": 1,
 "selection": {
  "status": "proposal",
  "date": "2026-11-01"
 },
 "geometry_evidence": "ASSUMPTION",
 "calibration_status": "uncalibrated",
 "workstations": "manual",
 "units": {
  "length": "m",
  "angle": "rad"
 },
 "frame": {
  "handedness": "right",
  "up_axis": "Z",
  "origin": "floor corner at minimum X and Y",
  "flow_axis": "+X",
  "station_pose_anchor": "footprint centre at floor level",
  "quaternion_order": "xyzw"
 },
 "station_geometry_defaults": {
  "footprint_m": [
   1.2,
   0.75
  ],
  "work_surface_height_m": 0.9
 },
 "id": "plus-one-u-cell",
 "label": "Plus One U cell (concept)",
 "title": "Plus One · U cell",
 "room": {
  "size_m": [
   6.2,
   6.8,
   3.0
  ]
 },
 "footprint_m": [
  5.9,
  5.6
 ],
 "stations": [
  {
   "station_id": "S1",
   "position_m": [
    1.0,
    1.6,
    0.0
   ],
   "orientation_xyzw": [
    0.0,
    0.0,
    0.7071068,
    0.7071068
   ],
   "label": "Top shell"
  },
  {
   "station_id": "S2",
   "position_m": [
    1.0,
    2.9,
    0.0
   ],
   "orientation_xyzw": [
    0.0,
    0.0,
    0.7071068,
    0.7071068
   ],
   "label": "Board"
  },
  {
   "station_id": "S3",
   "position_m": [
    1.0,
    4.2,
    0.0
   ],
   "orientation_xyzw": [
    0.0,
    0.0,
    0.7071068,
    0.7071068
   ],
   "label": "Screws"
  },
  {
   "station_id": "S4",
   "position_m": [
    2.3,
    5.4,
    0.0
   ],
   "orientation_xyzw": [
    0.0,
    0.0,
    0.0,
    1.0
   ],
   "label": "Adhesive, speaker, haptic"
  },
  {
   "station_id": "S5",
   "position_m": [
    3.6,
    5.4,
    0.0
   ],
   "orientation_xyzw": [
    0.0,
    0.0,
    0.0,
    1.0
   ],
   "label": "Battery"
  },
  {
   "station_id": "S6",
   "position_m": [
    4.9,
    4.2,
    0.0
   ],
   "orientation_xyzw": [
    0.0,
    0.0,
    -0.7071068,
    0.7071068
   ],
   "label": "Close the base"
  },
  {
   "station_id": "S7",
   "position_m": [
    4.9,
    2.9,
    0.0
   ],
   "orientation_xyzw": [
    0.0,
    0.0,
    -0.7071068,
    0.7071068
   ],
   "label": "Flash + calibrate"
  },
  {
   "station_id": "S8",
   "position_m": [
    4.9,
    1.6,
    0.0
   ],
   "orientation_xyzw": [
    0.0,
    0.0,
    -0.7071068,
    0.7071068
   ],
   "label": "Test and pack"
  }
 ],
 "cell": {
  "type": "u",
  "open_side": "-Y",
  "hold_m": [
   5.75,
   0.75
  ],
  "carton_m": [
   4.9,
   0.55
  ]
 },
 "crews": [
  {
   "id": "op1",
   "count": 1,
   "stations": [
    "S1",
    "S2",
    "S3",
    "S4",
    "S5",
    "S6"
   ]
  },
  {
   "id": "op2",
   "count": 1,
   "stations": [
    "S7",
    "S8"
   ]
  }
 ],
 "behavior_binding": {
  "station_key": "station_id",
  "route_source": "active product sequence",
  "station_definition_source": "resolved product station library",
  "timing_and_outcome_source": "recorded engine events and results",
  "inactive_station_policy": "retain footprint; show inactive; no unit visits"
 },
 "transport": {
  "duration_source": "engine",
  "layout_time_model": "not-calibrated"
 },
 "notes": [
  "Concept layout for the 2,000-a-month scenario (studies/plus_one_demand.yaml): the OPD's eight stations as benches in a U open toward -Y, with no powered conveyor. Every position is an ASSUMPTION.",
  "Operators work inside the U (2 at this volume: one runs S1 to S6, the other S7 and S8). Parts are fed from outside the U into each bench's rear flow shelves.",
  "A unit moves one at a time into the marked single-unit square in front of the next station (the run's hand_pass, 2 s); nothing else holds work in process.",
  "A failed unit goes onto a red HOLD shelf outside the U by S8; good units, packed at S8, go into a master carton at the U's mouth. Both are display only.",
  "footprint_m is the cell with the feeding aisle outside it; the room is just the drawing's floor.",
  "\"crews\" repeats the study's crews (studies/plus_one_demand.yaml) for the viewer, which draws only that many operators at the benches they are working; tests/test_demand_layouts.py keeps the two the same."
 ]
}