{
  "schemaVersion": 1,
  "kind": "desk-geometry-plan",
  "displayUnit": "mm",
  "inputsMM": {
    "deskThickness": 25,
    "clampMin": 10,
    "clampMax": 50,
    "topWidth": 100,
    "topDepth": 120,
    "upperWidth": 80,
    "upperDepth": 100,
    "bottomWidth": 90,
    "bottomDepth": 85,
    "lowerWidth": 70,
    "lowerDepth": 80,
    "edgeToRail": 45,
    "insertionDepth": 60,
    "rearGap": 100,
    "rearRequired": 80,
    "deskWidth": 1400,
    "roomWidth": 1600,
    "sideAllowance": 100,
    "deskDepth": 700,
    "roomDepth": 1150,
    "frontAllowance": 550
  },
  "checks": [
    {
      "id": "thickness",
      "label": "Thickness range",
      "status": "met",
      "formula": "10 ≤ 25 ≤ 50 mm; minimum remaining margin 15 mm.",
      "marginMM": 15,
      "missingFields": []
    },
    {
      "id": "top-width",
      "label": "Upper contact width",
      "status": "met",
      "formula": "100 available ≥ 80 required mm; minimum remaining margin 20 mm.",
      "marginMM": 20,
      "missingFields": []
    },
    {
      "id": "top-depth",
      "label": "Upper contact depth",
      "status": "met",
      "formula": "120 available ≥ 100 required mm; minimum remaining margin 20 mm.",
      "marginMM": 20,
      "missingFields": []
    },
    {
      "id": "bottom-width",
      "label": "Lower contact width",
      "status": "met",
      "formula": "90 available ≥ 70 required mm; minimum remaining margin 20 mm.",
      "marginMM": 20,
      "missingFields": []
    },
    {
      "id": "bottom-depth",
      "label": "Lower contact depth",
      "status": "met",
      "formula": "85 available ≥ 80 required mm; minimum remaining margin 5 mm.",
      "marginMM": 5,
      "missingFields": []
    },
    {
      "id": "rail",
      "label": "Underside insertion space",
      "status": "conflict",
      "formula": "45 available ≥ 60 required mm; minimum remaining margin -15 mm.",
      "marginMM": -15,
      "missingFields": []
    },
    {
      "id": "rear",
      "label": "Rear installation space",
      "status": "met",
      "formula": "100 available ≥ 80 required mm; minimum remaining margin 20 mm.",
      "marginMM": 20,
      "missingFields": []
    },
    {
      "id": "room-width",
      "label": "Room width envelope",
      "status": "met",
      "formula": "1400 desk + 100 sides = 1500 required ≤ 1600 available mm; minimum remaining margin 100 mm.",
      "marginMM": 100,
      "missingFields": []
    },
    {
      "id": "room-depth",
      "label": "Room depth envelope",
      "status": "conflict",
      "formula": "700 desk + 100 rear + 550 front = 1350 required ≤ 1150 available mm; minimum remaining margin -200 mm.",
      "marginMM": -200,
      "missingFields": []
    }
  ],
  "counts": {
    "met": 7,
    "conflict": 2,
    "unknown": 0
  },
  "compatibilityVerified": false,
  "unverified": [
    "Desktop material, internal construction, condition and structural strength are unverified.",
    "The desk manufacturer’s permission for this exact clamp installation is unverified.",
    "Arm and desktop load limits, monitor weight without its stand, VESA pattern, fasteners and installation instructions are unverified.",
    "Curved or beveled edges, contact alignment, mounting torque, three-dimensional obstructions and arm/cable movement are unverified."
  ],
  "assumptions": [
    "User-entered dimensions, not a model database or manufacturer verification.",
    "Flat rectangular contact areas must exist at the same intended clamp position; width and depth are compared separately with no rotation.",
    "Use a conservative unobstructed insertion envelope; the calculator does not model a particular rail or clamp shape.",
    "Room width is desk width plus total side allowance; depth is desk depth plus available rear gap plus chosen front allowance.",
    "No default chair, access or installation allowance is prescribed. Equality leaves no physical tolerance margin.",
    "Displayed numbers are rounded to six decimals. Calculations use canonical mm; a 0.000000001 mm numerical epsilon is not a fitting tolerance."
  ]
}
