{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://solaranalytica.com/forecast-accountability/schema.json","title":"Solar Analytica Forecast Accountability Point","description":"A publisher forecast point retained with edition provenance, optional publisher or Solar Analytica bounds, and a separately sourced observed outcome.","type":"object","required":["forecastFamily","editionVersion","seriesKey","periodLabel","periodStart","periodEnd","forecastValue","valueClassification","comparisonStatus","methodVersion","publishedOn","retrievedAt"],"properties":{"forecastFamily":{"type":"string"},"editionVersion":{"type":"string"},"seriesKey":{"type":"string"},"unit":{"type":"string"},"periodLabel":{"type":"string"},"periodStart":{"type":"string","format":"date"},"periodEnd":{"type":"string","format":"date"},"forecastValue":{"type":"number"},"lowerValue":{"type":["number","null"]},"lowerSourceUrl":{"type":["string","null"],"format":"uri"},"upperValue":{"type":["number","null"]},"upperSourceUrl":{"type":["string","null"],"format":"uri"},"valueClassification":{"enum":["publisher_point","publisher_range","solar_analytica_scenario"]},"evidenceUrl":{"type":["string","null"],"format":"uri"},"observedValue":{"type":["number","null"]},"observedOn":{"type":["string","null"],"format":"date"},"comparisonStatus":{"type":"string"},"methodVersion":{"type":"string"},"publishedOn":{"type":"string","format":"date"},"retrievedAt":{"type":"string","format":"date-time"}},"x-solar-analytica-observation-rule":"An observed value is never inferred. It is added only from the named authoritative observation series.","x-solar-analytica-bound-rule":"Each non-null range bound carries its own evidence URL or is explicitly classified as a Solar Analytica scenario."}