{
  "schema_version": 1,
  "id": "ext_pacing_shapes",
  "question_id": "r10_unravel_typology",
  "title": "How do people actually pace a marathon?",
  "status": "ready",
  "as_of": "2026-09-11T16:27:35Z",
  "n": 3328159,
  "input_export_id": "private-20260911-1107",
  "input_as_of": "2026-09-11T15:10:45Z",
  "live_json_as_of": "2026-09-07T04:44:53Z",
  "input_asset_sha256": "ffe901857c2603ac4305d9376a194eed171052d9835223c8ba5b19b59067a656",
  "input_manifest_sha256": "4aa3d330cb567ea02aa8c78d0f02015ac0fec35f3c8000215fbc8933ede398e2",
  "analysis_script_sha256": "7c6959b427fa1b06bb9600bb3377ecb226257d14aa0ec61a71a63f42bc87a3dd",
  "analysis_version": 1,
  "engine": "DuckDB 1.4.4",
  "corpus": {
    "n_records": 4207456,
    "n_cities": 34,
    "n_race_years": 240
  },
  "cohort": {
    "deduplicated": 4207456,
    "complete": 3591032,
    "increasing": 3373737,
    "timing_eligible": 3369060,
    "eligible": 3328159,
    "source_quality_excluded": 40901,
    "raw": 4207456,
    "duplicates_removed": 0,
    "missing_or_unparsed": 616424,
    "non_increasing": 217295,
    "outside_quality_bounds": 4677
  },
  "methodology_prose": [
    "For each runner, divide section pace by their full-marathon average pace and subtract one. Plot the median of these individual percentages at each checkpoint; zero is that runner\u2019s own marathon pace. A median curve is not itself one runner\u2019s race and need not integrate to zero.",
    "Compare elapsed time over 0\u201320 km with 20\u201340 km. Faster: more than 2% faster; similar: within 2%; moderate slowing: more than 2% through 10%; pronounced slowing: more than 10%. The final 2.195 km appears in the profile but not this equal-distance classification. These are descriptive categories, not slowdown episodes or measured half-marathon splits.",
    "Use complete, strictly increasing elapsed checkpoints at 5, 10, 15, 20, 25, 30, 35, 40 and 42.195 km. Clock strings must parse as H:MM:SS or M:SS. No missing splits are interpolated.",
    "Remove exact duplicate race records, ignoring database IDs, ingestion timestamps and source URLs. Retain finishes from 90 minutes to 12 hours with every section between 2 and 20 minutes per km. These quality filters can exclude genuine unusual performances; the analysis describes this eligible cohort, not every entrant.",
    "Each observation is a race finish. The same person can appear in multiple races. No runner identities are linked across races. Public cells require at least 100 observations; matched comparisons additionally require at least 20 per group in each stratum.",
    "Apply the reviewed source-quality edition exclusions for this exact export after the timing checks. Known invalid split grids, incomplete ingestion, unreconciled HOLD editions and a selected top-finisher field do not contribute to the analyses or prior benchmarks. Report source exclusions separately; an already invalid timing row is not counted twice. Missing age or recorded gender alone does not exclude an otherwise eligible finish from the overall cohort. Other sparse editions are not declared incomplete merely from their size."
  ],
  "observational": true,
  "minimum_public_cell": 100,
  "source_quality": {
    "version": 1,
    "release_tag": "private-export-20260911-1107",
    "reviewed_edition_policy": true,
    "editions": [
      {
        "city": "Honolulu",
        "year": 2016,
        "category": "invalid_split_grid",
        "reason": "Producer explicitly force-dropped this incomplete 5 km grid.",
        "raw_records": 20118,
        "deduplicated_records": 20118,
        "timing_eligible_excluded": 0
      },
      {
        "city": "Rotterdam",
        "year": 2012,
        "category": "invalid_split_grid",
        "reason": "Producer explicitly force-dropped this incomplete 5 km grid.",
        "raw_records": 7542,
        "deduplicated_records": 7542,
        "timing_eligible_excluded": 0
      },
      {
        "city": "Eindhoven",
        "year": 2009,
        "category": "invalid_split_grid",
        "reason": "Producer explicitly force-dropped this incomplete 5 km grid.",
        "raw_records": 1407,
        "deduplicated_records": 1407,
        "timing_eligible_excluded": 0
      },
      {
        "city": "Eindhoven",
        "year": 2010,
        "category": "invalid_split_grid",
        "reason": "Producer explicitly force-dropped this incomplete 5 km grid.",
        "raw_records": 1462,
        "deduplicated_records": 1462,
        "timing_eligible_excluded": 0
      },
      {
        "city": "Frankfurt",
        "year": 2019,
        "category": "invalid_split_grid",
        "reason": "Producer explicitly force-dropped this 5 km grid; numerically plausible rows are not reinstated.",
        "raw_records": 12513,
        "deduplicated_records": 12513,
        "timing_eligible_excluded": 10624
      },
      {
        "city": "New York",
        "year": 2008,
        "category": "incomplete_ingestion",
        "reason": "Release notes identify a partial live-ingestion snapshot of only 200 records.",
        "raw_records": 200,
        "deduplicated_records": 200,
        "timing_eligible_excluded": 198
      },
      {
        "city": "Chicago",
        "year": 2016,
        "category": "incomplete_ingestion",
        "reason": "Producer handoff identifies this 6,512-record edition as incomplete and on HOLD.",
        "raw_records": 6512,
        "deduplicated_records": 6512,
        "timing_eligible_excluded": 6506
      },
      {
        "city": "Tokyo",
        "year": 2026,
        "category": "selected_field",
        "reason": "Source notes identify top-500 PDFs, not a representative full marathon field.",
        "raw_records": 353,
        "deduplicated_records": 353,
        "timing_eligible_excluded": 353
      },
      {
        "city": "Amsterdam",
        "year": 2025,
        "category": "unreconciled_hold",
        "reason": "Source audit marks HOLD: 23,328 listed versus 23,325 retrieved. This conservative hold does not establish a large bias from the three missing records.",
        "raw_records": 23325,
        "deduplicated_records": 23325,
        "timing_eligible_excluded": 23220
      },
      {
        "city": "Valencia",
        "year": 2017,
        "category": "incomplete_ingestion",
        "reason": "Source audit marks HOLD: 3,373 listed detail pages missing; the observed records also lack 20 km.",
        "raw_records": 12485,
        "deduplicated_records": 12485,
        "timing_eligible_excluded": 0
      }
    ],
    "policy_sha256": "c638b6c0abe3167a2d3d51aee485eae54fd6175761ef9d26d5914c9671eb15b0",
    "script_sha256": "cf1e6b359008087cf3bf9f241be13412af84358d9e808255f42bc2c292e243e6"
  },
  "source_quality_script_sha256": "cf1e6b359008087cf3bf9f241be13412af84358d9e808255f42bc2c292e243e6"
}
