{
  "version": 1,
  "reviewedForTaskDate": "2026-10-17",
  "purpose": "Sources and limitations for the Pilotenausbildung1 gliding route planner. Retrieval time, model issue time, validity interval and aircraft-specific approval are different concepts.",
  "airports": {
    "provider": "OurAirports",
    "homepage": "https://ourairports.com/data/",
    "documentation": "https://ourairports.com/help/data-dictionary.html",
    "license": "Public Domain",
    "licenseUrl": "https://ourairports.com/data/",
    "mode": "Local snapshot derived from the existing VFR planner dataset; no new upstream download",
    "sourceLocalPath": "site/dist/vfr-flugplaner/airports.json",
    "sourceGeneratedAt": "2026-10-18T05:20:32.554Z",
    "sourceSha256": "73b8b4de25cf5d9706052965ee5b4ca744b23ea10478bb37d54ca65dc1fb06a1",
    "sourceRows": 72684,
    "includedAirports": 48100,
    "excludedRows": 24584,
    "invalidCoordinatesOmitted": 0,
    "includedTypes": [
      "small_airport",
      "medium_airport",
      "large_airport",
      "gliderport",
      "ultralight"
    ],
    "excludedTypes": [
      "heliport",
      "seaplane_base",
      "balloonport",
      "closed"
    ],
    "transformation": "Original ident, name, latitude, longitude, country, type and nullable ICAO are preserved. Elevation is converted from feet to metres using 0.3048 and rounded to 0.1 m. No invented coordinates or missing elevations replaced by zero.",
    "timestampCaution": "The existing source snapshot carries a generatedAt timestamp of 2026-10-18T05:20:32.554Z, later than the supplied task date 2026-10-17. This original timestamp is preserved as provenance, not presented as a future verification of the individual records.",
    "limitations": "Community directory, not an operational aviation database. A small_airport classification does not establish suitability for gliders, permission to land, runway condition or current availability. Missing ICAO and elevation values remain null. Verify the intended airfield in current official publications and NOTAM."
  },
  "forecast": {
    "provider": "MET Norway",
    "endpoint": "https://api.met.no/weatherapi/locationforecast/2.0/complete",
    "documentation": "https://api.met.no/weatherapi/locationforecast/2.0/documentation",
    "dataModel": "https://api.met.no/doc/locationforecast/datamodel",
    "jsonFormat": "https://api.met.no/doc/ForecastJSON",
    "license": "CC BY 4.0 / NLOD 2.0",
    "licenseUrl": "https://api.met.no/doc/License",
    "terms": "https://api.met.no/doc/TermsOfService",
    "commercialUse": "Permitted with attribution. Public API requires no secret key. Identify the application with a contactable User-Agent, use a caching same-origin gateway, coordinates with at most four decimal places, Expires and Last-Modified/If-Modified-Since.",
    "attribution": "Data from MET Norway; derived estimates by Pilotenausbildung1.",
    "instantVariables": [
      "air_temperature",
      "dew_point_temperature",
      "relative_humidity",
      "air_pressure_at_sea_level",
      "cloud_area_fraction",
      "cloud_area_fraction_low",
      "cloud_area_fraction_medium",
      "cloud_area_fraction_high",
      "fog_area_fraction",
      "wind_from_direction",
      "wind_speed",
      "wind_speed_of_gust"
    ],
    "periodVariables": [
      "precipitation_amount",
      "probability_of_precipitation",
      "probability_of_thunder"
    ],
    "timestamps": "Model issue timestamp is properties.meta.updated_at. Forecast valid times are timeseries[].time. Preserve the next_1_hours, next_6_hours or next_12_hours duration for period quantities. Missing variables remain unavailable.",
    "limitations": "Automatic surface forecast. Temperature and dew point are at 2 m; wind is at 10 m above ground. The altitude argument describes ground elevation and cannot retrieve winds or temperatures aloft. Variables and probabilities vary by region and forecast range. No vertical sounding, boundary-layer height, CAPE, thermal strength, usable soaring ceiling, icing or mountain-wave forecast is supplied by this endpoint. Any cloud-base calculation from temperature/dew point is an approximate derived lifting-condensation level, not a measured cloud base or thermal ceiling. Surface data alone cannot prove that a route is flyable or globally optimal."
  },
  "aviationWeather": {
    "provider": "NOAA/NWS Aviation Weather Center",
    "documentation": "https://aviationweather.gov/data/api/",
    "endpoints": {
      "metar": "https://aviationweather.gov/api/data/metar",
      "taf": "https://aviationweather.gov/api/data/taf",
      "sigmet": "https://aviationweather.gov/api/data/sigmet"
    },
    "changeLog": "https://aviationweather.gov/help/changelog/",
    "apiVersionNote": "The 2026-10-08 change log deprecates airsigmet and isigmet in favour of the combined sigmet endpoint.",
    "access": "Public HTTPS API; no secret key. Cross-origin requests are not allowed, so use a bounded same-origin server gateway with cache and identifying User-Agent.",
    "providerLimits": {
      "requestsPerMinute": 100,
      "usualMaximumRecords": 400
    },
    "coverage": "METAR, TAF and SIGMET reports received by AWC, with worldwide coverage subject to available reports.",
    "timestamps": "Retain raw observation, issue and validity timestamps. A successful retrieval is not a new observation. A stale response must remain visibly stale.",
    "limitations": "METAR/TAF are aerodrome reports and forecasts, not en-route thermals. Some glider fields have no reporting station. No returned SIGMET is not an all-clear; missing reports, missing geometries and incomplete source coverage remain possible. Check report times, areas and vertical relevance. Source result limits must be exposed if reached. These products do not contain NOTAM."
  },
  "notam": {
    "provider": "DFS AIS / EUROCONTROL EAD",
    "dfsPortal": "https://ais.dfs.de/pilotservice/home.jsp",
    "dfsDocumentation": "https://ais.dfs.de/pilotservice/service/information/frequently_asked_questions/frequently_asked_questions.jsp?lang=de",
    "dfsConditions": "https://ais.dfs.de/pilotservice/service/information/disclaimer/disclaimer.jsp?lang=de",
    "eadDocumentation": "https://www.eurocontrol.int/service/european-ais-database",
    "mode": "Official briefing links, locally parsed user-supplied ICAO briefing text, and optional authenticated SkyLink airport queries; no complete automatic route/FIR NOTAM coverage is implied.",
    "access": "DFS provides aerodrome/FIR briefings and route-specific VFReBulletin through its portal. EAD B2B access requires an EAD agreement; public EAD Basic is for general information and is not operational data access.",
    "limitations": "A local import contains only the supplied material. A parser or geographic Q-line radius cannot establish briefing completeness, exact affected geometry, cancellation/replacement status, schedule interpretation or clearance. Preserve original text, validity and import provenance. Never describe an empty or unavailable NOTAM source as clear.",
    "localParser": {
      "module": "notam.mjs",
      "sources": [
        "https://ext.eurocontrol.int/aixm_confluence/display/DNOTAM/General%2BPrinciples",
        "https://ext.eurocontrol.int/aixm_confluence/pages/viewpage.action?pageId=3080452",
        "https://ext.eurocontrol.int/aixm_confluence/display/DNOTAM/Item%2BC%2B-%2Bend%2Bof%2Bvalidity"
      ],
      "limitations": "Reads ICAO Q/A/B/C/D/E/F/G as local text. Q centers and radii are geographic selection circles, not actual restriction boundaries. B/C groups use UTC years 2000–2099. D schedules and free-text geometry remain unresolved. A passed EST end is unknown, not automatic cancellation. N/R/C references and original raw text are preserved; completeness and the current cancellation/replacement chain are not certified."
    }
  },
  "germanAirspace": {
    "provider": "DAeC Bundeskommission Segelflug / Peter Kemme",
    "homepage": "https://www.daec.de/fachbereiche/luftraum-flugsicherheit-betrieb/luftraumdaten/",
    "download": "https://www.daec.de/media/files/Dateien/Fachbereiche/Luftraum_und_Flugsicherheit/2026_09_Airspace_Germany_OA1.txt",
    "format": "OpenAir text",
    "publishedEffectiveFrom": "2026-09-15",
    "mode": "Official download link followed by local user import; source database is not bundled or automatically redistributed.",
    "licenseStatus": "Provider offers a free download but the inspected page/file does not state an explicit general commercial redistribution licence.",
    "limitations": "Includes static German airspace and jump zones with altitude references, plus some temporary areas. Snapshot contains areas whose dates have already passed; do not infer current activation from geometry alone. Times can change by NOTAM. AGL, MSL and flight levels must retain their distinct references; sampled terrain and standard-pressure FL conversion are approximate. Arc/circle conversion must be identified as sampled. Source states no guarantee of completeness/correctness and requires current charts and full flight preparation."
  },
  "optionalAirspaceProviders": {
    "openAip": {
      "documentation": "https://docs.openaip.net/",
      "homepage": "https://www.openaip.net/",
      "license": "CC BY-NC 4.0 unless otherwise stated by the provider",
      "status": "Not configured: authenticated API and applicable commercial permission would be required. No key is embedded in public files."
    },
    "openFlightmaps": {
      "homepage": "https://openflightmaps.org/",
      "terms": "https://openflightmaps.org/about/",
      "downloads": "https://openflightmaps.org/downloads/",
      "germany": "https://openflightmaps.org/downloads/ed/",
      "commercialUse": "Provider permits commercial database use under its General Users Licence with attribution, error reporting and an end-user mechanism to report corrections.",
      "status": "Not configured: current machine-readable download endpoint and full current licence delivery must be confirmed before bundling. Not a primary navigation source."
    }
  },
  "optionalAdvancedForecast": {
    "provider": "Open-Meteo",
    "documentation": "https://open-meteo.com/en/docs",
    "terms": "https://open-meteo.com/en/terms",
    "pricing": "https://open-meteo.com/en/pricing",
    "license": "Weather data CC BY 4.0; hosted endpoint use has separate conditions",
    "usefulVariables": [
      "cape",
      "lifted_index",
      "convective_inhibition",
      "boundary_layer_height",
      "freezing_level_height",
      "shortwave_radiation",
      "temperature_850hPa",
      "wind_speed_850hPa",
      "wind_direction_850hPa",
      "geopotential_height_850hPa"
    ],
    "status": "Not configured. Free hosted API is for non-commercial use only; advertisements or promotional use require a commercial subscription and private server-side key. Data licence alone does not grant free commercial endpoint use. No subscription has been purchased.",
    "limitations": "Pressure levels have varying MSL heights; use geopotential height, not a fixed altitude. CAPE or boundary-layer height is not itself usable thermal strength or a safe soaring ceiling."
  },
  "aircraftReferences": [
    {
      "type": "ASW 27 / ASW 27 B",
      "provider": "Alexander Schleicher",
      "url": "https://www.alexander-schleicher.de/flugzeuge/asw-27-asw-27-b/",
      "indicativeManufacturerData": {
        "bestGlideRatio": 48,
        "minimumSinkMps": 0.5,
        "wingAreaM2": 9,
        "emptyMassKg": 235,
        "maximumMassKg": 500,
        "waterBallastLitres": 180
      },
      "limitations": "Manufacturer type summary only. Does not define an approved aircraft-specific polar, reference loading, bug correction, centre of gravity or applicable mass limits for the individual aircraft."
    },
    {
      "type": "LS4 / LS4-a / LS4-b",
      "provider": "DG Aviation",
      "url": "https://www.dg-aviation.de/wp-content/uploads/LS-Typen-Tabelle-D.pdf",
      "manualRevisionReference": "https://www.dg-aviation.de/wp-content/uploads/Liste-der-gueltigen-Handbuchausgaben-aller-LS-Muster-1.pdf",
      "indicativeManufacturerData": {
        "bestGlideRatio": 40,
        "minimumSinkMps": 0.6,
        "wingAreaM2": 10.5,
        "emptyMassKg": 250
      },
      "variantExamples": [
        {
          "variant": "LS4",
          "maximumMassKg": 472,
          "waterBallastKg": 140
        },
        {
          "variant": "LS4-a",
          "maximumMassKg": 525,
          "waterBallastKg": 170
        },
        {
          "variant": "LS4-b",
          "maximumMassKg": 525,
          "waterBallastKg": 155
        }
      ],
      "limitations": "Manufacturer overview contains different variants and historical specifications. Use the current applicable flight manual, weight-and-balance record and modifications for the individual aircraft."
    }
  ],
  "performanceModel": {
    "limitations": "Route durations, glide reach, ballast effects and attainable distance are planning estimates. A simplified polar or glide-ratio model is not a manufacturer-certified performance table. Water ballast changes required speeds and sink and is not an automatic increase of still-air L/D. Total mass includes empty aircraft, occupants, equipment and water. A gross-mass calculation does not establish centre-of-gravity or structural compliance. Bug factors and thermal climb assumptions require explicit user inputs."
  },
  "requestedProviderIntegrations": {
    "skyLinkNotam": {
      "requestedRepository": "https://github.com/SkyLink-API/notam-api",
      "provider": "SkyLink API via RapidAPI",
      "documentation": "https://skylinkapi.com/docs",
      "subscription": "https://rapidapi.com/skylink-api-skylink-api-default/api/skylink-api",
      "endpoint": "https://skylink-api.p.rapidapi.com/v3/notams/{icao}",
      "authentication": "Own authorized RapidAPI key required; private server configuration or protected session. No key is included in repository or public files.",
      "response": "Airport-scoped records with raw text and provider-parsed identifier, N/R/C type, location, effective/expiration times and body.",
      "license": "Repository MIT licence applies to example code. API data use, entitlement, quota and commercial deployment are governed by provider/RapidAPI terms and the actual account plan.",
      "limitations": "Provider describes FAA SWIM FNS and worldwide airport requests. Coverage/completeness has not been independently verified with an authenticated response. Airport queries do not establish complete en-route/FIR briefings. Domestic FAA raw messages may lack ICAO Q-lines and cannot be mapped by the local ICAO parser. No returned records is not an all-clear."
    },
    "visualCrossing": {
      "requestedRepository": "https://github.com/nayan21402/SkySight-WeatherApp",
      "repositoryFinding": "This is an Android Jetpack Compose general-weather app using Visual Crossing and Gemini. It is not the skysight.io soaring forecast service or a SkySight thermal API.",
      "provider": "Visual Crossing Timeline Weather API",
      "documentation": "https://www.visualcrossing.com/resources/documentation/weather-api/timeline-weather-api/",
      "terms": "https://www.visualcrossing.com/weather-services-terms/",
      "keyHandling": "https://www.visualcrossing.com/resources/documentation/weather-api/how-do-i-add-weather-forecast-to-my-webpage/",
      "endpoint": "https://weather.visualcrossing.com/VisualCrossingWebServices/rest/services/timeline/{latitude},{longitude}",
      "authentication": "Own entitled Visual Crossing key required; private server configuration or protected session. No example or third-party key is reused.",
      "usefulFields": [
        "temp",
        "dew",
        "humidity",
        "precip",
        "precipprob",
        "windspeed",
        "winddir",
        "windgust",
        "pressure",
        "visibility",
        "cloudcover",
        "solarradiation",
        "solarenergy",
        "cape",
        "severerisk"
      ],
      "license": "Proprietary provider/account-plan terms; not open CC-licensed data. Check public display, commercial and redistribution rights for the actual plan. A key alone does not establish unrestricted redistribution rights.",
      "limitations": "General point weather. Optional CAPE and convective severity do not measure climb rate, usable thermal ceiling or safe soaring conditions. Missing values stay unavailable. Forecast, observation and statistical records must retain their source designation and valid UTC timestamps; metric units must be requested explicitly."
    },
    "runtimeSelection": {
      "fallback": "MET Norway remains the keyless weather source unless an authorized provider key is configured and a successful provider response is explicitly selected.",
      "secrets": "Credentials are not part of plan JSON, localStorage, public source metadata, archives, logs or upstream error output. The runtime must not echo credentials or authenticated upstream URLs."
    }
  },
  "aircraftCatalog": {
    "localFile": "aircraft.json",
    "licenseFile": "aircraft-catalog-license.txt",
    "count": 207,
    "counts": {
      "imported": 207,
      "xcsoarGliderVariants": 200,
      "manufacturerOnlyVariants": 7,
      "manufacturerEnriched": 16,
      "excludedOtherCategories": 3,
      "upstreamTotal": 203,
      "flagged": 10
    },
    "provider": "The XCSoar Project",
    "source": "https://github.com/XCSoar/XCSoar/blob/a9f2432fbf7ce4809585087b9f5114829efc7cb9/src/Polar/PolarStore.cpp",
    "fieldDefinitions": "https://github.com/XCSoar/XCSoar/blob/a9f2432fbf7ce4809585087b9f5114829efc7cb9/src/Polar/PolarStore.hpp",
    "commit": "a9f2432fbf7ce4809585087b9f5114829efc7cb9",
    "sourceCommitDate": "2026-10-17T21:34:48Z",
    "retrievedAt": "2026-10-18T07:28:15.679Z",
    "license": "GPL-2.0-or-later",
    "manufacturerSupplements": [
      {
        "name": "ASG-29 (15m)",
        "mode": "exact-variant-enrichment",
        "url": "https://www.alexander-schleicher.de/flugzeuge/asg-29/"
      },
      {
        "name": "ASG-29 (18m)",
        "mode": "exact-variant-enrichment",
        "url": "https://www.alexander-schleicher.de/flugzeuge/asg-29/"
      },
      {
        "name": "HpH304SJ 18m",
        "mode": "manufacturer-facts-without-polar",
        "url": "https://hph.cz/products/hph-304s-shark/"
      },
      {
        "name": "HpH304MS 18m",
        "mode": "manufacturer-facts-without-polar",
        "url": "https://hph.cz/products/hph-304s-shark/"
      },
      {
        "name": "HpH304ES 18m",
        "mode": "manufacturer-facts-without-polar",
        "url": "https://hph.cz/products/hph-304s-shark/"
      },
      {
        "name": "HpH304C Wasp 15m",
        "mode": "manufacturer-facts-without-polar",
        "url": "https://hph.cz/products/hph-304c-wasp/"
      },
      {
        "name": "JS3 JET 15m",
        "mode": "manufacturer-facts-without-polar",
        "url": "https://jonker-sailplanes.com/js3-rapture/"
      },
      {
        "name": "JS3 JET 18m",
        "mode": "manufacturer-facts-without-polar",
        "url": "https://jonker-sailplanes.com/js3-rapture/"
      },
      {
        "name": "SZD55-1 Nexus 15m",
        "mode": "manufacturer-facts-without-polar",
        "url": "https://www.szdallstar.com/en/products/szd-55-1-nexus/"
      },
      {
        "name": "ASK-13",
        "mode": "exact-variant-enrichment-from-existing-project-catalog",
        "technicalProjection": "matched-reference",
        "url": "https://www.alexander-schleicher.de/flugzeuge/ask-13/",
        "sourceLocalPath": "source-audit/glider-aircraft/catalog.json",
        "sourceLocalSha256": "bd2da3a542a0d6fdc24fcd131d4e91fcc526a023ab0a5fe6a5496949d70c9019"
      },
      {
        "name": "ASK-21",
        "mode": "exact-variant-enrichment-from-existing-project-catalog",
        "technicalProjection": "matched-reference",
        "url": "https://www.alexander-schleicher.de/flugzeuge/ask-21/",
        "sourceLocalPath": "source-audit/glider-aircraft/catalog.json",
        "sourceLocalSha256": "bd2da3a542a0d6fdc24fcd131d4e91fcc526a023ab0a5fe6a5496949d70c9019"
      },
      {
        "name": "ASK-23",
        "mode": "exact-variant-enrichment-from-existing-project-catalog",
        "technicalProjection": "matched-reference",
        "url": "https://www.alexander-schleicher.de/flugzeuge/ask-23-ask-23-b/",
        "sourceLocalPath": "source-audit/glider-aircraft/catalog.json",
        "sourceLocalSha256": "bd2da3a542a0d6fdc24fcd131d4e91fcc526a023ab0a5fe6a5496949d70c9019"
      },
      {
        "name": "ASW-12",
        "mode": "exact-variant-enrichment-from-existing-project-catalog",
        "technicalProjection": "matched-reference",
        "url": "https://www.alexander-schleicher.de/flugzeuge/asw-12/",
        "sourceLocalPath": "source-audit/glider-aircraft/catalog.json",
        "sourceLocalSha256": "bd2da3a542a0d6fdc24fcd131d4e91fcc526a023ab0a5fe6a5496949d70c9019"
      },
      {
        "name": "ASW-15",
        "mode": "exact-variant-enrichment-from-existing-project-catalog",
        "technicalProjection": "skipped-variant-conflict",
        "url": "https://www.alexander-schleicher.de/flugzeuge/asw-15-15-b/",
        "sourceLocalPath": "source-audit/glider-aircraft/catalog.json",
        "sourceLocalSha256": "bd2da3a542a0d6fdc24fcd131d4e91fcc526a023ab0a5fe6a5496949d70c9019"
      },
      {
        "name": "ASW-19",
        "mode": "exact-variant-enrichment-from-existing-project-catalog",
        "technicalProjection": "skipped-variant-conflict",
        "url": "https://www.alexander-schleicher.de/flugzeuge/asw-19-asw-19-b/",
        "sourceLocalPath": "source-audit/glider-aircraft/catalog.json",
        "sourceLocalSha256": "bd2da3a542a0d6fdc24fcd131d4e91fcc526a023ab0a5fe6a5496949d70c9019"
      },
      {
        "name": "ASW-20",
        "mode": "exact-variant-enrichment-from-existing-project-catalog",
        "technicalProjection": "skipped-variant-conflict",
        "url": "https://www.alexander-schleicher.de/flugzeuge/asw-20-baureihe/",
        "sourceLocalPath": "source-audit/glider-aircraft/catalog.json",
        "sourceLocalSha256": "bd2da3a542a0d6fdc24fcd131d4e91fcc526a023ab0a5fe6a5496949d70c9019"
      },
      {
        "name": "ASW-24",
        "mode": "exact-variant-enrichment-from-existing-project-catalog",
        "technicalProjection": "skipped-variant-conflict",
        "url": "https://www.alexander-schleicher.de/flugzeuge/asw-24-asw-24-b/",
        "sourceLocalPath": "source-audit/glider-aircraft/catalog.json",
        "sourceLocalSha256": "bd2da3a542a0d6fdc24fcd131d4e91fcc526a023ab0a5fe6a5496949d70c9019"
      },
      {
        "name": "ASW-27",
        "mode": "exact-variant-enrichment-from-existing-project-catalog",
        "technicalProjection": "matched-reference",
        "url": "https://www.alexander-schleicher.de/en/flugzeuge/asw-27-asw-27-b/",
        "sourceLocalPath": "source-audit/glider-aircraft/catalog.json",
        "sourceLocalSha256": "bd2da3a542a0d6fdc24fcd131d4e91fcc526a023ab0a5fe6a5496949d70c9019"
      },
      {
        "name": "ASW-28 (15m)",
        "mode": "exact-variant-enrichment-from-existing-project-catalog",
        "technicalProjection": "skipped-variant-conflict",
        "url": "https://www.alexander-schleicher.de/flugzeuge/asw-28/",
        "sourceLocalPath": "source-audit/glider-aircraft/catalog.json",
        "sourceLocalSha256": "bd2da3a542a0d6fdc24fcd131d4e91fcc526a023ab0a5fe6a5496949d70c9019"
      },
      {
        "name": "Arcus",
        "mode": "exact-variant-enrichment-from-existing-project-catalog",
        "technicalProjection": "skipped-variant-conflict",
        "url": "https://www.schempp-hirth.com/flugzeuge/arcus",
        "sourceLocalPath": "source-audit/glider-aircraft/catalog.json",
        "sourceLocalSha256": "bd2da3a542a0d6fdc24fcd131d4e91fcc526a023ab0a5fe6a5496949d70c9019"
      },
      {
        "name": "DG-100",
        "mode": "exact-variant-enrichment-from-existing-project-catalog",
        "technicalProjection": "matched-reference",
        "url": "https://www.dg-aviation.de/wp-content/uploads/DG-Typen-TabelleE.pdf",
        "sourceLocalPath": "source-audit/glider-aircraft/catalog.json",
        "sourceLocalSha256": "bd2da3a542a0d6fdc24fcd131d4e91fcc526a023ab0a5fe6a5496949d70c9019"
      },
      {
        "name": "DG-808C (18m)",
        "mode": "exact-variant-enrichment-from-existing-project-catalog",
        "technicalProjection": "matched-reference",
        "url": "https://www.dg-aviation.de/wp-content/uploads/DG-Typen-TabelleE.pdf",
        "sourceLocalPath": "source-audit/glider-aircraft/catalog.json",
        "sourceLocalSha256": "bd2da3a542a0d6fdc24fcd131d4e91fcc526a023ab0a5fe6a5496949d70c9019"
      },
      {
        "name": "Ventus 2cx (18m)",
        "mode": "exact-variant-enrichment-from-existing-project-catalog",
        "technicalProjection": "matched-reference",
        "url": "https://www.schempp-hirth.com/fileadmin/schempp-hirth/Resources/Documents/Prospekte/Ventus-2cx.pdf",
        "sourceLocalPath": "source-audit/glider-aircraft/catalog.json",
        "sourceLocalSha256": "bd2da3a542a0d6fdc24fcd131d4e91fcc526a023ab0a5fe6a5496949d70c9019"
      }
    ],
    "curatedSupplementSource": {
      "path": "source-audit/glider-aircraft/catalog.json",
      "sha256": "bd2da3a542a0d6fdc24fcd131d4e91fcc526a023ab0a5fe6a5496949d70c9019",
      "count": 22,
      "matched": 14,
      "mode": "offline reuse of existing curated primary-source facts; source pages not refetched"
    },
    "semantics": {
      "polarReferenceMassKg": "Mass at which the three polar points apply, not aircraft empty mass and not MTOM.",
      "emptyMassKg": "Representative empty rigged glider mass from XCSoar, or separately cited manufacturer fact, not the individual aircraft weighing report.",
      "maxWaterBallastL": "Original XCSoar catalog maximum water ballast in litres; zero is preserved from source. A separately cited maxWaterL overrides profile adoption where provided; original source value remains unchanged.",
      "maxWaterL": "Explicit manufacturer ballast fact for the named variant, if present. Not inferred by summing tank sizes. Aircraft-specific AFM and loading limits remain controlling.",
      "polarPoints": "Source speeds in km/h; signed negative sink in m/s. No correction or invented measurements.",
      "wingAreaM2": "Source reference wing area; documented unknown zero converted to null.",
      "vNoMps": "Maximum speed for normal operations, m/s. Unknown zero converted to null. Not VNE.",
      "vNoKmh": "Unit conversion of source v_no multiplied by 3.6. Not VNE.",
      "contestHandicap": "XCSoar contest handicap; unknown zero converted to null. Not a current competition eligibility statement.",
      "maxMassKg": "Null unless separately supplied by a cited manufacturer document. Never inferred from polar mass plus ballast.",
      "limitations": "Community-maintained representative polars from several origins, including simulator data. No assertion of certified performance or exact aircraft loading limits. Variants remain separate; missing data remains unknown."
    },
    "limitations": "Representative source data, not certified aircraft-specific limits. Three-point fitted best glide is used only when convex, positive and within the sampled speed range. Missing technical fields stay blank and block route calculations until supplied. Polar reference mass is never used as empty mass or MTOW. Source-marked wrong data is not automatically applied. Pilot, passenger and baggage masses remain personal inputs."
  }
}
