> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gdeltcloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Propagation potential

> What `propagation_potential` measures, what you can do with it, how it is computed, and what it does not claim.

The CONDITIONS that let a shock travel, 0-1. All five sub-factors are OBSERVED present properties of the event as reported — never a forecast of specific follow-on events. In one sentence: average how open the channels are, how tight the coupling, whether a barrier broke, how primed the ground is, and how little damping is already in place — and score 0 if no live channel exists at all.

## What it is for

* Asking whether a disruption is likely to travel beyond where it happened, rather than how bad it is where it happened.
* Early warning: a high reading with a low `magnitude` is the classic small-event-big-consequence shape.
* Filtering out self-contained incidents — a `0` means no live transmission channel was found, which is a strong negative signal.
* Reading the `containment` sub-factor as a damper: a high value SUPPRESSES the score, so a falling containment on a live story is itself the signal.

## Filter on it

`propagation_potential_min` and `propagation_potential_max` on `GET /api/v2/events`, range `0`–`1`. Published only for the **cameoplus** family — filtering on it excludes every event outside that family.

## Formula

$$
\text{propagation\_potential} =
\begin{cases}
0 & c \le 0.05 \\[4pt]
\dfrac{c + k + b + p + (1 - m)}{5} & c > 0.05
\end{cases}
$$

| Symbol | What it is                                                                                                               |
| ------ | ------------------------------------------------------------------------------------------------------------------------ |
| $c$    | `channel` — the GATE. Do live transmission channels exist at all? At or below 0.05 the whole metric is 0.                |
| $k$    | `coupling` — the absence of slack: buffers, spare capacity, substitutes, time to respond.                                |
| $b$    | `breach` — did this cross a threshold or degrade a barrier that was holding?                                             |
| $p$    | `primed` — is the receiving system already stressed or near a tipping point?                                             |
| $m$    | `containment` — dampers ALREADY acting. The one INVERTED factor: it enters as `1 - m`, so a high value lowers the score. |

Every sub-factor is clamped to its stated range before it enters the equation, and the result is rounded to **2 decimal places**. Reproducing a served value needs both.

## What the coder scores

The coder reads these off the article and records a reason for each. The scaler above turns them into the value — nothing else feeds it.

### `channel`

**Gate** — at or below `0.05` the whole metric is `0` regardless of the other sub-factors.

GATE (0-1): do LIVE transmission channels exist from this event to other actors or systems? Score the count and breadth of channel TYPES that exist NOW: operational dependency, common exposure, confidence/belief, physical/geographic. 0 = genuinely self-contained.

### `coupling`

(0-1) How tight and fast is the connection? Score the ABSENCE of slack: buffers, spare capacity, substitutes, rerouting, time to respond.

### `breach`

(0-1) Did this cross a threshold or DEGRADE A BARRIER that was holding? The signal is breach of a previously observed restraint ("first time", "first since", "unprecedented"), not absolute size.

### `primed`

(0-1) Is the receiving system already stressed, crowded, or near a tipping point (existing crisis, deadline, election, market open)?

### `containment`

**Inverted** — high values SUPPRESS the score; it enters as `(1 − value)`.

SUBTRACTIVE (0-1): are credible dampers ALREADY acting in the description? mediator, backstop, failover, circuit-breaker, reserve release, service restored.

## The frameworks it adapts

### [ESRB systemic cyber-risk model](https://www.esrb.europa.eu/pub/pdf/reports/esrb.report202404_advancingmacroprudentialtools~ca44cf0c8a.en.pdf)

**What we take from it.** The shape built explicitly for shocks with NO historical precedent to fit against — a channel gate, an amplifier core and a subtractive damper — which is why this metric scores present conditions instead of estimating a probability.

**In current use by** [the ESRB, whose recommendation established the pan-European systemic cyber incident coordination framework (EU-SCICF); its terms of reference took effect on 17 January 2025](https://www.esrb.europa.eu/).

### [Rinaldi, Peerenboom & Kelly — infrastructure interdependency and coupling](https://ieeexplore.ieee.org/document/969131)

**What we take from it.** The dependency taxonomy and the tight-versus-loose coupling distinction that `channel` and `coupling` score — coupling is read as the ABSENCE of slack, which is that literature's framing.

*We publish no current third-party application for this one — we adapt the scale, not a live programme.*

### The full citation trail

Transmission-condition assessment, built from four bodies that independently converge on the same three-part shape (a channel gate, an amplifier core, a subtractive damper) — the ERCS barrier model (Commission Delegated Reg. (EU) 2020/2034, binding EU law since Jan 2023), the ESRB systemic cyber-risk conceptual model (2022-24, built explicitly for when historical precedent is absent), RAND's escalation-risk framework (RR-A2215-1, 2025; RR-A972-1, 2022), and Rinaldi-Peerenboom-Kelly dependency and coupling analysis as operationalised by Argonne for DHS/CISA, plus the EC JRC Natech checklist.

We ADAPT the structure and vocabulary of these frameworks. **None of the bodies named endorses, reviews, or is connected to this metric**, and their use does not make our values empirical measurements.

## Worked examples

Real events from the corpus, scored by the coder and frozen here on **2026-08-19** — check the arithmetic against the formula above. They are snapshots, not live lookups: an event can be re-coded, and an example that changed underneath its own arithmetic would be worse than none.

### Vessel owners reduce Strait of Hormuz traffic amid standoff

*Iran · 2026-08-11*

A high reading, and the inverted limb doing its job: containment is 0.10, so it enters as 0.90 and RAISES the score. Nothing was damping this.

| Sub-factor    | Value | The coder's reason                                                                                              |
| ------------- | ----- | --------------------------------------------------------------------------------------------------------------- |
| `channel`     | 0.95  | Operational and physical channels connect the strait to oil shipments, vessel routing, and global energy trade. |
| `coupling`    | 0.85  | Shipowners are actively avoiding transits because of heightened security risks and uncertainty.                 |
| `breach`      | 0.75  | Traffic reached its lowest level in a week amid an ongoing standoff and conflicting claims about navigability.  |
| `primed`      | 0.9   | The waterway is affected by active hostilities and uncertainty over possible U.S.-Iran negotiations.            |
| `containment` | 0.1   | No rerouting, escort, reserve release, or restoration measure is reported.                                      |

$$
\frac{c + k + b + p + (1 - m)}{5} = \frac{0.95 + 0.85 + 0.75 + 0.90 + (1 - 0.10)}{5} = \frac{4.35}{5} = \mathbf{0.87}
$$

`propagation_potential` **= 0.87** — what `GET /api/v2/events` returns for this event.

### Britain seizes Russian tanker Smyrtos in English Channel

*United Kingdom · 2026-08-13*

A mid reading carried by breach and primed rather than by coupling. One vessel is detained, so there is little to be tightly coupled to — but it was a first, into an already-stressed situation.

| Sub-factor    | Value | The coder's reason                                                                                                 |
| ------------- | ----- | ------------------------------------------------------------------------------------------------------------------ |
| `channel`     | 0.55  | The seizure operates through maritime enforcement, sanctions compliance, and the stated risk of reciprocal action. |
| `coupling`    | 0.45  | The vessel is physically detained, but no broader operational dependency or immediate deadline is reported.        |
| `breach`      | 0.8   | The article describes the operation as the first of its kind.                                                      |
| `primed`      | 0.7   | The action occurs amid the ongoing Russia-Ukraine war and Putin’s warning of retaliation.                          |
| `containment` | 0.1   | No mediator, exemption, or other active de-escalatory measure is reported.                                         |

$$
\frac{c + k + b + p + (1 - m)}{5} = \frac{0.55 + 0.45 + 0.80 + 0.70 + (1 - 0.10)}{5} = \frac{3.40}{5} = \mathbf{0.68}
$$

`propagation_potential` **= 0.68** — what `GET /api/v2/events` returns for this event.

### Kyrgyz Ministry fines Talas market 200,000 som

*Kyrgyzstan · 2026-08-12*

The gate, closed. `channel` is 0.05, so the metric is 0 regardless of the other four — and 0 here is an assertion, not a missing value: nothing connects this fine to anything else.

| Sub-factor    | Value | The coder's reason                                                     |
| ------------- | ----- | ---------------------------------------------------------------------- |
| `channel`     | 0.05  | Only a single local enforcement action is identified.                  |
| `coupling`    | 0.05  | No tight deadlines, dependencies, or lack of substitutes are reported. |
| `breach`      | 0.05  | The title does not describe a first-time or unprecedented action.      |
| `primed`      | 0.05  | No broader crisis or stressed system is mentioned.                     |
| `containment` | 0     | No mediator, exemption, or other dampener is reported.                 |

$$
c = 0.05 \le 0.05 \;\Longrightarrow\; \text{propagation\_potential} = \mathbf{0}\quad(k,\,b,\,p,\,m\ \text{never enter})
$$

`propagation_potential` **= 0** — what `GET /api/v2/events` returns for this event.

## When it is `NULL`

Never `null`. A gated 0 asserts a fact — "no live transmission channel exists" — rather than an absence, so it must not be read as unknown. Instead the metric is ABSENT from the response entirely, in two cases: a conflict-family event (the four CAMEO+ metrics are omitted rather than returned as 0, since a 0 would assert "measured, and it is the minimum"), and an event coded before the `v2-2026-07-24` contract.

<Accordion title="What this number does not claim">
  These are the readings the definition does not support — building on one of them is building on a promise nobody made.

  * NOT a forecast and NOT a probability. It does not say a shock WILL travel, or how likely that is, or how many follow-on events there will be. A high score says the routes are open and the slack is gone.
  * A 0 is NOT a missing value, NOT a low-confidence answer, and NOT a bug. `channel ≤ 0.05` means no live transmission channel exists, so the event is self-contained and 0 is the TRUE value regardless of how dramatic it reads. Measured on a frozen week: 687 of 687 zeroed rows had the gate closed, zero unexplained.
  * `containment` does NOT add. It is the one inverted sub-factor in the whole metric set: a damper already acting reduces how far a shock travels, so it enters as (1 − containment). Reading it as additive inverts the meaning of that limb. It also scores only dampers the text says are ALREADY acting — never ones that exist on paper.

  What applies to all four metrics — the frameworks we adapt, how thin the registry coverage is, and the smallest single-event difference worth reading — is on [Limits and error bars](/metrics/limits).
</Accordion>
