{
  "title": "PointCast Pacific and Air: complete public feature package",
  "version": "2026-10-06",
  "features": {
    "pacific": {
      "route": "/pacific",
      "title": "Pacific",
      "feature_and_supplements_markdown": "# Pacific\n## The largest room in El Segundo\n\nStand at El Segundo's shoreline and the Pacific looks like one thing: a blue surface, a horizon, a succession of breaking waves. A better way to look is to separate the clocks. The waves may carry energy from a distant storm. The water level follows a tidal rhythm. The water temperature reflects heat, currents and mixing. The breeze belongs to the atmosphere. These systems meet at the beach, but a number describing one cannot stand in for all the others.\n\nThis field guide starts in Santa Monica Bay and opens outward. Its default map point is a fixed public El Segundo reference, not your device's location. The aim is to make the ocean legible: what the instruments measure, how the coast works, and how to ask a question you can actually investigate.\n\n## A bay inside an ocean\n\nThe Pacific is Earth's largest and deepest ocean basin. NOAA's Ocean Exploration overview puts its area above 155 million square kilometers and its average depth near 4,000 meters. Those rounded figures describe an enormous basin, not the depth beneath a particular buoy. Ocean-area totals vary with boundary conventions, so apparent disagreements in the last few million square kilometers need not be measurement failures. [NOAA: Pacific scale](https://oceanexplorer.noaa.gov/ocean-fact/pacific-size/)\n\nOur coast lies within the California Current ecosystem, a productive eastern-Pacific system connecting physical conditions to fish, seabirds and marine mammals. The view from El Segundo is therefore both local and migratory: water and organisms move through a much bigger neighborhood than a city boundary. [NOAA Fisheries: California Current ecosystem](https://www.fisheries.noaa.gov/west-coast/ecosystems/california-current-regional-ecosystem)\n\n## Three instruments, three different places\n\nA trustworthy ocean dashboard tells you where each number comes from. NOAA station 9410840 measures water level at Santa Monica, about 12.5 kilometers from this guide's El Segundo reference point. Its tide prediction is a calculation; its water-level observation is a measurement. Keep those labels even when the curves almost overlap. [NOAA station information](https://tidesandcurrents.noaa.gov/stations/station.jsp?id=286) · [NOAA data products](https://api.tidesandcurrents.noaa.gov/api/prod/)\n\nThe Santa Monica Bay wave buoy, NDBC 46221 / CDIP 028, is about 21.7 kilometers from the reference point, offshore at 33.860° N, 118.641° W. Its thermometer sits approximately 0.46 meters below the waterline, over water 387 meters deep. That is offshore near-surface temperature, not a thermometer in El Segundo's breaking surf. A pier thermometer is a different measurement again. The buoy's station page identifies waves and water temperature; missing wind fields must stay missing. [NOAA buoy 46221](https://www.ndbc.noaa.gov/station_page.php?station=46221)\n\n## The tide is a moving reference line\n\nMuch of the U.S. West Coast has mixed semidiurnal tides: two highs and two lows in a lunar day, often with unequal heights. The Moon and Sun matter, but basin shape, coastlines and water movement complicate the pattern. A full Moon alone cannot tell you the time of the next local high tide. [NOAA tidal cycles](https://oceanservice.noaa.gov/education/tutorial_tides/tides07_cycles.html)\n\nTide heights also need a datum, a defined vertical reference. This guide uses MLLW, mean lower low water: a long-term reference based on each tidal day's lower low. A negative tide height is below that reference, not a negative ocean depth. Comparing observed and predicted levels is useful only when station, timestamp, units and datum agree. [NOAA tidal datums](https://tidesandcurrents.noaa.gov/datum_options.html)\n\n## A wave number is not a surf report\n\nSignificant wave height summarizes the sea state. In NDBC's spectral calculation it is approximately the average height of the highest third of waves. It is neither the tallest possible wave nor the height that will break at your beach. Dominant period describes the wave-energy peak; direction describes where those waves come from. [NDBC wave calculations](https://www.ndbc.noaa.gov/faq/wavecalc.shtml) · [NDBC measurement guide](https://www.ndbc.noaa.gov/faq/measdes.shtml)\n\nThe useful question is not simply, “How many feet?” It is, “Measured where, during which interval, and describing what?” A buoy can reveal a long-period swell while leaving unanswered how that swell interacts with the local shore. That limitation makes the measurement more useful, because it stops us asking it to do a job it cannot do.\n\n## The food web below the surface\n\nCoastal upwelling brings deeper, nutrient-bearing water toward the surface. In the California Current system, that supply supports plankton production and the food web above it. The timing matters: a productive pulse is a sequence of physical movement, biological growth and feeding, rather than a permanent green conveyor belt. [NOAA: upwelling and oceanography](https://www.fisheries.noaa.gov/west-coast/science-data/oceanography-northern-california-current-study-area)\n\nKelp forests add another architecture. These are large brown algae, not underwater trees, although their canopies offer shelter and food. They depend on light and suitable shallow, nutrient-rich water. NOAA notes that kelp can grow as much as 18 inches in a day under ideal conditions. That maximum is a biological possibility, not a promise about every local patch. [NOAA: kelp forests](https://oceanservice.noaa.gov/facts/kelp.html)\n\n## The coast has a history on land\n\nThe LAX Dunes preserve, just north of El Segundo, protects roughly 307 acres of coastal dunes. LAWA began restoration in the 1980s; the habitat includes the endangered El Segundo blue butterfly. The preserve makes a quiet point: the Pacific's living edge continues beyond the wet sand. Wind, plants, dunes and development belong in an ocean story too. Use designated access and organized restoration opportunities rather than entering protected habitat. [LAWA: natural resources](https://www.lawa.org/lawa-sustainability/sustainability-elements-natural-resources)\n\nThe city's industrial history also grew around ocean access. El Segundo's refinery was built in 1911, and the city incorporated in 1917. Reading that history beside the dunes changes the scene: the coast is simultaneously habitat, workplace, infrastructure and public space. [El Segundo Library: city history](https://www.elsegundolibrary.gov/home/showpublisheddocument/12915/639156389064170000)\n\n## The Pacific is a human geography\n\nA cultural map should not begin with modern industry. Tongva/Gabrieleno communities' regional history includes Los Angeles and the Southern Channel Islands; the National Park Service describes extensive coastal and island exchange. These are particular peoples and places, not a generic “ocean culture.” [National Park Service: regional maritime history](https://www.nps.gov/places/000/a-window-into-their-world.htm)\n\nAcross the Pacific, Marshallese navigation offers another way of reading waves. Swells interacting with islands produce patterns experienced navigators learn to interpret. NOAA's account shows observation as a practiced cultural knowledge system, connecting sea conditions to journeys rather than treating the ocean as empty space between destinations. [NOAA Ocean Today: Marshallese navigation](https://oceantoday.noaa.gov/oceanshowsusway/)\n\n## Work, climate and the cost of a healthy coast\n\nThe ocean economy includes recreation, transportation, fishing, construction, research and more. NOAA and BEA estimate that the U.S. marine economy supported 2.6 million jobs and contributed $511 billion to GDP in 2023. Those are national figures covering oceans and the Great Lakes, not El Segundo's output or the Pacific alone. [NOAA marine economy](https://coast.noaa.gov/states/fast-facts/marine-economy.html)\n\nThe ocean also absorbs atmospheric carbon dioxide. The resulting chemistry lowers pH and reduces the availability of carbonate used by shell-building organisms. “Acidification” describes a shift toward lower pH; it does not require seawater to cross below pH 7. This connects the sea outside town to choices and processes across the planet. [NOAA ocean acidification](https://oceanservice.noaa.gov/facts/acidification.html)\n\n## Read the ocean; respect its limits\n\nNo tide, temperature or buoy card certifies swimming conditions. Check current LA County water-quality advisories and the local beach forecast, and follow lifeguards and posted closures. The county recommends avoiding ocean-water contact for three days after significant rain, especially near flowing outlets; an advisory can last longer. NWS warns that sunny, calm-looking days can still have dangerous rip currents. An honest guide helps you notice those separate questions. [LA County beach water quality](https://publichealth.lacounty.gov/beach/) · [NWS rip-current safety](https://www.weather.gov/safety/ripcurrent)\n\n---\n# Supplement: pocket glossary\n- Tide: the recurring rise and fall associated with astronomical forcing, expressed locally through an ocean basin.\n- Observed water level: the level measured at a named station and time, including influences beyond the predicted tide.\n- MLLW: mean lower low water, the reference used for this guide's tide heights.\n- Swell: waves that have traveled beyond their generating wind system.\n- Significant wave height: a statistical sea-state measure, approximately the highest-third mean, not a maximum.\n- Dominant period: the period associated with the largest peak in the wave-energy spectrum.\n- Upwelling: movement bringing deeper water toward the surface.\n- Datum: the reference from which a height is measured.\n\n# Supplement: scale cards, never live readings\n- Pacific average depth: approximately 4,000 m. Basin-scale summary; NOAA Ocean Exploration.\n- Santa Monica Bay buoy: 387 m water depth; thermometer 0.46 m below waterline. Station metadata.\n- LAX Dunes: approximately 307 acres. Preserve extent; LAWA.\n- Marine economy: $511 billion U.S. GDP contribution, 2023, oceans plus Great Lakes. NOAA/BEA.\n- Local measurement distances: 12.5 km to Santa Monica tide station; 21.7 km to buoy 46221. Calculated straight-line distances from 33.9192, -118.4165, not travel distances.\n\n# University of El Segundo: three short exercises\n## 1. Read a number's passport · 10 minutes\nChoose one tide card and one buoy card. Write the source, station, location, observation or prediction time, unit, and measurement type. Circle anything missing. Success: you can explain why offshore temperature is not a beach-temperature claim.\n## 2. Predict, then inspect · 20 minutes\nOpen one complete day of Santa Monica predictions. Mark each high and low and compare the two highs. Ask whether the day shows a mixed pattern. Success: a labeled sketch with date, time zone and MLLW, plus one sentence about why a lunar phase is insufficient to predict a local high-tide time.\n## 3. Audit a surf sentence · 10 minutes\nRewrite this deliberately misleading claim: “The buoy says three feet, so the waves at El Segundo are three feet and safe.” Success: your correction distinguishes offshore significant wave height, beach breakers and independently assessed hazards. No water entry is part of this exercise.\n\n# University of El Segundo: three practical projects\n## A seven-day ocean notebook · free, from home or dry land\nRecord one comparable tide prediction and one timestamped buoy observation daily for seven days. Keep gaps as gaps. Add a question each day rather than guessing a cause. Deliverable: two small charts, a source log, and a paragraph explaining what the data cannot tell you. Do not scrape faster than a source updates.\n## A coast-as-system map · paper or a mapping tool\nMark the public reference point, Santa Monica station, offshore buoy, dunes, and beach-advisory link. Draw separate arrows for information flow, water movement and a possible runoff pathway; label unverified pathways as questions. Deliverable: a map legend that distinguishes instruments, ecosystems and infrastructure. No exact personal location is needed.\n## A public-data quality checker · beginner coding\nBuild a reader for the buoy's whitespace text feed. Use column names; convert MM to missing; parse the timestamp as UTC; retain original units. Add a “last observation” label, a stale state, and a source link. Test with a deliberately old row, an empty file and a missing thermometer value. Deliverable: a small visualization that never silently turns an absent reading into zero.\n\n# Resource shelf\n- [NOAA tides lessons](https://www.noaa.gov/education/resource-collections/ocean-coasts/tides): connect the Moon and Sun pages to the water-level record.\n- [NDBC buoy 46221](https://www.ndbc.noaa.gov/station_page.php?station=46221): inspect offshore measurement history.\n- [EPA Santa Monica Bay report](https://www.epa.gov/nep/state-bay-report-santa-monica-bay): explore watershed-scale restoration.\n- [LAWA dunes](https://www.lawa.org/lawa-sustainability/sustainability-elements-natural-resources): learn the shore's terrestrial ecology.\n- [University of El Segundo](/ues/): continue with cartography, electricity and regional reading.\n\n# Small interactive ideas\n- “Which instrument knows?” Match tide height, wave period, beach bacteria and wind to the right observing source. Correct answer for beach bacteria: LA County monitoring/advisories, not the buoy.\n- A swell-period slider uses explicitly synthetic waves to show period without claiming today's surf.\n- A tide overlay toggles prediction and observation with a shared station, datum and timestamp scale. The interface explains any missing observation.\n"
    },
    "air": {
      "route": "/air",
      "title": "Air",
      "feature_and_supplements_markdown": "# Air\n## The invisible landscape above El Segundo\n\nAir is the part of El Segundo you move through without seeing. It carries marine clouds over the coast, turns a flag, supplies oxygen to a runner and enters an engine. It can also carry pollutants that a blue sky does not reveal. A useful air page begins by separating two questions: What is the atmosphere doing? And what is in it?\n\nWeather observations help with the first. Air-quality measurements help with the second. They meet in the real world, but they are not interchangeable. A west wind is not an AQI reading. High humidity is not a particle concentration. This guide uses a fixed public El Segundo reference point and named regional sources, so you can learn from the surroundings without sharing your own location.\n\n## A global mixture, a local experience\n\nDry air is approximately 78 percent nitrogen, 21 percent oxygen and 0.93 percent argon, with other gases making up the remainder. “Dry” matters: water vapor varies, changing the proportions of the whole mixture. Trace gases can be important even when their share is small. Amount alone does not tell you a substance's role in climate or health. [NOAA: the atmosphere](https://www.noaa.gov/jetstream/atmosphere)\n\nThe atmosphere is a connected system. A thermometer samples conditions at a particular place; it does not describe an entire city. A pollution monitor answers a question about specified pollutants and time intervals. The first skill in reading an environmental dashboard is learning to ask what was actually measured before interpreting the number.\n\n## The ocean changes the air overhead\n\nSouthern California's marine layer is a familiar lesson in vertical structure. Cool marine air can sit below warmer air aloft, with an inversion limiting vertical mixing. Low clouds form when conditions permit; the layer and the clouds are related but not synonyms. Sea-breeze circulation can help move marine air onshore. Terrain influences how far the low cloud layer reaches inland. [NWS: marine-layer processes](https://www.weather.gov/source/zhu/ZHU_Training_Page/clouds/stratus_form_dissipate/Marine_Layer.html)\n\nThat makes a coastal morning a good observational puzzle. Where does the cloud edge sit? Does the wind change before or after the clouds break? Write down what you see, then compare it with a timestamped station record. A pattern worth investigating is not yet a demonstrated cause. A few mornings cannot establish a climate trend.\n\n## What the nearby weather station knows\n\nThe Los Angeles International Airport observing station, KLAX, is a useful nearby weather source. NWS lists it at 33.93806° N, 118.38889° W, about 3.3 kilometers from this guide's reference point. It measures airport conditions, not every block of El Segundo. Buildings, exposure and distance from the shore can matter. [NWS KLAX conditions and coordinates](https://forecast.weather.gov/MapClick.php?FcstType=text&lat=33.9454&lon=-118.44)\n\nTemperature, humidity, pressure and wind belong together, but each retains its own meaning. Wind direction names where the wind comes from: a west wind travels from west toward east. Dew point is the temperature to which air would need to cool to reach saturation under the usual meteorological definition. Do not read an airport's wind arrow as a map of pollutant concentration. [NOAA: interpreting surface observations](https://www.noaa.gov/jetstream/wxmaps-max)\n\n## The pollutants have different stories\n\nPM2.5 refers to fine particles with aerodynamic diameters generally no greater than 2.5 micrometers. Particles may be emitted directly or form through atmospheric chemistry. Their small size helps explain why they can reach deep into the respiratory system. A reported concentration describes mass per volume of air, commonly micrograms per cubic meter. It is not itself an AQI score. [EPA: particle pollution](https://www.epa.gov/pm-pollution/particulate-matter-pm-basics)\n\nGround-level ozone is different: it forms through reactions involving nitrogen oxides and volatile organic compounds in sunlight. It can also travel with the wind. The same oxygen-based molecule serves a protective role high in the stratosphere and is harmful to breathe near the ground. Location and chemistry matter as much as the name. [EPA: ground-level ozone](https://www.epa.gov/ground-level-ozone-pollution/ground-level-ozone-basics)\n\n## How to read AQI without overreading it\n\nThe U.S. Air Quality Index translates pollutant information into a health-communication scale. Its six categories run from good to hazardous. A value of 100 is a reference on that scale, not “100 percent polluted.” Always keep the pollutant, category, reporting area and timestamp with the number. [AirNow: AQI basics](https://www.airnow.gov/aqi/aqi-basics/)\n\nA current AQI is also not an instantaneous chemical reading. AirNow uses NowCast methods to relate recent measurements to an index for current conditions. Daily indices and forecasts have different time meanings. The reporting-area observation can reflect the highest AQI among reporting monitors, rather than a sensor located in the ZIP code you entered. [AirNow: using the index](https://www.airnow.gov/aqi/aqi-basics/using-air-quality-index/) · [AirNow: reporting areas](https://docs.airnowapi.org/faq)\n\n## Nearby does not mean interchangeable\n\nMonitor names deserve the same scrutiny as numbers. South Coast AQMD's July 2026 network plan lists LAX Hastings as offline during relocation. An old station profile is not evidence of a current feed. The active West Los Angeles site measures ozone and nitrogen dioxide; its published 2026 profile does not list PM2.5. Compton has a continuous PM2.5 instrument, but it is about 19.6 kilometers from the guide's reference point. Neither should silently become an “El Segundo sensor.” [AQMD 2026 network plan](https://www.aqmd.gov/home/air-quality/clean-air-plans/monitoring-network-plan)\n\nFor current guidance, use AirNow and South Coast AQMD's regional information, preserving the geography they actually report. For questions about specific facilities and pollutants, the district also maintains refinery community and fenceline monitoring resources. Those answer different questions from a citywide AQI card; a reading alone does not establish which source caused it. [AQMD refinery monitoring](https://www.scaqmd.gov/home/rules-compliance/rules/support-documents/rule-1180-refinery-fenceline-monitoring-plans)\n\n## A history of learning what was in the sky\n\nLos Angeles' air-pollution history is a history of investigation. South Coast AQMD records a major smog event on July 26, 1943, followed by new public institutions and scientific work on photochemical pollution. Understanding the problem required looking beyond visible smoke to reactions among gases and sunlight. That lesson still applies to a beautifully clear day: visibility is one observation, not a complete chemical analysis. [AQMD: historical perspective](https://www.aqmd.gov/docs/default-source/clean-air-plans/air-quality-management-plans/2016-air-quality-management-plan/final-2016-aqmp/chapter1.pdf)\n\nAir is also an economic resource. EPA's assessments connect cleaner air with fewer illnesses, fewer missed school and work days, and reduced damage to crops. Such benefits are often less visible than the equipment used to control emissions. The useful economic question includes who bears exposure and who benefits from improvement, alongside what a control measure costs. [EPA: clean air and the economy](https://www.epa.gov/clean-air-act-overview/clean-air-act-and-economy)\n\n## An ecosystem includes its atmosphere\n\nPlants exchange gases with the air. Elevated ozone can damage sensitive vegetation and affect ecosystems; air quality is therefore a living-landscape issue as well as a human-health issue. Coastal habitat restoration and air-pollution reduction operate on different parts of a connected system. [EPA: air, animals and plants](https://www.epa.gov/air-quality/air-animals-and-plants)\n\nA small personal sensor can make that connection tangible, but precision in the display is not proof of accuracy. EPA recommends evaluating sensors against reference instruments through side-by-side comparison, called collocation. Treat a low-cost sensor as an instrument with limitations, not an automatic verdict about a neighborhood or a source. [EPA: sensor collocation](https://www.epa.gov/air-sensor-toolbox/air-sensor-collocation)\n\n## A practical way to look up\n\nRead the current official AQI and its activity guidance before deciding how to use outdoor air, especially if you are sensitive to pollution. Ozone can irritate airways, and people with asthma, children, older adults and those active outdoors can be at greater risk. Follow relevant public-health advice and your own clinician's guidance. This page teaches interpretation; it does not diagnose symptoms or promise that a particular route is safe. [EPA: ozone and health](https://www.epa.gov/ground-level-ozone-pollution/health-effects-ozone-pollution)\n\nThe enduring habit is simple: notice, measure, name the uncertainty, then compare. A good question about today's sky can become tomorrow's small experiment.\n\n---\n# Supplement: pocket glossary\n- AQI: a unitless U.S. index communicating air-quality-related health concern; not a pollutant concentration.\n- PM2.5: fine-particle pollution defined by an aerodynamic size cut, generally 2.5 micrometers or smaller.\n- Ozone: O3; protective high in the atmosphere, harmful when breathed at ground level.\n- Concentration: amount of a pollutant in a specified amount of air, with units and averaging time.\n- NowCast: an EPA method relating recent pollutant readings to current AQI reporting.\n- Relative humidity: moisture relative to saturation at the current temperature, expressed as a percentage.\n- Dew point: a temperature-based measure related to how close air is to saturation.\n- Inversion: a layer in which temperature increases with height, limiting vertical mixing under suitable conditions.\n- Wind direction: the direction the wind comes from, conventionally measured clockwise from north.\n\n# Supplement: scale cards, never live readings\n- Dry-air nitrogen: approximately 78%; oxygen: approximately 21%. Composition, not an outdoor pollution reading.\n- PM2.5 size: approximately 2.5 μm and smaller; 1 μm = 0.001 mm.\n- AQI category bands: 0–50 Good; 51–100 Moderate; 101–150 Unhealthy for Sensitive Groups; 151–200 Unhealthy; 201–300 Very Unhealthy; 301+ Hazardous. Color must be accompanied by text. These ranges are AQI units, not μg/m³.\n- KLAX distance: 3.3 km from 33.9192, -118.4165, straight line.\n- Current AQMD site geography: West Los Angeles, 15.1 km; Compton, 19.6 km. Different locations and pollutant coverage; neither is an El Segundo-wide measurement.\n\n# University of El Segundo: three short exercises\n## 1. Classify the card · 10 minutes\nSort “west wind,” “PM2.5 12 μg/m³,” “AQI 42,” and “tomorrow's forecast” into weather, concentration, index and prediction. These are teaching examples, not current readings. Success: four labels plus the units or time information each item still needs.\n## 2. Follow the wind arrow · 15 minutes\nAt a safe outdoor spot, sketch which direction a flag or tree moves. Compare with KLAX's wind-from direction and observation time. Success: a diagram that distinguishes “from” and “toward,” plus two reasons the airport and your sheltered spot may differ. Do not identify a pollution source from this sketch.\n## 3. Read the timestamp · 10 minutes\nFind the time attached to an official air-quality report. Separate observation time, forecast date and the time you opened the page. Success: a one-sentence explanation of why refreshing a page does not make an old measurement new.\n\n# University of El Segundo: three practical projects\n## A marine-layer diary · seven mornings, free\nFrom the same safe public viewing spot or a window, record cloud cover, apparent cloud edge, time and a brief sketch. Add KLAX temperature, humidity and wind only when available and timestamped. Deliverable: a one-page sequence with one proposed explanation and one alternative. No weather record is required to manufacture a missing cloud observation.\n## An air-source atlas · one afternoon\nCreate a small map of KLAX, West Los Angeles and Compton monitors using the published coordinates. Add a table of pollutant coverage and source links. Put the El Segundo public reference point on the map, not a home address. Deliverable: a guide answering “Which source can answer which question?” Include LAX Hastings in an offline-history note, not the active layer.\n## An honest AQI reader · beginner data design\nPrototype the interface before connecting data: category name, pollutant, actual reporting area, observation time, source and status. Test fixtures for missing data, an old timestamp and a forecast-only result. Keep all fixtures labeled “example.” Deliverable: a working state diagram or small component that can say “AQI unavailable here; check the official source” without replacing AQI with weather.\n\n# Resource shelf\n- [AirNow](https://www.airnow.gov/): official current AQI and activity guidance; search El Segundo or ZIP 90245 and retain the returned reporting-area label.\n- [South Coast AQMD current readings](https://www.aqmd.gov/home/air-quality/current-air-quality-data/current-readings-at-air-monitoring-subregions): regional context and localized-event caveat.\n- [NWS public API](https://www.weather.gov/documentation/services-web-api): station observations and point forecasts.\n- [EPA Air Sensor Toolbox](https://www.epa.gov/air-sensor-toolbox): measurement design and limitations.\n- [University of El Segundo](/ues/): connect atmospheric observation to electricity, mapping and regional study.\n\n# Small interactive ideas\n- “Weather or air quality?” Sort cards and reveal why wind cannot replace pollutant data.\n- A synthetic inversion diagram lets the learner vary a conceptual mixing layer; clearly labeled as an illustration, never a local dispersion forecast.\n- A monitor-distance map toggles pollutant coverage. Empty space remains a coverage question, not a green safety zone.\n"
    }
  },
  "source_ledger": {
    "title": "PointCast Pacific and Air source ledger",
    "reviewed_date": "2026-10-06",
    "anchor": {
      "label": "El Segundo reference point",
      "latitude": 33.9192,
      "longitude": -118.4165,
      "kind": "fixed public editorial reference, not user location"
    },
    "distance_method": "Haversine; Earth radius 6371.0088 km; rounded to 0.1 km; straight line",
    "files": [
      {
        "path": "pacific-feature.md",
        "feature_words": 1209
      },
      {
        "path": "air-feature.md",
        "feature_words": 1243
      },
      {
        "path": "pacific-air-data-contract.md"
      }
    ],
    "stations": [
      {
        "id": "9410840",
        "provider": "NOAA CO-OPS",
        "name": "Santa Monica",
        "latitude": 34.0083,
        "longitude": -118.5,
        "distance_km": 12.5,
        "measurement": "water level; tide prediction; station water temperature",
        "status": "station listed active; response verification required"
      },
      {
        "id": "46221",
        "alternate_id": "CDIP028",
        "provider": "NOAA NDBC / Scripps",
        "name": "Santa Monica Bay",
        "latitude": 33.86,
        "longitude": -118.641,
        "distance_km": 21.7,
        "measurement": "offshore waves and near-surface water temperature",
        "water_depth_m": 387,
        "temperature_depth_m": 0.46,
        "status": "text body verified; browser CORS untested"
      },
      {
        "id": "KLAX",
        "provider": "NWS",
        "name": "Los Angeles International Airport",
        "latitude": 33.93806,
        "longitude": -118.38889,
        "distance_km": 3.3,
        "measurement": "airport weather, never AQI",
        "status": "public station coordinates verified; API response/CORS require testing"
      },
      {
        "id": "060370113",
        "provider": "South Coast AQMD",
        "name": "West Los Angeles",
        "latitude": 34.05111,
        "longitude": -118.456386,
        "distance_km": 15.1,
        "measurement": [
          "NO2",
          "O3"
        ],
        "status": "listed in 2026 active network; not a verified live integration"
      },
      {
        "id": "060371302",
        "provider": "South Coast AQMD",
        "name": "Compton",
        "latitude": 33.901389,
        "longitude": -118.205,
        "distance_km": 19.6,
        "measurement": [
          "CO",
          "NO2",
          "O3",
          "Pb",
          "PM2.5"
        ],
        "status": "listed in 2026 active network, including continuous PM2.5; not a verified live integration"
      },
      {
        "id": "060375005",
        "provider": "South Coast AQMD",
        "name": "LAX Hastings",
        "status": "offline in July 2026 network plan; excluded from current data"
      }
    ],
    "sources": [
      {
        "id": "S01",
        "title": "NOAA: Pacific scale",
        "url": "https://oceanexplorer.noaa.gov/ocean-fact/pacific-size/",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ]
      },
      {
        "id": "S02",
        "title": "NOAA Fisheries: California Current ecosystem",
        "url": "https://www.fisheries.noaa.gov/west-coast/ecosystems/california-current-regional-ecosystem",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ]
      },
      {
        "id": "S03",
        "title": "NOAA station information",
        "url": "https://tidesandcurrents.noaa.gov/stations/station.jsp?id=286",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ]
      },
      {
        "id": "S04",
        "title": "NOAA data products",
        "url": "https://api.tidesandcurrents.noaa.gov/api/prod/",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ]
      },
      {
        "id": "S05",
        "title": "NOAA buoy 46221",
        "url": "https://www.ndbc.noaa.gov/station_page.php?station=46221",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ]
      },
      {
        "id": "S06",
        "title": "NOAA tidal cycles",
        "url": "https://oceanservice.noaa.gov/education/tutorial_tides/tides07_cycles.html",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ]
      },
      {
        "id": "S07",
        "title": "NOAA tidal datums",
        "url": "https://tidesandcurrents.noaa.gov/datum_options.html",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ],
        "verification_note": "MLLW reference; not mean sea level."
      },
      {
        "id": "S08",
        "title": "NDBC wave calculations",
        "url": "https://www.ndbc.noaa.gov/faq/wavecalc.shtml",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ]
      },
      {
        "id": "S09",
        "title": "NDBC measurement guide",
        "url": "https://www.ndbc.noaa.gov/faq/measdes.shtml",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ],
        "verification_note": "Definitions and units, wave direction is FROM."
      },
      {
        "id": "S10",
        "title": "NOAA: upwelling and oceanography",
        "url": "https://www.fisheries.noaa.gov/west-coast/science-data/oceanography-northern-california-current-study-area",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ]
      },
      {
        "id": "S11",
        "title": "NOAA: kelp forests",
        "url": "https://oceanservice.noaa.gov/facts/kelp.html",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ]
      },
      {
        "id": "S12",
        "title": "LAWA: natural resources",
        "url": "https://www.lawa.org/lawa-sustainability/sustainability-elements-natural-resources",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ]
      },
      {
        "id": "S13",
        "title": "El Segundo Library: city history",
        "url": "https://www.elsegundolibrary.gov/home/showpublisheddocument/12915/639156389064170000",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ]
      },
      {
        "id": "S14",
        "title": "National Park Service: regional maritime history",
        "url": "https://www.nps.gov/places/000/a-window-into-their-world.htm",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ]
      },
      {
        "id": "S15",
        "title": "NOAA Ocean Today: Marshallese navigation",
        "url": "https://oceantoday.noaa.gov/oceanshowsusway/",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ]
      },
      {
        "id": "S16",
        "title": "NOAA marine economy",
        "url": "https://coast.noaa.gov/states/fast-facts/marine-economy.html",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ]
      },
      {
        "id": "S17",
        "title": "NOAA ocean acidification",
        "url": "https://oceanservice.noaa.gov/facts/acidification.html",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ]
      },
      {
        "id": "S18",
        "title": "LA County beach water quality",
        "url": "https://publichealth.lacounty.gov/beach/",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ]
      },
      {
        "id": "S19",
        "title": "NWS rip-current safety",
        "url": "https://www.weather.gov/safety/ripcurrent",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ]
      },
      {
        "id": "S20",
        "title": "NOAA tides lessons",
        "url": "https://www.noaa.gov/education/resource-collections/ocean-coasts/tides",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ],
        "verification_note": "Lunar/solar effects; tides are locally complex."
      },
      {
        "id": "S21",
        "title": "EPA Santa Monica Bay report",
        "url": "https://www.epa.gov/nep/state-bay-report-santa-monica-bay",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-feature.md"
        ]
      },
      {
        "id": "S22",
        "title": "NOAA: the atmosphere",
        "url": "https://www.noaa.gov/jetstream/atmosphere",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ]
      },
      {
        "id": "S23",
        "title": "NWS: marine-layer processes",
        "url": "https://www.weather.gov/source/zhu/ZHU_Training_Page/clouds/stratus_form_dissipate/Marine_Layer.html",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ]
      },
      {
        "id": "S24",
        "title": "NWS KLAX conditions and coordinates",
        "url": "https://forecast.weather.gov/MapClick.php?FcstType=text&lat=33.9454&lon=-118.44",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ]
      },
      {
        "id": "S25",
        "title": "NOAA: interpreting surface observations",
        "url": "https://www.noaa.gov/jetstream/wxmaps-max",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ],
        "verification_note": "Wind-from convention, dew point."
      },
      {
        "id": "S26",
        "title": "EPA: particle pollution",
        "url": "https://www.epa.gov/pm-pollution/particulate-matter-pm-basics",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ]
      },
      {
        "id": "S27",
        "title": "EPA: ground-level ozone",
        "url": "https://www.epa.gov/ground-level-ozone-pollution/ground-level-ozone-basics",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ]
      },
      {
        "id": "S28",
        "title": "AirNow: AQI basics",
        "url": "https://www.airnow.gov/aqi/aqi-basics/",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ]
      },
      {
        "id": "S29",
        "title": "AirNow: using the index",
        "url": "https://www.airnow.gov/aqi/aqi-basics/using-air-quality-index/",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ]
      },
      {
        "id": "S30",
        "title": "AirNow: reporting areas",
        "url": "https://docs.airnowapi.org/faq",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ]
      },
      {
        "id": "S31",
        "title": "AQMD 2026 network plan",
        "url": "https://www.aqmd.gov/home/air-quality/clean-air-plans/monitoring-network-plan",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ]
      },
      {
        "id": "S32",
        "title": "AQMD refinery monitoring",
        "url": "https://www.scaqmd.gov/home/rules-compliance/rules/support-documents/rule-1180-refinery-fenceline-monitoring-plans",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ]
      },
      {
        "id": "S33",
        "title": "AQMD: historical perspective",
        "url": "https://www.aqmd.gov/docs/default-source/clean-air-plans/air-quality-management-plans/2016-air-quality-management-plan/final-2016-aqmp/chapter1.pdf",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ]
      },
      {
        "id": "S34",
        "title": "EPA: clean air and the economy",
        "url": "https://www.epa.gov/clean-air-act-overview/clean-air-act-and-economy",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ]
      },
      {
        "id": "S35",
        "title": "EPA: air, animals and plants",
        "url": "https://www.epa.gov/air-quality/air-animals-and-plants",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ]
      },
      {
        "id": "S36",
        "title": "EPA: sensor collocation",
        "url": "https://www.epa.gov/air-sensor-toolbox/air-sensor-collocation",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ]
      },
      {
        "id": "S37",
        "title": "EPA: ozone and health",
        "url": "https://www.epa.gov/ground-level-ozone-pollution/health-effects-ozone-pollution",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ]
      },
      {
        "id": "S38",
        "title": "AirNow",
        "url": "https://www.airnow.gov/",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ]
      },
      {
        "id": "S39",
        "title": "South Coast AQMD current readings",
        "url": "https://www.aqmd.gov/home/air-quality/current-air-quality-data/current-readings-at-air-monitoring-subregions",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ]
      },
      {
        "id": "S40",
        "title": "NWS public API",
        "url": "https://www.weather.gov/documentation/services-web-api",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ]
      },
      {
        "id": "S41",
        "title": "EPA Air Sensor Toolbox",
        "url": "https://www.epa.gov/air-sensor-toolbox",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "air-feature.md"
        ]
      },
      {
        "id": "S42",
        "title": "NDBC data feed",
        "url": "https://www.ndbc.noaa.gov/data/realtime2/46221.txt",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-air-data-contract.md"
        ],
        "verification_note": "Verified text body; UTC rows, MM sentinel; CORS untested."
      },
      {
        "id": "S43",
        "title": "AirNow data quality",
        "url": "https://www.airnow.gov/about-the-data/",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-air-data-contract.md"
        ],
        "verification_note": "Preliminary, not certified regulatory AQS; observations have processing latency."
      },
      {
        "id": "S44",
        "title": "AirNow web services",
        "url": "https://docs.airnowapi.org/webservices",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-air-data-contract.md"
        ],
        "verification_note": "API key required; legacy service retirement flagged fall 2026 in indexed official docs; exact replacement paths unverified."
      },
      {
        "id": "S45",
        "title": "West Los Angeles station profile 2026",
        "url": "https://www.aqmd.gov/docs/default-source/clean-air-plans/air-quality-monitoring-network-plan/aaqmnp-westlosangeles.pdf?sfvrsn=e1fbe361_73",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-air-data-contract.md"
        ],
        "verification_note": "AQS060370113; coordinates 34.051110,-118.456386; NO2/O3, no PM2.5 listed."
      },
      {
        "id": "S46",
        "title": "Compton station profile 2026",
        "url": "https://www.aqmd.gov/docs/default-source/clean-air-plans/air-quality-monitoring-network-plan/aaqmnp-compton.pdf?sfvrsn=16",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-air-data-contract.md"
        ],
        "verification_note": "AQS060371302; coordinates33.901389,-118.205000; continuous PM2.5 listed."
      },
      {
        "id": "S47",
        "title": "AQMD network plan July 2026",
        "url": "https://www.aqmd.gov/docs/default-source/clean-air-plans/air-quality-monitoring-network-plan/annual-air-quality-monitoring-network-plan.pdf?Status=Master&sfvrsn=cf6cff61_58",
        "primary_source": true,
        "reviewed_date": "2026-10-06",
        "used_in": [
          "pacific-air-data-contract.md"
        ],
        "verification_note": "LAX Hastings currently offline transitioning to a new location."
      }
    ],
    "limitations": [
      "No browser CORS or response-header verification in research tool.",
      "CO-OPS and NWS response contracts derive from official docs; runtime bodies could not be opened here.",
      "AirNow keys/accounts excluded; keyless file schema and 90245 mapping not verified.",
      "No current numeric readings embedded in public feature prose.",
      "Static teaching examples are explicitly labeled."
    ]
  },
  "data_contract_markdown": "# PointCast Pacific and Air: public-data contract\nReviewed 2026-10-06. This is an implementation specification, not a current-conditions report.\n\n## Default geography\nUse the fixed editorial El Segundo reference point 33.9192, -118.4165. Label it “El Segundo reference point.” Do not call it a user's location or an instrument site. Do not request geolocation. All distances below are calculated great-circle distances (Haversine, Earth radius 6371.0088 km), rounded to 0.1 km; they are not route distances. If the existing application uses a different anchor, recalculate rather than retaining these numbers.\n\n## Shared state rules\n- Each observation object: provider, product, stationId, stationName, latitude, longitude, observedAt, fetchedAt, value, unit, quality flags, status, sourceUrl. A prediction additionally has validTime/validRange and kind=prediction; never observedAt.\n- Store UTC; render with America/Los_Angeles, including the date and PST/PDT from the date library. NOAA's GMT strings without an offset must be explicitly parsed as UTC, not in the device's local zone. A fetch timestamp is never a measurement timestamp.\n- No unmarked hardcoded examples or snapshots. For “loading,” “unavailable,” “stale,” and “missing measurement,” render distinct text states. Never turn missing values into zero.\n- Product UI policy, not agency standards: flag observed tide/pier temperature older than 30 minutes, buoy and KLAX observations older than 120 minutes, and any future timestamp more than five minutes ahead as suspect. Label retained old values “Last available observation,” with their real time; no “live” badge.\n- Predictions remain predictions even if fetched now. Require requested-date coverage; if not present, show no next-tide claim. A countdown reaching zero must move to the next verified event, not increment a synthetic 12-hour cycle.\n- Suggested client refresh: 10 minutes for CO-OPS/NWS; 30 minutes for NDBC; forecasts respect provider cache headers. Stop background polling when hidden. On error back off; offer manual retry and source link. These are product choices.\n- All sources below require deployment-origin testing. Research verified documents and one NDBC body; it did NOT inspect browser CORS headers. Never claim verified cross-origin support from this research alone. Try standard HTTPS GET with credentials omitted; do not use no-cors (opaque responses are unreadable), an unaffiliated CORS proxy, or any token/account. If blocked, honest linked fallback is valid.\n\n## Pacific: NOAA CO-OPS station 9410840\nName: Santa Monica, California.\nCoordinates: 34.0083, -118.5000. Distance: 12.5 km.\nSource: https://tidesandcurrents.noaa.gov/stations/station.jsp?id=286\nMetadata endpoint (documented candidate; response not accessible in research tool): https://api.tidesandcurrents.noaa.gov/mdapi/prod/webapi/stations/9410840.json\n\n### Observed water level\nGET https://api.tidesandcurrents.noaa.gov/api/prod/datagetter?product=water_level&station=9410840&date=recent&datum=MLLW&time_zone=gmt&units=metric&format=json&application=PointCast\n- Product: preliminary or verified six-minute observed water level, depending on availability. Recent operational data are preliminary; preserve q/f quality metadata.\n- Typical response: metadata plus data array; each row t=time, v=value; preserve flags and quality. Check error object even when HTTP succeeds.\n- Unit: meters relative to MLLW. Optional display feet = meters / 0.3048. Do not label this above mean sea level or ocean depth.\n- No API key/account in official documented request. API has throttling; respect response headers and do not poll each widget independently.\n- Explicit empty/no-data state is normal. date=latest only looks within the past 18 minutes; date=recent supplies the preceding 72 hours for a small chart, but the latest row must still pass freshness checks.\n\n### Predicted high/low tides\nGET https://api.tidesandcurrents.noaa.gov/api/prod/datagetter?product=predictions&station=9410840&begin_date=YYYYMMDD&range=72&datum=MLLW&time_zone=gmt&units=metric&interval=hilo&format=json&application=PointCast\nReplace YYYYMMDD with an actual UTC date covering the desired local day, allowing the UTC/Pacific offset. Read predictions[].t, v, type (H/L). Label “Next predicted high/low at Santa Monica.” For a tide curve, change interval to 6; never create an interpolated curve from high/low events and call it NOAA's six-minute prediction. Match source dates, station, datum and units before overlaying observations.\n\n### Pier water temperature, optional\nGET https://api.tidesandcurrents.noaa.gov/api/prod/datagetter?product=water_temperature&station=9410840&date=recent&time_zone=gmt&units=metric&format=json&application=PointCast\nRead data[].t/v. Raw °C; optional °F = °C × 9/5 + 32. Label “Water temperature at Santa Monica station.” It is neither a beach thermometer at El Segundo nor a replacement for offshore temperature. Availability must be confirmed from actual response.\nDocumentation: https://api.tidesandcurrents.noaa.gov/api/prod/\nDatum definitions: https://tidesandcurrents.noaa.gov/datum_options.html\n\n## Pacific: NDBC 46221 / CDIP 028\nName: Santa Monica Bay, CA (028); data supplied by Scripps Institution of Oceanography.\nCoordinates: 33.860, -118.641. Distance from reference point: 21.7 km.\nSite water depth: 387 m. Sea-temperature sensor: 0.46 m below waterline.\nSource: https://www.ndbc.noaa.gov/station_page.php?station=46221\nGET https://www.ndbc.noaa.gov/data/realtime2/46221.txt\n- Verified readable as plain text by research tool on 2026-10-06, but that is NOT a browser CORS test. No API key/account.\n- Two header lines; data is whitespace-delimited, newest first. Use header lookup, not silently assumed column offsets. Build UTC from YY/MM/DD/hh/mm; the verified file uses four-digit year. Missing token MM is null.\n- Header units: WVHT m; DPD/APD seconds; MWD degrees true; WTMP °C. Current inspected rows are approximately 30 minutes apart; delivery can lag. Validate actual timestamps rather than scheduling “live” values every 30 minutes.\n- WVHT: significant wave height; not maximum wave or beach breaking height. DPD: dominant period. APD: average period. MWD: wave direction FROM, as described by NDBC for the dominant period; do not rotate into a toward-arrow without labeling it.\n- For this station, inspected WDIR/WSPD/GST/ATMP fields are MM. It is a wave/temperature buoy, not a source of current local wind. Do not use MM=0 or copy airport wind into the buoy record.\n- Label WTMP “Offshore water temperature · Santa Monica Bay buoy.” Optional °F conversion as above.\n- Validate numeric fields independently. If the newest row lacks temperature, either show unavailable or search earlier temperature rows and attach THEIR timestamps, never the newest row's time.\nGuide: https://www.ndbc.noaa.gov/faq/measdes.shtml\nWave statistic: https://www.ndbc.noaa.gov/faq/wavecalc.shtml\n\n## Air: National Weather Service KLAX observations\nName: Los Angeles International Airport (KLAX).\nPublished coordinates: 33.93806, -118.38889. Distance: 3.3 km.\nGET https://api.weather.gov/stations/KLAX\nGET https://api.weather.gov/stations/KLAX/observations/latest\nPoint forecast discovery: https://api.weather.gov/points/33.9192,-118.4165\nAlerts: https://api.weather.gov/alerts/active?point=33.9192,-118.4165\n- Endpoints documented; response bodies could not be opened by research tool. Implementer must test. Station coordinates returned by runtime metadata take precedence; recalculate distance if they differ from the public NWS page.\n- GeoJSON properties.timestamp is observation time. Numeric weather values are QuantitativeValue objects; read unitCode and value, including null. Do not assume windSpeed is mph: convert returned units explicitly. Temperature commonly uses wmoUnit:degC; wind commonly wmoUnit:km_h-1; pressure Pa; humidity percent.\n- windDirection is FROM. Missing gust is unavailable, not 0. Distinguish station/barometric pressure, sea-level pressure and altimeter setting; do not mix them under one unlabeled “pressure.”\n- Routine airport observations are approximately hourly, with additional special reports; NWS notes that quality-control ingestion can delay observations by up to 20 minutes. Polling does not create newer observations.\n- No API key as presently documented. NWS requests an identifying User-Agent; a server can send the public app identity. Browser JavaScript cannot depend on setting a forbidden User-Agent header and should rely on normal browser handling. Test from the actual origin.\n- /points response supplies forecast, forecastHourly and observationStations URLs. Follow those returned links; do not invent a fixed grid id. Cache/revalidate because mappings may change.\n- Weather card title: “Nearby airport weather · KLAX.” Never “Air quality,” “clean air,” or AQI.\n- Successful empty alert collection means no matching active alerts were returned at fetch time. Failure means alerts unavailable, not no alerts. Preserve official instructions and expiration times.\nDocumentation: https://www.weather.gov/documentation/services-web-api\nPublic fallback: https://forecast.weather.gov/MapClick.php?FcstType=text&lat=33.9454&lon=-118.44\n\n## Air quality: honest no-key release\nDefault release behavior: no numeric “live El Segundo AQI” until a supported response has been retrieved, parsed and mapped to the correct reporting area. Render “Current AQI: check the official report” with the AirNow and South Coast AQMD links. Weather remains independently useful.\nOfficial links:\nhttps://www.airnow.gov/\nhttps://www.aqmd.gov/home/air-quality/current-air-quality-data/current-readings-at-air-monitoring-subregions\n\n### AirNow web services\nhttps://docs.airnowapi.org/webservices\nhttps://docs.airnowapi.org/faq\n- Requires account/API key. Out of scope for this no-account/no-token build. Do not register, request a key or embed one in the client.\n- Official indexed documentation flags legacy ZIP/lat-long services for retirement in fall 2026. Do not build against /aq/observation/zipCode/current/ or /aq/observation/latLong/current/ as a supported new integration. Exact replacement request paths were not verified in accessible primary-source material; they are intentionally not guessed here.\n- AQI is unitless; pollutant concentrations are separately typed quantities. Keep pollutant and averaging/NowCast method. Reporting-area observations may be the highest across contributing monitors, not a ZIP-specific measurement. Do not invent monitor coordinates from a reporting-area centroid.\n- Observations generally update hourly; release has processing delay. Forecasts are usually daily. A category without a numerical AQI is not permission to invent the category midpoint.\n- AirNow is preliminary public-information data, not certified regulatory AQS data: https://www.airnow.gov/about-the-data/\n\n### Public nationwide file candidates, NOT a verified integration\nThe official FAQ explicitly points to files.airnowtech.org. Potential no-key route:\nhttps://files.airnowtech.org/airnow/today/reportingarea.dat\nhttps://files.airnowtech.org/airnow/today/cityzipcodes.csv\nFAQ says reportingarea.dat updates at :25 and :55; ZIP mapping daily. Research requests did not yield inspectable file bodies, and detailed File Products documentation redirected to login. Therefore schema, CORS, mapping for 90245 and live parsing remain unverified. Do not ship guessed columns. If implementation can lawfully read public files and documentation without login, validate the full record format, observation/forecast type, pollutant, time zone and mapping, and cache shared data. Otherwise retain linked fallback. This is not a warrant to bypass access restrictions.\n\n### Current regional stations for geography/education\n- West Los Angeles: AQS 06-037-0113; 34.051110, -118.456386; 15.1 km; Wilshire & Sawtelle. April 21, 2026 profile lists continuous NO2 and O3, not PM2.5. https://www.aqmd.gov/docs/default-source/clean-air-plans/air-quality-monitoring-network-plan/aaqmnp-westlosangeles.pdf?sfvrsn=e1fbe361_73\n- Compton: AQS 06-037-1302; 33.901389, -118.205000; 19.6 km; 700 N. Bullis Road. March 27, 2026 profile lists continuous PM2.5 (Met One BAM 1020) plus other parameters. https://www.aqmd.gov/docs/default-source/clean-air-plans/air-quality-monitoring-network-plan/aaqmnp-compton.pdf?sfvrsn=16\n- LAX Hastings: AQS 06-037-5005, former monitor. July 2026 network plan says OFFLINE pending relocation. Do not use the still-searchable old station sheet as current. No current-data card.\n- No stable, documented keyless AQMD JSON feed was verified. Link district resources instead of scraping internal page services or inventing an API.\n\n## Beach and health boundaries\nLA County advisory page: https://publichealth.lacounty.gov/beach/\nNWS rip guidance: https://www.weather.gov/safety/ripcurrent\nAQI explanation: https://www.airnow.gov/aqi/aqi-basics/\nDo not infer swimming suitability from tides, temperature, wave height, an empty alerts query or water clarity. Do not infer AQI from weather, visibility, an odor, an offline monitor or a missing pollutant. No personalized medical advice, automatic evacuation recommendations, or unverified real-time safety verdicts.\n\n## Acceptance tests before enabling numbers\n1. Good response with real provider timestamp and units.\n2. Offline/timeout/HTTP error and provider error object with HTTP 200.\n3. Empty array, MM, null, NaN and malformed schema.\n4. Observation older than product threshold and future/invalid timestamp.\n5. Different device time zone and daylight-saving transition.\n6. Temperature missing only in newest buoy row.\n7. Prediction available while observation unavailable.\n8. Browser CORS test on actual deployment origin, no arbitrary proxy.\n9. Source links and station distances visibly accompany data.\n10. No hydration or refresh overwrites old observedAt with now.\n",
  "builderCorrections": [
    "Santa Monica station distance corrected to 12.5 km: Haversine 12.548278 km, rounded once to 0.1 km."
  ]
}
