{
  "schema_version": "1.3",
  "site": "Ti-Ratana Heights",
  "revision": "2026-09-28-canopy-length-and-shrine-spacing",
  "purpose": "Reusable evidence-based geometry constraints for visitor illustration and future 3D reconstruction. Not a measured 3D model or evacuation map.",
  "coordinate_frames": {
    "plan": {
      "source": "heights-safety.pdf",
      "page_1_based": 2,
      "sha256": "9c83584d92e7a1872a3d132a9d41fa2392f2cf08be868d3c9d1b6aa044235c70",
      "page_size": [
        2448,
        1584
      ],
      "units": "PDF points, not metres",
      "origin": "top-left",
      "x": "right",
      "y": "down",
      "north": "towards upper left; retain original compass",
      "viewbox": [
        680,
        685,
        1220,
        780
      ],
      "metres_per_unit": null
    },
    "osm": {
      "crs": "EPSG:4326",
      "axis_order": [
        "longitude",
        "latitude"
      ],
      "status": "approximate independent context; not registered to floor plan"
    },
    "art": {
      "units": "percent of image width/height",
      "status": "UI anchors only; never use for survey coordinates"
    }
  },
  "buildings": [
    {
      "id": "tathagata",
      "footprint_plan_units": [
        [
          937.67,
          1119.721
        ],
        [
          1402.089,
          1092.553
        ],
        [
          1415.963,
          1370.95
        ],
        [
          953.714,
          1393.986
        ],
        [
          937.67,
          1119.721
        ]
      ],
      "footprint_status": "source-plan trace; retain original source paths for highest fidelity",
      "anchor_plan_units": [
        1265,
        1200
      ],
      "height_m": null,
      "elevation_m": null,
      "locked_placement": true
    },
    {
      "id": "kitchen",
      "footprint_plan_units": [
        [
          878.996,
          761.309
        ],
        [
          1170.018,
          747.838
        ],
        [
          1178.457,
          930.148
        ],
        [
          889.698,
          943.514
        ],
        [
          878.996,
          761.309
        ]
      ],
      "footprint_status": "source-plan trace; retain original source paths for highest fidelity",
      "anchor_plan_units": [
        1107,
        820
      ],
      "height_m": null,
      "elevation_m": null,
      "locked_placement": true
    },
    {
      "id": "washrooms",
      "footprint_plan_units": [
        [
          1207.392,
          854.402
        ],
        [
          1430.949,
          844.053
        ],
        [
          1434.386,
          918.301
        ],
        [
          1210.829,
          928.649
        ],
        [
          1207.392,
          854.402
        ]
      ],
      "footprint_status": "source-plan trace; retain original source paths for highest fidelity",
      "anchor_plan_units": [
        1320,
        889
      ],
      "height_m": null,
      "elevation_m": null,
      "locked_placement": true
    },
    {
      "id": "dining",
      "footprint_plan_units": [
        [
          1500.8421630859375,
          1365.3123779296875
        ],
        [
          1602.950927734375,
          1358.5303955078125
        ],
        [
          1599.5589599609375,
          1307.46044921875
        ],
        [
          1636.974609375,
          1305.2225341796875
        ],
        [
          1676.106201171875,
          1302.882080078125
        ],
        [
          1706.5638427734375,
          1301.060302734375
        ],
        [
          1703.2412109375,
          1251.035400390625
        ],
        [
          1673.09375,
          1252.5177001953125
        ],
        [
          1633.9375,
          1254.44287109375
        ],
        [
          1597.9202880859375,
          1256.2137451171875
        ],
        [
          1595.80517578125,
          1201.5872802734375
        ],
        [
          1490.2391357421875,
          1205.6749267578125
        ],
        [
          1500.8421630859375,
          1365.3123779296875
        ]
      ],
      "footprint_status": "Exact source room polygon, NOT a detached building footprint. Covered connection to main hall is confirmed by user and video; full canopy extent is not delineated by this room polygon.",
      "anchor_plan_units": [
        1549,
        1283
      ],
      "height_m": null,
      "elevation_m": null,
      "locked_placement": true,
      "name": "Open-air dining / gathering area",
      "enclosure": "open-sided, roofed",
      "joins": [
        "tathagata",
        "admin"
      ]
    },
    {
      "id": "bodhi",
      "footprint_plan_units": [
        [
          1746.032,
          1194.487
        ],
        [
          1824.499,
          1189.275
        ],
        [
          1828.862,
          1254.97
        ],
        [
          1750.396,
          1260.181
        ],
        [
          1746.032,
          1194.487
        ]
      ],
      "footprint_status": "source-plan trace; retain original source paths for highest fidelity",
      "anchor_plan_units": [
        1787,
        1225
      ],
      "height_m": null,
      "elevation_m": null,
      "locked_placement": true
    },
    {
      "id": "admin",
      "name": "Administration office within connected single-storey office block",
      "footprint_plan_units": [
        [
          1673.09375,
          1252.5177001953125
        ],
        [
          1670.77294921875,
          1198.6844482421875
        ],
        [
          1631.8311767578125,
          1200.1923828125
        ],
        [
          1633.9375,
          1254.44287109375
        ],
        [
          1673.09375,
          1252.5177001953125
        ]
      ],
      "footprint_status": "Exact administration room polygon from source drawing index 10; not the entire office block envelope.",
      "anchor_plan_units": [
        1652,
        1226
      ],
      "height_m": null,
      "elevation_m": null,
      "joins": [
        "dining"
      ],
      "locked_placement": true
    }
  ],
  "constraints": [
    {
      "id": "hall-facade",
      "rule": "Two storeys; long cream facade with glazing. No projecting central gabled entrance porch. Do not convert plan door symbols into roof notches.",
      "evidence": [
        "exterior photographs",
        "172549 video 24–72s",
        "ground-floor and upper-floor plan"
      ],
      "confidence": "high"
    },
    {
      "id": "bodhi-shrine",
      "rule": "Cream pavilion with low red-tile hipped roof and cream overhanging eaves, columns, glass-protected seated white Buddha, tiled platform and large tree behind; bell separate.",
      "evidence": [
        "bodhi.webp",
        "172549 video 95–104s"
      ],
      "confidence": "high identity; tree trunk coordinate unknown"
    },
    {
      "id": "gate",
      "rule": "Plain black/grey metal swing leaves on cream piers at road end beyond shrine/dining. Short stone retaining wall on hill side. No roofed ceremonial arch.",
      "evidence": [
        "172549 video 116–139s",
        "173000 video 0s"
      ],
      "confidence": "high form and adjacency; plan coordinate unknown"
    },
    {
      "id": "bell",
      "rule": "Dark bell in dark red freestanding frame beside tree edge between hall area and Bodhi pavilion.",
      "evidence": [
        "172549 video 12s,95s"
      ],
      "confidence": "high identity and sequence; plan coordinate unknown"
    },
    {
      "id": "connected-dining",
      "rule": "Main hall directly joins the open-air roofed dining/gathering space, which directly continues into the administration office block. Continuous covered connection; no driveway, landscape strip or open-sky gap between them. Dining is open-sided, not a separate enclosed building.",
      "evidence": [
        "User correction 28 September 2026",
        "DJI_20260912_172549_500_video(1).mp4 77–83s"
      ],
      "confidence": "confirmed connection; canopy dimensions unmeasured"
    },
    {
      "id": "office-entrance",
      "rule": "Gabled portico belongs to gate-facing end of single-storey office block. Do not transplant onto hall or create additional side porch.",
      "evidence": [
        "Exterior photos",
        "172549 video 0s,87–108s"
      ],
      "confidence": "high"
    },
    {
      "id": "side-roof-rejected",
      "rule": "Reject the misplaced narrow strip from v2/v3. This rejection does NOT mean the hall-to-kitchen/washroom area is unroofed. A BROAD shallow-pitched grey metal canopy occupies most of the intervening space between landmarks 1, 5 and 4, with narrow edge gaps. Preserve the actual canopy, open sides and support columns.",
      "evidence": [
        "User clarification 28 September 2026",
        "IMG_7168.jpeg",
        "DJI_20260912_172430_680_video.mp4",
        "DJI_20260912_171827_827_video.mp4 at 10–15s"
      ],
      "confidence": "confirmed broad coverage and location; roof boundary and gap widths unmeasured"
    },
    {
      "id": "sliding-door",
      "rule": "Hall has sliding glazed access in its actual facade; video 77–83s shows hall glazing immediately beside gathering area. No projecting roof, porch or guessed relocation of doorway. Door centre and width remain null pending measured registration.",
      "evidence": [
        "User explicit correction",
        "172549 video 73–83s"
      ],
      "confidence": "existence confirmed; exact door coordinate unmeasured",
      "centre_plan_units": null,
      "width_m": null
    },
    {
      "id": "canopy-length",
      "rule": "Match the longitudinal span of main hall (1). Do not continue over the areas of dining (3) or administration (8).",
      "confidence": "User-confirmed; exact eave projection unmeasured"
    },
    {
      "id": "office-shrine-spacing",
      "rule": "Keep the office connected to dining. The separate Bodhi shrine stands slightly farther from the office than v6 art depicted; preserve a visible paved separation. Do not infer a new measured coordinate from the illustration.",
      "evidence": [
        "User correction 28 September 2026",
        "Entrance photograph; original source plan"
      ],
      "confidence": "Relative separation confirmed; exact metric distance unknown"
    }
  ],
  "topology": {
    "connected_complex": [
      "tathagata",
      "dining",
      "admin"
    ],
    "edges": [
      {
        "from": "tathagata",
        "to": "dining",
        "kind": "direct continuous covered connection",
        "geometry": null,
        "evidence": "user and 77–83s exterior video"
      },
      {
        "from": "dining",
        "to": "admin",
        "kind": "direct continuous covered connection",
        "geometry": null,
        "evidence": "user and 77–87s exterior video"
      },
      {
        "from": "gate",
        "to": "arrival_court",
        "kind": "entrance",
        "geometry": null
      },
      {
        "from": "arrival_court",
        "to": "dining",
        "kind": "open gathering frontage",
        "geometry": null
      }
    ],
    "negative_constraints": [
      "No road between main hall and dining",
      "No detached dining building",
      "Do not substitute a narrow misplaced strip for the broad canopy between landmarks 1,5,4",
      "Do not show the covered service/parking band as a large uncovered courtyard",
      "Canopy ends align with hall span; no extension into dining/office forecourt"
    ],
    "covered_area_groups": [
      {
        "roof": "hall-kitchen-washroom-canopy",
        "adjacent_buildings": [
          "tathagata",
          "kitchen",
          "washrooms"
        ],
        "edge_gaps": "narrow; exact widths unknown",
        "does_not_enclose": "arrival forecourt by shrine/gate"
      }
    ]
  },
  "trail_reference": {
    "geometry": null,
    "status": "No georeferenced route polyline recovered. A supplied satellite workout screenshot shows an approximate short segment; it has no recoverable control points or full-route coverage and is not included in the public data. Do not infer exact geometry from workout distance.",
    "visual_sequence": [
      {
        "time_s": [
          0,
          36
        ],
        "observation": "Red path climbs from gate vicinity, bends beside hillside."
      },
      {
        "time_s": [
          48,
          132
        ],
        "observation": "Winding red concrete path with alternating bends and solar light poles."
      },
      {
        "time_s": [
          144,
          192
        ],
        "observation": "Path passes open hillside and reaches upper red paved terrace."
      },
      {
        "time_s": [
          204,
          247
        ],
        "observation": "Peak terrace beside slope and overhead power lines; valley view."
      }
    ],
    "source": "DJI_20260912_173000_295_video(1).mp4",
    "use": "Topology and surface reference only; no exact distance, heading or scale derived from video."
  },
  "future_3d": {
    "ready": [
      "footprint coordinate frame",
      "building identity",
      "relative placement",
      "observed connections",
      "material references",
      "evidence timestamps"
    ],
    "required_before_navigable_accuracy": [
      "measured scale and control points",
      "building heights and floor elevations",
      "roof and canopy dimensions",
      "door/stair widths and exact positions",
      "gate and tree coordinates",
      "terrain elevations and georeferenced trail track"
    ],
    "unknown_value_policy": "null, never guessed",
    "collision_mesh_policy": "Do not generate traversable doors or emergency routes from artwork."
  },
  "public_export_policy": "No personal workout screenshots, biometric readings, capture schedules or individual movement track included.",
  "illustration_review": {
    "supersedes": "v6 broad canopy extended beyond hall into dining/office forecourt; this is rejected.",
    "do_not_reconstruct_from_illustration": true,
    "source_of_truth": "source-plan room polygons plus confirmed connection topology",
    "unknowns": [
      "canopy edge coordinates",
      "door centres and widths",
      "metric heights",
      "broad canopy edge coordinates",
      "narrow roof gap widths"
    ],
    "publication_status": "v7 interpretive illustration: canopy shortened to hall span, shrine-office separation increased",
    "composition_reference": "illustration-control.svg"
  },
  "covered_structures": [
    {
      "id": "hall-kitchen-washroom-canopy",
      "name": "Metal canopy between main hall, kitchen and washrooms",
      "landmark_ids": [
        "tathagata",
        "kitchen",
        "washrooms"
      ],
      "roof_material": "grey corrugated metal",
      "roof_form": "broad, shallow-pitched canopy on steel columns",
      "enclosure": "open-sided",
      "footprint_plan_units": null,
      "height_m": null,
      "gap_width_m": null,
      "placement": "Fills most of the space between the main hall (1) and kitchen (5)/washroom (4) blocks. Narrow gaps remain at the edges; the entire band must not be shown as an uncovered courtyard. Keep the arrival forecourt towards the Bodhi shrine and gate open.",
      "evidence": [
        {
          "file": "IMG_7168.jpeg",
          "observation": "Canopy beside two-storey hall; broad frontage, visible steel supports and parked cars."
        },
        {
          "file": "DJI_20260912_172430_680_video.mp4",
          "interval_s": [
            0,
            21.2
          ],
          "observation": "Successive exterior views retain broad hall-side canopy and open arrival forecourt."
        },
        {
          "file": "DJI_20260912_171827_827_video.mp4",
          "interval_s": [
            10,
            15
          ],
          "observation": "Under-canopy view: hall glazing on one side, service blocks on the other, narrow daylight separation near utility eaves."
        },
        {
          "source": "User correction, 28 September 2026",
          "observation": "Roof between markers 1,5,4 with only tiny intervening space."
        },
        {
          "source": "User correction 28 September 2026, 23:30 MYT",
          "observation": "Roof is the length of landmark 1 and must not extend into 3 or 8; shrine 2 is slightly farther from office 8."
        }
      ],
      "geometry_status": "Existence, material, adjacency and broad coverage confirmed. Illustrative envelope only; no measured roof polygon or scale.",
      "longitudinal_extent_rule": "Match the longitudinal span of main hall (1). Do not continue over the areas of dining (3) or administration (8)."
    }
  ]
}
