Last Updated May 8, 2026
Scenario matrices, shock libraries, and resilience planning turn uncertainty into a structured planning discipline. Resilient systems are not built only by responding faster once disruption arrives. They are built by preparing for multiple plausible futures, cataloging the shocks that could disturb essential functions, stress-testing plans against compound conditions, and converting uncertainty into decisions that can be revised as evidence changes. Scenario planning asks what futures may unfold. Shock libraries ask what disturbances may test the system. Scenario matrices connect the two so that institutions can examine how different shocks behave across different futures, time horizons, vulnerabilities, and governance conditions.
This article expands the earlier frame of scenario planning for resilient futures into a more operational resilience-planning architecture. Scenarios are not predictions. Shock libraries are not lists of everything that could go wrong. Scenario matrices are not spreadsheet theater. Used well, they help institutions identify assumptions, dependencies, fragilities, triggers, decision points, and options that remain viable under more than one plausible future. Used poorly, they become decorative planning artifacts: elegant matrices, generic shocks, and colorful scenarios that never change budgets, infrastructure choices, emergency protocols, legal authorities, or public accountability.
Main Library
Publications
Article Map
Risk & Resilience
Related Topic
Stress Testing
Related Topic
Early Warning
Related Topic
Public Legitimacy

The central purpose is not to know the future in advance. It is to build planning systems that are less brittle when the future departs from expectation. A resilience plan should be able to answer practical questions: Which shocks have we considered? Which futures do they become worse under? Which services fail first? Which communities are most exposed? Which thresholds trigger action? Which investments remain useful across scenarios? Which plans depend on assumptions that may not hold? Which decisions should be made now, which should be delayed, and which require adaptive triggers?
Why This Topic Matters
Scenario matrices, shock libraries, and resilience planning matter because many institutions still plan as if risk arrives one event at a time, from a familiar list, under conditions similar to the past. That assumption is increasingly dangerous. Climate hazards intensify. Cyber systems become more interdependent. Public-health risks interact with workforce shortages. Supply chains cross political and ecological boundaries. Infrastructure systems age. Public trust weakens. Debt, inequality, and institutional fragmentation shape who can prepare and who absorbs harm.
Scenario planning is valuable because it widens the range of futures considered in advance. But scenario planning alone can remain abstract if it is not connected to specific shocks, essential functions, institutional capacities, and decision pathways. A resilience plan does not only need plausible stories about the future. It needs a structured way to test what those futures mean for hospitals, schools, water systems, benefits, courts, transport, food systems, housing, ecosystems, public finance, and vulnerable communities.
Shock libraries make this operational. They catalog the disturbances that could test a system: heat waves, floods, droughts, cyberattacks, power outages, pandemics, misinformation, supply-chain disruption, financial stress, social unrest, institutional failure, ecological thresholds, and cascading infrastructure breakdown. A shock library is not simply a risk register. It is a reusable planning resource that describes shocks by source, pathway, severity, duration, compounding potential, affected functions, vulnerable populations, leading indicators, and possible response triggers.
Scenario matrices connect future conditions to shock behavior. The same shock does not behave the same way under every future. A heat wave under strong public institutions, high trust, robust housing, and reliable electricity is very different from a heat wave under austerity, grid fragility, housing precarity, misinformation, and low public trust. A flood in a well-maintained watershed is different from a flood in a region of deferred maintenance, fragile insurance markets, and displaced communities. A cyberattack against a redundant public-service system is different from a cyberattack against an underfunded agency with no manual fallback.
This topic matters because resilience requires more than awareness. It requires structured anticipation, decision rehearsal, resource alignment, and governance accountability. Scenario matrices and shock libraries help institutions move from “we know the future is uncertain” to “we have tested our plans against uncertainty and know where they fail.”
From Scenario Planning to Resilience Planning
Scenario planning is often described as the development of multiple plausible futures to explore implications for present choices. That remains the foundation. But resilience planning requires an additional step: scenarios must be connected to shocks, systems, functions, vulnerabilities, thresholds, and actions. Otherwise, scenario planning can remain a strategic conversation without operational consequences.
The earlier article framed scenario planning as a way to prepare for resilient futures. This expanded title asks how scenario work becomes a practical planning system. Scenario matrices provide the bridge. They allow planners to place scenarios in relation to specific shocks, test the robustness of strategies, identify where plans fail, and decide which actions should be taken now, later, or conditionally.
The difference is important. A scenario narrative may describe a future of high climate volatility, low trust, fiscal stress, and fragmented governance. A shock library may include heat waves, water shortages, cyber disruption, energy instability, and public-health crises. A scenario matrix asks: how does each shock behave under that future? Which public functions are most affected? Which populations are most exposed? Which existing plans still work? Which assumptions fail? Which investments are robust across futures? Which decisions require adaptive triggers?
Resilience planning therefore turns foresight into design. It asks not only what futures are possible, but what present systems would do under those futures. It links anticipation to preparedness, stress testing, budgeting, service continuity, public accountability, and institutional learning.
This is why scenario matrices and shock libraries are more than analytical tools. They are governance tools. They help institutions make uncertainty discussable, comparable, and actionable. They create a shared language for asking whether plans are robust, whether vulnerabilities are visible, whether shocks have been tested together, and whether decision-makers are prepared to act before crisis forces improvisation.
Good resilience planning does not attempt to eliminate uncertainty. It builds institutions that can reason, adapt, and preserve essential functions under uncertainty.
What Scenario Matrices Are
A scenario matrix is a structured planning tool that compares shocks, strategies, vulnerabilities, decisions, or system functions across multiple plausible futures. It turns scenario planning from narrative exploration into a usable analytical grid. In the simplest version, rows may represent shocks and columns may represent scenarios. Each cell then asks how a specific shock would affect the system under a particular future.
For example, the rows might include extreme heat, flood, cyberattack, supply-chain disruption, public-health surge, fiscal shock, misinformation, energy failure, and workforce shortage. The columns might include futures such as “high climate volatility and strong institutions,” “high climate volatility and low public trust,” “slow economic growth and fiscal austerity,” “rapid technological dependence and cyber fragility,” or “unequal adaptation and social fragmentation.” Each cell then describes consequences, exposed functions, warning indicators, decision triggers, and response options.
Scenario matrices can also be built around strategies. In that case, rows represent policies or investments, while columns represent futures. A strategy is evaluated for robustness: does it perform well across multiple futures, or only under one expected path? This is especially useful for infrastructure, public finance, land use, climate adaptation, health systems, and institutional reform.
Another matrix design compares system functions. Rows represent essential functions such as water supply, emergency care, benefits payments, schools, transport, electricity, public communication, courts, housing support, food access, and waste services. Columns represent shocks or futures. The matrix then identifies which functions are most vulnerable and which dependencies appear repeatedly.
Scenario matrices are useful because they force specificity. It is easy to say that institutions should prepare for uncertainty. It is harder to ask how a benefits system performs during a cyberattack under high unemployment and low trust, or how a hospital network performs during a heat wave when power demand rises and staff shortages are severe. The matrix turns broad concern into testable planning questions.
A good scenario matrix should not become an oversized spreadsheet filled with vague labels. It should be designed for decision use: what does this comparison reveal, who owns the response, what thresholds matter, and what changes because of the analysis?
What Shock Libraries Are
A shock library is a curated catalog of disturbances that can be used for scenario planning, stress testing, emergency preparedness, resilience investment, and institutional learning. It is not merely a list of hazards. A useful shock library describes each shock in ways that help planners understand how it may emerge, propagate, compound, affect essential functions, and expose vulnerable groups.
A shock library may include natural hazards such as floods, storms, droughts, heat waves, wildfires, earthquakes, landslides, and coastal surge. It may include technological shocks such as cyberattacks, cloud outages, data breaches, telecommunications failure, grid instability, artificial intelligence system failure, or critical software vulnerability. It may include social and institutional shocks such as public trust collapse, civil unrest, governance failure, misinformation, labor disruption, corruption exposure, migration pressure, or legal uncertainty. It may include economic and financial shocks such as inflation spikes, debt stress, insurance withdrawal, housing-market disruption, liquidity crisis, supply-chain failure, or commodity price shocks. It may include public-health shocks such as pandemics, disease outbreaks, hospital surge, antimicrobial resistance, mental-health crisis, or medical supply shortages.
The value of a shock library lies in its structure. Each shock should be described through fields that make planning possible: source, onset speed, duration, affected sectors, spatial reach, severity scale, compounding potential, cascading pathways, vulnerable populations, essential functions affected, dependencies, warning indicators, data sources, plausible triggers, response options, recovery challenges, and governance owners.
Shock libraries help prevent planning myopia. Institutions often prepare for familiar shocks because they have experience with them, data on them, or legal mandates around them. A shock library can broaden the range of disturbances considered, especially emerging or cross-boundary risks that may not fit traditional categories.
A shock library also supports reuse. Instead of inventing new shock descriptions for every planning exercise, agencies can maintain a common library that is updated over time. This improves consistency, comparison, learning, and institutional memory. It also allows multiple agencies to stress-test plans against shared shock definitions.
The key point is that a shock library should remain living. Risks evolve. Shocks interact. New technologies, climate conditions, geopolitical tensions, public-health patterns, infrastructure dependencies, and social vulnerabilities change the planning environment. A static shock library becomes obsolete; a living shock library becomes part of resilience governance.
Building a Shock Library
Building a shock library begins with defining the planning purpose. A national government may need a broad library of strategic risks. A city may need a library focused on infrastructure, heat, flood, public health, housing, and social vulnerability. A hospital system may need shocks related to patient surge, staffing, supply chains, cyber disruption, power, water, and transport. A school system may need shocks involving heat, air quality, infectious disease, transportation, digital outages, violence, staffing, and food access. The library should match the system being planned for.
The first step is shock identification. Sources may include historical disaster records, climate projections, emergency exercises, risk registers, insurance claims, public-health surveillance, infrastructure failure reports, community knowledge, scientific assessments, horizon scanning, audit findings, after-action reviews, and expert judgment. This process should include frontline workers and affected communities because they often see operational fragility before senior institutions do.
The second step is classification. Shocks can be organized by domain: climate, ecological, infrastructure, cyber, health, social, economic, financial, institutional, geopolitical, and technological. They can also be organized by onset speed: sudden, slow-onset, seasonal, chronic, recurrent, or cascading. Duration matters too: some shocks last hours; others last months or years. Frequency, severity, uncertainty, and compounding potential should all be recorded.
The third step is pathway mapping. A shock becomes dangerous not only because of its initial force, but because of how it moves through systems. A heat wave can become a power, health, labor, housing, and public-trust crisis. A cyberattack can become a hospital, benefits, court, procurement, and public-communication crisis. A flood can become a transport, school, water, housing, insurance, and fiscal crisis. The shock library should describe these pathways.
The fourth step is linking shocks to essential functions. Each shock should identify which services, rights, assets, institutions, and communities are likely to be affected. This makes the library useful for planning rather than simply descriptive.
The fifth step is governance. Each shock category should have an owner responsible for updating evidence, testing plans, reviewing indicators, and coordinating across agencies. Without ownership, a shock library becomes a document rather than a capability.
Scenario Dimensions: Futures, Drivers, and Critical Uncertainties
Scenario matrices require well-designed scenario dimensions. A scenario is not a random story about the future. It is an organized exploration of drivers and uncertainties that could meaningfully change planning conditions. In resilience work, scenario dimensions often include climate volatility, ecological degradation, public trust, institutional capacity, fiscal space, technological dependence, inequality, geopolitical instability, migration pressure, infrastructure condition, insurance availability, and social cohesion.
Some dimensions describe external conditions. Climate volatility, hazard frequency, economic conditions, demographic shifts, geopolitical risk, and technological change may alter the planning environment. Other dimensions describe internal capacity. Public trust, institutional coordination, workforce resilience, fiscal capacity, legal clarity, digital resilience, and community participation determine whether systems can respond.
Critical uncertainties are especially important. These are factors that are both highly uncertain and highly consequential. For a city, critical uncertainties might include future heat severity, housing affordability, grid reliability, insurance retreat, or public trust. For a health system, they might include workforce availability, supply-chain reliability, disease burden, digital dependency, and emergency funding. For a national resilience plan, they might include climate impacts, fiscal constraints, geopolitical supply chains, public legitimacy, and institutional coordination.
Scenario design should avoid two common errors. The first is building scenarios that are too generic. Labels like “optimistic,” “baseline,” and “pessimistic” may be too shallow if they do not identify specific drivers and system consequences. The second is building scenarios that are too narrow. A climate scenario that ignores institutions, inequality, finance, and trust may not support resilience planning. A technology scenario that ignores public services, labor, regulation, and security may miss critical effects.
Scenarios should be plausible, distinct, decision-relevant, and challenging. They should stretch assumptions without drifting into fantasy. They should be specific enough to test plans, but broad enough to reveal interdependencies. The goal is not dramatic storytelling. The goal is strategic usefulness.
A scenario dimension is useful when it changes what decision-makers would do now.
Matrix Design: Connecting Futures and Shocks
The design of a scenario matrix determines whether it supports planning or becomes visual clutter. A strong matrix should connect futures, shocks, systems, vulnerabilities, and actions in a way that decision-makers can use. The simplest design places shocks in rows and scenarios in columns, then evaluates severity, affected functions, exposed groups, and response capacity in each cell.
A more advanced matrix can include additional layers. One layer may score shock severity under each scenario. Another may score institutional readiness. Another may identify essential functions at risk. Another may list decision triggers. Another may identify investments that reduce vulnerability across multiple cells. This produces a richer picture of resilience gaps.
For example, a matrix may show that extreme heat is manageable under a future of strong public health, high trust, cooling access, and grid resilience, but severe under a future of housing precarity, energy instability, and low institutional trust. The same matrix may show that cyber disruption becomes especially damaging when combined with high digital dependency and weak manual fallback. It may show that flood risk becomes more severe under insurance retreat, deferred maintenance, and public debt stress.
The matrix should help identify robust strategies. A robust strategy performs reasonably well across multiple futures and shocks. Examples may include maintaining backup power for critical facilities, building manual fallback procedures for digital systems, investing in social protection, restoring wetlands, diversifying suppliers, improving public communication, strengthening local health capacity, or reducing housing vulnerability. These strategies may not eliminate risk, but they reduce fragility across many cells.
The matrix should also identify fragile strategies. A fragile strategy works only if assumptions hold. For example, a response plan that assumes high public compliance may fail under low trust. A digital-service strategy may fail under cyber disruption. A just-in-time supply strategy may fail under geopolitical or climate shocks. An insurance-based recovery strategy may fail if coverage becomes unaffordable.
A scenario matrix is most useful when it reveals these differences before decisions are locked in.
Compound and Cascading Shocks
Resilience planning must account for compound and cascading shocks. A compound shock occurs when multiple hazards or stressors occur together or close enough in time to interact. A cascading shock occurs when failure in one system triggers failures in others. Scenario matrices and shock libraries are especially useful because they can represent these interactions more systematically than a traditional single-hazard plan.
A heat wave can combine with power instability, wildfire smoke, public-health vulnerability, water demand, school closures, labor exposure, and misinformation. A flood can disrupt roads, hospitals, water treatment, schools, food distribution, housing, and insurance markets. A cyberattack can affect hospitals, courts, benefits, emergency communication, procurement, public records, and public trust. A financial shock can reduce government revenues at the same time that social support demand rises.
The danger of compound shocks is that they defeat assumptions built around separable events. A plan may assume that emergency staff are available, but a pandemic or heat wave may reduce workforce capacity. A plan may assume digital communication works, but a cyberattack or power outage may disable it. A plan may assume that neighboring jurisdictions can help, but a regional hazard may affect them too. A plan may assume public cooperation, but misinformation or historical distrust may weaken compliance.
Shock libraries should therefore identify compounding potential. Each shock should include likely pairings and cascading pathways. Scenario matrices should include cells that test combinations, not only isolated shocks. This is particularly important for climate risk, infrastructure resilience, public health, public finance, and digital governance.
Cascading shocks also reveal common dependencies. Many systems may rely on the same power grid, cloud provider, road corridor, water source, workforce, supplier, legal authority, or communication channel. If that dependency fails, multiple services fail together. The scenario matrix should make these common-mode risks visible.
A resilience plan that cannot handle compound shocks is not truly resilient. It may be prepared for familiar events, but brittle under the actual complexity of crisis.
Stress-Testing Plans, Institutions, and Investments
Scenario matrices and shock libraries become most valuable when they are used to stress-test plans, institutions, and investments. A plan may look strong under ordinary assumptions, but resilience depends on whether it still works when conditions become adverse, simultaneous, uncertain, and politically difficult.
Stress testing begins by selecting a scenario and one or more shocks from the library. Planners then ask how the system performs: Which essential functions continue? Which fail? What capacity is exceeded? Which communities are most affected? Which assumptions prove false? What decisions are needed? Who has authority? What resources are available? What recovery pathway exists?
This approach can be applied to infrastructure investments. A proposed transit system, hospital, school, water system, or digital platform can be tested across futures and shocks. Does it still function under heat extremes? Flood? cyber disruption? workforce shortages? fiscal stress? social unrest? supply-chain interruption? A resilient investment should not merely satisfy current design conditions. It should perform under plausible future stress.
It can also be applied to public institutions. A benefits agency can test its plan against unemployment surge, cyber outage, call-center overload, staff shortages, and public distrust. A court system can test due-process continuity under digital failure, detention pressure, disaster displacement, and legal backlog. A city government can test emergency management under compound climate hazards and fiscal strain.
Stress testing should also include reverse stress testing. Instead of asking what happens under a scenario, the institution asks: what conditions would make this plan fail? What level of staff absence breaks the system? What outage duration becomes unacceptable? What supplier failure creates cascading harm? What level of misinformation undermines public compliance? What level of uninsured loss creates fiscal stress?
The value of stress testing lies in action. Findings should lead to revised plans, new investments, governance changes, legal clarification, staffing decisions, public communication improvements, supplier diversification, and community protection. Stress testing that produces no change is only rehearsal without learning.
Triggers, Thresholds, and Decision Pathways
Resilience planning requires more than identifying future risks. It requires knowing when to act. Triggers and thresholds connect scenario work to decision-making. A trigger is a condition that prompts action. A threshold is a boundary beyond which system performance becomes unsafe, unacceptable, unlawful, or difficult to reverse.
Triggers can be early warnings: rising heat index, hospital capacity, river height, grid stress, cyber intrusion signals, supply delays, insurance withdrawal, disease surveillance, staffing absence, social unrest indicators, or public communication failure. They can also be governance triggers: when uncertainty reaches a certain level, when multiple indicators deteriorate, when a vulnerable group loses access, when an emergency reserve falls below a minimum, or when response time exceeds acceptable limits.
Thresholds define planning seriousness. For a hospital, a threshold may be intensive-care capacity or staffing ratio. For a water system, it may be reservoir level, treatment failure, or contamination. For a benefits system, it may be payment delay. For a school system, it may be indoor heat, air quality, transport access, or staffing. For a city, it may be shelter capacity, outage duration, emergency response time, or recovery inequity.
Scenario matrices should identify which triggers matter under which futures. Some triggers may be useful across all scenarios. Others may become important only under certain conditions. For example, insurance non-renewal may become a major trigger under climate volatility and housing vulnerability. Public trust indicators may become critical under misinformation and institutional fragmentation. Grid reserve margins may become central under heat, electrification, and infrastructure aging.
Decision pathways specify what happens when triggers are reached. Who acts? What authority is used? What resources are released? What communication occurs? What services are prioritized? What community protections are activated? What data are updated? What accountability follows?
Without triggers and pathways, scenario planning can identify problems without changing timing. Resilience depends on acting early enough. A good scenario matrix should therefore not only describe possible futures. It should help institutions decide when the future is becoming dangerous enough to require action.
Equity, Vulnerability, and Unequal Shock Exposure
Scenario matrices and shock libraries must be equity-centered because shocks do not affect everyone equally. A shock library that describes hazards without describing vulnerability will miss the social structure of risk. A scenario matrix that evaluates system performance in aggregate may hide the fact that some communities lose access first and recover last.
Each shock entry should identify vulnerable groups and unequal exposure patterns. Heat risk may be highest for older adults, outdoor workers, low-income households, renters, people without air conditioning, people with chronic illness, and neighborhoods with low tree canopy. Flood risk may be shaped by housing tenure, drainage, insurance coverage, language access, disability, transport access, and recovery funding. Cyber disruption may harm people who depend on digital benefits, health records, public services, or legal documentation. Public-health shocks may be filtered through work conditions, housing, care responsibilities, medical access, and trust.
Scenario matrices should therefore include distributional questions. Under each future and shock, who is harmed first? Who has private fallback capacity? Who depends most on public systems? Who receives warning? Who can act on warning? Who is missing from the data? Who has legal status, language access, mobility, insurance, savings, and political voice? Who is asked to bear the costs of adaptation?
Equity also affects planning legitimacy. A resilience plan that protects high-value assets while leaving marginalized communities exposed may preserve aggregate function but deepen injustice. A scenario matrix should reveal this rather than hide it. This may require equity-adjusted scoring, neighborhood-level analysis, community validation, and participatory scenario planning.
Local knowledge matters. Communities often understand lived shock pathways that formal models miss: where flooding actually occurs, which roads become inaccessible, which cooling centers are distrusted, which communication channels fail, which services are inaccessible, and which households are absent from official data. Shock libraries should include these observations.
The purpose of equity-centered scenario planning is not only to describe unequal vulnerability. It is to change planning decisions so that resilience investments, triggers, and response pathways protect those most exposed to harm.
Governance and Ownership of Scenario Systems
Scenario matrices and shock libraries require governance. Without ownership, they become documents. With ownership, they can become institutional capabilities. Governance determines who builds the shock library, who updates it, who validates it, who uses it, who can challenge it, and what decisions it informs.
A shock library should have clear custodians. These may include emergency management offices, resilience teams, planning departments, public-health agencies, infrastructure authorities, climate offices, finance departments, or cross-agency risk units. But no single office can own all relevant knowledge. A living shock library needs input from technical experts, frontline workers, community organizations, public institutions, infrastructure operators, scientists, insurers, and affected residents.
Scenario matrices also need decision ownership. If a matrix identifies that a strategy fails under several futures, who is responsible for revising the strategy? If it shows that an essential service lacks backup capacity, who funds the fix? If it reveals that a vulnerable population is missing from response plans, who changes the plan? If it identifies a threshold that should trigger early action, who has the authority to act?
Governance should include update cycles. Scenarios and shocks should be reviewed after actual events, exercises, new data, scientific assessments, policy changes, technology shifts, and community feedback. A scenario matrix built once and never revisited will become stale. A shock library that does not learn from events will become a static inventory rather than a planning system.
Public accountability matters as well. Not every detail can be public, especially for cyber or security-sensitive risks. But the framework, assumptions, major risk categories, governance owners, and corrective actions should be transparent where possible. Communities should understand how their vulnerability is represented and how scenario planning affects investments and emergency plans.
The central governance principle is simple: scenario systems should be tied to authority, resources, review, and correction. If no decision changes because of the matrix, the matrix has not become resilience planning.
Limits and Misuses
Scenario matrices and shock libraries can be misused. One risk is false comprehensiveness. A large shock library can create the illusion that all important risks have been captured. But uncertainty cannot be exhausted by a catalog. New shocks emerge, old shocks change, and interactions surprise institutions. A shock library should expand attention, not claim total knowledge.
Another risk is scenario theater. Institutions may produce polished scenario narratives and matrices without connecting them to budgets, legal authorities, infrastructure investment, staffing, training, procurement, public communication, or community protection. The exercise may look sophisticated while the system remains brittle. Scenario planning becomes performative when it does not alter decisions.
A third risk is generic shock design. If every shock is described at a high level—flood, cyberattack, pandemic, supply disruption—the library may be too vague to support planning. Shocks need operational detail: duration, severity, geography, affected functions, dependencies, vulnerable groups, leading indicators, and recovery constraints.
A fourth risk is technocratic closure. Scenario matrices can appear objective because they are structured. But scenario selection, shock categories, weights, severity scores, and thresholds all involve judgment. If affected communities are excluded, the matrix may reproduce institutional blind spots. If equity is underweighted, the matrix may protect system continuity while ignoring unequal harm.
A fifth risk is overcomplication. A matrix with too many shocks, scenarios, indicators, and scores can become unusable. Resilience planning needs enough complexity to reveal system behavior, but enough clarity to support decisions. The point is not to build the most elaborate matrix. The point is to build the matrix that changes planning quality.
Finally, scenario systems can become outdated. A shock library must be maintained. Scenario dimensions must be revisited. Triggers must be calibrated. Exercises must feed back into the system. Without learning, foresight becomes archival.
The solution is humility. Scenario matrices and shock libraries are not truth machines. They are structured aids to judgment under uncertainty.
Toward Better Resilience Planning
Better resilience planning should combine scenarios, shock libraries, stress tests, early warning, equity analysis, and adaptive governance. These tools should not sit in separate documents. They should form an integrated planning system.
First, institutions should define the system and essential functions. What must continue under stress? Who depends on it? What level of service is minimally acceptable? Which rights, services, assets, and communities must be protected?
Second, they should build a living shock library. It should include familiar hazards, emerging risks, slow-onset stressors, institutional shocks, technological failures, financial shocks, public-health threats, ecological thresholds, and compound events. Each shock should be described in a way that supports planning.
Third, they should develop scenario dimensions around critical uncertainties. These should include external drivers and internal capacities: climate volatility, fiscal space, institutional trust, inequality, digital dependence, infrastructure condition, public health, insurance availability, migration, and governance fragmentation.
Fourth, they should construct scenario matrices that connect futures, shocks, essential functions, vulnerable groups, thresholds, and response options. The matrix should identify robust strategies, fragile assumptions, and decision triggers.
Fifth, they should stress-test real plans and investments. Scenario work should evaluate actual budgets, infrastructure projects, emergency plans, workforce assumptions, public communications, legal authorities, and service-continuity procedures.
Sixth, they should include community validation. A scenario matrix should be tested against lived knowledge, especially from communities that have experienced repeated harm or institutional neglect.
Seventh, they should link findings to action. Each major vulnerability should have an owner, timeline, resource pathway, and review process. Scenario planning without implementation is not resilience planning.
The future cannot be fully predicted. But institutions can become better at preparing for futures that differ from expectation. Scenario matrices and shock libraries make that preparation more disciplined, more accountable, and more connected to the systems people rely on when disruption arrives.
Mathematical Lens
A resilience scenario matrix can be represented as a relationship among scenarios, shocks, exposure, vulnerability, capacity, and planning readiness. Let \(R_p\) represent resilience planning strength:
R_p = \alpha S_c + \beta L_s + \gamma M_q + \delta T_r + \epsilon A_d + \zeta E_q – \lambda C_x – \mu B_g – \nu U_n
\]
Interpretation: Resilience planning strength rises when scenario coverage, shock-library quality, matrix quality, trigger readiness, adaptive decision capacity, and equity integration are strong. It falls when compound-shock exposure, blind spots, and unresolved uncertainty are high.
Shock impact under a scenario can be represented as:
I_{ij} = H_i \times E_j \times V_j \times (1 – C_j)
\]
Interpretation: The impact of shock \(i\) under scenario \(j\) increases with hazard severity, exposure, and vulnerability, and decreases as capacity increases. This helps planners compare how the same shock behaves under different future conditions.
A robust strategy score can be represented as:
B_k = \frac{1}{n}\sum_{j=1}^{n} P_{kj} – \omega F_k
\]
Interpretation: A strategy is more robust when it performs well across many scenarios and less robust when it depends on fragile assumptions. \(P_{kj}\) represents strategy performance under scenario \(j\), and \(F_k\) represents assumption fragility.
| Term | Meaning | Interpretive role |
|---|---|---|
| \(R_p\) | Resilience planning strength | Represents how well scenario systems support practical resilience planning. |
| \(S_c\) | Scenario coverage | Represents the breadth and relevance of plausible futures considered. |
| \(L_s\) | Shock-library quality | Represents the completeness, specificity, and usefulness of the shock catalog. |
| \(M_q\) | Matrix quality | Represents how well the matrix connects futures, shocks, functions, vulnerabilities, and actions. |
| \(T_r\) | Trigger readiness | Represents whether indicators, thresholds, and decision triggers are defined. |
| \(A_d\) | Adaptive decision capacity | Represents the ability to revise plans as scenarios, evidence, and conditions change. |
| \(E_q\) | Equity integration | Represents whether vulnerable groups and unequal exposure are built into the scenario system. |
| \(C_x\) | Compound-shock exposure | Represents exposure to simultaneous, interacting, or cascading shocks. |
| \(B_g\) | Blind-spot gap | Represents missing shocks, missing groups, weak data, or unexamined assumptions. |
| \(U_n\) | Unresolved uncertainty | Represents uncertainties not yet translated into planning triggers or adaptive pathways. |
| \(I_{ij}\) | Shock impact under scenario | Represents the estimated impact of a shock under a given future condition. |
| \(B_k\) | Robust strategy score | Represents how well a strategy performs across multiple scenarios after accounting for fragile assumptions. |
The equations are conceptual rather than predictive. Their value is to make scenario-planning logic explicit: resilience planning should evaluate shocks across futures, compare strategy robustness, make uncertainty visible, and identify where capacity fails.
Advanced Python Workflow: Scenario Matrix and Shock-Library Scoring
This Python workflow models scenario-matrix and shock-library quality by combining scenario coverage, shock specificity, compound-risk coverage, essential-function mapping, trigger readiness, equity integration, dependency mapping, stress-test linkage, governance ownership, update cadence, and action linkage against blind spots, scenario theater, stale assumptions, and untested fragility.
from __future__ import annotations
import pandas as pd
import numpy as np
INPUT_FILE = "scenario_matrix_shock_library_panel.csv"
OUTPUT_FILE = "scenario_matrix_resilience_planning_scores.csv"
def load_data(path: str) -> pd.DataFrame:
"""
Load a scenario matrix and shock-library planning dataset.
All *_index columns should be normalized to [0, 1].
Higher values should mean more of the named property.
Examples:
- scenario_coverage_index: higher = broader coverage of plausible futures
- shock_specificity_index: higher = more operationally useful shock definitions
- compound_risk_exposure_index: higher = greater exposure to compound/cascading shocks
- scenario_theater_risk_index: higher = greater risk that scenario work does not affect decisions
"""
df = pd.read_csv(path)
required_columns = [
"planning_system",
"jurisdiction",
"system_type",
"scenario_coverage_index",
"shock_library_quality_index",
"shock_specificity_index",
"compound_risk_coverage_index",
"essential_function_mapping_index",
"dependency_mapping_index",
"trigger_readiness_index",
"threshold_clarity_index",
"equity_integration_index",
"community_validation_index",
"stress_test_linkage_index",
"governance_ownership_index",
"update_cadence_index",
"action_linkage_index",
"adaptive_decision_capacity_index",
"compound_risk_exposure_index",
"blind_spot_gap_index",
"stale_assumption_risk_index",
"scenario_theater_risk_index",
"untested_fragility_index",
]
missing = [col for col in required_columns if col not in df.columns]
if missing:
raise ValueError(f"Missing required columns: {missing}")
return df
def validate_indices(df: pd.DataFrame) -> pd.DataFrame:
"""Validate that all *_index fields are complete and normalized to [0, 1]."""
index_columns = [col for col in df.columns if col.endswith("_index")]
for col in index_columns:
if df[col].isna().any():
raise ValueError(f"Column '{col}' contains missing values.")
if ((df[col] < 0) | (df[col] > 1)).any():
raise ValueError(f"Column '{col}' contains values outside [0, 1].")
return df
def compute_scores(df: pd.DataFrame) -> pd.DataFrame:
"""
Compute scenario planning strength, shock-library reliability,
blind-spot pressure, and resilience-planning readiness.
"""
df = df.copy()
df["scenario_matrix_quality_score"] = (
0.16 * df["scenario_coverage_index"] +
0.13 * df["compound_risk_coverage_index"] +
0.13 * df["essential_function_mapping_index"] +
0.12 * df["dependency_mapping_index"] +
0.12 * df["trigger_readiness_index"] +
0.11 * df["threshold_clarity_index"] +
0.11 * df["equity_integration_index"] +
0.12 * df["stress_test_linkage_index"]
).clip(lower=0, upper=1)
df["shock_library_reliability_score"] = (
0.18 * df["shock_library_quality_index"] +
0.16 * df["shock_specificity_index"] +
0.14 * df["compound_risk_coverage_index"] +
0.13 * df["dependency_mapping_index"] +
0.12 * df["essential_function_mapping_index"] +
0.10 * df["community_validation_index"] +
0.09 * df["update_cadence_index"] +
0.08 * df["governance_ownership_index"]
).clip(lower=0, upper=1)
df["planning_actionability_score"] = (
0.20 * df["action_linkage_index"] +
0.18 * df["governance_ownership_index"] +
0.16 * df["trigger_readiness_index"] +
0.14 * df["threshold_clarity_index"] +
0.12 * df["stress_test_linkage_index"] +
0.10 * df["adaptive_decision_capacity_index"] +
0.10 * df["update_cadence_index"]
).clip(lower=0, upper=1)
df["blind_spot_pressure_score"] = (
0.22 * df["compound_risk_exposure_index"] +
0.20 * df["blind_spot_gap_index"] +
0.18 * df["stale_assumption_risk_index"] +
0.16 * df["scenario_theater_risk_index"] +
0.14 * df["untested_fragility_index"] +
0.10 * (1 - df["community_validation_index"])
).clip(lower=0, upper=1)
df["resilience_planning_readiness_score"] = (
0.28 * df["scenario_matrix_quality_score"] +
0.24 * df["shock_library_reliability_score"] +
0.22 * df["planning_actionability_score"] +
0.14 * df["adaptive_decision_capacity_index"] +
0.12 * (1 - df["blind_spot_pressure_score"])
).clip(lower=0, upper=1)
df["planning_readiness_gap"] = (
df["resilience_planning_readiness_score"] -
df["blind_spot_pressure_score"]
)
df["planning_band"] = np.select(
[
df["resilience_planning_readiness_score"] >= 0.80,
df["resilience_planning_readiness_score"] >= 0.60,
df["resilience_planning_readiness_score"] >= 0.40,
],
[
"Strong scenario-based resilience planning",
"Moderate scenario-based resilience planning",
"Limited scenario-based resilience planning",
],
default="Weak scenario-based resilience planning",
)
df["planning_warning"] = np.select(
[
df["blind_spot_pressure_score"] - df["resilience_planning_readiness_score"] >= 0.35,
df["blind_spot_pressure_score"] - df["resilience_planning_readiness_score"] >= 0.20,
df["blind_spot_pressure_score"] - df["resilience_planning_readiness_score"] >= 0.05,
],
[
"Severe scenario-planning blind-spot pressure",
"High scenario-planning blind-spot pressure",
"Moderate scenario-planning blind-spot pressure",
],
default="Lower blind-spot pressure or stronger resilience-planning readiness",
)
return df
def build_summary(df: pd.DataFrame) -> pd.DataFrame:
"""Return a ranked summary table for scenario-matrix and shock-library review."""
columns = [
"planning_system",
"jurisdiction",
"system_type",
"scenario_matrix_quality_score",
"shock_library_reliability_score",
"planning_actionability_score",
"blind_spot_pressure_score",
"resilience_planning_readiness_score",
"planning_readiness_gap",
"planning_band",
"planning_warning",
]
summary = df[columns].copy()
summary = summary.sort_values(
by=[
"resilience_planning_readiness_score",
"planning_actionability_score",
"blind_spot_pressure_score",
],
ascending=[False, False, True],
).reset_index(drop=True)
return summary
def main() -> None:
df = load_data(INPUT_FILE)
df = validate_indices(df)
scored = compute_scores(df)
summary = build_summary(scored)
summary.to_csv(OUTPUT_FILE, index=False)
print("Scenario matrix and shock-library resilience planning diagnostics complete.")
print(summary.to_string(index=False))
if __name__ == "__main__":
main()
This workflow is diagnostic rather than predictive. It helps distinguish serious scenario-based resilience planning from decorative foresight. A planning system may have polished scenarios but low actionability if it lacks triggers, ownership, community validation, update cycles, or stress-test linkage.
Advanced R Workflow: Scenario-Shock Diagnostics
This R workflow summarizes scenario-matrix and shock-library readiness by jurisdiction and system type. It is useful for identifying where planning systems have strong scenario coverage but weak shock specificity, strong shock catalogs but weak action linkage, or strong matrices that still miss compound-risk exposure and equity gaps.
library(readr)
library(dplyr)
input_file <- "scenario_matrix_shock_library_panel.csv"
jurisdiction_output_file <- "scenario_matrix_jurisdiction_summary.csv"
system_output_file <- "scenario_matrix_system_type_summary.csv"
scenario_df <- read_csv(input_file, show_col_types = FALSE)
required_cols <- c(
"planning_system",
"jurisdiction",
"system_type",
"scenario_coverage_index",
"shock_library_quality_index",
"shock_specificity_index",
"compound_risk_coverage_index",
"essential_function_mapping_index",
"dependency_mapping_index",
"trigger_readiness_index",
"threshold_clarity_index",
"equity_integration_index",
"community_validation_index",
"stress_test_linkage_index",
"governance_ownership_index",
"update_cadence_index",
"action_linkage_index",
"adaptive_decision_capacity_index",
"compound_risk_exposure_index",
"blind_spot_gap_index",
"stale_assumption_risk_index",
"scenario_theater_risk_index",
"untested_fragility_index"
)
missing_cols <- setdiff(required_cols, names(scenario_df))
if (length(missing_cols) > 0) {
stop(paste("Missing required columns:", paste(missing_cols, collapse = ", ")))
}
index_cols <- names(scenario_df)[grepl("_index$", names(scenario_df))]
invalid_index_cols <- index_cols[
vapply(
scenario_df[index_cols],
function(x) any(is.na(x) | x < 0 | x > 1),
logical(1)
)
]
if (length(invalid_index_cols) > 0) {
stop(
paste(
"Index columns must be complete and normalized to [0, 1]:",
paste(invalid_index_cols, collapse = ", ")
)
)
}
scenario_df <- scenario_df %>%
mutate(
scenario_matrix_quality_proxy = (
scenario_coverage_index +
compound_risk_coverage_index +
essential_function_mapping_index +
dependency_mapping_index +
trigger_readiness_index +
threshold_clarity_index +
equity_integration_index +
stress_test_linkage_index
) / 8,
shock_library_reliability_proxy = (
shock_library_quality_index +
shock_specificity_index +
compound_risk_coverage_index +
dependency_mapping_index +
essential_function_mapping_index +
community_validation_index +
update_cadence_index +
governance_ownership_index
) / 8,
planning_actionability_proxy = (
action_linkage_index +
governance_ownership_index +
trigger_readiness_index +
threshold_clarity_index +
stress_test_linkage_index +
adaptive_decision_capacity_index +
update_cadence_index
) / 7,
blind_spot_pressure_proxy = (
compound_risk_exposure_index +
blind_spot_gap_index +
stale_assumption_risk_index +
scenario_theater_risk_index +
untested_fragility_index +
(1 - community_validation_index)
) / 6,
resilience_planning_readiness_proxy = (
scenario_matrix_quality_proxy +
shock_library_reliability_proxy +
planning_actionability_proxy +
adaptive_decision_capacity_index +
(1 - blind_spot_pressure_proxy)
) / 5,
planning_readiness_gap = resilience_planning_readiness_proxy - blind_spot_pressure_proxy,
planning_band = case_when(
resilience_planning_readiness_proxy >= 0.75 ~ "Strong scenario-based resilience planning",
resilience_planning_readiness_proxy >= 0.55 ~ "Moderate scenario-based resilience planning",
resilience_planning_readiness_proxy >= 0.35 ~ "Limited scenario-based resilience planning",
TRUE ~ "Weak scenario-based resilience planning"
)
)
jurisdiction_summary <- scenario_df %>%
group_by(jurisdiction) %>%
summarise(
avg_resilience_planning_readiness = mean(resilience_planning_readiness_proxy, na.rm = TRUE),
avg_scenario_matrix_quality = mean(scenario_matrix_quality_proxy, na.rm = TRUE),
avg_shock_library_reliability = mean(shock_library_reliability_proxy, na.rm = TRUE),
avg_planning_actionability = mean(planning_actionability_proxy, na.rm = TRUE),
avg_blind_spot_pressure = mean(blind_spot_pressure_proxy, na.rm = TRUE),
avg_scenario_coverage = mean(scenario_coverage_index, na.rm = TRUE),
avg_shock_library_quality = mean(shock_library_quality_index, na.rm = TRUE),
avg_shock_specificity = mean(shock_specificity_index, na.rm = TRUE),
avg_compound_risk_coverage = mean(compound_risk_coverage_index, na.rm = TRUE),
avg_essential_function_mapping = mean(essential_function_mapping_index, na.rm = TRUE),
avg_dependency_mapping = mean(dependency_mapping_index, na.rm = TRUE),
avg_trigger_readiness = mean(trigger_readiness_index, na.rm = TRUE),
avg_equity_integration = mean(equity_integration_index, na.rm = TRUE),
avg_community_validation = mean(community_validation_index, na.rm = TRUE),
avg_action_linkage = mean(action_linkage_index, na.rm = TRUE),
avg_compound_risk_exposure = mean(compound_risk_exposure_index, na.rm = TRUE),
avg_scenario_theater_risk = mean(scenario_theater_risk_index, na.rm = TRUE),
avg_planning_readiness_gap = mean(planning_readiness_gap, na.rm = TRUE),
observations = n(),
.groups = "drop"
) %>%
arrange(desc(avg_resilience_planning_readiness))
system_type_summary <- scenario_df %>%
group_by(system_type) %>%
summarise(
avg_resilience_planning_readiness = mean(resilience_planning_readiness_proxy, na.rm = TRUE),
avg_scenario_matrix_quality = mean(scenario_matrix_quality_proxy, na.rm = TRUE),
avg_shock_library_reliability = mean(shock_library_reliability_proxy, na.rm = TRUE),
avg_planning_actionability = mean(planning_actionability_proxy, na.rm = TRUE),
avg_blind_spot_pressure = mean(blind_spot_pressure_proxy, na.rm = TRUE),
avg_scenario_coverage = mean(scenario_coverage_index, na.rm = TRUE),
avg_shock_library_quality = mean(shock_library_quality_index, na.rm = TRUE),
avg_shock_specificity = mean(shock_specificity_index, na.rm = TRUE),
avg_compound_risk_coverage = mean(compound_risk_coverage_index, na.rm = TRUE),
avg_essential_function_mapping = mean(essential_function_mapping_index, na.rm = TRUE),
avg_dependency_mapping = mean(dependency_mapping_index, na.rm = TRUE),
avg_trigger_readiness = mean(trigger_readiness_index, na.rm = TRUE),
avg_equity_integration = mean(equity_integration_index, na.rm = TRUE),
avg_community_validation = mean(community_validation_index, na.rm = TRUE),
avg_action_linkage = mean(action_linkage_index, na.rm = TRUE),
avg_compound_risk_exposure = mean(compound_risk_exposure_index, na.rm = TRUE),
avg_scenario_theater_risk = mean(scenario_theater_risk_index, na.rm = TRUE),
avg_planning_readiness_gap = mean(planning_readiness_gap, na.rm = TRUE),
observations = n(),
.groups = "drop"
) %>%
arrange(desc(avg_resilience_planning_readiness))
write_csv(jurisdiction_summary, jurisdiction_output_file)
write_csv(system_type_summary, system_output_file)
cat("Scenario matrix jurisdiction summary exported to:", jurisdiction_output_file, "\n")
print(jurisdiction_summary)
cat("\nScenario matrix system-type summary exported to:", system_output_file, "\n")
print(system_type_summary)
This workflow helps distinguish scenario planning that supports resilience decisions from scenario planning that only expands imagination. A planning system becomes stronger when it links scenarios to shocks, shocks to functions, functions to vulnerabilities, vulnerabilities to thresholds, and thresholds to accountable action.
GitHub Repository
Complete Code Repository
The full code distribution for this article, including scenario-matrix scoring workflows, shock-library diagnostics, resilience-planning readiness models, SQL materials, optional planning-quality support tools, and supporting documentation, is available on GitHub.
Related Articles
- Stress Testing Public Institutions
- Early Warning Systems and Preparedness
- Resilience Indicators and Measurement
- Resilience Indicator Dashboards and Their Blind Spots
- Risk Governance and Adaptive Institutions
- Resilience Governance, Accountability, and Public Legitimacy
- Critical Infrastructure Resilience and Interdependent Systems
- Cyber Risk, Digital Dependency, and System Resilience
Further Reading
- Intergovernmental Panel on Climate Change (IPCC) (2022) Chapter 17: Decision-Making Options for Managing Risk. In: Climate Change 2022: Impacts, Adaptation and Vulnerability. Available at: https://www.ipcc.ch/report/ar6/wg2/chapter/chapter-17/
- Intergovernmental Panel on Climate Change (IPCC) (2022) Chapter 18: Climate Resilient Development Pathways. In: Climate Change 2022: Impacts, Adaptation and Vulnerability. Available at: https://www.ipcc.ch/report/ar6/wg2/chapter/chapter-18/
- Organisation for Economic Co-operation and Development (OECD) (n.d.) Strategic Foresight. Available at: https://www.oecd.org/en/about/programmes/strategic-foresight.html
- Organisation for Economic Co-operation and Development (OECD) (2024) Using Foresight to Anticipate Emerging Critical Risks. Paris: OECD. Available at: https://www.oecd.org/en/publications/using-foresight-to-anticipate-emerging-critical-risks_84820cd8-en.html
- Organisation for Economic Co-operation and Development (OECD) (2025) Strategic Foresight Toolkit for Resilient Public Policy. Paris: OECD. Available at: https://www.oecd.org/en/about/programmes/strategic-foresight.html
- Organisation for Economic Co-operation and Development (OECD) (2025) Building Anticipatory Capacity with Strategic Foresight in Government. Paris: OECD. Available at: https://www.oecd.org/en/publications/building-anticipatory-capacity-with-strategic-foresight-in-government_d7eb0bb6-en.html
- Organisation for Economic Co-operation and Development (OECD) (2025) Managing Emerging Critical Risks. Paris: OECD. Available at: https://www.oecd.org/en/publications/managing-emerging-critical-risks_1f9858ea-en.html
- United Nations Office for Disaster Risk Reduction (UNDRR) (2015) Sendai Framework for Disaster Risk Reduction 2015–2030. Available at: https://www.undrr.org/publication/sendai-framework-disaster-risk-reduction-2015-2030
References
- Intergovernmental Panel on Climate Change (IPCC) (2022) Chapter 17: Decision-Making Options for Managing Risk. In: Climate Change 2022: Impacts, Adaptation and Vulnerability. Available at: https://www.ipcc.ch/report/ar6/wg2/chapter/chapter-17/
- Intergovernmental Panel on Climate Change (IPCC) (2022) Chapter 18: Climate Resilient Development Pathways. In: Climate Change 2022: Impacts, Adaptation and Vulnerability. Available at: https://www.ipcc.ch/report/ar6/wg2/chapter/chapter-18/
- Organisation for Economic Co-operation and Development (OECD) (n.d.) Strategic Foresight. Available at: https://www.oecd.org/en/about/programmes/strategic-foresight.html
- Organisation for Economic Co-operation and Development (OECD) (2024) Using Foresight to Anticipate Emerging Critical Risks. Paris: OECD. Available at: https://www.oecd.org/en/publications/using-foresight-to-anticipate-emerging-critical-risks_84820cd8-en.html
- Organisation for Economic Co-operation and Development (OECD) (2024) Mapping Emerging Critical Risks. Paris: OECD. Available at: https://www.oecd.org/content/dam/oecd/en/publications/reports/2024/12/mapping-emerging-critical-risks_364fd5b7/eb642ada-en.pdf
- Organisation for Economic Co-operation and Development (OECD) (2025) Building Anticipatory Capacity with Strategic Foresight in Government. Paris: OECD. Available at: https://www.oecd.org/en/publications/building-anticipatory-capacity-with-strategic-foresight-in-government_d7eb0bb6-en.html
- Organisation for Economic Co-operation and Development (OECD) (2025) Managing Emerging Critical Risks. Paris: OECD. Available at: https://www.oecd.org/en/publications/managing-emerging-critical-risks_1f9858ea-en.html
- Organisation for Economic Co-operation and Development (OECD) (2025) Global Scenarios 2035. Paris: OECD. Available at: https://www.oecd.org/en/publications/global-scenarios-2035_df7ebc33-en.html
- United Nations Office for Disaster Risk Reduction (UNDRR) (2015) Sendai Framework for Disaster Risk Reduction 2015–2030. Available at: https://www.undrr.org/publication/sendai-framework-disaster-risk-reduction-2015-2030
