{
 "schema": "carthage.explanatory-spatial-models/1",
 "renderer": "spatial.js",
 "method": "Original interactive SVG with a single camera-like orthographic projection per view; no network or geometry library. Rotation changes display angle only. Neither photographs nor modern mapping control model coordinates.",
 "models": {
  "antonine": {
   "source": "lezine1968",
   "source_title": "Alexandre Lézine, Carthage–Utique: études d’architecture et d’urbanisme (1968)",
   "plan_locator": "printed pp.16–17",
   "reported_basement_clear_length_m": 45.525,
   "conditional_upper_length_m": 46.905,
   "upper_length_status": "Published reconstruction argument assuming centred thinner upper walls; their alignment explicitly unproved",
   "width_Roman_feet": [
    75,
    80
   ],
   "Roman_foot_m": 0.295,
   "width_interval_m": [
    22.125,
    23.6
   ],
   "interactive_width_step_Roman_feet": 0.5,
   "interpolation_status": "Intermediate slider values are exploratory display settings, not new measurements",
   "height_hypothesis": {
    "height_m": 29.5,
    "Roman_feet": 100,
    "enabled_by_default": false,
    "status": "Explicit scholarly reconstruction hypothesis, not measured surviving height",
    "locator": "printed pp.19–21; proposed 100-foot room height on printed p.20",
    "quotation": "On peut estimer la hauteur totale de la salle à 100 pieds, soit 20 modules (29,50 m).",
    "source_review": "spatial-evidence-audit.json and evidence-review/lezine-024.png through -026.png",
    "locator_status": "Published page locator supplied in the recorded citation; verification and reuse limits remain separate."
   },
   "geometry": "Upper rectangular dimensional envelope; separate displaced basement comparison line; optional dashed rectangular height envelope with no vault or roof shape",
   "not_supplied": [
    "Survey registration",
    "Wall-face coordinates",
    "Door coordinates",
    "Column coordinates",
    "Roof or vault form",
    "Surviving upper elevation",
    "Physical alignment between the drawn basement line and upper envelope"
   ],
   "graphic_only": [
    "Drafting grid",
    "Basement comparison-line displacement",
    "Surface shading"
   ],
   "combined_volume_status": "Analytical recombination of published conditional length, estimated width and restored height; not an independently measured volume"
  },
  "room18": {
   "source": "lezine1968",
   "locator": "printed p.70, Salle 18",
   "claim": "H602",
   "datum": "0.00m = radier in this room record, not sea level",
   "known_intervals_m": [
    {
     "id": "L1",
     "description": "Ash and charcoal",
     "bottom": 0,
     "top": 0.62
    },
    {
     "id": "L2",
     "description": "Red clay",
     "bottom": 0.62,
     "top": 0.84
    },
    {
     "id": "L3",
     "description": "Earth and charcoal streaks",
     "bottom": 0.84,
     "top": 0.95
    }
   ],
   "undescribed_interval_m": [
    0.95,
    1.06
   ],
   "undescribed_interval_graphic": "Hatched material block, not an empty gap or asserted material identification",
   "horizon": {
    "id": "L4",
    "description": "Compact charcoal layer",
    "height_m": 1.06,
    "thickness": "Unknown",
    "drawing": "Dashed position plane only; neither zero thickness nor an estimated thickness"
   },
   "horizontal_footprint": "Arbitrary; not a room plan. Independent drawing scale from vertical intervals",
   "not_supplied": [
    "Layer-specific dates",
    "Physical contact with the frigidarium envelope",
    "Photographic identification",
    "Measured room outline",
    "Upper deposit thickness or extent"
   ],
   "identity_guard": "Do not identify basement Room18 with feature18 in a bathing-floor plan without independent evidence",
   "graphic_only": [
    "Material textures",
    "Horizontal extent and viewpoint"
   ],
   "locator_status": "Published page locator supplied in the recorded citation; verification and reuse limits remain separate."
  },
  "harbour": {
   "source": "hurst2010",
   "locators": {
    "late_Punic": "Printed p.53, especially n.11; claim C03",
    "Roman": "Printed pp.55–56; claim C01",
    "shoreline_caution": "Printed p.53; claim C14"
   },
   "geometry": "Abstract circular island within basin; all radii and positions arbitrary; no depth or elevation encoded",
   "phase_switch": "Separate historical interpretations, not synchronized measured construction phases",
   "late_Punic": "Naval arsenal interpretation",
   "Roman": "Colonnaded island complex interpretation",
   "not_supplied": [
    "Ancient shoreline geometry",
    "Basin depth",
    "Building dimensions",
    "Excavated shed totals",
    "Column count",
    "Roof shapes",
    "Modern camera registration"
   ],
   "graphic_only": [
    "Water marks",
    "Circular radii",
    "Architectural-setting bands and dashed boundaries"
   ]
  }
 },
 "input_files": [
  {
   "path": "assets/plans/antonine-frigidarium.svg",
   "sha256": "16b317a6eed208b92a99b2352244e1f5d75e43cd9056b67171ed51ac5350df7f"
  },
  {
   "path": "assets/lab/room18-manifest.json",
   "sha256": "2b60656f0d5a7a72022c37d8e3f9d7f21f4f9bf33dfa1789509ca86c2d69b75b"
  },
  {
   "path": "assets/explore/harbour-phases.svg",
   "sha256": "ebca2f1041ba592ff1fd0b6d92a82eca7b0ebeb1e83cb5b8672888d5004ee914"
  }
 ],
 "renderer_sha256": "11c96f24d6cd3dfd72c147b72efd94c5f8a9d0ab9a7a73ab543399609faa67e0",
 "stylesheet_sha256": "1c06a0e43ec7302a81f8b2a81328ad03049a05d4b61e38e28e7f50664b125f2f",
 "rights": "Original explanatory code and geometry; no publication figure reproduced by this renderer",
 "input_files_role": "Canonical source-byte bindings; projected/public derivatives may have different bytes",
 "projection": {
  "kind": "Orthographic parallel projection",
  "screen_axes": "X = cos(a)x − sin(a)y; Y = 0.48(sin(a)x + cos(a)y) − sqrt(1 − 0.48²)z",
  "check": "Screen basis row vectors are perpendicular and each has unit norm",
  "plan_view": "X = cos(a)x − sin(a)y; Y = sin(a)x + cos(a)y; Z collapsed"
 }
}
