{
  "title": "One missing triangle: reproducible geometry exercise",
  "version": "1.0",
  "verification_date": "2026-09-13",
  "input_provenance": "Synthetic geometry fixtures maintained in this repository; no customer upload or physical print.",
  "method": "Read ASCII STL triangle coordinates; join edges with exactly equal endpoint coordinates, ignoring direction; count single-use edges. Bounds are coordinate extrema. This method is intentionally limited to these exact-coordinate fixtures, not a replacement for the application analyzer.",
  "units": "STL does not encode units. This exercise interprets each file unit as one millimeter.",
  "limits": "No Print Score, wall-thickness claim, support/slicer result, strength, permission, or physical outcome is assigned. Closing a boundary does not establish printability.",
  "files": [
    {
      "file": "closed-cube.stl",
      "source": "tests/PrintPass.StudioMasterVerification/fixtures/closed-cube.stl",
      "sha256": "62da7bb88aff88ed142d0830fd3e4b7ce6401322bd2c6251dfff63dc5af41651",
      "triangles": 12,
      "unique_vertices": 8,
      "boundary_edges": 0,
      "edges_shared_by_more_than_two_triangles": 0,
      "dimensions_in_file_units": [
        10.0,
        10.0,
        10.0
      ],
      "boundary_edge_coordinates": []
    },
    {
      "file": "triangular-hole-cube.stl",
      "source": "tests/PrintPass.StudioMasterVerification/fixtures/triangular-hole-cube.stl",
      "sha256": "a56ab27b41b3d8a4758a7a90cf3723f7194d25dd8d16cea32bc8333bd06aafd4",
      "triangles": 11,
      "unique_vertices": 8,
      "boundary_edges": 3,
      "edges_shared_by_more_than_two_triangles": 0,
      "dimensions_in_file_units": [
        10.0,
        10.0,
        10.0
      ],
      "boundary_edge_coordinates": [
        [
          [
            0.0,
            0.0,
            0.0
          ],
          [
            10.0,
            10.0,
            0.0
          ]
        ],
        [
          [
            0.0,
            10.0,
            0.0
          ],
          [
            10.0,
            10.0,
            0.0
          ]
        ],
        [
          [
            0.0,
            0.0,
            0.0
          ],
          [
            0.0,
            10.0,
            0.0
          ]
        ]
      ]
    }
  ]
}
