{
  "version": "v2026-09-17_scatter-font-150",
  "created": "2026-09-17",
  "status": "frozen snapshot",
  "main_file": "OPEN_THIS_FIRST.html",
  "default_excluded_dates": [
    "2022-10-21"
  ],
  "aod_ae_measurements_after_exclusion": 117497,
  "aod_ae_daily_dates": 1472,
  "retrieval_individual_rows": 125134,
  "retrieval_daily_dates": 1502,
  "retrieval_metrics": [
    "SSA_440nm",
    "SSA_675nm",
    "SSA_870nm",
    "SSA_1020nm",
    "FMF_500nm",
    "AODf_500nm",
    "AODc_500nm"
  ],
  "rules": [
    "AOD/AE later-worksheet and partial-channel recovery is limited to July 2020.",
    "Retrieval statistics exclude LUNAR files and files marked NO DATA.",
    "Every metric uses its own available observations and channel-specific n.",
    "Particle number size distribution is deferred because .siz is a volume-size product.",
    "Yearly time-series pages respect the exact YYYY-MM selection passed by OPEN_THIS_FIRST.html.",
    "Individual observations and daily means are provided as separate pages.",
    "Every current graph page includes a per-graph PNG download control.",
    "2022-10-21 is excluded from all regenerated AOD/AE outputs by default.",
    "Every graph axis has a full title, readable labels, and visible tick marks.",
    "Graph metric labels use full names instead of AOD or AE abbreviations.",
    "Daily-mean yearly time series use consecutive year sections; individual measurements retain the overlaid calendar-month view.",
    "The daily-mean yearly page can switch between consecutive years and an overlaid January-to-December calendar.",
    "Yearly time-series axes use month initials, daily points are unconnected, and individual year legends are inside the graph corner.",
    "Daily-mean yearly marker shapes use normalized geometry at the configured year size.",
    "Daily-mean yearly markers for 2024-2026 are 15 percent larger than the 2020-2023 base size.",
    "Individual-measurement yearly graphs can switch between overlaid and consecutive-year layouts.",
    "Consecutive individual-measurement graphs expand to full-width rows and remain inside their panels.",
    "Saved PNG graphs omit legends while interactive on-screen legends remain visible.",
    "Yearly time-series month letters mark the start of each month.",
    "The opening page does not include the similar daily-mean table.",
    "AOD value axes run from 0.00 to 1.25 in 0.25 increments.",
    "Angstrom Exponent value axes run from 0.0 to 2.4 in 0.4 increments.",
    "Month and category ticks are anchored at interval starts with space after the y-axis.",
    "Month summaries begin with January and visible Calendar wording is removed.",
    "Seasonal x-axes are titled Season and monthly behaviour x-axes are titled Year and Month.",
    "Saved PNG files use title-only headers without secondary counts, bin width, selection summaries, or date ranges.",
    "Descriptive-statistics tables and supporting labels use consistent title capitalization and full metric names.",
    "Every view in the main AOD/Angstrom dashboard uses its original per-graph data-fitted vertical axis; other applications remain unchanged.",
    "Frequency histograms label every 0.01 bin boundary and display the requested literal metric-specific x and relative-frequency y intervals.",
    "Frequency distributions open in Relative Frequency mode so the requested 0.04 AOD and 0.2 Angstrom Exponent y-axis intervals are immediately visible.",
    "Frequency histogram x and y ranges and numbered tick intervals can be adjusted manually and reset to automatic per metric and y-value mode.",
    "Relative Frequency (%) histograms plot percentages so graph values match tooltip and frequency-table percentages.",
    "Positive-only frequency histograms start at zero and align the zero tick with the y-axis origin.",
    "Scatter aerosol classes use AOD 0.32 and Angstrom Exponent 1.0/1.3 boundaries for BB, Continental Aerosol, MIX, and SD, with no unclassified points.",
    "Every graph has a complete frame and PNG export controls for crop range and 1x-4x scaling, with the exported frame preserved.",
    "Frequency-distribution x-axis ticks use the same normal-weight font as y-axis ticks.",
    "Scatter fixed scales use the restored daily x 0-0.9/y 0-2.1 and individual x 0-1.3/y 0-2.3 ranges.",
    "Scatter tick labels, axis titles, legend, and hover details are approximately 50 percent larger than in v2026-09-16_scatter-no-threshold-labels."
  ],
  "files": [
    {
      "path": "aeronet_aod_ae_dashboard_no_2022-10-21.html",
      "size_bytes": 2013954,
      "sha256": "e36bd4f79ede160cc0698281b69567591716061848c030a9a5faa79ee8763d67"
    },
    {
      "path": "AERONET_SSA_FMF_SDA_statistics_2020-2026.html",
      "size_bytes": 7818571,
      "sha256": "a840c583ca052b783caea57c52377dbdb7c3fabd7adaa49b72dce6dc5b78c800"
    },
    {
      "path": "AERONET_yearly_time_series_daily_means_2020-2026.html",
      "size_bytes": 216403,
      "sha256": "d7a98ff7cbaba6107ba2d92b8cd64e46d1a501a9479d68a561db755530310c73"
    },
    {
      "path": "AERONET_yearly_time_series_individual_2020-2026.html",
      "size_bytes": 16652614,
      "sha256": "ed2415cd4d3d849407d7469a51eab6899c6c400cadd5824fdad2af9462ca080d"
    },
    {
      "path": "AOD440_AE440-870_interactive_seasonal_scatter_2020-2026.html",
      "size_bytes": 6320384,
      "sha256": "af88dbdad705edd2f969c9997ba74fed9b0c8d2c1724fad355fa3a4044359122"
    },
    {
      "path": "AOD_AE_frequency_distributions_2020-2026.html",
      "size_bytes": 14923348,
      "sha256": "ddcfc3e0965902e9b55fd50a7b5ce463e3e5137c87300e8ca91dfe62e4e95a2a"
    },
    {
      "path": "CURRENT_VERSION.txt",
      "size_bytes": 164,
      "sha256": "42fdd59a34d84f212d0510eb6fa2b1594521ffd03b5b769b08f86170b0a88fab"
    },
    {
      "path": "data/aeronet_dashboard_data_no_2022-10-21.json",
      "size_bytes": 2661082,
      "sha256": "02c486aa2cd03466c1051e5d239af7ac986638f5abb4a736b028e284ab42404a"
    },
    {
      "path": "data/annual_AOD440_AE440-870_basis_summary.csv",
      "size_bytes": 1405,
      "sha256": "d78cd3aa02f5ec264d952b32c4c41c946c69d5fe9216805c5edf0d51da044b1e"
    },
    {
      "path": "data/annual_AOD440_AE440-870_scatter_summary.csv",
      "size_bytes": 363,
      "sha256": "46e82ee5277af445070af4a667f3027de5c7853e772bfc7d9c3061df1e533517"
    },
    {
      "path": "data/annual_AOD440_AE440-870_summary.csv",
      "size_bytes": 995,
      "sha256": "3adcc21fd24cbe064ab5f1da1f23d48aaaee73e68c39f3ec4eb2f61f610c4ebd"
    },
    {
      "path": "data/annual_AOD500_AE380-500_summary.csv",
      "size_bytes": 2242,
      "sha256": "d56516461e324d43999786006ecb5da42c6c0382cf3a5b666a62855f543e9ebd"
    },
    {
      "path": "data/daily_summary.csv",
      "size_bytes": 471797,
      "sha256": "2ed64163d3f441266c2a2108243bd6ccf61fcb08ecbe57cbd3754a3570abfb84"
    },
    {
      "path": "data/frequency_distribution_data.json",
      "size_bytes": 34783051,
      "sha256": "b0399b8ee54f5663eda1196909a7b0d9d6f70c204bf170a762932fe737d3401f"
    },
    {
      "path": "data/frequency_distributions.csv",
      "size_bytes": 275659,
      "sha256": "974df7861ecdf71b841a0fbda82e79bfdd452318aa410e599bbc89fa62cf3349"
    },
    {
      "path": "data/individual_AOD_AE_descriptive_statistics.csv",
      "size_bytes": 1458,
      "sha256": "69a1f48aa66084b22095e4d67cc6cf57fbd4e65e97cfd87780e2e14531f5440f"
    },
    {
      "path": "data/individual_observations_no_2022-10-21.csv",
      "size_bytes": 37421980,
      "sha256": "0715c2858e6e1d831a59b69543cda99386791f91f08812e6a8cfe1f34f40c62a"
    },
    {
      "path": "data/month_name_summary.csv",
      "size_bytes": 4613,
      "sha256": "b996ef69cebe821284228b0babc981457f164549e399be2b3a547f888c538a4f"
    },
    {
      "path": "data/monthly_summary.csv",
      "size_bytes": 24887,
      "sha256": "b8e6acbf9f7b6e3d53074de0326c6cf76077323d476ed1b6624dc56af1b8d289"
    },
    {
      "path": "data/overall_AOD440_AE440-870_basis_summary.csv",
      "size_bytes": 229,
      "sha256": "daf8c3bd0dff5fbfad1f597cd1509b0d0364e176044d95f223bc3b3f339a3183"
    },
    {
      "path": "data/retrieval_descriptive_statistics.csv",
      "size_bytes": 1958,
      "sha256": "e4376a3d572bc585acbe3d904c738ae8c319c7274c98b7d4934627cb6cabe5b6"
    },
    {
      "path": "data/retrieval_individual_observations_no_2022-10-21.csv",
      "size_bytes": 6965672,
      "sha256": "b2befa70de5d5dd31d6bce4b775e6be9d1efece593557d51d3d3ee49efbb26b0"
    },
    {
      "path": "data/retrieval_monthly_seasonal_statistics.csv",
      "size_bytes": 101102,
      "sha256": "3eb6324b9b68f55b8c0cb8102c0795e782fc809589586341ae9789594cf858fc"
    },
    {
      "path": "data/season_summary.csv",
      "size_bytes": 2089,
      "sha256": "48a93341c5d3e6fd250ed04fe494d355cf031ff862c01922e935b1233c5ddf64"
    },
    {
      "path": "data/season_year_summary.csv",
      "size_bytes": 9154,
      "sha256": "6b32ba21648a146ee82832be6f9616c4fec992508be61cee1796a9a4af109869"
    },
    {
      "path": "data/skipped_files.csv",
      "size_bytes": 0,
      "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
    },
    {
      "path": "data/supplied_files/2020 July AOD, AE 1.5_1 (1).xlsx",
      "size_bytes": 294424,
      "sha256": "7f45bfb1753a463ad93fa02ec49ef9be18c6ffdc8b6b7b157c8549e96b149def"
    },
    {
      "path": "graph_image_export.js",
      "size_bytes": 17130,
      "sha256": "35b0c137c3dd234bb6aa84315295bf8243db4273df5d37a81dd905919b7ef63d"
    },
    {
      "path": "open_first_daily_table_data.js",
      "size_bytes": 471790,
      "sha256": "a07995f99ba4099ce9bd28f2cbe167fc89f058091878e7bab70571de90b7685d"
    },
    {
      "path": "OPEN_THIS_FIRST.html",
      "size_bytes": 14826,
      "sha256": "3df7b290758f1ab572e9f9f9982a2c0b3896967d6ed21f73e8998897c8da4931"
    },
    {
      "path": "scripts/aeronet_dashboard_generator.py",
      "size_bytes": 44179,
      "sha256": "252c792d3d608f2bd70b66589efd7a6ce420706e773b3771361b3c73b853568b"
    },
    {
      "path": "scripts/make_aod_ae_dashboard_without_2022_10_21.py",
      "size_bytes": 5633,
      "sha256": "b65db7d4f02aeff8c4ce094faf98da15c90ac6eefc7f4097b48a237bff7d0de3"
    },
    {
      "path": "scripts/make_frequency_distributions.py",
      "size_bytes": 63621,
      "sha256": "6b227db0e3a07b7f2821214e2e38dbfb63a8976537535922bebe30a5af761a6f"
    },
    {
      "path": "scripts/make_interactive_seasonal_scatter.py",
      "size_bytes": 50599,
      "sha256": "cab90cb14ee415f6297dba85deb6a09270ad85eb425dae1400db79f6fd8be858"
    },
    {
      "path": "scripts/make_open_first_daily_table_data.py",
      "size_bytes": 6769,
      "sha256": "24141472f57851128ad188167e631487d7dcb79ba3b2fe8ba3fa4ab128c74b43"
    },
    {
      "path": "scripts/make_retrieval_statistics.py",
      "size_bytes": 29514,
      "sha256": "00d44124bf416fb352e91a397585f568ed66bcf67654e0654b3283cf4361f00d"
    },
    {
      "path": "scripts/make_yearly_time_series.py",
      "size_bytes": 23121,
      "sha256": "c7fb6cdf8692b678b6c2c96e229e705ce4b7bc24117d565d0c74e5536b4178d9"
    },
    {
      "path": "VERSION_LOG.md",
      "size_bytes": 32086,
      "sha256": "882701610095cc2b564852e38124095532e5d55561d51b65396fa375b72aafc5"
    }
  ],
  "yearly_time_series": {
    "individual_file": "AERONET_yearly_time_series_individual_2020-2026.html",
    "daily_mean_file": "AERONET_yearly_time_series_daily_means_2020-2026.html",
    "metrics": "all available AOD wavelengths and Angstrom exponent pairs",
    "year_controls": "independent on/off controls for 2020-2026"
  },
  "graph_image_export": {
    "format": "PNG",
    "scope": "every canvas and SVG graph in the six current application pages",
    "captures": "current filters, selected metric, and graph title; subtitles and legends are omitted"
  },
  "chart_readability": {
    "metric_labels": "full Aerosol Optical Depth and Angstrom Exponent names with wavelengths",
    "axes": "all graphs include named axes, tick labels, and visible tick marks",
    "typography": "enlarged chart titles, axis titles, ticks, legends, and captions",
    "collision_repairs": "expanded margins and removed overlapping annual and dashboard labels"
  },
  "sequential_daily_years": {
    "daily_axis": "selected years are shown as consecutive equal-width year sections",
    "daily_markers": "25 percent smaller than the previous daily-mean markers",
    "frequency_axis": "full metric name without the bin-start suffix"
  },
  "daily_layout_switch": {
    "default": "consecutive years",
    "alternate": "overlaid January-to-December calendar",
    "shared_controls": "years, metrics, filters, hover details, and PNG export"
  },
  "yearly_axis_and_marks": {
    "months": "J F M A M J J A S O N D",
    "daily_connections": "none",
    "individual_legend": "inside upper-right graph corner below PNG control"
  },
  "uniform_daily_markers": {
    "scope": "daily-mean yearly AERONET time-series graphs",
    "geometry": "all year-specific marker shapes use normalized width and height at their configured size",
    "preserved": "distinct year colors and marker shapes"
  },
  "recent_daily_marker_scale": {
    "years": "2024-2026",
    "increase_percent": 15,
    "baseline_years": "2020-2023"
  },
  "individual_layout_switch": {
    "default": "overlaid January-to-December calendar",
    "alternate": "consecutive equal-width year sections",
    "shared_controls": "years, metrics, filters, hover details, legends, and PNG export"
  },
  "individual_sequential_fit": {
    "layout": "full-width graph rows in consecutive-year mode",
    "overflow": "wide canvases scroll inside their own graph panel when needed",
    "overlay_layout": "retains the two-column comparison view"
  },
  "month_start_and_clean_export": {
    "opening_page": "similar daily-mean table removed",
    "month_ticks": "yearly time-series letters placed at each month start",
    "png_legends": "omitted while on-screen legends remain visible",
    "cache_version": "20260914-title-only-export"
  },
  "fixed_axes_and_title_only_export": {
    "aod_value_axis": "0.00 to 1.25 in 0.25 increments",
    "angstrom_exponent_value_axis": "0.0 to 2.4 in 0.4 increments",
    "category_ticks": "anchored at interval starts with space after the y-axis",
    "month_order": "January first",
    "season_axis": "Season",
    "monthly_axis": "Year and Month",
    "visible_wording": "Calendar removed; graph headings and axes use title capitalization",
    "png_header": "graph title only; secondary counts, bin width, selection summary, and date range omitted",
    "cache_version": "20260914-title-only-export"
  },
  "all_sections_consistent": {
    "scope": "all current dashboards, charts, descriptive-statistics tables, annual summaries, tooltips, and launcher links",
    "statistics_labels": "N, Minimum, Maximum, Standard Deviation, and Largest Bin use consistent title capitalization",
    "metric_names": "Aerosol Optical Depth and Angstrom Exponent are written in full in graph and statistics headings",
    "preserved": "fixed axes, start-aligned category ticks, January-first month order, clean PNG headers, and the excluded date rule"
  },
  "seasonal_fitted_axis": {
    "scope": "all views in the AERONET AOD/Angstrom dashboard without 2022-10-21",
    "vertical_axis": "original data-fitted scale calculated separately for every displayed metric and view",
    "preserved": "retrieval-statistics behavior and every other application remain unchanged"
  },
  "frequency_axis_ticks": {
    "bin_ticks": "labeled x-axis tick at every 0.01 bin boundary",
    "aod_440_500": "major x emphasis every 0.5; literal relative-frequency y ticks every 0.04",
    "ae_380_500_440_870": "major x emphasis every 0.2; literal relative-frequency y ticks every 0.2",
    "percentages": "retained in tooltips and tables rather than substituted for the requested graph-axis proportions",
    "tick_precision": "histogram tick labels use no more than two digits after the decimal point",
    "preserved": "count and cumulative modes, selectors, data, and other applications remain unchanged"
  },
  "frequency_y_axis_default": {
    "opening_mode": "relative frequency",
    "opening_metrics": "AOD 440 nm for AOD; Angstrom Exponent 380/500 nm when switching to AE",
    "aod_440_500_y_interval": 0.04,
    "ae_380_500_440_870_y_interval": 0.2,
    "alternate_modes": "frequency count and cumulative percent remain selectable"
  },
  "manual_histogram_axes": {
    "x_controls": "minimum, maximum, and tick/label interval",
    "y_controls": "minimum, maximum, and tick/label interval",
    "scope": "stored independently per metric and y-value mode for the current session",
    "reset": "Use Automatic restores data-fitted ranges and metric-specific default intervals",
    "minor_bin_ticks": "retained at every 0.01 bin boundary"
  },
  "percentage_axis_values": {
    "relative_frequency_unit": "percent",
    "consistency": "bars, y-axis labels, hover tooltip, and frequency table use the same percentage unit",
    "aod_440_500_y_interval_percentage_points": 4,
    "ae_380_500_440_870_y_interval_percentage_points": 20
  },
  "histogram_x_origin": {
    "positive_only_default_minimum": 0,
    "zero_tick_alignment": "at the y-axis origin without an inner plot inset",
    "negative_data": "retains its negative automatic minimum"
  },
  "scatter_aerosol_thresholds": {
    "BB": "AOD > 0.32 and AE > 1.3",
    "Continental Aerosol": "AOD <= 0.32 and AE > 1.3",
    "MIX": "1 < AE <= 1.3 at any AOD",
    "SD": "AE <= 1 at any AOD",
    "boundaries": "exact values are assigned so there is no unclassified category"
  },
  "framed_crop_export": {
    "scope": "every current canvas and SVG graph",
    "screen_frame": "complete rectangular outline",
    "export_range": "horizontal and vertical start/end percentages",
    "export_scale": "1x through 4x",
    "saved_frame": "complete border retained around the selected PNG crop"
  },
  "restored_scatter_scales": {
    "daily_means": "x 0-0.9; y 0-2.1",
    "individual_measurements": "x 0-1.3; y 0-2.3"
  },
  "frequency_tick_typography": {
    "x_axis": "normal-weight 13 px Segoe UI/Arial, matching y-axis tick labels"
  },
  "scatter_font_scale": {
    "tick_labels": "20 px, approximately 150 percent of the previous 13 px",
    "axis_titles": "23 px, approximately 150 percent of the previous 15 px",
    "legend_and_tooltip": "18 px, 150 percent of the previous 12 px",
    "plot_margins": "expanded to keep enlarged labels visible"
  }
}
