{
  "schema": "tortfeeder-mechanism-studio/v1",
  "catalog": {
    "rail": {
      "sku": "6575N406",
      "section": 40,
      "slot": 8,
      "slotDepth": 12.2,
      "increment": 2.5,
      "url": "https://www.mcmaster.com/6575N406/"
    },
    "corner": {
      "sku": "5537T937",
      "url": "https://www.mcmaster.com/5537T937/"
    },
    "nut": {
      "sku": "6000N207",
      "thread": "M6",
      "url": "https://www.mcmaster.com/6000N207/"
    },
    "pan": {
      "sku": "Winco SPJP-604",
      "length": 177.8,
      "width": 165.1,
      "height": 104.9,
      "url": "https://www.wincous.com/products/spjp-604"
    },
    "guide": {
      "family": "MGN12H",
      "blockLength": 45.4,
      "blockWidth": 27,
      "height": 13,
      "holePitch": 20,
      "url": "https://www.hiwin.com/wp-content/uploads/HIWIN-Linear-Guideway-Catalog.pdf"
    }
  },
  "settings": {
    "guideLength": 800,
    "acrylic": 6.35,
    "cupInnerLength": 145,
    "cupInnerWidth": 135,
    "cupInnerHeight": 85,
    "cupTaper": 0.8,
    "cupFill": 0.7,
    "pelletExpansion": 2.5,
    "soakSeconds": 600,
    "cupMass": 0.3,
    "cupServoStall": 60,
    "maxWidth": 1030,
    "maxDepth": 1390,
    "maxHeight": 2660,
    "mechanism": "slide",
    "tiers": 7,
    "width": 340,
    "depth": 400,
    "height": 110,
    "pitch": 170,
    "stroke": 650,
    "angle": 110,
    "clearance": 20,
    "chuteDrop": 550,
    "insulation": 50,
    "foodMass": 0.45,
    "trayMass": 0.3,
    "fill": 0.75,
    "servoStall": 120,
    "derate": 0.35,
    "safety": 2,
    "pivotFriction": 0.1,
    "foodMu": 0.55,
    "adhesion": 1.2,
    "slideMu": 0.12,
    "carriageMass": 0.4,
    "slideForce": 80,
    "stepperWorkingNm": 0.2,
    "beltEfficiency": 0.8,
    "slideSpeed": 15,
    "tipSpeed": 25,
    "pelletDia": 65,
    "pelletLength": 70,
    "pelletDensity": 0.45,
    "waterDose": 200,
    "pumpFlow": 500,
    "tankLiters": 8,
    "feedsPerDay": 1,
    "ambient": 35,
    "cold": 4,
    "U": 0.6,
    "COP": 1.2,
    "extraWatts": 12,
    "electronicsWatts": 5,
    "batteryWh": 1024,
    "batteryUse": 0.8,
    "stockLength": 2500,
    "kerf": 3,
    "frameMass": 50,
    "pushForce": 150,
    "pushHeight": 300
  },
  "derived": {
    "floor": 120,
    "base": 1104.8493702538308,
    "laneGap": 60,
    "side": 55,
    "rail": 40,
    "storageTop": 2234.849370253831,
    "width": 850,
    "depth": 1210,
    "top": 2324.849370253831,
    "outerWidth": 1030,
    "outerDepth": 1390,
    "frameHeight": 2490,
    "plateWidth": 680,
    "plateDepth": 400,
    "sweep": {
      "rackClearance": 60,
      "wallClearance": 20,
      "rampClearance": 112.37387565083759,
      "firstCollision": null,
      "samples": 763
    },
    "mass": 0.75,
    "gravityTorque": 1.4709975,
    "requiredTorque": 3.141995,
    "availableTorque": 4.118792999999999,
    "requiredForce": 7.7066354,
    "driveForce": 25.13274122871835,
    "availableSlideForce": 25.13274122871835,
    "trayLiters": 14.96,
    "usableLiters": 11.22,
    "supportStroke": 556.8080573302675,
    "releaseForce": 2.946856487833558,
    "chuteAngle": 34.1769887737929,
    "chuteThreshold": 33.81079374297307,
    "pelletMl": 232.28150682479534,
    "pelletGrams": 104.5266780711579,
    "waterSeconds": 24,
    "waterDays": 40,
    "area": 11.140979405445783,
    "watts": 219.22221694129158,
    "averageWatts": 187.68518078440965,
    "batteryHours": 4.364755899087203,
    "thermalVolume": 2267.687577306065,
    "guideTravel": 714.6,
    "cupVolume": 1331.1,
    "cupWorkingVolume": 931.7699999999999,
    "wetVolume": 780.7037670619884,
    "waterDepth": 12.77139208173691,
    "cupWetMass": 0.6045266780711579,
    "cupTorque": 1.1540662391466596,
    "cupAvailable": 2.0593964999999996,
    "checks": [
      {
        "id": "approved-envelope",
        "level": "pass",
        "title": "Approved maximum frame envelope",
        "detail": "Frame 1030 W × 1390 D × 2490 H mm; ceiling 1030 × 1390 × 2660 mm. Plate and accessory protrusions are additional."
      },
      {
        "id": "guide-travel",
        "level": "pass",
        "title": "Purchased linear-guide travel",
        "detail": "800 mm MGN12 rail − 45.4 mm block − 40 mm end allowance = 714.6 mm usable; need 650 mm. Amazon clone dimensions need verification."
      },
      {
        "id": "soak-capacity",
        "level": "pass",
        "title": "Pellet-soaking pan volume allowance",
        "detail": "Conservative wet mixture 781 mL versus 932 mL working volume. Inner dimensions, taper and expansion are assumptions to measure."
      },
      {
        "id": "soak-torque",
        "level": "pass",
        "title": "Soaking-pan tipping torque",
        "detail": "Need 1.15 N·m; assumed available 2.06 N·m. Includes dry pellets, all dose water and pan/cradle mass."
      },
      {
        "id": "rack",
        "level": "pass",
        "title": "Rack / adjacent-tray sweep",
        "detail": "Conservative SAT separation 60.0 mm; target ≥ 20 mm. "
      },
      {
        "id": "wall",
        "level": "pass",
        "title": "Cold-enclosure sweep",
        "detail": "Minimum sampled wall/floor/roof clearance 20.0 mm; target ≥ 20 mm."
      },
      {
        "id": "stroke",
        "level": "pass",
        "title": "Translation stroke",
        "detail": "Conservative stroke requirement 557 mm; configured 650 mm."
      },
      {
        "id": "ramp",
        "level": "pass",
        "title": "Tray / internal chute sweep",
        "detail": "Minimum sampled SAT separation 112.4 mm; target ≥ 20 mm."
      },
      {
        "id": "chute",
        "level": "pass",
        "title": "Internal chute gravity slope",
        "detail": "Slope 34.2°; require ≥ 33.8° from assumed friction + 5° allowance. Adhesion still requires testing."
      },
      {
        "id": "torque",
        "level": "pass",
        "title": "Tip-actuator torque allowance",
        "detail": "Need 3.14 N·m including 2× factor; assumed available 4.12 N·m after derating."
      },
      {
        "id": "slide",
        "level": "pass",
        "title": "Slide-actuator force allowance",
        "detail": "Need 7.7 N under friction assumption; assumed drive allowance 25.1 N from motor torque and 20T GT2 pulley. Verify support bending and delivered torque."
      },
      {
        "id": "food",
        "level": "warn",
        "title": "Fresh-food release remains empirical",
        "detail": "Assumed net downslope force 2.95 N at full tip. Leaf bridging, stems, lids and moisture are not simulated."
      },
      {
        "id": "water",
        "level": "pass",
        "title": "Water dose capacity",
        "detail": "40.0 days at 200 mL × 1/day. Does not include separate drinking water or wash water."
      },
      {
        "id": "stability",
        "level": "warn",
        "title": "Unanchored overturning estimate",
        "detail": "Static moment ratio 5.61; target 2. Anchors, joints, wind, extended loads and tortoise forces require verification."
      },
      {
        "id": "cold",
        "level": "warn",
        "title": "Refrigeration selection unresolved",
        "detail": "Model needs 2268 L gross clear cold envelope, not an off-the-shelf fridge selection. Seven-day food life unvalidated."
      }
    ],
    "cut": {
      "groups": [
        {
          "name": "Outer vertical post",
          "count": 4,
          "length": 2490
        },
        {
          "name": "Outer width crossmember",
          "count": 6,
          "length": 950
        },
        {
          "name": "Outer depth crossmember",
          "count": 6,
          "length": 1310
        },
        {
          "name": "Cold rack vertical post",
          "count": 4,
          "length": 1240
        },
        {
          "name": "Cantilever guide-support rail",
          "count": 21,
          "length": 800
        },
        {
          "name": "Rack crossmember",
          "count": 14,
          "length": 810
        }
      ],
      "stock": {
        "valid": true,
        "bins": [
          {
            "remaining": 7,
            "pieces": [
              {
                "name": "Outer vertical post",
                "length": 2490
              }
            ]
          },
          {
            "remaining": 7,
            "pieces": [
              {
                "name": "Outer vertical post",
                "length": 2490
              }
            ]
          },
          {
            "remaining": 7,
            "pieces": [
              {
                "name": "Outer vertical post",
                "length": 2490
              }
            ]
          },
          {
            "remaining": 7,
            "pieces": [
              {
                "name": "Outer vertical post",
                "length": 2490
              }
            ]
          },
          {
            "remaining": 234,
            "pieces": [
              {
                "name": "Outer depth crossmember",
                "length": 1310
              },
              {
                "name": "Outer width crossmember",
                "length": 950
              }
            ]
          },
          {
            "remaining": 234,
            "pieces": [
              {
                "name": "Outer depth crossmember",
                "length": 1310
              },
              {
                "name": "Outer width crossmember",
                "length": 950
              }
            ]
          },
          {
            "remaining": 234,
            "pieces": [
              {
                "name": "Outer depth crossmember",
                "length": 1310
              },
              {
                "name": "Outer width crossmember",
                "length": 950
              }
            ]
          },
          {
            "remaining": 234,
            "pieces": [
              {
                "name": "Outer depth crossmember",
                "length": 1310
              },
              {
                "name": "Outer width crossmember",
                "length": 950
              }
            ]
          },
          {
            "remaining": 234,
            "pieces": [
              {
                "name": "Outer depth crossmember",
                "length": 1310
              },
              {
                "name": "Outer width crossmember",
                "length": 950
              }
            ]
          },
          {
            "remaining": 234,
            "pieces": [
              {
                "name": "Outer depth crossmember",
                "length": 1310
              },
              {
                "name": "Outer width crossmember",
                "length": 950
              }
            ]
          },
          {
            "remaining": 14,
            "pieces": [
              {
                "name": "Cold rack vertical post",
                "length": 1240
              },
              {
                "name": "Cold rack vertical post",
                "length": 1240
              }
            ]
          },
          {
            "remaining": 14,
            "pieces": [
              {
                "name": "Cold rack vertical post",
                "length": 1240
              },
              {
                "name": "Cold rack vertical post",
                "length": 1240
              }
            ]
          },
          {
            "remaining": 61,
            "pieces": [
              {
                "name": "Rack crossmember",
                "length": 810
              },
              {
                "name": "Rack crossmember",
                "length": 810
              },
              {
                "name": "Rack crossmember",
                "length": 810
              }
            ]
          },
          {
            "remaining": 61,
            "pieces": [
              {
                "name": "Rack crossmember",
                "length": 810
              },
              {
                "name": "Rack crossmember",
                "length": 810
              },
              {
                "name": "Rack crossmember",
                "length": 810
              }
            ]
          },
          {
            "remaining": 61,
            "pieces": [
              {
                "name": "Rack crossmember",
                "length": 810
              },
              {
                "name": "Rack crossmember",
                "length": 810
              },
              {
                "name": "Rack crossmember",
                "length": 810
              }
            ]
          },
          {
            "remaining": 61,
            "pieces": [
              {
                "name": "Rack crossmember",
                "length": 810
              },
              {
                "name": "Rack crossmember",
                "length": 810
              },
              {
                "name": "Rack crossmember",
                "length": 810
              }
            ]
          },
          {
            "remaining": 71,
            "pieces": [
              {
                "name": "Rack crossmember",
                "length": 810
              },
              {
                "name": "Rack crossmember",
                "length": 810
              },
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              }
            ]
          },
          {
            "remaining": 91,
            "pieces": [
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              },
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              },
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              }
            ]
          },
          {
            "remaining": 91,
            "pieces": [
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              },
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              },
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              }
            ]
          },
          {
            "remaining": 91,
            "pieces": [
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              },
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              },
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              }
            ]
          },
          {
            "remaining": 91,
            "pieces": [
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              },
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              },
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              }
            ]
          },
          {
            "remaining": 91,
            "pieces": [
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              },
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              },
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              }
            ]
          },
          {
            "remaining": 91,
            "pieces": [
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              },
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              },
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              }
            ]
          },
          {
            "remaining": 894,
            "pieces": [
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              },
              {
                "name": "Cantilever guide-support rail",
                "length": 800
              }
            ]
          }
        ]
      },
      "totalLength": 56620
    },
    "bom": [
      [
        "40 × 40 four-slot aluminum rails",
        "55 cut pieces",
        "McMaster 6575N406; 8 mm slot; 56.62 m finished length",
        "PURCHASE · catalog verified; lengths must be multiples of 2.5 mm"
      ],
      [
        "40 mm corner brackets",
        "84",
        "McMaster 5537T937; included mounting hardware; no rail machining",
        "PURCHASE · catalog verified; joint layout/load check pending"
      ],
      [
        "M6 drop-in nuts",
        "Mount-dependent",
        "McMaster 6000N207 for 40 mm rails; M6 screws chosen for actual stack",
        "PURCHASE · catalog row verified; fit drawings before order"
      ],
      [
        "Fresh-food trays",
        "14",
        "340 × 400 × 110 mm loaded envelope",
        "PURCHASE Amazon/McMaster food-contact bins; exact bin not selected"
      ],
      [
        "Tray cradle / bearing carriers / belt clamps",
        "14 sets",
        "PETG prototype; 8 mm shaft and 608 bearing pockets; removable liner",
        "3D PRINT · parametric SCAD prototype; load/fit validation pending"
      ],
      [
        "Carriage / rail-adapter plates",
        "14 + mounts",
        "6.35 mm acrylic; slotted M3/M6 fastener interfaces",
        "LASER CUT · 1/4 or 1/8 inch; plates supported by metal rails"
      ],
      [
        "MGN12 rails + MGN12H blocks",
        "28 sets",
        "800 mm rails; 45.4 × 27 × 13 mm reference block; 20 × 20 mm M3 pattern",
        "PURCHASE Amazon/McMaster · reference geometry, seller drawing required"
      ],
      [
        "NEMA17 / belt / pulley / idler slide drive",
        "14 sets",
        "GT2 6 mm belt; 20-tooth pulley; working linear force ≥ 7.7 N",
        "PURCHASE Amazon · drivers and delivered working torque not selected"
      ],
      [
        "8 mm pivot shaft + 608 bearings + shaft collars",
        "14 sets",
        "Purchased steel shaft; 2 × 608 (8/22/7 mm) per tray; collars and coupler",
        "PURCHASE Amazon/McMaster · shaft lengths and tolerance to finalize"
      ],
      [
        "Geared tip actuator",
        "14",
        "Working torque ≥ 3.14 N·m; angle ≥ 110°",
        "PURCHASE Amazon · verify working torque; printed mount fits chosen unit"
      ],
      [
        "Insulated hatch panels / printed gasket carriers",
        "1 set",
        "6.35 mm structural acrylic + 3.175 mm skins; purchased insulation and silicone gasket",
        "LASER CUT + 3D PRINT + PURCHASE · hatch hardware/sweep unresolved"
      ],
      [
        "Hatch actuator / hinges / feedback / guards",
        "1 set",
        "Purchasable hinge/actuator; obstruction input; printed guards",
        "PURCHASE Amazon/McMaster + 3D PRINT"
      ],
      [
        "Pellet cylinder / two slide gates / interlock",
        "1 set",
        "Ø65 × 70 mm chamber; acrylic gates and printed interlock",
        "LASER CUT + 3D PRINT + PURCHASE food-contact hopper"
      ],
      [
        "Standing-water soaking pan",
        "1",
        "Winco SPJP-604 outer 177.8 × 165.1 × 104.9 mm reference",
        "PURCHASE Amazon candidate · dimensions verified with Winco; seller availability unverified"
      ],
      [
        "Soaking-pan cradle / tilt linkage / guards",
        "1 set",
        "8 mm pivot; working torque ≥ 1.15 N·m; 600 s recipe assumption",
        "3D PRINT + LASER CUT + PURCHASE bearing/shaft/servo"
      ],
      [
        "Water pump / opaque tank / tubing",
        "1 set",
        "500 mL/min target; 8 L tank; drinking-water-rated tubing",
        "PURCHASE Amazon/McMaster · calibrate flow and anti-siphon behavior"
      ],
      [
        "ESP32 / PWM boards / stepper and pump drivers",
        "1 set",
        "18 servo outputs plus 14 stepper axes",
        "PURCHASE Amazon · current ratings/pin map pending"
      ],
      [
        "Position / temperature / plate sensors",
        "Per axis + 2 probes",
        "Cold food history; home/extended/upright and hatch feedback",
        "PURCHASE Amazon/McMaster"
      ],
      [
        "Cold cabinet panels / insulation / cooling package",
        "1 set",
        "850 × 1210 × 2205 mm clear interior",
        "LASER CUT skins + PURCHASE insulation / intact cooling package · package NOT selected"
      ],
      [
        "Power / fuses / glands / enclosure / backup",
        "1 set",
        "GFCI feed; segregated dry controls; ventilated battery shelter",
        "PURCHASE Amazon/McMaster + PRINT mounts / CUT panels"
      ]
    ]
  },
  "limitations": [
    "Sampled 2D rigid-envelope geometry",
    "Unmeasured food friction and adhesion",
    "No structural certification or refrigerator selection",
    "Detailed actuator, lid, slide and harness CAD unresolved"
  ]
}
