{
  "generated_at": "2026-11-14T17:30:20Z",
  "audited_build": {
    "site_record": "frontend/public/data/build_inputs.json",
    "site_record_sha256": "b209c8dce7164eaeaa18468a22f2d540ca78b67e6dac356926965e7aa9a38776",
    "curated_sha256": {
      "facts/incidents.parquet": "b7e63224bb8824670a6d41473fcf81116828b4b9c9220e1c1d676d1a01b8f036",
      "aggs/agg_school_year_offense.parquet": "4b8a1bec88058a7c8fb6b51810d56983dc4e6ac63b9a6a8112d20be0ea871e70",
      "dims/dim_enrollment.parquet": "27fed3a2dd65566d2336dc760f497eee4b947c179b590427ad625f89611db9b1",
      "dims/dim_institution.parquet": "a48cd9867973506adcc5c54540e8e2f84126fa7095d02334731995f437c970c7",
      "dims/campus_year_sources.parquet": "5697f6d31e631ab924defb6c0594ec7c0b2a602d3d62d339b4c5b6200485146f",
      "dims/older_release_counts.parquet": "ad5abc31b2963d021e4c4ed708f3d2141492d84b358016619d994ecb92de8dda",
      "aggs/shared_blocks.parquet": "1b5ac8e00789389274071f7e20f3ddafef18d0b7920d9307560523cae82d8c51",
      "dims/campus_names.parquet": "643340062a437d469eb75885903f2637f136c484a225f5d4da93986a873e1407",
      "dims/campus_id_links.parquet": "e664e214a035c1482b822ca0409972be64983301c54fb2e8e2822d90cc27b860"
    }
  },
  "overall_status": "PASS",
  "summary": {
    "total_checks": 12,
    "passed": 12,
    "failed": 0,
    "warnings": 0
  },
  "checks": [
    {
      "name": "School Completeness",
      "status": "PASS",
      "details": {
        "what_it_checks": "Every campus (UNITID) that reported a year of DATA_YEARS in data/curated/dims/campus_year_sources.parquet (a release row with a count cell that is not blank, zeros included) has a site file schools/<UNITID>.json, every school file is such a campus, every school in data/curated/facts/incidents.parquet reported, and school-index.json (the site search) lists every school file once and nothing else. It compares file names only; check 2 and the per-school report compare the files' numbers.",
        "schools_in_search_index": 14081,
        "schools_in_facts": 8844,
        "schools_reported": 14081,
        "schools_reported_never_an_incident": 5237,
        "json_files_generated": 14081,
        "missing_json": 0,
        "extra_json": 0
      },
      "errors": [],
      "warnings": []
    },
    {
      "name": "Incident Total Accuracy",
      "status": "PASS",
      "details": {
        "what_it_checks": "For every site school file schools/<UNITID>.json, the yearlyTotals years are exactly the years the campus reported (campus_year_sources.parquet, zeros included) and notReported the other years of DATA_YEARS, and the total of each year (every year in the file or the aggregates; 0 when the aggregates have none) equals the sum over offenses of that school's geo \"All\" rows in agg_school_year_offense.parquet. The files' trends and breakdowns are not compared, and check 7 compares the aggregates with the fact table.",
        "schools_validated": 14081,
        "variances_found": 0,
        "files_with_other_years": 0,
        "reported_years_without_an_incident": 66118,
        "schools_with_variance": 0
      },
      "errors": [],
      "warnings": []
    },
    {
      "name": "FTE Coverage",
      "status": "PASS",
      "details": {
        "what_it_checks": "Of the schools with crime data in each year in agg_school_year_offense.parquet, the share that have an FTE above 0 for that year in the same file (metadata.json's enrollmentStatus names the years NCES has not published). It does not compare FTE values with the IPEDS files.",
        "by_year": [
          {
            "year": 2015,
            "schools_with_data": 4721,
            "schools_with_fte": 4699,
            "coverage_pct": 99.5,
            "enrollment": "final"
          },
          {
            "year": 2016,
            "schools_with_data": 4658,
            "schools_with_fte": 4650,
            "coverage_pct": 99.8,
            "enrollment": "final"
          },
          {
            "year": 2017,
            "schools_with_data": 4683,
            "schools_with_fte": 4678,
            "coverage_pct": 99.9,
            "enrollment": "final"
          },
          {
            "year": 2018,
            "schools_with_data": 4524,
            "schools_with_fte": 4519,
            "coverage_pct": 99.9,
            "enrollment": "final"
          },
          {
            "year": 2019,
            "schools_with_data": 4353,
            "schools_with_fte": 4309,
            "coverage_pct": 99.0,
            "enrollment": "final"
          },
          {
            "year": 2020,
            "schools_with_data": 3803,
            "schools_with_fte": 3801,
            "coverage_pct": 99.9,
            "enrollment": "final"
          },
          {
            "year": 2021,
            "schools_with_data": 3949,
            "schools_with_fte": 3925,
            "coverage_pct": 99.4,
            "enrollment": "final"
          },
          {
            "year": 2022,
            "schools_with_data": 3993,
            "schools_with_fte": 3992,
            "coverage_pct": 100.0,
            "enrollment": "final"
          },
          {
            "year": 2023,
            "schools_with_data": 3941,
            "schools_with_fte": 3940,
            "coverage_pct": 100.0,
            "enrollment": "final"
          },
          {
            "year": 2024,
            "schools_with_data": 3811,
            "schools_with_fte": 3811,
            "coverage_pct": 100.0,
            "enrollment": "provisional"
          }
        ],
        "overall_coverage_pct": 99.7,
        "years_without_enrollment": [],
        "thresholds_pct": {
          "fail_below": 95.0,
          "warn_below": 99.0
        }
      },
      "errors": [],
      "warnings": []
    },
    {
      "name": "Rate Calculation Accuracy",
      "status": "PASS",
      "details": {
        "what_it_checks": "For every entry of every rateRankings and rateUnranked list of rankings/*.json, rate equals count / fte x 10,000 to 2 decimals (within 0.005), with the FTE of the entry's institution in the file's institutions table, which must be above 0. Check 10 compares the counts and FTE with the facts and NCES's enrollment.",
        "rate_entries_checked": 373896,
        "rate_errors": 0
      },
      "errors": [],
      "warnings": []
    },
    {
      "name": "Ranking Order Validation",
      "status": "PASS",
      "details": {
        "what_it_checks": "In every count ranking (one code of a rankings/*.json file's rankings, the summary codes included), entries are listed by count, largest first, ties by name (the file's campuses table), then UNITID, and each rank is 1 + the number of entries with a larger count, so tied counts share a rank (1, 2, 2, 4). Every rate ranking (rateRankings) likewise by rate, ties by institution name, then base UNITID, and every list of institutions with too few incidents to rank (rateUnranked) in the same order, without ranks. It checks the order of each file's own counts and rates; check 4 checks the rates' arithmetic.",
        "groups_validated": 26543,
        "entries_checked": 1001553,
        "order_violations": 0
      },
      "errors": [],
      "warnings": []
    },
    {
      "name": "Ranking Totals and Tables",
      "status": "PASS",
      "details": {
        "what_it_checks": "In every rankings/*.json file, totals[code] equals the sum of rankings[code]'s counts for every code, the campuses table holds every ranked campus (and the campuses ranked with 0, which check 10 checks), and the institutions table every rate-ranked institution, each with an FTE above 0. It checks the files' own numbers; check 8 compares the counts with the facts.",
        "groups_validated": 11272,
        "problems": 0
      },
      "errors": [],
      "warnings": []
    },
    {
      "name": "Aggregate Consistency",
      "status": "PASS",
      "details": {
        "what_it_checks": "From data/curated/facts/incidents.parquet, with the rules of 04_create_aggregates.py, the count of every row of agg_school_year_offense.parquet: each year, school, offense and geography (Residence halls included), and \"All\" = On-campus + Non-campus + Public property (Residence halls are a subset of On-campus, so \"All\" leaves them out). Every row must match exactly; the totals per year and geography are shown. This proves that no count was lost, added or changed between the facts and the aggregates. It does not re-read the DOE files, so it cannot detect a value that 02_transform_to_parquet.py read wrongly from them.",
        "years": "2015-2024",
        "fact_rows": 333143,
        "all": {
          "facts": 2626831,
          "aggregates": 2626831,
          "variance": 0
        },
        "residence_halls": {
          "facts": 1855019,
          "aggregates": 1855019,
          "variance": 0
        },
        "aggregate_rows_compared": 529215,
        "aggregate_rows_differing": 0,
        "by_year_geo": [
          {
            "year": 2015,
            "geo": "All",
            "facts": 360421,
            "aggregates": 360421,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2015,
            "geo": "Non-campus",
            "facts": 11337,
            "aggregates": 11337,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2015,
            "geo": "On-campus",
            "facts": 328454,
            "aggregates": 328454,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2015,
            "geo": "Public property",
            "facts": 20630,
            "aggregates": 20630,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2015,
            "geo": "Residence halls",
            "facts": 262237,
            "aggregates": 262237,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2016,
            "geo": "All",
            "facts": 345676,
            "aggregates": 345676,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2016,
            "geo": "Non-campus",
            "facts": 8784,
            "aggregates": 8784,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2016,
            "geo": "On-campus",
            "facts": 316364,
            "aggregates": 316364,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2016,
            "geo": "Public property",
            "facts": 20528,
            "aggregates": 20528,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2016,
            "geo": "Residence halls",
            "facts": 251689,
            "aggregates": 251689,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2017,
            "geo": "All",
            "facts": 330885,
            "aggregates": 330885,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2017,
            "geo": "Non-campus",
            "facts": 8770,
            "aggregates": 8770,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2017,
            "geo": "On-campus",
            "facts": 301936,
            "aggregates": 301936,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2017,
            "geo": "Public property",
            "facts": 20179,
            "aggregates": 20179,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2017,
            "geo": "Residence halls",
            "facts": 238381,
            "aggregates": 238381,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2018,
            "geo": "All",
            "facts": 306894,
            "aggregates": 306894,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2018,
            "geo": "Non-campus",
            "facts": 9392,
            "aggregates": 9392,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2018,
            "geo": "On-campus",
            "facts": 279692,
            "aggregates": 279692,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2018,
            "geo": "Public property",
            "facts": 17810,
            "aggregates": 17810,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2018,
            "geo": "Residence halls",
            "facts": 221520,
            "aggregates": 221520,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2019,
            "geo": "All",
            "facts": 286497,
            "aggregates": 286497,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2019,
            "geo": "Non-campus",
            "facts": 7405,
            "aggregates": 7405,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2019,
            "geo": "On-campus",
            "facts": 262014,
            "aggregates": 262014,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2019,
            "geo": "Public property",
            "facts": 17078,
            "aggregates": 17078,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2019,
            "geo": "Residence halls",
            "facts": 208692,
            "aggregates": 208692,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2020,
            "geo": "All",
            "facts": 187820,
            "aggregates": 187820,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2020,
            "geo": "Non-campus",
            "facts": 5814,
            "aggregates": 5814,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2020,
            "geo": "On-campus",
            "facts": 169024,
            "aggregates": 169024,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2020,
            "geo": "Public property",
            "facts": 12982,
            "aggregates": 12982,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2020,
            "geo": "Residence halls",
            "facts": 134095,
            "aggregates": 134095,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2021,
            "geo": "All",
            "facts": 199249,
            "aggregates": 199249,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2021,
            "geo": "Non-campus",
            "facts": 6033,
            "aggregates": 6033,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2021,
            "geo": "On-campus",
            "facts": 178887,
            "aggregates": 178887,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2021,
            "geo": "Public property",
            "facts": 14329,
            "aggregates": 14329,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2021,
            "geo": "Residence halls",
            "facts": 141493,
            "aggregates": 141493,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2022,
            "geo": "All",
            "facts": 204758,
            "aggregates": 204758,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2022,
            "geo": "Non-campus",
            "facts": 6534,
            "aggregates": 6534,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2022,
            "geo": "On-campus",
            "facts": 183716,
            "aggregates": 183716,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2022,
            "geo": "Public property",
            "facts": 14508,
            "aggregates": 14508,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2022,
            "geo": "Residence halls",
            "facts": 138119,
            "aggregates": 138119,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2023,
            "geo": "All",
            "facts": 206794,
            "aggregates": 206794,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2023,
            "geo": "Non-campus",
            "facts": 7048,
            "aggregates": 7048,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2023,
            "geo": "On-campus",
            "facts": 185514,
            "aggregates": 185514,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2023,
            "geo": "Public property",
            "facts": 14232,
            "aggregates": 14232,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2023,
            "geo": "Residence halls",
            "facts": 133473,
            "aggregates": 133473,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2024,
            "geo": "All",
            "facts": 197837,
            "aggregates": 197837,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2024,
            "geo": "Non-campus",
            "facts": 7161,
            "aggregates": 7161,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2024,
            "geo": "On-campus",
            "facts": 177242,
            "aggregates": 177242,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2024,
            "geo": "Public property",
            "facts": 13434,
            "aggregates": 13434,
            "variance": 0,
            "rows_differing": 0
          },
          {
            "year": 2024,
            "geo": "Residence halls",
            "facts": 125320,
            "aggregates": 125320,
            "variance": 0,
            "rows_differing": 0
          }
        ]
      },
      "errors": [],
      "warnings": []
    },
    {
      "name": "Shared Statistics Counted Once",
      "status": "PASS",
      "details": {
        "what_it_checks": "Without 04's code, from data/curated/facts/incidents.parquet and dims/older_release_counts.parquet: the blocks (one campus, year and geography of On-campus, Non-campus, Public property; one cell per offense, blank = 0) counted under another campus of the same ranked state, each test needing at least 6 cells not 0, by 04's rules in order: equal blocks (same_block); equal whole campus-years, every block of the copy (whole_year); and, for a campus-year taken from an older release, whole figures or a block equal in that release to a campus whose figures now come from a newer release (whole_year_older_release, block_older_release); and the two DOE IDs of one campus (link rows of etl/reference/campus_id_changes.csv) with equal whole figures in a year both report, any number of nonzero cells: the older release's campus-year is a shadow (renumbered). Hosts are chosen by 04's order. aggs/shared_blocks.parquet must hold exactly those shadows, hosts and rules. Every rankings/*.json entry must count the school's facts without its shadow blocks (for \"criminal\" summed over the Criminal family, for \"violent\" and \"property\" over their offenses, for \"all\" over every offense), the state and national files must rank exactly the schools with such a count, and each school file's sharedFigures must list exactly its shadow blocks and their host.",
        "min_nonzero_cells": 6,
        "host_groups": 468,
        "shadow_blocks": 482,
        "shadow_counts": 63079,
        "by_rule": {
          "block_older_release": {
            "shadow_blocks": 1,
            "counts": 1588
          },
          "renumbered": {
            "shadow_blocks": 99,
            "counts": 661
          },
          "same_block": {
            "shadow_blocks": 242,
            "counts": 59725
          },
          "whole_year": {
            "shadow_blocks": 140,
            "counts": 1105
          }
        },
        "by_year": [
          {
            "year": 2015,
            "doe_figures": 360138,
            "shadow_counts": 9526,
            "national_total": 350612,
            "groups": 53,
            "shadow_blocks": 53
          },
          {
            "year": 2016,
            "doe_figures": 345328,
            "shadow_counts": 8726,
            "national_total": 336602,
            "groups": 49,
            "shadow_blocks": 49
          },
          {
            "year": 2017,
            "doe_figures": 330603,
            "shadow_counts": 8391,
            "national_total": 322212,
            "groups": 49,
            "shadow_blocks": 49
          },
          {
            "year": 2018,
            "doe_figures": 306600,
            "shadow_counts": 8225,
            "national_total": 298375,
            "groups": 54,
            "shadow_blocks": 54
          },
          {
            "year": 2019,
            "doe_figures": 286281,
            "shadow_counts": 3990,
            "national_total": 282291,
            "groups": 67,
            "shadow_blocks": 67
          },
          {
            "year": 2020,
            "doe_figures": 187679,
            "shadow_counts": 3914,
            "national_total": 183765,
            "groups": 35,
            "shadow_blocks": 35
          },
          {
            "year": 2021,
            "doe_figures": 199024,
            "shadow_counts": 5092,
            "national_total": 193932,
            "groups": 58,
            "shadow_blocks": 59
          },
          {
            "year": 2022,
            "doe_figures": 204597,
            "shadow_counts": 4365,
            "national_total": 200232,
            "groups": 38,
            "shadow_blocks": 41
          },
          {
            "year": 2023,
            "doe_figures": 206604,
            "shadow_counts": 6487,
            "national_total": 200117,
            "groups": 35,
            "shadow_blocks": 42
          },
          {
            "year": 2024,
            "doe_figures": 197664,
            "shadow_counts": 4363,
            "national_total": 193301,
            "groups": 30,
            "shadow_blocks": 33
          }
        ],
        "ranking_entries_checked": 627657,
        "schools_with_shared_figures": 192,
        "problems": 0
      },
      "errors": [],
      "warnings": []
    },
    {
      "name": "Enrollment Matches NCES",
      "status": "PASS",
      "details": {
        "what_it_checks": "dims/dim_enrollment.parquet against NCES's own figures, re-read: 2015-2020 from etl/reference/ipeds_official_fte.csv (DRVEF tables of NCES's final Access databases), 2021 on from the DRVEF CSV the pipeline reads. Every institution-year with an FTE must be there with the same FTE and percent of exclusively online students (pctdeexc), and nothing else.",
        "sources": {
          "2015-2020": "ipeds_official_fte.csv",
          "2021": "drvef2021_rv.csv",
          "2022": "drvef2022_rv.csv",
          "2023": "drvef2023_rv.csv",
          "2024": "drvef2024.csv"
        },
        "by_year": [
          {
            "year": 2015,
            "institutions": 7230,
            "missing": 0,
            "extra": 0,
            "differ": 0
          },
          {
            "year": 2016,
            "institutions": 6820,
            "missing": 0,
            "extra": 0,
            "differ": 0
          },
          {
            "year": 2017,
            "institutions": 6677,
            "missing": 0,
            "extra": 0,
            "differ": 0
          },
          {
            "year": 2018,
            "institutions": 6355,
            "missing": 0,
            "extra": 0,
            "differ": 0
          },
          {
            "year": 2019,
            "institutions": 6181,
            "missing": 0,
            "extra": 0,
            "differ": 0
          },
          {
            "year": 2020,
            "institutions": 6129,
            "missing": 0,
            "extra": 0,
            "differ": 0
          },
          {
            "year": 2021,
            "institutions": 6051,
            "missing": 0,
            "extra": 0,
            "differ": 0
          },
          {
            "year": 2022,
            "institutions": 5979,
            "missing": 0,
            "extra": 0,
            "differ": 0
          },
          {
            "year": 2023,
            "institutions": 5915,
            "missing": 0,
            "extra": 0,
            "differ": 0
          },
          {
            "year": 2024,
            "institutions": 5843,
            "missing": 0,
            "extra": 0,
            "differ": 0
          }
        ]
      },
      "errors": [],
      "warnings": []
    },
    {
      "name": "Institution Rates",
      "status": "PASS",
      "details": {
        "what_it_checks": "Without 04's or 05's code, from the facts without shadow blocks, the reported campus-years, dim_institution, dim_enrollment and the raw IPEDS HD files: the campus-years that count (reported, not all shadow blocks; incidents or not), the institutions (base UNITIDs) each year with such a campus, counts over all those campuses (residence halls and shadow blocks left out), link campus (the 001 campus, else the campus with the most incidents), FTE, share of exclusively online students (in 2020, 2021, the share of the fall config.py ONLINE_SHARE_YEAR names when NCES has one, else the year's own) and on-campus FTE = FTE x (100 - share) / 100 rounded half up; the rate rules that leave an institution-year out (HD HOSPITAL = 1, a Carnegie special-focus medical code, the reference list, a campus under two IDs, a merger family, a shared campus) and the institutions pooled with it. Every rankings/*.json file must list in campuses exactly its preset's counting campus-years, with their name, state, institution FTE and number of campuses (the site ranks those without an entry with 0); in institutions exactly its preset's institutions with a denominator of at least 1,000 on-campus FTE and no rule; per code, rateRankings exactly those with at least 20 incidents and rateUnranked those with 1 to 19, each with that count and rate = count / denominator x 10,000 (within 0.005), and neither for an offense of RATE_COUNTS_ONLY. Every school file's institution years must match too.",
        "by_year": [
          {
            "year": 2015,
            "institutions": 6701,
            "with_more_than_one_campus": 1445,
            "rate_ranked": 2153,
            "left_out_fte": 4401,
            "no_online_figure": 0,
            "online_share_own_year_used": null,
            "with_1000_fte": 2392,
            "with_1000_oncampus_fte": 2259,
            "pooled": 7,
            "rule_hospital": 82,
            "rule_hospital_1000": 67,
            "rule_medical": 30,
            "rule_medical_1000": 17,
            "rule_listed": 1,
            "rule_listed_1000": 1,
            "rule_merger": 2,
            "rule_merger_1000": 1,
            "rule_family": 12,
            "rule_family_1000": 2,
            "rule_shared": 24,
            "rule_shared_1000": 21
          },
          {
            "year": 2016,
            "institutions": 6500,
            "with_more_than_one_campus": 1478,
            "rate_ranked": 2106,
            "left_out_fte": 4253,
            "no_online_figure": 0,
            "online_share_own_year_used": null,
            "with_1000_fte": 2364,
            "with_1000_oncampus_fte": 2215,
            "pooled": 9,
            "rule_hospital": 80,
            "rule_hospital_1000": 65,
            "rule_medical": 30,
            "rule_medical_1000": 17,
            "rule_listed": 1,
            "rule_listed_1000": 1,
            "rule_merger": 6,
            "rule_merger_1000": 5,
            "rule_family": 4,
            "rule_family_1000": 1,
            "rule_shared": 26,
            "rule_shared_1000": 25
          },
          {
            "year": 2017,
            "institutions": 6329,
            "with_more_than_one_campus": 1512,
            "rate_ranked": 2092,
            "left_out_fte": 4096,
            "no_online_figure": 0,
            "online_share_own_year_used": null,
            "with_1000_fte": 2347,
            "with_1000_oncampus_fte": 2202,
            "pooled": 12,
            "rule_hospital": 85,
            "rule_hospital_1000": 70,
            "rule_medical": 30,
            "rule_medical_1000": 18,
            "rule_listed": 1,
            "rule_listed_1000": 1,
            "rule_merger": 7,
            "rule_merger_1000": 6,
            "rule_family": 2,
            "rule_family_1000": 1,
            "rule_shared": 18,
            "rule_shared_1000": 16
          },
          {
            "year": 2018,
            "institutions": 6090,
            "with_more_than_one_campus": 1539,
            "rate_ranked": 2057,
            "left_out_fte": 3879,
            "no_online_figure": 0,
            "online_share_own_year_used": null,
            "with_1000_fte": 2329,
            "with_1000_oncampus_fte": 2174,
            "pooled": 16,
            "rule_hospital": 87,
            "rule_hospital_1000": 68,
            "rule_medical": 34,
            "rule_medical_1000": 22,
            "rule_listed": 1,
            "rule_listed_1000": 1,
            "rule_merger": 1,
            "rule_merger_1000": 0,
            "rule_family": 2,
            "rule_family_1000": 0,
            "rule_shared": 30,
            "rule_shared_1000": 26
          },
          {
            "year": 2019,
            "institutions": 5988,
            "with_more_than_one_campus": 1539,
            "rate_ranked": 2025,
            "left_out_fte": 3791,
            "no_online_figure": 0,
            "online_share_own_year_used": null,
            "with_1000_fte": 2320,
            "with_1000_oncampus_fte": 2145,
            "pooled": 7,
            "rule_hospital": 94,
            "rule_hospital_1000": 73,
            "rule_medical": 32,
            "rule_medical_1000": 22,
            "rule_listed": 1,
            "rule_listed_1000": 1,
            "rule_merger": 7,
            "rule_merger_1000": 7,
            "rule_family": 22,
            "rule_family_1000": 2,
            "rule_shared": 19,
            "rule_shared_1000": 18
          },
          {
            "year": 2020,
            "institutions": 5923,
            "with_more_than_one_campus": 1537,
            "rate_ranked": 1973,
            "left_out_fte": 3803,
            "no_online_figure": 0,
            "online_share_own_year_used": 66,
            "with_1000_fte": 2264,
            "with_1000_oncampus_fte": 2084,
            "pooled": 9,
            "rule_hospital": 90,
            "rule_hospital_1000": 71,
            "rule_medical": 33,
            "rule_medical_1000": 23,
            "rule_listed": 1,
            "rule_listed_1000": 1,
            "rule_merger": 0,
            "rule_merger_1000": 0,
            "rule_family": 0,
            "rule_family_1000": 0,
            "rule_shared": 23,
            "rule_shared_1000": 18
          },
          {
            "year": 2021,
            "institutions": 5861,
            "with_more_than_one_campus": 1537,
            "rate_ranked": 1945,
            "left_out_fte": 3741,
            "no_online_figure": 0,
            "online_share_own_year_used": 102,
            "with_1000_fte": 2261,
            "with_1000_oncampus_fte": 2061,
            "pooled": 5,
            "rule_hospital": 93,
            "rule_hospital_1000": 73,
            "rule_medical": 37,
            "rule_medical_1000": 23,
            "rule_listed": 1,
            "rule_listed_1000": 1,
            "rule_merger": 4,
            "rule_merger_1000": 4,
            "rule_family": 27,
            "rule_family_1000": 4,
            "rule_shared": 19,
            "rule_shared_1000": 16
          },
          {
            "year": 2022,
            "institutions": 5776,
            "with_more_than_one_campus": 1529,
            "rate_ranked": 1822,
            "left_out_fte": 3796,
            "no_online_figure": 0,
            "online_share_own_year_used": null,
            "with_1000_fte": 2236,
            "with_1000_oncampus_fte": 1935,
            "pooled": 4,
            "rule_hospital": 93,
            "rule_hospital_1000": 72,
            "rule_medical": 36,
            "rule_medical_1000": 21,
            "rule_listed": 1,
            "rule_listed_1000": 1,
            "rule_merger": 3,
            "rule_merger_1000": 1,
            "rule_family": 0,
            "rule_family_1000": 0,
            "rule_shared": 27,
            "rule_shared_1000": 22
          },
          {
            "year": 2023,
            "institutions": 5670,
            "with_more_than_one_campus": 1513,
            "rate_ranked": 1834,
            "left_out_fte": 3675,
            "no_online_figure": 0,
            "online_share_own_year_used": null,
            "with_1000_fte": 2243,
            "with_1000_oncampus_fte": 1953,
            "pooled": 3,
            "rule_hospital": 90,
            "rule_hospital_1000": 71,
            "rule_medical": 36,
            "rule_medical_1000": 21,
            "rule_listed": 1,
            "rule_listed_1000": 1,
            "rule_merger": 3,
            "rule_merger_1000": 1,
            "rule_family": 0,
            "rule_family_1000": 0,
            "rule_shared": 33,
            "rule_shared_1000": 26
          },
          {
            "year": 2024,
            "institutions": 5582,
            "with_more_than_one_campus": 1512,
            "rate_ranked": 1874,
            "left_out_fte": 3558,
            "no_online_figure": 0,
            "online_share_own_year_used": null,
            "with_1000_fte": 2268,
            "with_1000_oncampus_fte": 1987,
            "pooled": 3,
            "rule_hospital": 88,
            "rule_hospital_1000": 71,
            "rule_medical": 37,
            "rule_medical_1000": 21,
            "rule_listed": 1,
            "rule_listed_1000": 0,
            "rule_merger": 0,
            "rule_merger_1000": 0,
            "rule_family": 0,
            "rule_family_1000": 0,
            "rule_shared": 24,
            "rule_shared_1000": 21
          }
        ],
        "ranking_files_checked": 550,
        "campus_rows_with_0_all_files": 128312,
        "rate_entries_checked": 373896,
        "school_files_checked": 14081,
        "problems": 0
      },
      "errors": [],
      "warnings": []
    },
    {
      "name": "Campus Identity",
      "status": "PASS",
      "details": {
        "what_it_checks": "etl/reference/campus_id_changes.csv equals the campus ID-change candidates found again in data/curated/dims/campus_names.parquet (every DOE release's INSTNM, BRANCH, address and city per UNITID_P), campus_year_sources and the facts, evidence included; every row is reviewed (link or reject); each link pair is never listed in the same release, one ID is listed in the release after the other's, and they share an address or a campus name; both school files link to each other with the other ID's reported years and keep only their own years (no figures moved, no rankings changed); no other school file has idChanges; every school file is in school-index.json, titled by its DOE campus name (dim_institution campus_name) when it is not a main campus.",
        "merger_link_pairs": 312,
        "merger_institution_years_both_ids_report": 356,
        "merger_years_counted_under_both_institutions": 3,
        "merger_years_counted_under_both_institutions_list": "105367003/464226002 2017 (27/27); 157270001/157793009 2017 (10/14); 403487001/145707004 2023 (10/6)",
        "identical_city_year_groups_without_link": 117,
        "identical_city_year_incidents_without_link": 577,
        "identical_city_year_groups_without_link_note": "Campus-years of one city with identical figures in every geography, from different DOE releases, where no reviewed link ties the IDs: left counted under each ID (no evidence they are one campus). First 20: 2016 101161004/101499001 (3); 2016 103909001/216931002 (1); 2015 105668001/106102001 (1); 2020 109785007/441229001 (1); 2020 110592002/122117001/401250001/447731001/469957001 (4); 2015 111708001/112446001/121309004/447050001 (3); 2018 111717001/484631015 (1); 2018 112570002/409254001/460747001 (2); 2016 113236002/441052001/461698001 (2); 2015 117052005/489201002 (3); 2021 117140021/262086018 (3); 2015 117946002/120403002/457299001 (2); 2021 118888001/167358010 (3); 2020 119216002/262086020 (4); 2023 119270001/486123001 (1); 2022 119553010/484631029 (1); 2021 122117001/206279002 (1); 2020 122454001/461829001 (2); 2022 122694002/122834001 (3); 2019 123633001/460075001 (1)",
        "candidate_pairs": 394,
        "linked_pairs": 313,
        "rejected_pairs": 81,
        "merged_pairs": 0,
        "school_files_with_id_links": 617,
        "school_files_titled_by_campus_name": 6705,
        "school_files_missing_from_search_index": 0,
        "linked_years_counted_under_both_ids": 3,
        "linked_years_counted_under_both_ids_note": "Years both IDs of a linked pair report with incidents, where neither is counted under the other (shared_blocks): the links do not change how they count. First 20: 105367003/464226002 2017 (27/27); 157270001/157793009 2017 (10/14); 403487001/145707004 2023 (10/6)"
      },
      "errors": [],
      "warnings": []
    },
    {
      "name": "Rate Rules",
      "status": "PASS",
      "details": {
        "what_it_checks": "Each rate's 95% interval in rateRankings and rateUnranked equals the exact Poisson (Garwood) interval of its count, found again through the regularized incomplete gamma function, per 10,000 of the institution's denominator, to 2 decimals (within 0.005); each rank range is 1 + the ranked entries whose lower bound is above the entry's upper bound, to the ranked entries minus those whose upper bound is below its lower bound, and holds the rank; spike flags (rate rankings and school files) mark exactly the counts of at least 20 above 3 times the median of the institution's other listed years (at least 3); the counts-only offenses are exactly those averaging under 1,000 counted incidents a year; and metadata.json's rateRules hold config.py's values.",
        "national_average_per_year": {
          "incest": 2.5,
          "negligent_manslaughter": 6.2,
          "murder": 48.8,
          "statutory_rape": 78.7,
          "arson": 654.9,
          "weapons_discipline": 1287.8,
          "weapons_arrest": 2009.1,
          "robbery": 2221.8,
          "aggravated_assault": 4185.7,
          "dating_violence": 4247.3,
          "domestic_violence": 4289.9,
          "fondling": 4878.1,
          "rape": 6615.7,
          "stalking": 7555.9,
          "motor_vehicle_theft": 7580.2,
          "burglary": 9808.3,
          "liquor_arrest": 14460.7,
          "drug_arrest": 17901.8,
          "drug_discipline": 40647.8,
          "liquor_discipline": 127894.0
        },
        "intervals_checked": 373896,
        "rank_ranges_checked": 69491,
        "spike_flags_in_rate_rankings": 8573,
        "school_files_checked": 14081,
        "national": {
          "2015": {
            "criminal": {
              "ranked": 402,
              "too_few_to_rank": 1403,
              "spikes": 47,
              "median_rank_range_width": 193.0
            },
            "violent": {
              "ranked": 94,
              "too_few_to_rank": 1326,
              "spikes": 8,
              "median_rank_range_width": 60.0
            },
            "property": {
              "ranked": 189,
              "too_few_to_rank": 1396,
              "spikes": 37,
              "median_rank_range_width": 92.0
            }
          },
          "2016": {
            "criminal": {
              "ranked": 424,
              "too_few_to_rank": 1355,
              "spikes": 43,
              "median_rank_range_width": 202.5
            },
            "violent": {
              "ranked": 94,
              "too_few_to_rank": 1323,
              "spikes": 8,
              "median_rank_range_width": 58.0
            },
            "property": {
              "ranked": 188,
              "too_few_to_rank": 1350,
              "spikes": 39,
              "median_rank_range_width": 93.0
            }
          },
          "2017": {
            "criminal": {
              "ranked": 429,
              "too_few_to_rank": 1349,
              "spikes": 31,
              "median_rank_range_width": 202.0
            },
            "violent": {
              "ranked": 106,
              "too_few_to_rank": 1332,
              "spikes": 9,
              "median_rank_range_width": 62.5
            },
            "property": {
              "ranked": 161,
              "too_few_to_rank": 1356,
              "spikes": 21,
              "median_rank_range_width": 89.0
            }
          },
          "2018": {
            "criminal": {
              "ranked": 372,
              "too_few_to_rank": 1361,
              "spikes": 21,
              "median_rank_range_width": 189.0
            },
            "violent": {
              "ranked": 93,
              "too_few_to_rank": 1296,
              "spikes": 5,
              "median_rank_range_width": 59.0
            },
            "property": {
              "ranked": 126,
              "too_few_to_rank": 1333,
              "spikes": 12,
              "median_rank_range_width": 68.0
            }
          },
          "2019": {
            "criminal": {
              "ranked": 362,
              "too_few_to_rank": 1327,
              "spikes": 10,
              "median_rank_range_width": 176.0
            },
            "violent": {
              "ranked": 102,
              "too_few_to_rank": 1227,
              "spikes": 6,
              "median_rank_range_width": 66.5
            },
            "property": {
              "ranked": 122,
              "too_few_to_rank": 1260,
              "spikes": 8,
              "median_rank_range_width": 64.5
            }
          },
          "2020": {
            "criminal": {
              "ranked": 218,
              "too_few_to_rank": 1268,
              "spikes": 8,
              "median_rank_range_width": 100.5
            },
            "violent": {
              "ranked": 55,
              "too_few_to_rank": 1044,
              "spikes": 6,
              "median_rank_range_width": 25.0
            },
            "property": {
              "ranked": 91,
              "too_few_to_rank": 1125,
              "spikes": 3,
              "median_rank_range_width": 49.0
            }
          },
          "2021": {
            "criminal": {
              "ranked": 258,
              "too_few_to_rank": 1268,
              "spikes": 14,
              "median_rank_range_width": 120.0
            },
            "violent": {
              "ranked": 82,
              "too_few_to_rank": 1074,
              "spikes": 5,
              "median_rank_range_width": 45.0
            },
            "property": {
              "ranked": 113,
              "too_few_to_rank": 1128,
              "spikes": 9,
              "median_rank_range_width": 59.0
            }
          },
          "2022": {
            "criminal": {
              "ranked": 307,
              "too_few_to_rank": 1178,
              "spikes": 19,
              "median_rank_range_width": 137.0
            },
            "violent": {
              "ranked": 104,
              "too_few_to_rank": 1049,
              "spikes": 10,
              "median_rank_range_width": 59.0
            },
            "property": {
              "ranked": 130,
              "too_few_to_rank": 1109,
              "spikes": 16,
              "median_rank_range_width": 61.0
            }
          },
          "2023": {
            "criminal": {
              "ranked": 321,
              "too_few_to_rank": 1181,
              "spikes": 21,
              "median_rank_range_width": 152.0
            },
            "violent": {
              "ranked": 87,
              "too_few_to_rank": 1089,
              "spikes": 7,
              "median_rank_range_width": 56.0
            },
            "property": {
              "ranked": 154,
              "too_few_to_rank": 1100,
              "spikes": 35,
              "median_rank_range_width": 65.5
            }
          },
          "2024": {
            "criminal": {
              "ranked": 310,
              "too_few_to_rank": 1185,
              "spikes": 21,
              "median_rank_range_width": 155.0
            },
            "violent": {
              "ranked": 84,
              "too_few_to_rank": 1083,
              "spikes": 10,
              "median_rank_range_width": 48.0
            },
            "property": {
              "ranked": 158,
              "too_few_to_rank": 1065,
              "spikes": 33,
              "median_rank_range_width": 70.0
            }
          }
        },
        "problems": 0
      },
      "errors": [],
      "warnings": []
    }
  ],
  "schools": {
    "what_it_checks": "Per site school file: yearlyTotals equal the aggregates' geo \"All\" totals (as check 2), and fteByYear and fte equal dim_enrollment's FTE for the school's years (FAIL otherwise); WARNING when fewer than 80% of its years have an FTE. A school that fails makes the overall status FAIL.",
    "total": 14081,
    "passed": 13972,
    "failed": 0,
    "warnings": 109,
    "failed_unitids_first_20": []
  }
}