{
  "name": "Global states of emergency dashboard",
  "publisher": "Institute for the Study of States of Exception",
  "homepage": "https://lobsterbush.github.io/isse/",
  "repository": "https://github.com/lobsterbush/isse",
  "license": "CC BY 4.0",
  "citation": "Crabtree, Charles. 2026. \"Global states of emergency dashboard.\" Institute for the Study of States of Exception. https://lobsterbush.github.io/isse/",
  "generated_at": "2026-08-22T14:41:25.358522+00:00",
  "join_key": "iso3",
  "datasets": [
    {
      "name": "country_panel",
      "format": "csv",
      "path": "data/exports/country_panel.csv",
      "url": "https://lobsterbush.github.io/isse/data/exports/country_panel.csv",
      "unit_of_observation": "country",
      "description": "One row per country with every indicator joined: emergency status, population, economy, governance, democracy, displacement, crisis, hazards, INFORM forward-looking risk, INFORM current crisis severity, IFRC appeal activity, WHO outbreak notices, UN OCHA humanitarian plans, OONI network interference, structural context indicators, travel advisory, and treaty derogations. Start here for cross-sectional analysis. Note that the inform_ columns and the severity_ columns are two different indices, not two dimensions of one: see their definitions before combining them. Note too that the four V-Dem rights columns (freedom_of_expression, human_rights, freedom_of_association, vdem_rule_of_law) all run 0 to 1 with HIGHER MEANING MORE FREEDOM, the opposite direction from every inform_ and severity_ column, and that vdem_rule_of_law is a different measure on a different scale from the World Bank rule_of_law column. THE TWO CORRUPTION COLUMNS RUN IN OPPOSITE DIRECTIONS: vdem_political_corruption is 0 to 1 with HIGHER MEANING MORE CORRUPT, ti_cpi is 0 to 100 with HIGHER MEANING LESS CORRUPT. They correlate strongly and negatively, so a sign error survives a smell test; they must never be averaged, never share an axis, and never be collapsed into one corruption score. military_expenditure_share has NO normative direction at all and does not belong on a good/bad ramp. Every context value column carries a _year sibling because each series resolves at its own latest year per country, and context_stale_fields names the ones that are behind — read it before publishing a value, because PRK's internet_use_share is a 2004 observation of 0.0. fariss_human_rights_protection (2019) and terrorism_deaths (2021) are HISTORICAL columns, not current ones.",
      "rows": 229,
      "columns": [
        {
          "name": "iso3",
          "description": "ISO 3166-1 alpha-3 country code. Join key for every table."
        },
        {
          "name": "country",
          "description": "Country name, canonicalised to the World Bank spelling."
        },
        {
          "name": "continent",
          "description": "Continent as assigned by the pipeline."
        },
        {
          "name": "region",
          "description": "World Bank region."
        },
        {
          "name": "income_level",
          "description": "World Bank income classification."
        },
        {
          "name": "under_emergency",
          "description": "yes if a national or regional declaration is in force."
        },
        {
          "name": "emergency_type",
          "description": "Stated grounds: disaster, public_health, conflict, migration, governance."
        },
        {
          "name": "emergency_title",
          "description": "Description of the declaration in force."
        },
        {
          "name": "emergency_scope",
          "description": "Scope of the declaration in force: national, subnational, sectoral, or local."
        },
        {
          "name": "emergency_start",
          "description": "Date the declaration took effect (ISO 8601)."
        },
        {
          "name": "emergency_duration_days",
          "description": "Days elapsed since emergency_start."
        },
        {
          "name": "emergency_confidence",
          "description": "Verification confidence, 0 to 1."
        },
        {
          "name": "declaration_count",
          "description": "Number of declarations on record for this country."
        },
        {
          "name": "population",
          "description": "Population, most recent World Bank estimate."
        },
        {
          "name": "gdp_per_capita",
          "description": "GDP per capita in current US dollars (World Bank)."
        },
        {
          "name": "poverty_rate",
          "description": "Share below the international poverty line, percent (World Bank)."
        },
        {
          "name": "rule_of_law",
          "description": "World Bank Worldwide Governance Indicator, roughly -2.5 to 2.5, higher is better. Distinct from vdem_rule_of_law, which is V-Dem's 0 to 1 index: different institution, different inputs, different scale. Do not compare or combine them."
        },
        {
          "name": "voice_accountability",
          "description": "Worldwide Governance Indicator, roughly -2.5 to 2.5."
        },
        {
          "name": "political_stability",
          "description": "Worldwide Governance Indicator, roughly -2.5 to 2.5."
        },
        {
          "name": "electoral_democracy",
          "description": "V-Dem electoral democracy index, 0 to 1."
        },
        {
          "name": "liberal_democracy",
          "description": "V-Dem liberal democracy index, 0 to 1."
        },
        {
          "name": "democracy_delta_10y",
          "description": "Change in electoral democracy index over the preceding decade."
        },
        {
          "name": "regime",
          "description": "V-Dem regime code: 0 closed autocracy to 3 liberal democracy."
        },
        {
          "name": "regime_label",
          "description": "Text label for the regime code."
        },
        {
          "name": "freedom_of_expression",
          "description": "V-Dem freedom of expression and alternative sources of information index (V-Dem via Our World in Data), 0 to 1. HIGHER MEANS MORE FREEDOM. Note the direction: this is the opposite convention from the inform_ and severity_ columns, where higher means worse. Observed in freedom_of_expression_year."
        },
        {
          "name": "freedom_of_expression_year",
          "description": "Year of the freedom_of_expression observation. Each V-Dem series is read at its own most recent year, so this need not equal the other _year columns."
        },
        {
          "name": "human_rights",
          "description": "V-Dem human rights index (V-Dem via Our World in Data), 0 to 1, covering physical integrity rights and freedom from torture and political killing. HIGHER MEANS MORE FREEDOM, the opposite direction from the inform_ and severity_ columns. Our World in Data serves this series under the slug 'civil-liberties-index-vdem', but the column it publishes is the Human Rights Index, so the column is named for what it measures rather than for the slug. Observed in human_rights_year."
        },
        {
          "name": "human_rights_year",
          "description": "Year of the human_rights observation. Each V-Dem series is read at its own most recent year."
        },
        {
          "name": "freedom_of_association",
          "description": "V-Dem freedom of association index (V-Dem via Our World in Data), 0 to 1: whether parties and civil society organisations may form and operate freely. HIGHER MEANS MORE FREEDOM, the opposite direction from the inform_ and severity_ columns. Observed in freedom_of_association_year."
        },
        {
          "name": "freedom_of_association_year",
          "description": "Year of the freedom_of_association observation. Each V-Dem series is read at its own most recent year."
        },
        {
          "name": "vdem_rule_of_law",
          "description": "V-Dem rule of law index (V-Dem via Our World in Data), 0 to 1. HIGHER MEANS MORE FREEDOM, the opposite direction from the inform_ and severity_ columns. THIS IS NOT THE rule_of_law COLUMN. That one is the World Bank's Worldwide Governance Indicator, runs roughly -2.5 to +2.5, is produced by a different institution from different inputs, and is reported for a different year. The two are different measures on different scales and must never be compared, differenced, or averaged together. Observed in vdem_rule_of_law_year."
        },
        {
          "name": "vdem_rule_of_law_year",
          "description": "Year of the vdem_rule_of_law observation. Each V-Dem series is read at its own most recent year."
        },
        {
          "name": "rights_baseline_year",
          "description": "The comparison year behind the four _change columns: the last full year before the earliest declaration still in force (emergency_start minus one year). Blank for countries with no declaration on the register, for declarations that began too recently to have a completed year of V-Dem data after them, and for declarations older than the twenty years of history the fetcher retains."
        },
        {
          "name": "freedom_of_expression_change",
          "description": "freedom_of_expression minus the same index in rights_baseline_year, on the same 0 to 1 scale. Negative means expression is less free now than the year before the declaration. Descriptive only: V-Dem coders are not blind to the emergency, and nothing here identifies a causal effect."
        },
        {
          "name": "human_rights_change",
          "description": "human_rights minus the same index in rights_baseline_year. Negative means worse. Same caveats as freedom_of_expression_change."
        },
        {
          "name": "freedom_of_association_change",
          "description": "freedom_of_association minus the same index in rights_baseline_year. Negative means worse. Same caveats as freedom_of_expression_change."
        },
        {
          "name": "vdem_rule_of_law_change",
          "description": "vdem_rule_of_law minus the same index in rights_baseline_year. Negative means worse. Not comparable with the World Bank rule_of_law column. Same caveats as freedom_of_expression_change."
        },
        {
          "name": "refugees_from",
          "description": "Refugees originating from this country (UNHCR)."
        },
        {
          "name": "asylum_seekers_from",
          "description": "Asylum seekers originating from this country (UNHCR)."
        },
        {
          "name": "idps",
          "description": "Internally displaced people within this country (UNHCR)."
        },
        {
          "name": "stateless",
          "description": "Stateless people resident in this country (UNHCR)."
        },
        {
          "name": "total_displaced_from",
          "description": "refugees_from + asylum_seekers_from + idps."
        },
        {
          "name": "refugees_hosted",
          "description": "Refugees hosted by this country (UNHCR)."
        },
        {
          "name": "conflict_events",
          "description": "Organised-violence events recorded by UCDP over the collection window."
        },
        {
          "name": "conflict_deaths",
          "description": "Best-estimate deaths from those events (UCDP)."
        },
        {
          "name": "conflict_event_types",
          "description": "Semicolon-delimited UCDP violence categories."
        },
        {
          "name": "conflict_latest_event",
          "description": "Date of the most recent recorded event."
        },
        {
          "name": "in_crisis",
          "description": "yes if any crisis source flagged this country; no covers both 'no crisis' and 'not assessed'."
        },
        {
          "name": "crisis_count",
          "description": "Count of active disasters recorded for this country."
        },
        {
          "name": "crisis_types",
          "description": "Semicolon-delimited disaster types."
        },
        {
          "name": "irc_watchlist",
          "description": "yes if on the IRC Emergency Watchlist; no covers both 'not listed' and 'not assessed'."
        },
        {
          "name": "hazard_events_90d",
          "description": "USGS and NASA EONET events in the last 90 days. A count of reported events, not of hazard exposure: EONET's open-events feed is dominated by US wildfire perimeters, so this column mostly tracks national reporting density and is not comparable across countries."
        },
        {
          "name": "hazard_types",
          "description": "Semicolon-delimited hazard categories."
        },
        {
          "name": "inform_risk",
          "description": "INFORM RISK Index 2026 (EC JRC), 0 to 10, higher = more risk. Composite of hazard and exposure, vulnerability, and lack of coping capacity. This is the ANNUAL, FORWARD-LOOKING index covering all 191 countries: the likelihood that a FUTURE crisis overwhelms national capacity. It is NOT severity_index, which is the monthly INFORM Severity score for crises already running."
        },
        {
          "name": "inform_risk_class",
          "description": "INFORM risk band: Very Low, Low, Medium, High, or Very High, cut at INFORM's own published 2026 thresholds."
        },
        {
          "name": "inform_rank",
          "description": "Rank on inform_risk out of 191 countries, 1 = highest risk."
        },
        {
          "name": "inform_hazard_human",
          "description": "INFORM human hazard sub-dimension, 0 to 10, higher = more risk. This is the conflict component: current and projected conflict intensity."
        },
        {
          "name": "inform_coping_capacity_deficit",
          "description": "INFORM Lack of Coping Capacity dimension, 0 to 10, higher = weaker institutions and infrastructure. Stored exactly as INFORM publishes it and NOT inverted into a capacity score, so a high value is bad, in line with every other INFORM column."
        },
        {
          "name": "severity_index",
          "description": "INFORM SEVERITY Index (ACAPS), 1 to 10, higher = MORE SEVERE. This is a DIFFERENT INDEX from inform_risk and the two must never be joined, plotted, or compared as one series. Severity measures how bad the humanitarian crises ALREADY RUNNING in this country are RIGHT NOW and is updated MONTHLY; inform_risk is ANNUAL and FORWARD-LOOKING, scoring the likelihood that a FUTURE crisis overwhelms the country. A country can be high on one and low on the other. Blank means ACAPS scores no crisis here, which is NOT a severity of zero and must never be recoded as one; only about 67 countries are covered, against 191 for inform_risk."
        },
        {
          "name": "severity_class",
          "description": "INFORM Severity band: Very Low, Low, Medium, High, or Very High, exactly as ACAPS publishes it. Not to be confused with inform_risk_class, which bands the forward-looking risk index."
        },
        {
          "name": "severity_category",
          "description": "The same band as an integer, 1 = Very Low to 5 = Very High. This is the 1-5 band, NOT the 1-10 score; the score is severity_index."
        },
        {
          "name": "severity_rank",
          "description": "Rank on severity_index among the countries ACAPS scores, 1 = most severe. The denominator is the covered countries only, so it is not comparable with inform_rank, which ranks all 191."
        },
        {
          "name": "severity_trend",
          "description": "ACAPS's published direction of travel over the last three months: Increasing, Stable, or Decreasing. Blank when ACAPS publishes no trend."
        },
        {
          "name": "severity_crisis_count",
          "description": "Number of distinct crises ACAPS scores in this country. A crisis is an event plus a location, so a country can hold several (Nigeria holds four)."
        },
        {
          "name": "severity_basis",
          "description": "Which aggregation rule produced severity_index. acaps_country_sheet: ACAPS's own country-level roll-up, which is its own composite over the combined caseload and is NOT the maximum or mean of the crisis rows. max_of_crises: the country has crisis rows but no country-sheet row, so the MAXIMUM severity across its own crises is used. Both appear in the same column and this field says which is which."
        },
        {
          "name": "severity_updated",
          "description": "Date ACAPS last updated this country's severity assessment (ISO 8601)."
        },
        {
          "name": "ifrc_appeals_total",
          "description": "IFRC emergency appeals and DREF operations launched for this country over the collection window (24 months)."
        },
        {
          "name": "ifrc_active_appeals",
          "description": "Of those, the ones still marked active by IFRC GO."
        },
        {
          "name": "ifrc_people_targeted",
          "description": "People those appeals aim to reach, summed across appeals."
        },
        {
          "name": "ifrc_funding_requested_chf",
          "description": "Funding requested across those appeals, in Swiss francs (CHF). IFRC reports in CHF, not US dollars; do not mix this with the USD figures elsewhere in this table."
        },
        {
          "name": "ifrc_funding_coverage",
          "description": "Share of ifrc_funding_requested_chf funded, 0 to 1. Blank when nothing was requested, in which case coverage is undefined rather than zero."
        },
        {
          "name": "ifrc_disaster_types",
          "description": "Semicolon-delimited IFRC disaster categories appealed on."
        },
        {
          "name": "who_outbreaks_24m",
          "description": "WHO Disease Outbreak News items naming this country in the last 24 months. A multi-country notice counts once for each country it names."
        },
        {
          "name": "who_outbreak_diseases",
          "description": "Semicolon-delimited diseases named in those notices."
        },
        {
          "name": "who_latest_outbreak",
          "description": "Date of the most recent such notice (ISO 8601)."
        },
        {
          "name": "hrp_plan_count",
          "description": "Inter-agency humanitarian appeals covering this country in the UN OCHA Humanitarian Programme Cycle for the current and previous year. The hrp_ prefix covers every plan type OCHA publishes, not only Humanitarian Needs and Response Plans: see hrp_plan_types."
        },
        {
          "name": "hrp_plan_types",
          "description": "Semicolon-delimited OCHA plan types behind hrp_plan_count, for example Flash appeal, Regional response plan, or Humanitarian needs and response plan."
        },
        {
          "name": "hrp_requirements_usd",
          "description": "Requirements of those plans in US DOLLARS (USD). OCHA reports in USD; do not mix this with the ifrc_ columns, which are Swiss francs. CAVEAT: a plan covering several countries publishes one requirement and no country split, so its FULL amount is attributed to EVERY country it covers. This column therefore DOES NOT SUM to a world total — summing it double-counts every regional plan once per country. The unduplicated world figure is totals.requirements_usd in data/humanitarian_plans.json."
        },
        {
          "name": "hrp_funding_received_usd",
          "description": "Funding reported to those plans as paid or committed, in US dollars (USD), from the OCHA Financial Tracking Service. Pledges are excluded. Same multi-country attribution caveat as hrp_requirements_usd."
        },
        {
          "name": "hrp_funding_coverage",
          "description": "hrp_funding_received_usd / hrp_requirements_usd, 0 to 1. Blank when requirements are zero, in which case coverage is undefined rather than zero."
        },
        {
          "name": "hrp_latest_plan_end",
          "description": "End date of the country's most recent plan (ISO 8601), so a closed appeal window is visible rather than implied."
        },
        {
          "name": "censorship_confirmed_rate",
          "description": "Share of OONI web_connectivity measurements from this country that OONI CONFIRMED were blocked, 0 to 1, over the window in censorship_window. Confirmed means the response matched a known block page fingerprint, so this is high-confidence and low-recall. IT IS NOT A MEASURE OF POLITICAL CENSORSHIP and must never be labelled one: OONI's test lists cover gambling, file sharing, pornography and dating sites alongside news and human rights sites, and blocking any of them registers identically. Italy sits among the highest values in this column because of court-ordered gambling and piracy blocklists, which are ordinary regulation. BLANK, NEVER ZERO, for any country below the measurement threshold in censorship_measurements, and blank for any country OONI did not measure at all — unknown, not clean."
        },
        {
          "name": "censorship_anomaly_rate",
          "description": "Share of the same measurements OONI flagged as ANOMALOUS, 0 to 1: DNS inconsistency, TCP reset, or unexpected TLS handshake. This is POSSIBLE blocking and includes false positives from ordinary transient network failure, so it is NOT confirmed censorship and must never be presented as such or added to censorship_confirmed_rate. The two answer different questions: China ranks far down on the confirmed column and at the top of this one, because the Great Firewall resets connections rather than serving a fingerprintable block page. Blank on the same terms as censorship_confirmed_rate."
        },
        {
          "name": "censorship_confirmed_rate_change",
          "description": "censorship_confirmed_rate minus the same rate over the preceding window of equal length. Positive means more confirmed blocking than before. Blank unless BOTH windows clear the measurement threshold, because a change between two noisy rates is noise."
        },
        {
          "name": "censorship_measurements",
          "description": "OONI web_connectivity measurements submitted from this country during censorship_window. A HIGH VALUE MEANS WELL MEASURED, NOT HEAVILY CENSORED. OONI data is collected by volunteers who chose to install OONI Probe — there is no sampling design and volume spans five orders of magnitude across countries — so a rate is published only above a threshold of 5,000 measurements in the window, roughly five complete runs of OONI's standard test list. The raw counts ship for every measured country regardless, so the threshold is auditable: divide the count columns yourself if you disagree with it. Even above the threshold these figures describe OONI's measurements, not the country."
        },
        {
          "name": "censorship_confirmed_count",
          "description": "Numerator of censorship_confirmed_rate: measurements confirmed as blocked. Published so the rate and the threshold can be recomputed."
        },
        {
          "name": "censorship_anomaly_count",
          "description": "Numerator of censorship_anomaly_rate: measurements flagged as anomalous. Possible blocking, not confirmed."
        },
        {
          "name": "censorship_messaging_anomaly_rate",
          "description": "Anomalous measurements as a share of all measurements across OONI's WhatsApp, Telegram, Signal and Facebook Messenger tests, 0 to 1. ANOMALIES ONLY — OONI publishes no confirmed verdict for the messaging tests — so this is possible interference with messaging apps, never proven blocking. Blank below the threshold, which is applied separately here because the messaging tests run at much lower volume than web_connectivity."
        },
        {
          "name": "censorship_messaging_measurements",
          "description": "Measurements behind censorship_messaging_anomaly_rate, summed across the four messaging tests. The same volunteer-sampling caveat as censorship_measurements applies."
        },
        {
          "name": "censorship_rank",
          "description": "Rank on censorship_confirmed_rate, 1 = highest. The denominator is the countries that cleared the measurement threshold only, not every country in the world, so it is not comparable with inform_rank or severity_rank. Blank below the threshold."
        },
        {
          "name": "censorship_window",
          "description": "The measurement window the censorship_ columns cover, as since/until in ISO 8601. It is a rolling 90 days ending on the run date, so it moves with every fetch and two releases of this table cover different windows."
        },
        {
          "name": "military_expenditure_share",
          "description": "Military expenditure as a share of GDP, per cent, 0 upward (SIPRI Military Expenditure Database via Our World in Data). A RATIO, NOT AN AMOUNT OF MONEY — every money column in this table ends in _chf or _usd, and this one deliberately does not; data/context_indicators.json files the same field as military_expenditure_gdp. Observed in military_expenditure_share_year, most recently 2025. THIS COLUMN HAS NO NORMATIVE DIRECTION. High is not bad and low is not good: Iceland reports 0.0 because it keeps no standing army, and Ukraine reports the world's highest figure, 39.6, because it is being invaded. Do not colour, rank or threshold it on a good/bad ramp, and do not read it as a repression measure. Blank means SIPRI publishes no figure for the country, which is not a spend of zero."
        },
        {
          "name": "military_expenditure_share_year",
          "description": "Year of the military_expenditure_share observation. Each series in this group resolves at its own most recent year for each country, so this need not equal the other _year columns, and for the thirteen countries named in context_stale_fields it is years behind the release: Venezuela last reported in 2017, Eritrea in 2003."
        },
        {
          "name": "vdem_political_corruption",
          "description": "V-Dem Political Corruption Index, 0 to 1 (V-Dem via Our World in Data), covering corruption across the executive, legislative and judicial branches and the public sector. Observed in vdem_political_corruption_year, most recently 2025. HIGHER MEANS MORE CORRUPT (worse): Denmark 0.004, Norway 0.010; Venezuela 0.968, South Sudan 0.893. THIS IS THE OPPOSITE DIRECTION FROM ti_cpi IN THIS SAME TABLE, which runs 0 to 100 with higher meaning LESS corrupt. The two correlate strongly and negatively, so a sign error still looks like plausible corruption data and will not fail a smell test. NEVER average them, never plot them on one axis, and never derive a single corruption score from both: state which index you are showing every time you show one. Note also that it runs the opposite way from the four V-Dem rights columns in this table, where higher means more freedom."
        },
        {
          "name": "vdem_political_corruption_year",
          "description": "Year of the vdem_political_corruption observation. Read it before using the value: V-Dem's Palestine series ends in 1948, so PSE carries a 1948 coding here and is named in context_stale_fields."
        },
        {
          "name": "ti_cpi",
          "description": "Transparency International Corruption Perceptions Index, a whole number 0 to 100, from expert and business perceptions of public sector corruption (Transparency International via Our World in Data). Observed in ti_cpi_year, most recently 2024. HIGHER MEANS LESS CORRUPT (better, i.e. cleaner): Denmark 90, New Zealand 83; South Sudan 8, Somalia 9. THIS IS THE OPPOSITE DIRECTION FROM vdem_political_corruption IN THIS SAME TABLE, which runs 0 to 1 with higher meaning MORE corrupt. The two are never averaged, never share an axis, and never collapse into one corruption score; every rendering must name which index it is."
        },
        {
          "name": "ti_cpi_year",
          "description": "Year of the ti_cpi observation: 2024 for 180 of the 182 countries scored, while the V-Dem and SIPRI columns are mostly 2025, because Transparency International publishes later in the cycle. The two countries with an older reading are named in context_stale_fields."
        },
        {
          "name": "internet_use_share",
          "description": "Share of the population that used the internet in the last three months, per cent 0 to 100 (ITU via World Bank via Our World in Data). Observed in internet_use_share_year, most recently 2025. Higher means more of the population online. IT IS PUBLISHED HERE AS THE DENOMINATOR FOR THE censorship_ COLUMNS, not as a censorship measure: an OONI blocking rate reaches almost everyone in a country where 92% are online and a small urban minority where 16% are. Use it to qualify those rates; never combine it with them into a composite. CHECK internet_use_share_year AND context_stale_fields BEFORE USE — twelve countries carry an observation years old, and North Korea's is a 2004 reading of 0.0, which is not a statement that North Korean internet penetration is currently measured at zero."
        },
        {
          "name": "internet_use_share_year",
          "description": "Year of the internet_use_share observation. It is 2004 for PRK and lags by four to eleven years for eleven other countries, all of them named in context_stale_fields."
        },
        {
          "name": "context_stale_fields",
          "description": "Which of military_expenditure_share, vdem_political_corruption, ti_cpi and internet_use_share carry an observation older than this release, and by how many years, as 'field=years;field=years' sorted by field name. Blank means every context value in the row is current. 22 countries are named: PRK carries internet_use_share=22 (a 2004 reading of 0.0) and PSE carries vdem_political_corruption=78 (a 1948 coding). Rendering either of those without its year claims a current measurement that does not exist, so filter or date them rather than publishing them bare. This column is about data currency; it is unrelated to the 'currency' column on the declarations table, which is about record recency, and to the _chf and _usd money columns."
        },
        {
          "name": "fariss_human_rights_protection",
          "description": "HISTORICAL, NOT CURRENT: a 2019 observation, and the newest the series has. Fariss and Schnakenberg latent physical integrity rights score, roughly -3 to +5.5 (via Our World in Data). HIGHER MEANS BETTER PROTECTION — the same direction as the V-Dem rights columns and the opposite of vdem_political_corruption and of every inform_ and severity_ column. It ships because it is the standard latent repression measure in the literature this dataset serves, and it is carried in the profiles under a separate 'historical' block so it can never be rendered as a current figure. Always report it with fariss_human_rights_protection_year, and never difference or plot it against a 2025 column as though the two described the same moment."
        },
        {
          "name": "fariss_human_rights_protection_year",
          "description": "Year of the fariss_human_rights_protection observation: 2019 for 191 of the 192 countries scored and 2018 for Serbia, seven years behind this release either way. The series is actively maintained but published on a multi-year cadence; if a newer vintage appears, the fetcher promotes the indicator into the current block and this year moves with it."
        },
        {
          "name": "terrorism_deaths",
          "description": "HISTORICAL, NOT CURRENT: a 2021 observation, and the newest the series has. Deaths from terrorist incidents in that year, a count, 0 upward (Global Terrorism Database via Our World in Data). Higher means more deaths. A zero here is a real measured zero for 2021 and says nothing about any year since; blank means the country was not covered. Always report it with terrorism_deaths_year, and do not read it alongside the conflict_deaths column, which is UCDP organised violence over a different definition and a different, current year."
        },
        {
          "name": "terrorism_deaths_year",
          "description": "Year of the terrorism_deaths observation: 2021 for every country in this release, five years behind it."
        },
        {
          "name": "travel_advisory_level",
          "description": "US State Department advisory level, 1 to 4."
        },
        {
          "name": "travel_advisory_label",
          "description": "Text label for the advisory level."
        },
        {
          "name": "iccpr_derogation",
          "description": "active, terminated, or blank if never filed."
        },
        {
          "name": "iccpr_latest_notification",
          "description": "Date of the most recent ICCPR Article 4(3) notification."
        },
        {
          "name": "echr_derogation",
          "description": "active, terminated, or blank if never filed."
        },
        {
          "name": "echr_latest_notification",
          "description": "Date of the most recent ECHR Article 15 notification."
        },
        {
          "name": "monitored_reports",
          "description": "Count of matched news reports attached to this country."
        }
      ]
    },
    {
      "name": "declarations",
      "format": "csv",
      "path": "data/exports/declarations.csv",
      "url": "https://lobsterbush.github.io/isse/data/exports/declarations.csv",
      "unit_of_observation": "declaration",
      "description": "Every declaration the pipeline knows about, including those judged lapsed or expired. Use on_register to restrict to the live register, or keep everything to study the full universe of declarations.",
      "rows": 45,
      "columns": [
        {
          "name": "iso3",
          "description": "ISO 3166-1 alpha-3 country code."
        },
        {
          "name": "country",
          "description": "Country name."
        },
        {
          "name": "continent",
          "description": "Continent."
        },
        {
          "name": "region",
          "description": "World Bank region."
        },
        {
          "name": "emergency_type",
          "description": "Stated grounds for the declaration."
        },
        {
          "name": "title",
          "description": "Description of the declaration."
        },
        {
          "name": "scope",
          "description": "Normalised scope, one of: national, subnational, sectoral, local. Local declarations do not put a country on the register. Blank when the source gave no scope and none could be inferred."
        },
        {
          "name": "scope_raw",
          "description": "Scope exactly as the source recorded it, e.g. 'Sectoral (penitentiary system)'. Blank when the source gave none."
        },
        {
          "name": "status",
          "description": "active, extended, expired, lifted, or presumed_lapsed."
        },
        {
          "name": "currency",
          "description": "Currency guard verdict: current, needs_review, or presumed_lapsed. Blank for records the guard did not assess."
        },
        {
          "name": "currency_note",
          "description": "Why the guard reached that verdict."
        },
        {
          "name": "start_date",
          "description": "Date the declaration took effect."
        },
        {
          "name": "duration_days",
          "description": "Days elapsed since start_date."
        },
        {
          "name": "declared_by",
          "description": "Office or person who declared it, where recorded."
        },
        {
          "name": "legal_basis",
          "description": "Constitutional or statutory basis, where recorded."
        },
        {
          "name": "confidence",
          "description": "Verification confidence, 0 to 1."
        },
        {
          "name": "verification",
          "description": "verified, likely active, or unconfirmed."
        },
        {
          "name": "source_count",
          "description": "Number of distinct sources supporting this record."
        },
        {
          "name": "latest_corroboration",
          "description": "Most recent date a live source mentioned this country."
        },
        {
          "name": "curated_override",
          "description": "yes if a hand-verified override applies."
        },
        {
          "name": "on_register",
          "description": "yes if this is the declaration representing its country on the dashboard."
        },
        {
          "name": "notes",
          "description": "Free-text notes, including curated corrections."
        }
      ]
    },
    {
      "name": "events",
      "format": "csv",
      "path": "data/exports/events.csv",
      "url": "https://lobsterbush.github.io/isse/data/exports/events.csv",
      "unit_of_observation": "report",
      "description": "Merged monitoring feed: humanitarian reporting, human rights monitors, UN and health agencies, and news wires, filtered to emergency-related language.",
      "rows": 411,
      "columns": [
        {
          "name": "date",
          "description": "Publication date (ISO 8601), blank when the source gave none."
        },
        {
          "name": "title",
          "description": "Headline."
        },
        {
          "name": "iso3",
          "description": "Country the report was matched to, blank if unresolved."
        },
        {
          "name": "country",
          "description": "Country name."
        },
        {
          "name": "emergency_type",
          "description": "Classified grounds."
        },
        {
          "name": "source",
          "description": "Machine-readable source key."
        },
        {
          "name": "source_name",
          "description": "Human-readable source name."
        },
        {
          "name": "source_type",
          "description": "watchdog, un, health, humanitarian, or pipeline."
        },
        {
          "name": "matched_keywords",
          "description": "Semicolon-delimited keywords that matched."
        },
        {
          "name": "url",
          "description": "Link to the report."
        }
      ]
    },
    {
      "name": "sources",
      "format": "csv",
      "path": "data/exports/sources.csv",
      "url": "https://lobsterbush.github.io/isse/data/exports/sources.csv",
      "unit_of_observation": "source",
      "description": "Provenance table: every upstream source, its role, freshness, and record count.",
      "rows": 24,
      "columns": [
        {
          "name": "name",
          "description": "Source name."
        },
        {
          "name": "role",
          "description": "What the source contributes to the dataset."
        },
        {
          "name": "url",
          "description": "Source homepage or endpoint."
        },
        {
          "name": "generated_file",
          "description": "The file in data/ this source produces."
        },
        {
          "name": "records",
          "description": "Records collected at the last run."
        },
        {
          "name": "fetched_at",
          "description": "When the source was last fetched."
        },
        {
          "name": "status",
          "description": "ok or missing."
        }
      ]
    },
    {
      "name": "history",
      "format": "csv",
      "path": "data/exports/history.csv",
      "url": "https://lobsterbush.github.io/isse/data/exports/history.csv",
      "unit_of_observation": "day",
      "description": "Daily snapshots of the headline figures, accumulated one row per pipeline run. The series begins when snapshotting was introduced, so it is short at first and lengthens with each run.",
      "rows": 5,
      "columns": [
        {
          "name": "date",
          "description": "Snapshot date."
        },
        {
          "name": "active_emergencies",
          "description": "Declarations on the register that day."
        },
        {
          "name": "countries_under_emergency",
          "description": "Countries on the register that day."
        },
        {
          "name": "population_under_emergency",
          "description": "Summed population of those countries."
        },
        {
          "name": "governance",
          "description": "Declarations classified as governance."
        },
        {
          "name": "conflict",
          "description": "Declarations classified as conflict or security."
        },
        {
          "name": "disaster",
          "description": "Declarations classified as disaster."
        },
        {
          "name": "public_health",
          "description": "Declarations classified as public health."
        },
        {
          "name": "migration",
          "description": "Declarations classified as migration."
        }
      ]
    },
    {
      "name": "review_queue",
      "format": "csv",
      "path": "data/exports/review_queue.csv",
      "url": "https://lobsterbush.github.io/isse/data/exports/review_queue.csv",
      "unit_of_observation": "declaration",
      "description": "Declarations the currency guard judged lapsed or flagged for human review. Working this queue and recording decisions in data/overrides.json is how the register is kept honest.",
      "rows": 7,
      "columns": [
        {
          "name": "iso3",
          "description": "ISO 3166-1 alpha-3 country code."
        },
        {
          "name": "country",
          "description": "Country name."
        },
        {
          "name": "title",
          "description": "Description of the declaration."
        },
        {
          "name": "start_date",
          "description": "Date the declaration took effect."
        },
        {
          "name": "latest_corroboration",
          "description": "Most recent date a live source mentioned this country."
        },
        {
          "name": "currency",
          "description": "needs_review (kept on the register) or presumed_lapsed (excluded)."
        },
        {
          "name": "reason",
          "description": "Why the guard reached that verdict."
        }
      ]
    },
    {
      "name": "dashboard",
      "format": "json",
      "path": "data/dashboard.json",
      "url": "https://lobsterbush.github.io/isse/data/dashboard.json",
      "description": "Precomputed headline statistics and every chart series on the dashboard.",
      "available": true
    },
    {
      "name": "country_profiles",
      "format": "json",
      "path": "data/country_profiles.json",
      "url": "https://lobsterbush.github.io/isse/data/country_profiles.json",
      "description": "Full nested record per country, joining every source. The richest single file.",
      "available": true
    },
    {
      "name": "emergencies",
      "format": "json",
      "path": "data/emergencies.json",
      "url": "https://lobsterbush.github.io/isse/data/emergencies.json",
      "description": "Merged declarations: the register plus all records, with confidence and sources.",
      "available": true
    },
    {
      "name": "feed",
      "format": "json",
      "path": "data/feed.json",
      "url": "https://lobsterbush.github.io/isse/data/feed.json",
      "description": "Merged, deduplicated monitoring feed, newest first.",
      "available": true
    },
    {
      "name": "crises",
      "format": "json",
      "path": "data/crises.json",
      "url": "https://lobsterbush.github.io/isse/data/crises.json",
      "description": "Humanitarian crisis countries and the crisis-versus-declaration comparison.",
      "available": true
    },
    {
      "name": "censorship",
      "format": "json",
      "path": "data/censorship.json",
      "url": "https://lobsterbush.github.io/isse/data/censorship.json",
      "description": "OONI network interference measurements per country over a rolling 90-day window: confirmed blocking, anomalies, messaging-app interference, and the raw counts behind every rate. Volunteer-collected with no sampling design, so rates are published only above a measurement threshold and are null, never zero, below it. Not a measure of political censorship.",
      "available": true
    },
    {
      "name": "context_indicators",
      "format": "json",
      "path": "data/context_indicators.json",
      "url": "https://lobsterbush.github.io/isse/data/context_indicators.json",
      "description": "Structural context per country from Our World in Data: military expenditure as a share of GDP (SIPRI, NO normative direction), the V-Dem Political Corruption Index (0-1, higher = MORE corrupt), the Transparency International CPI (0-100, higher = LESS corrupt, the OPPOSITE direction, never to be averaged with the V-Dem one or plotted on the same axis), and internet use as a share of population (the denominator for reading the OONI rates, not a censorship measure). Each value carries its own observation year, stale_values names any current field whose newest observation is years behind, and the two indicators whose newest vintage is old — Fariss human rights protection (2019) and terrorism deaths (2021) — are quarantined under each record's 'historical' key so they cannot be read as current. Unknown is null, never zero. Context only: nothing here can create, confirm or strengthen a register entry.",
      "available": true
    },
    {
      "name": "history",
      "format": "json",
      "path": "data/history.json",
      "url": "https://lobsterbush.github.io/isse/data/history.json",
      "description": "Accumulated daily snapshots of the headline figures.",
      "available": true
    }
  ]
}