{
  "id": "exp-001",
  "slug": "exp-001-one-centimeter-overlap",
  "algorithm": "2.0.0",
  "legacyAlgorithm": "1.0.0",
  "geometrySha256": "313c4fd15b13941f5b189a75e732cbb03aef2a9c75d65f1a1b7d581d925b7976",
  "generated": "2026-11-07",
  "generator": "tools/run_experiments.mjs",
  "verifier": "tools/verify_experiments.py",
  "kind": "simulation",
  "cases": [
    {
      "id": "touch-x",
      "label": {
        "ko": "x방향으로 딱 맞닿음",
        "en": "Edges touch (x)"
      },
      "preset": "x1touchX",
      "input": {
        "room": {
          "w": 300,
          "h": 300
        },
        "items": [
          {
            "type": "desk",
            "x": 20,
            "y": 20,
            "w": 105,
            "h": 50
          },
          {
            "type": "wardrobe",
            "x": 125,
            "y": 20,
            "w": 100,
            "h": 60
          }
        ]
      },
      "actual": {
        "overlap": false,
        "overlapArea": 0,
        "distance": 0,
        "clashes": 0,
        "union": 11250
      },
      "legacy": {
        "overlap": false
      },
      "expected": {
        "overlap": false,
        "overlapArea": 0,
        "distance": 0.0,
        "union": 11250,
        "method": "interval arithmetic + 1 cm cell count"
      },
      "checks": [
        {
          "name": "overlap",
          "expected": false,
          "actual": false,
          "pass": true
        },
        {
          "name": "overlap area cm²",
          "expected": 0,
          "actual": 0,
          "pass": true
        },
        {
          "name": "distance cm",
          "expected": 0.0,
          "actual": 0,
          "pass": true
        },
        {
          "name": "union cm²",
          "expected": 11250,
          "actual": 11250,
          "pass": true
        },
        {
          "name": "clash count",
          "expected": 0,
          "actual": 0,
          "pass": true
        },
        {
          "name": "v1 overlap",
          "expected": false,
          "actual": false,
          "pass": true
        }
      ],
      "pass": true
    },
    {
      "id": "overlap-x",
      "label": {
        "ko": "x방향으로 1cm 겹침",
        "en": "1 cm overlap (x)"
      },
      "preset": "x1overlapX",
      "input": {
        "room": {
          "w": 300,
          "h": 300
        },
        "items": [
          {
            "type": "desk",
            "x": 20,
            "y": 20,
            "w": 105,
            "h": 50
          },
          {
            "type": "wardrobe",
            "x": 124,
            "y": 20,
            "w": 100,
            "h": 60
          }
        ]
      },
      "actual": {
        "overlap": true,
        "overlapArea": 50,
        "distance": 0,
        "clashes": 1,
        "union": 11200
      },
      "legacy": {
        "overlap": true
      },
      "expected": {
        "overlap": true,
        "overlapArea": 50,
        "distance": 0.0,
        "union": 11200,
        "method": "interval arithmetic + 1 cm cell count"
      },
      "checks": [
        {
          "name": "overlap",
          "expected": true,
          "actual": true,
          "pass": true
        },
        {
          "name": "overlap area cm²",
          "expected": 50,
          "actual": 50,
          "pass": true
        },
        {
          "name": "distance cm",
          "expected": 0.0,
          "actual": 0,
          "pass": true
        },
        {
          "name": "union cm²",
          "expected": 11200,
          "actual": 11200,
          "pass": true
        },
        {
          "name": "clash count",
          "expected": 1,
          "actual": 1,
          "pass": true
        },
        {
          "name": "v1 overlap",
          "expected": true,
          "actual": true,
          "pass": true
        }
      ],
      "pass": true
    },
    {
      "id": "gap-x",
      "label": {
        "ko": "x방향으로 1cm 떨어짐",
        "en": "1 cm apart (x)"
      },
      "preset": "x1gapX",
      "input": {
        "room": {
          "w": 300,
          "h": 300
        },
        "items": [
          {
            "type": "desk",
            "x": 20,
            "y": 20,
            "w": 105,
            "h": 50
          },
          {
            "type": "wardrobe",
            "x": 126,
            "y": 20,
            "w": 100,
            "h": 60
          }
        ]
      },
      "actual": {
        "overlap": false,
        "overlapArea": 0,
        "distance": 1,
        "clashes": 0,
        "union": 11250
      },
      "legacy": {
        "overlap": false
      },
      "expected": {
        "overlap": false,
        "overlapArea": 0,
        "distance": 1.0,
        "union": 11250,
        "method": "interval arithmetic + 1 cm cell count"
      },
      "checks": [
        {
          "name": "overlap",
          "expected": false,
          "actual": false,
          "pass": true
        },
        {
          "name": "overlap area cm²",
          "expected": 0,
          "actual": 0,
          "pass": true
        },
        {
          "name": "distance cm",
          "expected": 1.0,
          "actual": 1,
          "pass": true
        },
        {
          "name": "union cm²",
          "expected": 11250,
          "actual": 11250,
          "pass": true
        },
        {
          "name": "clash count",
          "expected": 0,
          "actual": 0,
          "pass": true
        },
        {
          "name": "v1 overlap",
          "expected": false,
          "actual": false,
          "pass": true
        }
      ],
      "pass": true
    },
    {
      "id": "touch-y",
      "label": {
        "ko": "y방향으로 딱 맞닿음",
        "en": "Edges touch (y)"
      },
      "preset": "x1touchY",
      "input": {
        "room": {
          "w": 300,
          "h": 300
        },
        "items": [
          {
            "type": "desk",
            "x": 20,
            "y": 20,
            "w": 105,
            "h": 50
          },
          {
            "type": "wardrobe",
            "x": 20,
            "y": 70,
            "w": 100,
            "h": 60
          }
        ]
      },
      "actual": {
        "overlap": false,
        "overlapArea": 0,
        "distance": 0,
        "clashes": 0,
        "union": 11250
      },
      "legacy": {
        "overlap": false
      },
      "expected": {
        "overlap": false,
        "overlapArea": 0,
        "distance": 0.0,
        "union": 11250,
        "method": "interval arithmetic + 1 cm cell count"
      },
      "checks": [
        {
          "name": "overlap",
          "expected": false,
          "actual": false,
          "pass": true
        },
        {
          "name": "overlap area cm²",
          "expected": 0,
          "actual": 0,
          "pass": true
        },
        {
          "name": "distance cm",
          "expected": 0.0,
          "actual": 0,
          "pass": true
        },
        {
          "name": "union cm²",
          "expected": 11250,
          "actual": 11250,
          "pass": true
        },
        {
          "name": "clash count",
          "expected": 0,
          "actual": 0,
          "pass": true
        },
        {
          "name": "v1 overlap",
          "expected": false,
          "actual": false,
          "pass": true
        }
      ],
      "pass": true
    },
    {
      "id": "overlap-y",
      "label": {
        "ko": "y방향으로 1cm 겹침",
        "en": "1 cm overlap (y)"
      },
      "preset": "x1overlapY",
      "input": {
        "room": {
          "w": 300,
          "h": 300
        },
        "items": [
          {
            "type": "desk",
            "x": 20,
            "y": 20,
            "w": 105,
            "h": 50
          },
          {
            "type": "wardrobe",
            "x": 20,
            "y": 69,
            "w": 100,
            "h": 60
          }
        ]
      },
      "actual": {
        "overlap": true,
        "overlapArea": 100,
        "distance": 0,
        "clashes": 1,
        "union": 11150
      },
      "legacy": {
        "overlap": true
      },
      "expected": {
        "overlap": true,
        "overlapArea": 100,
        "distance": 0.0,
        "union": 11150,
        "method": "interval arithmetic + 1 cm cell count"
      },
      "checks": [
        {
          "name": "overlap",
          "expected": true,
          "actual": true,
          "pass": true
        },
        {
          "name": "overlap area cm²",
          "expected": 100,
          "actual": 100,
          "pass": true
        },
        {
          "name": "distance cm",
          "expected": 0.0,
          "actual": 0,
          "pass": true
        },
        {
          "name": "union cm²",
          "expected": 11150,
          "actual": 11150,
          "pass": true
        },
        {
          "name": "clash count",
          "expected": 1,
          "actual": 1,
          "pass": true
        },
        {
          "name": "v1 overlap",
          "expected": true,
          "actual": true,
          "pass": true
        }
      ],
      "pass": true
    },
    {
      "id": "corner",
      "label": {
        "ko": "모서리만 맞닿음",
        "en": "Corners touch"
      },
      "preset": "x1corner",
      "input": {
        "room": {
          "w": 300,
          "h": 300
        },
        "items": [
          {
            "type": "desk",
            "x": 20,
            "y": 20,
            "w": 105,
            "h": 50
          },
          {
            "type": "wardrobe",
            "x": 125,
            "y": 70,
            "w": 100,
            "h": 60
          }
        ]
      },
      "actual": {
        "overlap": false,
        "overlapArea": 0,
        "distance": 0,
        "clashes": 0,
        "union": 11250
      },
      "legacy": {
        "overlap": false
      },
      "expected": {
        "overlap": false,
        "overlapArea": 0,
        "distance": 0.0,
        "union": 11250,
        "method": "interval arithmetic + 1 cm cell count"
      },
      "checks": [
        {
          "name": "overlap",
          "expected": false,
          "actual": false,
          "pass": true
        },
        {
          "name": "overlap area cm²",
          "expected": 0,
          "actual": 0,
          "pass": true
        },
        {
          "name": "distance cm",
          "expected": 0.0,
          "actual": 0,
          "pass": true
        },
        {
          "name": "union cm²",
          "expected": 11250,
          "actual": 11250,
          "pass": true
        },
        {
          "name": "clash count",
          "expected": 0,
          "actual": 0,
          "pass": true
        },
        {
          "name": "v1 overlap",
          "expected": false,
          "actual": false,
          "pass": true
        }
      ],
      "pass": true
    },
    {
      "id": "rotated-touch",
      "label": {
        "ko": "90° 돌린 옷장이 맞닿음",
        "en": "Rotated wardrobe touches"
      },
      "preset": "x1rotatedTouch",
      "input": {
        "room": {
          "w": 300,
          "h": 300
        },
        "items": [
          {
            "type": "desk",
            "x": 20,
            "y": 20,
            "w": 105,
            "h": 50
          },
          {
            "type": "wardrobe",
            "x": 125,
            "y": 20,
            "w": 60,
            "h": 100
          }
        ]
      },
      "actual": {
        "overlap": false,
        "overlapArea": 0,
        "distance": 0,
        "clashes": 0,
        "union": 11250
      },
      "legacy": {
        "overlap": false
      },
      "expected": {
        "overlap": false,
        "overlapArea": 0,
        "distance": 0.0,
        "union": 11250,
        "method": "interval arithmetic + 1 cm cell count"
      },
      "checks": [
        {
          "name": "overlap",
          "expected": false,
          "actual": false,
          "pass": true
        },
        {
          "name": "overlap area cm²",
          "expected": 0,
          "actual": 0,
          "pass": true
        },
        {
          "name": "distance cm",
          "expected": 0.0,
          "actual": 0,
          "pass": true
        },
        {
          "name": "union cm²",
          "expected": 11250,
          "actual": 11250,
          "pass": true
        },
        {
          "name": "clash count",
          "expected": 0,
          "actual": 0,
          "pass": true
        },
        {
          "name": "v1 overlap",
          "expected": false,
          "actual": false,
          "pass": true
        }
      ],
      "pass": true
    },
    {
      "id": "rotated-overlap",
      "label": {
        "ko": "90° 돌린 옷장이 1cm 겹침",
        "en": "Rotated wardrobe, 1 cm overlap"
      },
      "preset": "x1rotatedOverlap",
      "input": {
        "room": {
          "w": 300,
          "h": 300
        },
        "items": [
          {
            "type": "desk",
            "x": 20,
            "y": 20,
            "w": 105,
            "h": 50
          },
          {
            "type": "wardrobe",
            "x": 124,
            "y": 20,
            "w": 60,
            "h": 100
          }
        ]
      },
      "actual": {
        "overlap": true,
        "overlapArea": 50,
        "distance": 0,
        "clashes": 1,
        "union": 11200
      },
      "legacy": {
        "overlap": true
      },
      "expected": {
        "overlap": true,
        "overlapArea": 50,
        "distance": 0.0,
        "union": 11200,
        "method": "interval arithmetic + 1 cm cell count"
      },
      "checks": [
        {
          "name": "overlap",
          "expected": true,
          "actual": true,
          "pass": true
        },
        {
          "name": "overlap area cm²",
          "expected": 50,
          "actual": 50,
          "pass": true
        },
        {
          "name": "distance cm",
          "expected": 0.0,
          "actual": 0,
          "pass": true
        },
        {
          "name": "union cm²",
          "expected": 11200,
          "actual": 11200,
          "pass": true
        },
        {
          "name": "clash count",
          "expected": 1,
          "actual": 1,
          "pass": true
        },
        {
          "name": "v1 overlap",
          "expected": true,
          "actual": true,
          "pass": true
        }
      ],
      "pass": true
    }
  ],
  "verification": {
    "cases": 8,
    "passed": 8,
    "failed": 0,
    "checks": 48
  }
}
