{
  "retrievedDate": "2026-09-14",
  "provider": "Suruhanjaya Pilihan Raya Malaysia (SPR), official gazette published by Attorney General Chambers",
  "sources": {
    "election": "https://opendata.spr.gov.my/data/keputusan-pru.json",
    "stateElectionHistorical": "https://opendata.spr.gov.my/data/keputusan-pru-dun.json",
    "stateElection": "https://lom.agc.gov.my/ilims/upload/portal/akta/outputp/3648341/P.U.%20(B)%20291_2026.pdf",
    "stateElectionDisplayNames": "https://pru.sinarharian.com.my/storage/prn-negeri-sembilan-keputusan1.html",
    "dpi": "https://opendata.spr.gov.my/api/katalog?sheet=daftar-pemilih&negeri=NEGERI%20SEMBILAN&tahun=2025&limit=1000",
    "dpi2026Check": "https://opendata.spr.gov.my/api/katalog?sheet=daftar-pemilih&negeri=NEGERI%20SEMBILAN&tahun=2026&limit=1000",
    "dpiPaginationCheck": "https://opendata.spr.gov.my/api/katalog?sheet=daftar-pemilih&negeri=NEGERI%20SEMBILAN&tahun=2025&limit=1000&page=2",
    "hierarchy": "https://opendata.spr.gov.my/data/senarai-bpr.json"
  },
  "electionScope": "8 Parlimen PRU15, 19 November 2022; all 36 DUN replaced by PRN ke-16 on 1 August 2026. No old 2023 vote or majority is relabelled as 2026.",
  "latestElectionVerification": {
    "asOf": "2026-09-14",
    "legacySprDunJsonLatestYear": 2023,
    "actualLatestStateElection": "2026-08-01",
    "gazette": "P.U. (B) 291/2026",
    "gazettePublishedOn": "2026-08-07",
    "note": "Legacy SPR JSON is stale for Negeri Sembilan; primary AGC gazette is used for all current assembly election records. Gazette downloaded and all Form16 values checked."
  },
  "dpiScope": "DPI 2025 is latest year available from endpoint; 2026 query has no data. Election-day 2026 register is a separate snapshot and must not overwrite DPI2025 totals.",
  "pdmScope": "319 official PDM; no invented polygon, PDM population or PDM election results.",
  "ageNote": "18 TAHUN is a subset of 18-20 TAHUN.",
  "cacheNote": "National PRU/PRN2023 and hierarchy caches reused from same-day Selangor research. Gazette and DPI queries fetched specifically for this state.",
  "fileHashes": {
    "sinar-2026-results.html": "e9aecf2924240bd0b2d41b5b2f1108f3391ee633e8285e945e50e96f5876ac01",
    "dpi-api-page2-check.json": "35d44f09f1ecc4e421e62e30a6193ac5806cd1249d13437080506e1279cf0575",
    "dpi-api-page1.json": "4b7681f96edd035a14987d11d95c222619afd969efc4fcf0cf33c20c0b14b7a0",
    "keputusan-pru-dun.json": "7d035d331e239a695ec99827ce74cb20830eca28464b91bf14779cf9cd8241fb",
    "gazette-2026-parsed.json": "013a662c6b761c54c480c0018186d683e899b0226721e3b45f0fe7689c27510e",
    "official-election-gazette-2026.pdf": "7c94a4126a4a4b8e27b2c5dd18c6f727f63face4aeed9dce91b4d16d23c39e88",
    "keputusan-prk.json": "6b56ab8778cc6bd3942c359733199a99f8dee433c7e8bfd596e8125a89815d75",
    "dpi-api-2026-check.json": "34058b8e4b11fe195eff5e9f4811d0761808859a8335d1ed97e02bddb2ae3f7c",
    "official-election-gazette-2026.txt": "05ef8842bec18ac324fe101412f2c63ec2f39cf39d69807267b5f65700eac378",
    "keputusan-pru.json": "886fd3235da1a331a0ce8356a4f592b4cec25b4348f5379420b7e8982c49a91d",
    "senarai-bpr.json": "5caa4a0e942982f2a340cfcbad446a9d0f5cb55d253b250ab498023aa5a99533"
  },
  "originalByElectionSourceSha256": "685b224b42a8e0c2210075e9c368e40ef9e417c6611632bf20d1bd795201497b",
  "hashNote": "Privacy-minimized PRK cache excludes national ID fields; none included in derived output.",
  "dpiPagination": {
    "total": 319,
    "totalPages": 1,
    "returnedRows": 319,
    "page2ReturnedRows": 0,
    "year2026ReturnedRows": 0
  },
  "latestAvailableDpiYears": [
    "2025",
    "2024",
    "2023",
    "2022",
    "2021",
    "2020",
    "2019",
    "2018",
    "2017",
    "2016",
    "2015",
    "2014",
    "2013",
    "2012"
  ],
  "validation": {
    "parliamentCount": 8,
    "dunCount": 36,
    "pdmCount": 319,
    "stateElectors": 886887,
    "parliamentSeats": {
      "BN": 5,
      "PH": 3
    },
    "dunSeats": {
      "BN": 18,
      "PN": 7,
      "PH": 11
    },
    "candidateCount": 138,
    "prn2026CandidateCount": 103,
    "prn2023CandidateCount": 83,
    "byElectionOverrideCount": 0,
    "majorityDiscrepancies": [],
    "dpiDiscrepancies": [],
    "dpiChecks": "All 319 PDM rows checked: age/sex/category sums, age18 subset, code and SPR hierarchy match; all aggregate totals reconcile.",
    "gazetteChecks": "All 36 DUN and 103 candidate votes reconcile with Sinar2026; all Form16 majority, total ballots and turnout calculations reconcile."
  }
}
