{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://ufoathome.org/sighting.schema.json",
  "title": "UFO@home recording",
  "description": "One observer's recording of a sighting. See https://ufoathome.org/docs/format/",
  "type": "object",
  "properties": {
    "version": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "id": {
      "anyOf": [
        {
          "description": "Which account this is, unique across every recording anywhere: the day it happened, then who saw it (\"1964-04-24-ZamoraLonnie\"), or where for an anonymous observer.",
          "type": "string"
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "time": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "year": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "month": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "day": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "hour": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "minute": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "second": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "season": {
              "anyOf": [
                {
                  "description": "The season, when the date is only known to be \"in the spring of 2022\" (EDTF `2022-21`): then `month` and `day` are undefined.",
                  "enum": [
                    "spring",
                    "summer",
                    "autumn",
                    "winter"
                  ]
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "raw": {
              "anyOf": [
                {
                  "description": "The exact EDTF-ish text as typed in the editor UI (e.g.",
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "endTime": {
      "anyOf": [
        {
          "description": "See SightingEvent.endTime.",
          "type": "object",
          "properties": {
            "year": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "month": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "day": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "hour": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "minute": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "second": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "season": {
              "anyOf": [
                {
                  "description": "The season, when the date is only known to be \"in the spring of 2022\" (EDTF `2022-21`): then `month` and `day` are undefined.",
                  "enum": [
                    "spring",
                    "summer",
                    "autumn",
                    "winter"
                  ]
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "raw": {
              "anyOf": [
                {
                  "description": "The exact EDTF-ish text as typed in the editor UI (e.g.",
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "durationSeconds": {
      "anyOf": [
        {
          "description": "See SightingEvent.durationSeconds.",
          "type": "number"
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "durationText": {
      "anyOf": [
        {
          "description": "See SightingEvent.durationText.",
          "type": "string"
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "utcOffsetHours": {
      "anyOf": [
        {
          "description": "See SightingEvent.utcOffsetHours — the legal time zone `time`/`endTime` are expressed in.",
          "type": "number"
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "timeZone": {
      "anyOf": [
        {
          "description": "See SightingEvent.timeZone — the IANA rule `utcOffsetHours` was derived from, when it was.",
          "type": "string"
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "place": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "lat": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "lng": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "name": {
                    "anyOf": [
                      {
                        "description": "The place as it is named, fully qualified — \"Valensole, Alpes-de-Haute-Provence, …, France\".",
                        "type": "string"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "$ref": "#/$defs/stated"
              }
            ]
          }
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "observer": {
      "anyOf": [
        {
          "description": "See Sighting.observer.",
          "type": "object",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "description": "Who this is, as a reference: last name then first names, run together (\"ZamoraLonnie\"), whether or not a page exists for them yet.",
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "lastName": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "firstNames": {
              "anyOf": [
                {
                  "type": "array"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "account": {
      "anyOf": [
        {
          "description": "Who saw it and how their account travelled — see Account, and Sighting.account.",
          "type": "object",
          "properties": {
            "observerAgeYears": {
              "anyOf": [
                {
                  "description": "The main observer's age in years AT THE TIME, not today — a 1974 account is read by whoever finds it decades later, and the number that means anything is the one from then.",
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "observerOccupation": {
              "anyOf": [
                {
                  "description": "What the main observer did, as they are described: \"boulanger\", \"pilote de ligne\", \"gendarme\"."
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "source": {
              "anyOf": [
                {
                  "description": "How the account reached the person who wrote this recording.",
                  "enum": [
                    "on-site",
                    "interview",
                    "telephone",
                    "questionnaire",
                    "letter",
                    "social-media",
                    "press"
                  ]
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "followedUp": {
              "anyOf": [
                {
                  "description": "Whether the observer was gone back to after the first account.",
                  "type": "boolean"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "sway": {
      "anyOf": [
        {
          "description": "How much the observer's body sways the view at rest: 1 a person, 0 a tripod — see Sighting.sway.",
          "type": "number"
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "vehicle": {
      "anyOf": [
        {
          "description": "The vehicle the observer was in, when the decor does not draw it — see Sighting.vehicle.",
          "type": "object",
          "properties": {
            "kind": {
              "anyOf": [
                {
                  "enum": [
                    "car",
                    "van",
                    "truck",
                    "motorcycle",
                    "generic"
                  ]
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "windowsOpen": {
              "anyOf": [
                {
                  "description": "Whether the windows were open: the road and the wind come in, the cabin no longer muffles the engine.",
                  "type": "boolean"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "noise": {
              "anyOf": [
                {
                  "description": "How loud it was, against an ordinary one of its kind: 1 by default, 1.5 for \"very noisy\".",
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "description": {
      "anyOf": [
        {
          "description": "See SightingEvent.description — a plain string, or one per language."
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "image": {
      "anyOf": [
        {
          "description": "See SightingEvent.image — the picture a shared link to this recording shows.",
          "type": "string"
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "summary": {
      "anyOf": [
        {
          "description": "See SightingEvent.summary — what a shared link to this recording says of it."
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "summaryTime": {
      "anyOf": [
        {
          "description": "See SightingEvent.summaryTime — the second the picture of this recording's card is taken at.",
          "type": "number"
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "tags": {
      "anyOf": [
        {
          "description": "See SightingEvent.tags.",
          "type": "array"
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "timeline": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "keyframes": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "t": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "shapes": {
                            "anyOf": [
                              {
                                "type": "array",
                                "items": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "sourceId": {
                                          "anyOf": [
                                            {
                                              "type": "string"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "shape": {
                                          "anyOf": [
                                            {
                                              "type": "object",
                                              "properties": {
                                                "kind": {
                                                  "anyOf": [
                                                    {
                                                      "enum": [
                                                        "oval",
                                                        "polygon"
                                                      ]
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "bounds": {
                                                  "anyOf": [
                                                    {
                                                      "type": "object",
                                                      "properties": {
                                                        "x": {
                                                          "anyOf": [
                                                            {
                                                              "type": "number"
                                                            },
                                                            {
                                                              "$ref": "#/$defs/stated"
                                                            }
                                                          ]
                                                        },
                                                        "y": {
                                                          "anyOf": [
                                                            {
                                                              "type": "number"
                                                            },
                                                            {
                                                              "$ref": "#/$defs/stated"
                                                            }
                                                          ]
                                                        },
                                                        "width": {
                                                          "anyOf": [
                                                            {
                                                              "type": "number"
                                                            },
                                                            {
                                                              "$ref": "#/$defs/stated"
                                                            }
                                                          ]
                                                        },
                                                        "height": {
                                                          "anyOf": [
                                                            {
                                                              "type": "number"
                                                            },
                                                            {
                                                              "$ref": "#/$defs/stated"
                                                            }
                                                          ]
                                                        }
                                                      },
                                                      "additionalProperties": false
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "color": {
                                                  "anyOf": [
                                                    {
                                                      "description": "CSS color",
                                                      "type": "string"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "angle": {
                                                  "anyOf": [
                                                    {
                                                      "description": "Rotation in radians about the shape's centre, positive = clockwise on screen; 0 = no rotation",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "transparency": {
                                                  "anyOf": [
                                                    {
                                                      "description": "0 = opaque, 1 = fully transparent",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "haloScale": {
                                                  "anyOf": [
                                                    {
                                                      "description": "0 = no halo/glow, >1 = larger glow radius",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "blur": {
                                                  "anyOf": [
                                                    {
                                                      "description": "How indistinct the observer said its edges were — 0 for a hard outline, 1 for a shape with no edge at all.",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "brightness": {
                                                  "anyOf": [
                                                    {
                                                      "description": "How dazzling the observer said it was — 0 for a light you can look at, 1 for one you cannot.",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "selected": {
                                                  "anyOf": [
                                                    {
                                                      "type": "boolean"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "title": {
                                                  "anyOf": [
                                                    {
                                                      "description": "What the observer calls it, if anything."
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "angular": {
                                                  "anyOf": [
                                                    {
                                                      "description": "How big this looked to the observer, in degrees of arc (see AngularExtent) — the recording's OWN statement of size, and the one it is allowed to make.",
                                                      "type": "object",
                                                      "properties": {
                                                        "widthDeg": {
                                                          "anyOf": [
                                                            {
                                                              "description": "How wide it looked, in degrees of arc.",
                                                              "type": "number"
                                                            },
                                                            {
                                                              "$ref": "#/$defs/stated"
                                                            }
                                                          ]
                                                        },
                                                        "heightDeg": {
                                                          "anyOf": [
                                                            {
                                                              "description": "How tall it looked, in degrees of arc.",
                                                              "type": "number"
                                                            },
                                                            {
                                                              "$ref": "#/$defs/stated"
                                                            }
                                                          ]
                                                        }
                                                      },
                                                      "additionalProperties": false
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "aim": {
                                                  "anyOf": [
                                                    {
                                                      "description": "Where the phenomenon itself was in the observer's sky (the direction of the shape's centre, not the way the observer was facing) — degrees of azimuth from true north and of altitude above the horizon, the same conventions as ObserverPose.",
                                                      "type": "object",
                                                      "properties": {
                                                        "azimuthDeg": {
                                                          "anyOf": [
                                                            {
                                                              "description": "Degrees clockwise from true north, the same convention as ObserverPose.headingDeg.",
                                                              "type": "number"
                                                            },
                                                            {
                                                              "$ref": "#/$defs/stated"
                                                            }
                                                          ]
                                                        },
                                                        "altitudeDeg": {
                                                          "anyOf": [
                                                            {
                                                              "description": "Degrees above (positive) or below the horizon.",
                                                              "type": "number"
                                                            },
                                                            {
                                                              "$ref": "#/$defs/stated"
                                                            }
                                                          ]
                                                        }
                                                      },
                                                      "additionalProperties": false
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "points": {
                                                  "anyOf": [
                                                    {
                                                      "description": "Points relative to bounds origin (0,0 = bounds.x, bounds.y)",
                                                      "type": "array",
                                                      "items": {
                                                        "anyOf": [
                                                          {
                                                            "type": "object",
                                                            "properties": {
                                                              "x": {
                                                                "anyOf": [
                                                                  {
                                                                    "type": "number"
                                                                  },
                                                                  {
                                                                    "$ref": "#/$defs/stated"
                                                                  }
                                                                ]
                                                              },
                                                              "y": {
                                                                "anyOf": [
                                                                  {
                                                                    "type": "number"
                                                                  },
                                                                  {
                                                                    "$ref": "#/$defs/stated"
                                                                  }
                                                                ]
                                                              }
                                                            },
                                                            "additionalProperties": false
                                                          },
                                                          {
                                                            "$ref": "#/$defs/stated"
                                                          }
                                                        ]
                                                      }
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                }
                                              },
                                              "additionalProperties": false
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        }
                                      },
                                      "additionalProperties": false
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                }
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "order": {
              "anyOf": [
                {
                  "description": "Back-to-front paint/hit-test order — see Timeline's own `order` field.",
                  "type": "array"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "groups": {
              "anyOf": [
                {
                  "description": "Each inner array is one group's member sourceIds (always >= 2 members) — see Timeline's own `groups` field.",
                  "type": "array"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "span": {
              "anyOf": [
                {
                  "description": "The length of the observation the keyframes were placed against, in ms, when it is longer than the last keyframe — a shape placed at 0 s then moved at 5 s of a 10 s observation has keyframes at 0 and 5000 only, and without this the recording would end (and be stretched over the whole observation) at 5 s.",
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "observerTrack": {
      "anyOf": [
        {
          "description": "The observer's position/elevation/orientation over time — absent for older recordings, which fall back to the legacy static place[0] (see Sighting.ts's resolveObserverPoseAt).",
          "type": "object",
          "properties": {
            "keyframes": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "t": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "pose": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "lat": {
                                    "anyOf": [
                                      {
                                        "description": "Decimal degrees.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "lng": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "elevationM": {
                                    "anyOf": [
                                      {
                                        "description": "Metres above the local ground under the observer, not above sea level: 0 for someone standing on it, the height of a window or a cliff top otherwise.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "headingDeg": {
                                    "anyOf": [
                                      {
                                        "description": "Degrees clockwise from true north.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "pitchDeg": {
                                    "anyOf": [
                                      {
                                        "description": "Degrees above (positive) or below (negative) the local horizontal — how far up/down the observer was looking, e.g.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "rollDeg": {
                                    "anyOf": [
                                      {
                                        "description": "How far the instrument itself was tilted about its own line of sight, degrees, positive clockwise as the observer saw it — a camera held askew, a head leaned over.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "fovDeg": {
                                    "anyOf": [
                                      {
                                        "description": "Vertical field of view in degrees, as a Three.js PerspectiveCamera would take it.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "fNumber": {
                                    "anyOf": [
                                      {
                                        "description": "How far the lens was stopped down — undefined for anything the recording did not state, which then falls back to the instrument's own setting (see Instrument.fNumber).",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "focusDistanceM": {
                                    "anyOf": [
                                      {
                                        "description": "How far away the lens was focused, metres — undefined meaning at infinity, which is where a camera pointed at the sky sits and the only setting under which everything celestial comes out sharp.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "filter": {
                                    "anyOf": [
                                      {
                                        "description": "What was held in front of the instrument — a FILTERS id, a solar filter for an eclipse.",
                                        "type": "string"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  }
                                },
                                "additionalProperties": false
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "weatherTrack": {
      "anyOf": [
        {
          "description": "Weather over time — absent for older recordings, which fall back to the legacy static `weather` field below (see Sighting.ts's resolveWeatherAt).",
          "type": "object",
          "properties": {
            "keyframes": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "t": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "weather": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "cloudLayers": {
                                    "anyOf": [
                                      {
                                        "description": "Explicit layers override the historical cloud fields; [] means no clouds.",
                                        "type": "array",
                                        "items": {
                                          "anyOf": [
                                            {
                                              "type": "object",
                                              "properties": {
                                                "id": {
                                                  "anyOf": [
                                                    {
                                                      "description": "Stable across keyframes: reordering layers must not regenerate their cloud pattern.",
                                                      "type": "string"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "instances": {
                                                  "anyOf": [
                                                    {
                                                      "description": "Optional explicit masses, independent of the generated coverage percentage.",
                                                      "type": "array",
                                                      "items": {
                                                        "anyOf": [
                                                          {
                                                            "type": "object",
                                                            "properties": {
                                                              "id": {
                                                                "anyOf": [
                                                                  {
                                                                    "type": "string"
                                                                  },
                                                                  {
                                                                    "$ref": "#/$defs/stated"
                                                                  }
                                                                ]
                                                              },
                                                              "eastM": {
                                                                "anyOf": [
                                                                  {
                                                                    "description": "Position relative to the recording's initial observer, in metres east/north.",
                                                                    "type": "number"
                                                                  },
                                                                  {
                                                                    "$ref": "#/$defs/stated"
                                                                  }
                                                                ]
                                                              },
                                                              "northM": {
                                                                "anyOf": [
                                                                  {
                                                                    "type": "number"
                                                                  },
                                                                  {
                                                                    "$ref": "#/$defs/stated"
                                                                  }
                                                                ]
                                                              },
                                                              "baseM": {
                                                                "anyOf": [
                                                                  {
                                                                    "type": "number"
                                                                  },
                                                                  {
                                                                    "$ref": "#/$defs/stated"
                                                                  }
                                                                ]
                                                              },
                                                              "thicknessM": {
                                                                "anyOf": [
                                                                  {
                                                                    "type": "number"
                                                                  },
                                                                  {
                                                                    "$ref": "#/$defs/stated"
                                                                  }
                                                                ]
                                                              },
                                                              "widthM": {
                                                                "anyOf": [
                                                                  {
                                                                    "type": "number"
                                                                  },
                                                                  {
                                                                    "$ref": "#/$defs/stated"
                                                                  }
                                                                ]
                                                              },
                                                              "depthM": {
                                                                "anyOf": [
                                                                  {
                                                                    "type": "number"
                                                                  },
                                                                  {
                                                                    "$ref": "#/$defs/stated"
                                                                  }
                                                                ]
                                                              },
                                                              "rotationDeg": {
                                                                "anyOf": [
                                                                  {
                                                                    "type": "number"
                                                                  },
                                                                  {
                                                                    "$ref": "#/$defs/stated"
                                                                  }
                                                                ]
                                                              },
                                                              "density": {
                                                                "anyOf": [
                                                                  {
                                                                    "type": "number"
                                                                  },
                                                                  {
                                                                    "$ref": "#/$defs/stated"
                                                                  }
                                                                ]
                                                              },
                                                              "darkness": {
                                                                "anyOf": [
                                                                  {
                                                                    "description": "Visual shading, 0 (white) to 1 (very dark); absent inherits the parent layer.",
                                                                    "type": "number"
                                                                  },
                                                                  {
                                                                    "$ref": "#/$defs/stated"
                                                                  }
                                                                ]
                                                              },
                                                              "seed": {
                                                                "anyOf": [
                                                                  {
                                                                    "type": "number"
                                                                  },
                                                                  {
                                                                    "$ref": "#/$defs/stated"
                                                                  }
                                                                ]
                                                              }
                                                            },
                                                            "additionalProperties": false
                                                          },
                                                          {
                                                            "$ref": "#/$defs/stated"
                                                          }
                                                        ]
                                                      }
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "type": {
                                                  "anyOf": [
                                                    {
                                                      "enum": [
                                                        "cumulus",
                                                        "stratus",
                                                        "stratocumulus",
                                                        "cirrus",
                                                        "unknown"
                                                      ]
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "baseM": {
                                                  "anyOf": [
                                                    {
                                                      "description": "Base in metres above the recording's reference ground, not above the moving observer.",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "thicknessM": {
                                                  "anyOf": [
                                                    {
                                                      "description": "Vertical extent in metres.",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "coverage": {
                                                  "anyOf": [
                                                    {
                                                      "description": "Horizontal coverage, 0–1.",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "sizeM": {
                                                  "anyOf": [
                                                    {
                                                      "description": "Characteristic horizontal cloud size in metres.",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "density": {
                                                  "anyOf": [
                                                    {
                                                      "description": "Relative optical density, 0–2; zero is transparent.",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "darkness": {
                                                  "anyOf": [
                                                    {
                                                      "description": "Visual shading, 0 (white) to 1 (very dark).",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "iceCrystalAlignment": {
                                                  "anyOf": [
                                                    {
                                                      "description": "Degree of preferential crystal orientation, meaningful only for cirrus.",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "seed": {
                                                  "anyOf": [
                                                    {
                                                      "description": "Reproducible variation; defaults to a hash of the stable layer id.",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "windDirectionDeg": {
                                                  "anyOf": [
                                                    {
                                                      "description": "Optional wind overrides; bearing TOWARD which the cloud travels, clockwise from north.",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "windSpeed": {
                                                  "anyOf": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                }
                                              },
                                              "additionalProperties": false
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "cloudCover": {
                                    "anyOf": [
                                      {
                                        "description": "0 = clear sky, 1 = fully overcast.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "cloudDarkness": {
                                    "anyOf": [
                                      {
                                        "description": "0 = light/clear clouds, 1 = dark/stormy character.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "cloudBaseM": {
                                    "anyOf": [
                                      {
                                        "description": "Height of the cloud layer's BASE above the ground, in meters — 600 to 2000 m covers most real low cloud.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "highCloudCover": {
                                    "anyOf": [
                                      {
                                        "description": "How much of the sky the HIGH deck covered, 0 to 1 — cirrus and cirrostratus, above about six kilometres, where anything present is ice rather than water.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "lowerCloudCover": {
                                    "anyOf": [
                                      {
                                        "description": "How much of the sky the LOW and MIDDLE decks covered, 0 to 1 — the cloud that stands between a observer and anything higher up.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "iceCrystalAlignment": {
                                    "anyOf": [
                                      {
                                        "description": "How steadily the ice crystals were falling, 0 to 1 — the one thing about the sky that decides which halo forms stood, and the one thing no record of any sighting holds.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "relativeHumidity": {
                                    "anyOf": [
                                      {
                                        "description": "Relative humidity near the ground, 0 to 1.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "precipitationType": {
                                    "anyOf": [
                                      {
                                        "enum": [
                                          "none",
                                          "rain",
                                          "snow",
                                          "hail"
                                        ]
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "precipitationIntensity": {
                                    "anyOf": [
                                      {
                                        "description": "0-1; meaningless while precipitationType is \"none\".",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "precipitationAmount": {
                                    "anyOf": [
                                      {
                                        "description": "How much of that precipitation is actually falling yet, 0 to 1 — absent meaning all of it.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "windDirectionDeg": {
                                    "anyOf": [
                                      {
                                        "description": "Degrees clockwise from true north — same convention as ObserverPose.headingDeg, and the direction the wind blows *toward*, not the one it comes from: SceneRenderer drifts every precipitation particle and cloud field along exactly this bearing (`sin/-cos`, north = -Z), so 0 means snow drifting northward.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "windSpeed": {
                                    "anyOf": [
                                      {
                                        "description": "Real-world wind speed in m/s (0 = calm, ~30 = violent storm/hurricane-force) — drives both cloud advection, visual precipitation drift and wind audio volume directly.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "storm": {
                                    "anyOf": [
                                      {
                                        "description": "Whether a thunderstorm was reported — drives both a scene-fog lightning flash and a delayed thunderclap (see SceneRenderer's lightning-flash scheduling, named for the visual mechanism it implements internally, not for this field).",
                                        "type": "boolean"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  }
                                },
                                "additionalProperties": false
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "weather": {
      "anyOf": [
        {
          "description": "Legacy static weather condition, kept only as weatherTrack's own fallback for recordings made before it existed — absent means \"unknown/not recorded\", not \"clear skies\" (renderers default to DEFAULT_WEATHER, see Weather.ts).",
          "type": "object",
          "properties": {
            "cloudLayers": {
              "anyOf": [
                {
                  "description": "Explicit layers override the historical cloud fields; [] means no clouds.",
                  "type": "array",
                  "items": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "anyOf": [
                              {
                                "description": "Stable across keyframes: reordering layers must not regenerate their cloud pattern.",
                                "type": "string"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "instances": {
                            "anyOf": [
                              {
                                "description": "Optional explicit masses, independent of the generated coverage percentage.",
                                "type": "array",
                                "items": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "anyOf": [
                                            {
                                              "type": "string"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "eastM": {
                                          "anyOf": [
                                            {
                                              "description": "Position relative to the recording's initial observer, in metres east/north.",
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "northM": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "baseM": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "thicknessM": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "widthM": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "depthM": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "rotationDeg": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "density": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "darkness": {
                                          "anyOf": [
                                            {
                                              "description": "Visual shading, 0 (white) to 1 (very dark); absent inherits the parent layer.",
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "seed": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        }
                                      },
                                      "additionalProperties": false
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                }
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "type": {
                            "anyOf": [
                              {
                                "enum": [
                                  "cumulus",
                                  "stratus",
                                  "stratocumulus",
                                  "cirrus",
                                  "unknown"
                                ]
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "baseM": {
                            "anyOf": [
                              {
                                "description": "Base in metres above the recording's reference ground, not above the moving observer.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "thicknessM": {
                            "anyOf": [
                              {
                                "description": "Vertical extent in metres.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "coverage": {
                            "anyOf": [
                              {
                                "description": "Horizontal coverage, 0–1.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "sizeM": {
                            "anyOf": [
                              {
                                "description": "Characteristic horizontal cloud size in metres.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "density": {
                            "anyOf": [
                              {
                                "description": "Relative optical density, 0–2; zero is transparent.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "darkness": {
                            "anyOf": [
                              {
                                "description": "Visual shading, 0 (white) to 1 (very dark).",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "iceCrystalAlignment": {
                            "anyOf": [
                              {
                                "description": "Degree of preferential crystal orientation, meaningful only for cirrus.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "seed": {
                            "anyOf": [
                              {
                                "description": "Reproducible variation; defaults to a hash of the stable layer id.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "windDirectionDeg": {
                            "anyOf": [
                              {
                                "description": "Optional wind overrides; bearing TOWARD which the cloud travels, clockwise from north.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "windSpeed": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "cloudCover": {
              "anyOf": [
                {
                  "description": "0 = clear sky, 1 = fully overcast.",
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "cloudDarkness": {
              "anyOf": [
                {
                  "description": "0 = light/clear clouds, 1 = dark/stormy character.",
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "cloudBaseM": {
              "anyOf": [
                {
                  "description": "Height of the cloud layer's BASE above the ground, in meters — 600 to 2000 m covers most real low cloud.",
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "highCloudCover": {
              "anyOf": [
                {
                  "description": "How much of the sky the HIGH deck covered, 0 to 1 — cirrus and cirrostratus, above about six kilometres, where anything present is ice rather than water.",
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "lowerCloudCover": {
              "anyOf": [
                {
                  "description": "How much of the sky the LOW and MIDDLE decks covered, 0 to 1 — the cloud that stands between a observer and anything higher up.",
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "iceCrystalAlignment": {
              "anyOf": [
                {
                  "description": "How steadily the ice crystals were falling, 0 to 1 — the one thing about the sky that decides which halo forms stood, and the one thing no record of any sighting holds.",
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "relativeHumidity": {
              "anyOf": [
                {
                  "description": "Relative humidity near the ground, 0 to 1.",
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "precipitationType": {
              "anyOf": [
                {
                  "enum": [
                    "none",
                    "rain",
                    "snow",
                    "hail"
                  ]
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "precipitationIntensity": {
              "anyOf": [
                {
                  "description": "0-1; meaningless while precipitationType is \"none\".",
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "precipitationAmount": {
              "anyOf": [
                {
                  "description": "How much of that precipitation is actually falling yet, 0 to 1 — absent meaning all of it.",
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "windDirectionDeg": {
              "anyOf": [
                {
                  "description": "Degrees clockwise from true north — same convention as ObserverPose.headingDeg, and the direction the wind blows *toward*, not the one it comes from: SceneRenderer drifts every precipitation particle and cloud field along exactly this bearing (`sin/-cos`, north = -Z), so 0 means snow drifting northward.",
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "windSpeed": {
              "anyOf": [
                {
                  "description": "Real-world wind speed in m/s (0 = calm, ~30 = violent storm/hurricane-force) — drives both cloud advection, visual precipitation drift and wind audio volume directly.",
                  "type": "number"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "storm": {
              "anyOf": [
                {
                  "description": "Whether a thunderstorm was reported — drives both a scene-fog lightning flash and a delayed thunderclap (see SceneRenderer's lightning-flash scheduling, named for the visual mechanism it implements internally, not for this field).",
                  "type": "boolean"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "soundTrack": {
      "anyOf": [
        {
          "description": "What the sighting sounded like over time — see SoundTrack.",
          "type": "object",
          "properties": {
            "keyframes": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "t": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "sound": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "anyOf": [
                                      {
                                        "enum": [
                                          "none",
                                          "hum",
                                          "whistle",
                                          "rumble",
                                          "crackle"
                                        ]
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "volume": {
                                    "anyOf": [
                                      {
                                        "description": "How loud it was, 0 (inaudible) to 1 (as loud as the observer could describe) — deliberately relative rather than a dB SPL figure: nobody reports a sound level in decibels, and inventing one would claim a measurement where there is only an impression.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "pitchHz": {
                                    "anyOf": [
                                      {
                                        "description": "The sound's own frequency in Hz — the oscillator's pitch for the pitched kinds (\"hum\", \"whistle\"), and the noise filter's centre for the unpitched ones (\"rumble\", \"crackle\"), where it reads as how deep or how sharp the noise is.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "src": {
                                    "anyOf": [
                                      {
                                        "description": "An actual audio recording of the sound, when one exists (a observer who filmed the event, a later recording of the same phenomenon) — replaces synthesis entirely while it is set, with `volume` still scaling it.",
                                        "type": "string"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  }
                                },
                                "additionalProperties": false
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "decor": {
      "anyOf": [
        {
          "description": "See Sighting.decor.",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "kind": {
                    "anyOf": [
                      {
                        "enum": [
                          "terrace",
                          "wall",
                          "building",
                          "tree",
                          "crop",
                          "mound",
                          "streetlight",
                          "vehicle",
                          "observer",
                          "aircraft",
                          "shrub",
                          "bridge",
                          "wire",
                          "entity"
                        ]
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "title": {
                    "anyOf": [
                      {
                        "description": "Optional display name, same role as Shape.title — falls back to a generic \"{kind} {n}\" label (see SightingEditorElement.decorLabel) when absent."
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "eastM": {
                    "anyOf": [
                      {
                        "description": "Meters from the observer's own position — eastM positive = east, northM positive = north.",
                        "type": "number"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "northM": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "headingDeg": {
                    "anyOf": [
                      {
                        "description": "Degrees clockwise from true north, same convention as ObserverPose.headingDeg — which way a vehicle is facing, or a observer looking.",
                        "type": "number"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "lit": {
                    "anyOf": [
                      {
                        "description": "Streetlight lamp / vehicle headlights switched on.",
                        "type": "boolean"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "litKeyframes": {
                    "anyOf": [
                      {
                        "description": "Sorted by t.",
                        "type": "array",
                        "items": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "t": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                },
                                "lit": {
                                  "anyOf": [
                                    {
                                      "type": "boolean"
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                }
                              },
                              "additionalProperties": false
                            },
                            {
                              "$ref": "#/$defs/stated"
                            }
                          ]
                        }
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "lights": {
                    "anyOf": [
                      {
                        "description": "The object's individual lamps, each with its own place on the body and its own rhythm — see DecorLight, and LIGHT_RIGS for the ready-made sets.",
                        "type": "array",
                        "items": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                },
                                "offsetM": {
                                  "anyOf": [
                                    {
                                      "description": "Where it sits on the object, in meters relative to the object's own centre and heading: +x is its right, +y up, +z its front.",
                                      "type": "object",
                                      "properties": {
                                        "x": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "y": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "z": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        }
                                      },
                                      "additionalProperties": false
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                },
                                "color": {
                                  "anyOf": [
                                    {
                                      "description": "CSS hex colour, as emitted — the regulated red/green/white of navigation lights, the amber of a hazard flasher.",
                                      "type": "string"
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                },
                                "intensity": {
                                  "anyOf": [
                                    {
                                      "description": "Peak luminous intensity as a ratio to an ordinary navigation light's (1, about a hundred candela — see DecorSystem's LAMP_CANDELA); the airliner rig (LIGHT_RIGS) gives its beacon 1.5 and its wingtip strobes 20.",
                                      "type": "number"
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                },
                                "pattern": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "anyOf": [
                                            {
                                              "enum": [
                                                "steady",
                                                "flash"
                                              ]
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "perMinute": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "dutyCycle": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "phase": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        }
                                      },
                                      "additionalProperties": false
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                }
                              },
                              "additionalProperties": false
                            },
                            {
                              "$ref": "#/$defs/stated"
                            }
                          ]
                        }
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "track": {
                    "anyOf": [
                      {
                        "description": "Where the object is over time, when it moves — an aircraft crossing the sky, a car driving past.",
                        "type": "array",
                        "items": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "t": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                },
                                "eastM": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                },
                                "northM": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                },
                                "altitudeM": {
                                  "anyOf": [
                                    {
                                      "description": "Meters above the observer's own elevation.",
                                      "type": "number"
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                },
                                "headingDeg": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                }
                              },
                              "additionalProperties": false
                            },
                            {
                              "$ref": "#/$defs/stated"
                            }
                          ]
                        }
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "sightingUrl": {
                    "anyOf": [
                      {
                        "description": "For kind \"observer\" only: the URL of that observer's own sighting.json recording, if known — lets the 3D scene's own context menu offer \"view this observer's account\" (loading it the same way SightingEditorElement.importFromUrl already does).",
                        "type": "string"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "windows": {
                    "anyOf": [
                      {
                        "description": "Per-side window opacity, 0 (fully open — the pane is invisible, and DecorSystem.addRoom's own interior wall panel is skipped there too, same as no window at all) to 100 (fully closed — a solid-looking pane).",
                        "type": "object"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "color": {
                    "anyOf": [
                      {
                        "description": "What colour this object actually is, as a CSS colour — the same way a shape states its own (see Shape.color), because a recording is written and read by people and \"#8f86a8\" is a colour a person can type.",
                        "type": "string"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "observerSide": {
                    "anyOf": [
                      {
                        "enum": [
                          "front",
                          "behind",
                          "left",
                          "right",
                          "front-left",
                          "front-right",
                          "behind-left",
                          "behind-right"
                        ]
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "observerFacing": {
                    "anyOf": [
                      {
                        "description": "Which window the observer looks through, when it is not the one at their own seat: a driver sits at \"front-left\" and looks through the windshield (\"front\").",
                        "enum": [
                          "front",
                          "behind",
                          "left",
                          "right",
                          "front-left",
                          "front-right",
                          "behind-left",
                          "behind-right"
                        ]
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "observerKeyframes": {
                    "anyOf": [
                      {
                        "description": "Where the observer sits over time, when they do not stay where they are: a driver is in the car until the moment they get out of it.",
                        "type": "array",
                        "items": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "t": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                },
                                "side": {
                                  "anyOf": [
                                    {
                                      "description": "The seat they are in from this instant; absent means they are outside the object.",
                                      "enum": [
                                        "front",
                                        "behind",
                                        "left",
                                        "right",
                                        "front-left",
                                        "front-right",
                                        "behind-left",
                                        "behind-right"
                                      ]
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                },
                                "facing": {
                                  "anyOf": [
                                    {
                                      "description": "The window they look through from this instant, when it is not the one at their seat.",
                                      "enum": [
                                        "front",
                                        "behind",
                                        "left",
                                        "right",
                                        "front-left",
                                        "front-right",
                                        "behind-left",
                                        "behind-right"
                                      ]
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                }
                              },
                              "additionalProperties": false
                            },
                            {
                              "$ref": "#/$defs/stated"
                            }
                          ]
                        }
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "engine": {
                    "anyOf": [
                      {
                        "description": "A vehicle heard running — see DecorEngine: its engine turning with its own `track`, heard less the further it is from the observer.",
                        "type": "object",
                        "properties": {
                          "kind": {
                            "anyOf": [
                              {
                                "description": "Which sound: a decor object's own `kind` says only \"vehicle\".",
                                "enum": [
                                  "car",
                                  "van",
                                  "truck",
                                  "motorcycle",
                                  "generic"
                                ]
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "noise": {
                            "anyOf": [
                              {
                                "description": "As ObserverVehicle.noise.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "aircraftSound": {
                    "anyOf": [
                      {
                        "description": "An aircraft heard while it flies — what sort of noise it makes (see AircraftHearing.noiseOfKind), or \"silent\" for one that makes none (a glider's cousin, a stand-in for something nobody heard).",
                        "enum": [
                          "unknown",
                          "airliner-narrow",
                          "airliner-wide",
                          "regional-turboprop",
                          "regional-jet",
                          "business-jet",
                          "light-piston",
                          "turboprop-light",
                          "helicopter-light",
                          "helicopter-medium",
                          "helicopter-heavy",
                          "military-jet",
                          "glider",
                          "balloon",
                          "ultralight",
                          "unmanned",
                          "silent"
                        ]
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "surveyedOn": {
                    "anyOf": [
                      {
                        "description": "The day (YYYY-MM-DD) of the survey this object was taken from, where it comes from one (see `origin`): the latest of the days of everything it was drawn from (the laser flight, the aerial photograph, the map's edition).",
                        "type": "string"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "facade": {
                    "anyOf": [
                      {
                        "description": "Kind \"building\" only: the colour of its walls, and the windows and door drawn on them.",
                        "type": "object",
                        "properties": {
                          "color": {
                            "anyOf": [
                              {
                                "description": "The colour of the wall, \"#rrggbb\": plaster, stone, brick.",
                                "type": "string"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "plain": {
                            "anyOf": [
                              {
                                "description": "A plain wall, with no windows and no door.",
                                "type": "boolean"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "roof": {
                    "anyOf": [
                      {
                        "description": "Kind \"building\" only: the shape and colour of its roof.",
                        "type": "object",
                        "properties": {
                          "shape": {
                            "anyOf": [
                              {
                                "description": "\"flat\" is the box; \"gable\" rises to a ridge along the building's longer side; \"hip\" slopes down on all four.",
                                "enum": [
                                  "flat",
                                  "gable",
                                  "hip"
                                ]
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "ridge": {
                            "anyOf": [
                              {
                                "description": "Which side of the building a gable's ridge runs along: \"width\" (the longer side, the default) or \"depth\".",
                                "enum": [
                                  "width",
                                  "depth"
                                ]
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "riseM": {
                            "anyOf": [
                              {
                                "description": "How far the ridge stands above the eaves, metres.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "color": {
                            "anyOf": [
                              {
                                "description": "The colour of the roof seen from above, \"#rrggbb\", where it was measured (see RoofShapes): the walls keep their own.",
                                "type": "string"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "bridge": {
                    "anyOf": [
                      {
                        "description": "Kind \"bridge\" only: how it is built, where that is known — see BridgeStructure.",
                        "type": "object",
                        "properties": {
                          "spanM": {
                            "anyOf": [
                              {
                                "description": "Metres of open span under the deck, centred on the object.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "deckThicknessM": {
                            "anyOf": [
                              {
                                "description": "Thickness of the deck slab, metres.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "railing": {
                            "anyOf": [
                              {
                                "description": "The railing along both edges: its height above the road, the spacing of its posts, and how many horizontal rails it has — two rails make two rows of rectangular openings.",
                                "type": "object",
                                "properties": {
                                  "heightM": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "postSpacingM": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "rails": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  }
                                },
                                "additionalProperties": false
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "wire": {
                    "anyOf": [
                      {
                        "description": "Kind \"wire\" only: how many strands, where they hang, and which ends stand on a pole — see WireStructure.",
                        "type": "object",
                        "properties": {
                          "strands": {
                            "anyOf": [
                              {
                                "description": "The strands: each one's height above the ground and, for a crossarm, how far it hangs to one side of the line (positive to the right of its heading).",
                                "type": "array",
                                "items": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "heightM": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "acrossM": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        }
                                      },
                                      "additionalProperties": false
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                }
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "poles": {
                            "anyOf": [
                              {
                                "description": "Which ends stand on a pole: both (default), the one the object's heading points away from (`start`) or towards (`end`), or none, for a line anchored on buildings at both ends.",
                                "enum": [
                                  "none",
                                  "both",
                                  "start",
                                  "end"
                                ]
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "diameterM": {
                            "anyOf": [
                              {
                                "description": "How thick a strand is, metres.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "poleHeightM": {
                            "anyOf": [
                              {
                                "description": "How tall a pole is, metres.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "floors": {
                    "anyOf": [
                      {
                        "description": "Kind \"building\" only: number of upper stories above the ground floor, set when the building is created (default 2, see SightingEditorElement.addDecor) and editable afterward.",
                        "type": "number"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "occupiedFloor": {
                    "anyOf": [
                      {
                        "description": "Kind \"building\" only, meaningful once observerSide is set: which floor the observer is on, 0 (ground floor) up to floors.",
                        "type": "number"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "occludesSourceIds": {
                    "anyOf": [
                      {
                        "description": "Shape sourceIds (see Timeline.sourceIds/Shape) this decor object sits in front of, from the observer's own reported viewpoint — occluding that shape wherever their screen positions line up (see SceneRenderer.isScreenPointOccluded).",
                        "type": "array"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "sizeM": {
                    "anyOf": [
                      {
                        "description": "How big it really is, in meters, along its own axes — see DecorSize.",
                        "type": "object",
                        "properties": {
                          "widthM": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "lengthM": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "heightM": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "modelParameters": {
                    "anyOf": [
                      {
                        "description": "The settings of the model this object is drawn as, by the key the model publishes them under (see ModelParameters.parameters): a being's costume colour, say.",
                        "type": "object"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "model": {
                    "anyOf": [
                      {
                        "description": "The real 3D model that stands in for the primitive, if one does — see DecorModelRef.",
                        "type": "object",
                        "properties": {
                          "id": {
                            "anyOf": [
                              {
                                "description": "Catalogue entry, resolved by the live DecorModelProvider.",
                                "type": "string"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "url": {
                            "anyOf": [
                              {
                                "description": "Direct glTF/GLB address, taking precedence over `id`.",
                                "type": "string"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "headingOffsetDeg": {
                            "anyOf": [
                              {
                                "description": "Degrees to turn the loaded model about its own vertical axis so its nose points the way this scene's heading convention expects (0 faces -Z — see DecorSystem's build).",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "credit": {
                            "anyOf": [
                              {
                                "description": "Who made it and under what licence.",
                                "type": "object",
                                "properties": {
                                  "title": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "author": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "license": {
                                    "anyOf": [
                                      {
                                        "description": "Licence name as its author states it, e.g.",
                                        "type": "string"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "sourceUrl": {
                                    "anyOf": [
                                      {
                                        "description": "Where it came from, so the claim can be checked.",
                                        "type": "string"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  }
                                },
                                "additionalProperties": false
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "origin": {
                    "anyOf": [
                      {
                        "description": "The survey this object was taken from, by the id of its provider (\"ign-lidar-hd\"), when the author did not place it by hand: the trees the editor plants from a canopy survey (see CanopyProvider).",
                        "type": "string"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "$ref": "#/$defs/stated"
              }
            ]
          }
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "roads": {
      "anyOf": [
        {
          "description": "The roads the account's own plan draws — see Sighting.roads and Road.ts.",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "title": {
                    "anyOf": [
                      {
                        "description": "What the account calls it, where it calls it anything."
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "surface": {
                    "anyOf": [
                      {
                        "enum": [
                          "paved",
                          "gravel",
                          "dirt"
                        ]
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "widthM": {
                    "anyOf": [
                      {
                        "description": "Carriageway width, metres.",
                        "type": "number"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "path": {
                    "anyOf": [
                      {
                        "description": "The centre line, in metres east and north of the observer's place at t=0.",
                        "type": "array",
                        "items": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "eastM": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                },
                                "northM": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                }
                              },
                              "additionalProperties": false
                            },
                            {
                              "$ref": "#/$defs/stated"
                            }
                          ]
                        }
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "source": {
                    "anyOf": [
                      {
                        "description": "Where this line comes from — the plan, the survey, the report it was read off."
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "$ref": "#/$defs/stated"
              }
            ]
          }
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "traces": {
      "anyOf": [
        {
          "description": "What an investigator drew over the place, imported from their file — see Sighting.traces and Trace.ts.",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "title": {
                    "anyOf": [
                      {
                        "description": "What its author called it (\"Ligne de visée depuis la ferme\")."
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "kind": {
                    "anyOf": [
                      {
                        "enum": [
                          "polygon",
                          "point",
                          "line"
                        ]
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "points": {
                    "anyOf": [
                      {
                        "description": "One point for a marker, the vertices of a line, the vertices of an outline (not repeated at the end: it is closed by being a polygon).",
                        "type": "array",
                        "items": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "lat": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                },
                                "lng": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                },
                                "altM": {
                                  "anyOf": [
                                    {
                                      "description": "Metres, read as `InvestigatorTrace.altitude` says.",
                                      "type": "number"
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                }
                              },
                              "additionalProperties": false
                            },
                            {
                              "$ref": "#/$defs/stated"
                            }
                          ]
                        }
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "altitude": {
                    "anyOf": [
                      {
                        "description": "How `altM` is read.",
                        "enum": [
                          "ground",
                          "relative",
                          "absolute"
                        ]
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "color": {
                    "anyOf": [
                      {
                        "description": "CSS colour the author gave it, `#rrggbb`.",
                        "type": "string"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "source": {
                    "anyOf": [
                      {
                        "description": "Whose it is and where it comes from — the person, the report, the file."
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "$ref": "#/$defs/stated"
              }
            ]
          }
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "weatherSource": {
      "anyOf": [
        {
          "description": "Which meteorological record `weatherTrack` was looked up from, when it wasn't the observer who stated the conditions — see Sighting.weatherSource.",
          "type": "object",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "description": "Stable dataset id, e.g.",
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "name": {
              "anyOf": [
                {
                  "description": "Human-readable dataset name, e.g.",
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "url": {
              "anyOf": [
                {
                  "description": "The exact request that produced these values, so the claim stays checkable years later.",
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "instrument": {
      "anyOf": [
        {
          "description": "Which INSTRUMENTS entry this was observed through — see Sighting.instrumentId.",
          "type": "string"
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "exposureSeconds": {
      "anyOf": [
        {
          "description": "How long the shutter stayed open, seconds — one value for the whole observation, see Sighting.exposureSeconds.",
          "type": "number"
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "iso": {
      "anyOf": [
        {
          "description": "The speed of the film or sensor this picture was taken on — see Sighting.iso.",
          "type": "number"
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "lightPollution": {
      "anyOf": [
        {
          "description": "How bright the night sky is at the place, towns and all: the zenith of a moonless night in magnitudes per square arcsecond, a Sky Quality Meter's reading or the World Atlas's \"SQM\" figure (Falchi et al.",
          "type": "number"
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "observerMap": {
      "anyOf": [
        {
          "description": "Whether the map of where the observer stood starts open — see Sighting.observerMap.",
          "type": "boolean"
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "milestones": {
      "anyOf": [
        {
          "description": "The named moments of the account — see Milestone.",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "t": {
                    "anyOf": [
                      {
                        "description": "When, in milliseconds from the start of the recording — the same scale every track uses.",
                        "type": "number"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "label": {
                    "anyOf": [
                      {
                        "description": "Short label, shown on the seek bar: the letter or number the account itself uses (\"A\", \"B\"), or a couple of words where it uses none."
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "note": {
                    "anyOf": [
                      {
                        "description": "What happened at that moment, in the account's own words where possible."
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "$ref": "#/$defs/stated"
              }
            ]
          }
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "references": {
      "anyOf": [
        {
          "description": "Pictures of the place, laid over the reconstruction at the direction each was registered in — see SceneReference.",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "anyOf": [
                      {
                        "description": "Stable id, what the editor's own list and a future trace on the picture name.",
                        "type": "string"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "kind": {
                    "anyOf": [
                      {
                        "enum": [
                          "photo",
                          "panorama"
                        ]
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "src": {
                    "anyOf": [
                      {
                        "description": "Where the picture is: an address, or the picture itself as a `data:` URL.",
                        "type": "string"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "title": {
                    "anyOf": [
                      {
                        "description": "What to call it — \"Vue depuis le muret, fin été 1968\"."
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "credit": {
                    "anyOf": [
                      {
                        "description": "Who made it and on what terms — shown wherever the picture is, because a credit that is not displayed is not a licence (see DataSource for the same rule on the data).",
                        "type": "string"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "creditUrl": {
                    "anyOf": [
                      {
                        "description": "Where that credit points: the source page, the licence.",
                        "type": "string"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "t": {
                    "anyOf": [
                      {
                        "description": "The instant of the timeline it was taken at, milliseconds, for a picture made DURING the observation — by the observer, or by whoever was there.",
                        "type": "number"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "from": {
                    "anyOf": [
                      {
                        "description": "Where it was taken from — the one point its registration holds for.",
                        "type": "object",
                        "properties": {
                          "lat": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "lng": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "drawing": {
                    "anyOf": [
                      {
                        "description": "Whether somebody drew on it — a trajectory, an outline, an arrow — so that what the picture shows of the phenomenon is a statement made afterwards, not a thing the camera recorded.",
                        "type": "boolean"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "opacity": {
                    "anyOf": [
                      {
                        "description": "How much of it shows, 0 to 1 — the starting point of the reader's own slider, since the comparison is made by sliding: all picture, all render, and the registration checked at every step between.",
                        "type": "number"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "registration": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "headingDeg": {
                            "anyOf": [
                              {
                                "description": "Degrees clockwise from true north, the direction the picture's centre looks at.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "pitchDeg": {
                            "anyOf": [
                              {
                                "description": "Degrees above the local horizontal, positive up.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "rollDeg": {
                            "anyOf": [
                              {
                                "description": "Degrees the picture is tilted about its own axis, positive clockwise as it is looked at — see ObserverPose.rollDeg.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "fovDeg": {
                            "anyOf": [
                              {
                                "description": "The picture's VERTICAL field, degrees — what the lens took in top to bottom, its horizontal field following from the image's own aspect ratio.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "landmarks": {
                    "anyOf": [
                      {
                        "description": "The details it was lined up on — see PictureLandmark.",
                        "type": "array",
                        "items": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                },
                                "label": {
                                  "anyOf": [
                                    {
                                      "description": "What the detail is — \"Arbre masquant\", \"barrière\"."
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                },
                                "picture": {
                                  "anyOf": [
                                    {
                                      "description": "Where it is on the picture, 0..1 from the top-left corner.",
                                      "type": "object",
                                      "properties": {
                                        "u": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "v": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        }
                                      },
                                      "additionalProperties": false
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                },
                                "scene": {
                                  "anyOf": [
                                    {
                                      "description": "Where it is from the observer, in the scene.",
                                      "type": "object",
                                      "properties": {
                                        "azimuthDeg": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "altitudeDeg": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        }
                                      },
                                      "additionalProperties": false
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                }
                              },
                              "additionalProperties": false
                            },
                            {
                              "$ref": "#/$defs/stated"
                            }
                          ]
                        }
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "$ref": "#/$defs/stated"
              }
            ]
          }
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "sources": {
      "anyOf": [
        {
          "description": "Where the account can be read as it was given, each one a source — see RecordingSource.",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "type": {
                    "anyOf": [
                      {
                        "enum": [
                          "book",
                          "article"
                        ]
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "title": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "authors": {
                    "anyOf": [
                      {
                        "description": "The author(s) name(s): for a post, the account that posted it.",
                        "type": "array"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "url": {
                    "anyOf": [
                      {
                        "description": "Where it can be read.",
                        "type": "string"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "publication": {
                    "anyOf": [
                      {
                        "description": "Who published it and when (EDTF).",
                        "type": "object",
                        "properties": {
                          "publisher": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "time": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  },
                  "index": {
                    "anyOf": [
                      {
                        "description": "Chapter, page, etc.",
                        "type": "string"
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "$ref": "#/$defs/stated"
              }
            ]
          }
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    },
    "interpretation": {
      "anyOf": [
        {
          "description": "What the observer took it to be, in metres — see InterpretationJson.",
          "type": "object",
          "properties": {
            "title": {
              "anyOf": [
                {
                  "description": "What the claim is, in a few words — \"Craft on its legs\", \"Weather balloon at 3 km\"."
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "bodies": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "title": {
                            "anyOf": [
                              {},
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "explains": {
                            "anyOf": [
                              {
                                "description": "The phenomena of the account (their `sourceId`s) this body claims to be — what its projected outline is measured against at each instant, and what is drawn as a ghost beside it.",
                                "type": "array"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "model": {
                            "anyOf": [
                              {
                                "description": "What it is shaped like.",
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "anyOf": [
                                      {
                                        "description": "Catalogue entry, resolved by the live DecorModelProvider.",
                                        "type": "string"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "url": {
                                    "anyOf": [
                                      {
                                        "description": "Direct glTF/GLB address, taking precedence over `id`.",
                                        "type": "string"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "headingOffsetDeg": {
                                    "anyOf": [
                                      {
                                        "description": "Degrees to turn the loaded model about its own vertical axis so its nose points the way this scene's heading convention expects (0 faces -Z — see DecorSystem's build).",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "credit": {
                                    "anyOf": [
                                      {
                                        "description": "Who made it and under what licence.",
                                        "type": "object",
                                        "properties": {
                                          "title": {
                                            "anyOf": [
                                              {
                                                "type": "string"
                                              },
                                              {
                                                "$ref": "#/$defs/stated"
                                              }
                                            ]
                                          },
                                          "author": {
                                            "anyOf": [
                                              {
                                                "type": "string"
                                              },
                                              {
                                                "$ref": "#/$defs/stated"
                                              }
                                            ]
                                          },
                                          "license": {
                                            "anyOf": [
                                              {
                                                "description": "Licence name as its author states it, e.g.",
                                                "type": "string"
                                              },
                                              {
                                                "$ref": "#/$defs/stated"
                                              }
                                            ]
                                          },
                                          "sourceUrl": {
                                            "anyOf": [
                                              {
                                                "description": "Where it came from, so the claim can be checked.",
                                                "type": "string"
                                              },
                                              {
                                                "$ref": "#/$defs/stated"
                                              }
                                            ]
                                          }
                                        },
                                        "additionalProperties": false
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  }
                                },
                                "additionalProperties": false
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "outlineNode": {
                            "anyOf": [
                              {
                                "description": "The node of the model that IS what the observer drew — \"hull\" for a craft on legs the observer drew as an oval — and so what its outline is measured by (see BodyConfrontation).",
                                "type": "string"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "track": {
                            "anyOf": [
                              {
                                "type": "array",
                                "items": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "t": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "eastM": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "northM": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "azimuthDeg": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "altitudeDeg": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "distanceM": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "onGround": {
                                          "anyOf": [
                                            {
                                              "description": "Standing on the ground.",
                                              "type": "boolean"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "present": {
                                          "anyOf": [
                                            {
                                              "description": "Gone from here on — `false` — or back — `true`.",
                                              "type": "boolean"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "altitudeAboveGroundM": {
                                          "anyOf": [
                                            {
                                              "description": "Metres between the ground under it and its lowest point.",
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "altitudeM": {
                                          "anyOf": [
                                            {
                                              "description": "Metres between its lowest point and the ground at the recording's own origin (where the observer stands at the start) — a height in the air that does NOT follow what is under the body.",
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "sizeM": {
                                          "anyOf": [
                                            {
                                              "type": "object",
                                              "properties": {
                                                "widthM": {
                                                  "anyOf": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "lengthM": {
                                                  "anyOf": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "heightM": {
                                                  "anyOf": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                }
                                              },
                                              "additionalProperties": false
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "attitude": {
                                          "anyOf": [
                                            {
                                              "type": "object",
                                              "properties": {
                                                "headingDeg": {
                                                  "anyOf": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "pitchDeg": {
                                                  "anyOf": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "rollDeg": {
                                                  "anyOf": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                }
                                              },
                                              "additionalProperties": false
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "appearance": {
                                          "anyOf": [
                                            {
                                              "type": "object",
                                              "properties": {
                                                "color": {
                                                  "anyOf": [
                                                    {
                                                      "description": "Its surface colour, CSS.",
                                                      "type": "string"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "albedo": {
                                                  "anyOf": [
                                                    {
                                                      "description": "How much of the light falling on it it sends back, 0-1: aluminium ~0.7, a matt dark hull ~0.1.",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "luminanceCdM2": {
                                                  "anyOf": [
                                                    {
                                                      "description": "What it gives out of itself, candela per square metre — read through the scene's own photometry exactly as a flame's is (see BodyFlame), so that the same figure is a lamp at night and nothing at all against a noon sky.",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "transparency": {
                                                  "anyOf": [
                                                    {
                                                      "description": "How much of what is behind it shows through, 0 (opaque, the default) to 1 (gone): the same statement a drawn shape's transparency makes, for a body of the scene.",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "haloScale": {
                                                  "anyOf": [
                                                    {
                                                      "description": "How far the glare it throws round itself reaches, as a multiple of what its light gives (1, the default): 0 puts the glare out, 2 doubles its width.",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                }
                                              },
                                              "additionalProperties": false
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "flame": {
                                          "anyOf": [
                                            {
                                              "description": "A flame coming out of it, from here on — see BodyFlame.",
                                              "type": "object",
                                              "properties": {
                                                "node": {
                                                  "anyOf": [
                                                    {
                                                      "type": "string"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "lengthM": {
                                                  "anyOf": [
                                                    {
                                                      "description": "How far it reaches from the node, metres.",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "widthM": {
                                                  "anyOf": [
                                                    {
                                                      "description": "How wide it is at its widest, metres.",
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "color": {
                                                  "anyOf": [
                                                    {
                                                      "description": "Its colour where it leaves the node, CSS.",
                                                      "type": "string"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "tipColor": {
                                                  "anyOf": [
                                                    {
                                                      "description": "Its colour at its far end; the same as `color` when absent.",
                                                      "type": "string"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "luminanceCdM2": {
                                                  "anyOf": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                },
                                                "raisesDust": {
                                                  "anyOf": [
                                                    {
                                                      "description": "Whether it raises dust where it meets the ground — a flame reaching loose, dry soil does, the more the nearer it gets.",
                                                      "type": "boolean"
                                                    },
                                                    {
                                                      "$ref": "#/$defs/stated"
                                                    }
                                                  ]
                                                }
                                              },
                                              "additionalProperties": false
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "motions": {
                                          "anyOf": [
                                            {
                                              "description": "How far along each of its model's own movements it is, by the movement's name in the model (a glTF animation): 0 at its start, 1 at its end, and on past 1 for one that repeats — a turn made three times is 3.",
                                              "type": "object"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "lights": {
                                          "anyOf": [
                                            {
                                              "description": "The luminance of each of its model's own lights, cd/m², by the name of the light's material in the model: what lets one body carry lights that behave each their own way — a steady white at each end, a red one flashing between.",
                                              "type": "object"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        }
                                      },
                                      "additionalProperties": false
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                }
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "smoke": {
              "anyOf": [
                {
                  "description": "Fires the interpretation lights on the ground, as their smoke — see SmokeSource.",
                  "type": "array",
                  "items": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "eastM": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "northM": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "fromT": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "untilT": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "halfLifeS": {
                            "anyOf": [
                              {
                                "description": "How fast it dies down, seconds to half its thickness — brush flares and smoulders.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "reentries": {
              "anyOf": [
                {
                  "description": "Re-entries it claims were seen: placed on the Earth, not round the observer — see ReentryJson.",
                  "type": "array",
                  "items": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "title": {
                            "anyOf": [
                              {},
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "explains": {
                            "anyOf": [
                              {
                                "description": "The phenomena of the account (their `sourceId`s) this re-entry claims to be — see BodyJson.explains.",
                                "type": "array"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "object": {
                            "anyOf": [
                              {
                                "description": "The object that came down, when it is known — the catalogue says which piece it was.",
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "anyOf": [
                                      {
                                        "description": "Its catalogue name — \"SL-12 R/B\".",
                                        "type": "string"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "cosparId": {
                                    "anyOf": [
                                      {
                                        "description": "International designator — \"1968-013C\".",
                                        "type": "string"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "norad": {
                                    "anyOf": [
                                      {
                                        "description": "US Space Surveillance Network catalogue number — 3136.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  }
                                },
                                "additionalProperties": false
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "track": {
                            "anyOf": [
                              {
                                "description": "Where the leading point of the break-up was, at instants of the recording.",
                                "type": "array",
                                "items": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "t": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "lat": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "lng": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "altitudeKm": {
                                          "anyOf": [
                                            {
                                              "description": "Height above the ellipsoid, km.",
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        }
                                      },
                                      "additionalProperties": false
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                }
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "fragments": {
                            "anyOf": [
                              {
                                "description": "The pieces seen, each following the same path some seconds behind the leading point.",
                                "type": "array",
                                "items": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "anyOf": [
                                            {
                                              "type": "string"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "lagS": {
                                          "anyOf": [
                                            {
                                              "description": "Seconds behind the leading point, along the same path.",
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "fromT": {
                                          "anyOf": [
                                            {
                                              "description": "When it is first seen, ms of the recording — when it broke off, or when it began to glow.",
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "untilT": {
                                          "anyOf": [
                                            {
                                              "description": "When it goes out, ms — burned up, or slowed below glowing.",
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "absoluteMagnitude": {
                                          "anyOf": [
                                            {
                                              "description": "Its brightness as a magnitude at 100 km — the meteor astronomers' absolute magnitude, which a fireball report gives — from which the brightness at the observer's actual distance follows.",
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "color": {
                                          "anyOf": [
                                            {
                                              "description": "Its colour, as a CSS hex colour.",
                                              "type": "string"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "trainS": {
                                          "anyOf": [
                                            {
                                              "description": "How long a stretch of its own past path still glows behind it, seconds: the tail observers describe.",
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        }
                                      },
                                      "additionalProperties": false
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                }
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            },
            "launches": {
              "anyOf": [
                {
                  "description": "Rocket launches whose exhaust it claims was seen, lit by a Sun the ground no longer sees — see LaunchJson.",
                  "type": "array",
                  "items": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "title": {
                            "anyOf": [
                              {},
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "explains": {
                            "anyOf": [
                              {
                                "description": "The phenomena of the account (their `sourceId`s) this launch claims to be — see BodyJson.explains.",
                                "type": "array"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "vehicle": {
                            "anyOf": [
                              {
                                "description": "What flew, as its operator names it.",
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "anyOf": [
                                      {
                                        "description": "\"Falcon 9\".",
                                        "type": "string"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "mission": {
                                    "anyOf": [
                                      {
                                        "description": "\"Starlink Group 10-49\".",
                                        "type": "string"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "engine": {
                                    "anyOf": [
                                      {
                                        "description": "The engine whose exhaust it is.",
                                        "type": "object",
                                        "properties": {
                                          "thrustKN": {
                                            "anyOf": [
                                              {
                                                "description": "Thrust in vacuum, kN: a Merlin Vacuum's 934, an RL10's 110, a solid booster's thousands.",
                                                "type": "number"
                                              },
                                              {
                                                "$ref": "#/$defs/stated"
                                              }
                                            ]
                                          },
                                          "specificImpulseS": {
                                            "anyOf": [
                                              {
                                                "description": "Specific impulse in vacuum, seconds: 348 for a Merlin Vacuum, 465 for an RL10, 285 for a solid.",
                                                "type": "number"
                                              },
                                              {
                                                "$ref": "#/$defs/stated"
                                              }
                                            ]
                                          },
                                          "propellant": {
                                            "anyOf": [
                                              {
                                                "enum": [
                                                  "rp1-lox",
                                                  "methane-lox",
                                                  "hydrogen-lox",
                                                  "hypergolic",
                                                  "solid"
                                                ]
                                              },
                                              {
                                                "$ref": "#/$defs/stated"
                                              }
                                            ]
                                          }
                                        },
                                        "additionalProperties": false
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  }
                                },
                                "additionalProperties": false
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "track": {
                            "anyOf": [
                              {
                                "description": "Where the stage stood at instants of the recording, ms.",
                                "type": "array",
                                "items": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "t": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "lat": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "lng": {
                                          "anyOf": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        },
                                        "altitudeKm": {
                                          "anyOf": [
                                            {
                                              "description": "Height above the ellipsoid, km.",
                                              "type": "number"
                                            },
                                            {
                                              "$ref": "#/$defs/stated"
                                            }
                                          ]
                                        }
                                      },
                                      "additionalProperties": false
                                    },
                                    {
                                      "$ref": "#/$defs/stated"
                                    }
                                  ]
                                }
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "burnFromT": {
                            "anyOf": [
                              {
                                "description": "When the engine started and stopped, ms of the recording.",
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "burnUntilT": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          },
                          "plume": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "exhaustKgPerS": {
                                    "anyOf": [
                                      {
                                        "description": "Mass of exhaust leaving the engine, kg per second.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "condensedShare": {
                                    "anyOf": [
                                      {
                                        "description": "The share of that exhaust that ends up as particles that scatter light, 0 to 1.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "particleRadiusUm": {
                                    "anyOf": [
                                      {
                                        "description": "Radius of those particles, micrometres.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "expansionKmPerS": {
                                    "anyOf": [
                                      {
                                        "description": "How fast a puff's radius grows, km per second, from `initialRadiusKm`.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "initialRadiusKm": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "lifetimeS": {
                                    "anyOf": [
                                      {
                                        "description": "How long a puff lasts before the particles have gone, seconds.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "collarShare": {
                                    "anyOf": [
                                      {
                                        "description": "The share of the particles that is the collar: exhaust just let go, which leaves the nozzle at its exhaust velocity (3.4 km/s for a Merlin Vacuum) and, with almost no air to stop it, spreads into a wide, short-lived shell round the stage, where the rest stays behind as the narrow trail.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "collarExpansionKmPerS": {
                                    "anyOf": [
                                      {
                                        "description": "How fast the collar's radius grows, km per second, and how long it lasts, seconds.",
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  },
                                  "collarLifetimeS": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "$ref": "#/$defs/stated"
                                      }
                                    ]
                                  }
                                },
                                "additionalProperties": false
                              },
                              {
                                "$ref": "#/$defs/stated"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "$ref": "#/$defs/stated"
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/$defs/stated"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "#/$defs/stated"
        }
      ]
    }
  },
  "additionalProperties": false,
  "$defs": {
    "stated": {
      "description": "A value with its provenance beside it: what any field may be written as, in place of the bare value.",
      "type": "object",
      "required": [
        "value"
      ],
      "properties": {
        "value": {},
        "basis": {
          "enum": [
            "stated",
            "derived",
            "assumed"
          ],
          "description": "Absent means stated."
        },
        "rationale": {
          "type": "string",
          "description": "The working for a derivation, or what a guess was chosen for."
        }
      },
      "additionalProperties": false
    }
  }
}
