{
  "title": "California ADU counts: reproduction and validation",
  "checked_on": "2026-09-29",
  "source_url": "https://data.ca.gov/dataset/housing-element-annual-progress-report-apr-data-by-jurisdiction-and-year/resource/fe505d9b-8c36-42ba-ba30-08bc4f34e022",
  "source_metadata": "source-metadata.json",
  "primary_statewide_counts": "primary-statewide-result.json",
  "primary_city_equality_checks": "primary-city-fingerprints.json",
  "direct_aggregate_query": "aggregate-jurisdiction-year.sql",
  "statewide_query": "verify-statewide.sql",
  "historical_completion_examples": "low-completion-examples-2018-2025.csv",
  "procedure": [
    "Run aggregate-jurisdiction-year.sql through the public datastore_search_sql endpoint. Keep j,c,y as the raw source keys. p=ADU permits with stage year matching report year; co=ADU completions with stage year matching report year; ap/ac=all-housing counts under that rule; pr/ar=as-filed permit counts.",
    "Use the union of all jurisdiction/county pairs across report years as the row universe. Pivot p for2018\u20132025, co for2024\u20132025, and ap/ac/pr/ar for2025. Leave missing group-years blank. Preserve the supplied hcd_name-to-display-name mapping.",
    "Permitted-unit share=100*p/ap; completion-unit share=100*co/ac; raw permitted-unit share=100*pr/ar. A zero/missing denominator returns blank. Round displayed percentages to one decimal, changes from peaks to whole percentages, multiples to one decimal.",
    "Cumulative permitted units sum available years without inventing missing years. Change2024\u20132025=p2025-p2024 only when both available. Percentage growth=(new-old)/old*100 only with a positive prior value. Competition rank=1+number of groups with strictly higher2025permit counts; missing year gives blank rank.",
    "A majority yes flag requires date-matched all-housing permits>=50, 2*p>ap and2*pr>ar. For the city-only sensitivity, include City and City and county; exclude unincorporated county areas.",
    "County totals group available2025component rows by county; SanFrancisco contributes once. A county-area aggregate is not added again to component city rows. Statewide totals must reconcile independently to verify-statewide.sql.",
    "Data-note flags identify raw/date-matched differences, 15+percentage-point share differences, no2025rows, and the four separately verified historical-completion examples. These flags do not assert a cause or a completion rate.",
    "Compare every output with primary-city-fingerprints.json, then check all local calculations in validation.json."
  ],
  "limitations": [
    "The source is self-reported jurisdiction data, not a certified full inventory.",
    "No report-year rows does not establish noAPRsubmission or zero building.",
    "The query does not reconstruct later-only backfills, deduplicate same-year events, or track permit cohorts.",
    "Handbook/Senate figures are retained as attributed external-source figures; their differences are not fully reconciled."
  ]
}