The risk register contained 47 supply chain risks across six categories. Each was scored on likelihood × impact — all marked "managed." There was no row for the scenario where all three suppliers fail on the same Tuesday because all three depended on the same upstream fab. That scenario had a probability near zero if the risks were independent, and near certainty if they weren't. The register had no mechanism to distinguish the two.

Analysis ComponentStandard ScorecardCausal Model
Supplier independenceclear
Geographic labels — three countries, three companiesTraces Tier 2 and Tier 3 upstream dependencies; finds shared fab
Simultaneous failureclear
Not modeled — risks scored as independent rowsCommon-cause nodes encode shared upstream exposure; tail correlation is explicit
Intervention valueclear
Cannot compute — no mechanism for counterfactualdo(add independent source): 85% reduction. do(add same-fab source): 12%
Root cause attributionclear
5 Whys, fishbone — contributing factors, no causal weightsP(shutdown | no port delay) = 0.72 — port was amplifier, not cause
Geographic labels are not causal independence. The scorecard showed three suppliers across three countries. The causal model showed one upstream fab with three customer names.
3 Questions, 3 Rungs
  1. What actually caused the $23M loss? — Rung 3 (Counterfactual). Answering it requires holding all actual conditions fixed and computing what would have changed if we had acted differently on each proposed root cause. The post-mortem attribution of the port as a cause required running P(shutdown | do(no port delay)) to test whether removing that factor changed the outcome; Supply Chain Maturity is the confounder that must be anchored before any single-variable counterfactual is applied.
  2. What will happen if we change our supply structure? — Rung 2 (Intervention). do() separates the causal effect of genuine upstream diversification from same-fab dual-sourcing that shares the dependency and produces only 12% risk reduction at the same cost. The graph distinguishes these two structurally identical-looking decisions; the scorecard cannot.
  3. Were our suppliers truly independent? — Rung 1 (Association). Entering supply events as observed evidence reveals which upstream nodes update simultaneously, exposing the hidden common causes — TSMC Allocation, Rare Earth Export Policy, Port Congestion — that the scorecard treated as independent rows.

Reading the screenshots: a black check mark on a node means it has been set as observed evidence — a fact entered into the model, acting as a filter. A red check mark means it has been set as a do intervention — a decision applied to the model, severing the influence of its parents.

Reading the spec tables: each Run the Analysis block lists the exact steps to reproduce each screenshot in Bayes Server. The Obs / Do column uses three italic control tokens: clear — reset the model to a blank no-evidence state; abduction step — enter the factual observations that anchor the U nodes to this specific case; use abduction result — apply a do() intervention with the U nodes held from the abduction step.

Rung 3 — Counterfactual

What actually caused the $23M loss?

“If we had acted differently on each of the proposed root causes, would the stoppage still have happened?”

Rung 2 gives the average effect of changing a supply structure across a population of similar events. The board asked a narrower question: in this specific disruption, with these specific conditions, which factors were genuinely causal and which were amplifiers? That requires holding the actual observed world fixed and asking what would have changed if we had altered just one thing — the definition of a Rung 3 counterfactual.

Answer

The port was not the root cause — and the proposed $2M logistics investment would have prevented almost nothing. do(Port Congestion = Normal) left shutdown probability near 49.7%: near the 44.5% prior, confirming the port was an amplifier, not a cause. Qualifying a genuinely independent semiconductor source reduced shutdown probability from 44.5% to 16.4% — a 63% reduction — because it collapsed Semiconductor Availability risk from Allocated 69.6% to 3.8%. Safety stock alone produced only a modest reduction, because a buffer buys time but does not survive a prolonged allocation event. The post-mortem had attributed blame to the wrong variable, and the $2M misdirection was the cost of not running the counterfactual model.

SupplyChainRisk-AllRungs.bayes
ImageObs / DoNodeSetResult
sc-cf-priorclear
Yes 44.5% prior probability
sc-cf-abductionclear
obsSupplier AConstrained
obsSupplier BConstrained
obsSupplier CConstrained
obsProduction StoppageYesU nodes anchored — then release this obs
sc-cf-noportclear
Production StoppagereleasedQuery node — read it, do not hold it
doPort CongestionNormal49.7% — near unchanged
sc-cf-indsourceclear
doSource IndependenceIndependent Fab16.4% — 63% reduction
sc-cf-bufferclear
doSafety StockAdequate46.7% — modest; not the root cause
Supply Chain Root Cause — prior, baseline shutdown probability
Prior — baseline shutdown probability

Baseline before any counterfactual is applied. All four proposed root causes at their actual observed states during the disruption.

Factor5 Whys SaysCounterfactual Model Says
Sole-source semiconductorclear
Root cause — no alternate existeddo(Source Independence = Independent Fab): P(shutdown) drops from 44.5% to 16.4%. Dominant cause — 63% reduction. Semiconductor Availability Allocated collapses from 69.6% to 3.8%.
Low safety stockclear
Contributing cause — only 3 weeks on handdo(Safety Stock = Adequate): P(shutdown) = 46.7%. Modest reduction alone — buffer buys time but cannot survive a prolonged allocation event.
Port congestionclear
External cause — beyond our controldo(Port Congestion = Normal): P(shutdown) = 49.7%. Amplifier, not cause. The semiconductor shortage existed independently of the port.
Demand spikeclear
Contributing cause — forecast was wrongGlobal Tech Cycle (Contraction 74.8% after abduction) is the upstream driver of both demand and TSMC allocation. Structural vulnerability, not forecasting error, was the dominant factor.
Supplier Recovery Claim

The question of what portion of the $23M loss was caused by the supplier versus own decisions is itself a counterfactual. If a 6-week buffer would have reduced the loss to $7M, the supplier’s causal contribution is approximately $16M — not $23M (total loss) and not $0 (because adequate buffers were not maintained). That framing is what makes a recovery claim defensible.

Rung 2 — Intervention

What will happen if we change our supply structure?

“If we add a second source, or increase buffer stock, or nearshore — what does each intervention actually do to our risk?”

The problem with observational data is that every historical resilience decision was made in a specific supply environment — and that environment does not exist in the new structure. Sourcing from a second supplier sounds like diversification; sourcing from a second supplier that shares the same upstream fab is cosmetic. The causal model tests each proposed change using the do() operator, which severs the incoming arrows to the intervention node and shows only the causal effect of the change, separated from everything that historically accompanied it.

Answer

Dual-sourcing from the same fab worsened risk — and genuine independence reduced it by 69%. do(Source Independence = Same Fab) raised Production Stoppage from 44.5% to 55.5%, because forcing all sourcing through a same-fab path concentrates TSMC dependency. do(Source Independence = Independent Fab) dropped it to 14.0%, collapsing Semiconductor Availability Allocated from 30.8% to 2.4%. do(Safety Stock = Adequate) alone produced only a 9% reduction to 40.6% — the buffer absorbs short events but leaves the structural dependency intact. The board’s proposed fix was correct in direction but couldn’t distinguish these outcomes, because it scored the supplier, not the supply chain. The scorecard cannot perform this comparison, because it has no causal graph.

SupplyChainRisk-AllRungs.bayes
ImageObs / DoNodeSetResult
sc-int-baselineclear
Yes 44.5% prior probability
sc-int-samefabclear
doSource IndependenceSame Fab55.5% — worsens from prior
sc-int-indfabclear
doSource IndependenceIndependent Fab14.0% — 69% reduction
sc-int-bufferclear
doSafety StockAdequate40.6% — 9% reduction
Supply Chain Interventions — baseline, no do intervention applied
Baseline — no intervention

Baseline before any intervention. Sole-source dependency intact. This is the state that produced the $23M disruption.

Interventiondo(X)What the Model Computes
Dual-source critical componentdo(Source Independence = Independent Fab)Production Stoppage drops from 44.5% to 14.0% with truly independent upstream — Semiconductor Availability Allocated collapses to 2.4%. Rises to 55.5% if the second source shares the same fab, because it concentrates more TSMC dependency. The graph distinguishes these — the scorecard cannot.
Increase safety stockdo(Safety Stock = Adequate)Production Stoppage drops only to 40.6% — a 9% reduction. Semiconductor Availability is unchanged; the buffer absorbs short disruptions but cannot survive a prolonged allocation event. Effective as a complement to source independence, not a substitute.
Nearshore from Asia to Mexicodo(move supplier from Shenzhen to Monterrey)Transit risk drops but introduces US—Mexico border exposure. Net reduction depends on whether that profile correlates with the rest of the supply chain.
Vertical integrationdo(acquire Tier 2 supplier)Eliminates allocation risk; introduces operational risk. Net effect depends on demand volatility — beneficial in stable demand, costly in volatile. The model computes the crossover point.

Before investing $5M in dual sourcing, ask: does the decision change if the second source shares upstream dependencies? If it does, that information is worth obtaining first. If buffer stock alone is sufficient regardless, the investigation is unnecessary. This is Value of Information analysis — and it typically saves more than it costs.

Rung 1 — Association

Were our three suppliers truly independent?

“When we observe a supply event with one supplier, what updates across the rest of the network?”

At Rung 1 the model runs as a filter: enter what you know, read what updates. The graph encodes which dependencies exist — and which nodes are genuinely connected through shared upstream causes. When a TSMC allocation event is entered as observed evidence, the model shows which downstream suppliers update and by how much. The scorecard treats each row as independent; the graph reveals which rows are actually one event with three labels.

Answer

Observing a TSMC constraint immediately updated all three suppliers simultaneously — because all three traced to the same upstream fab. obs(TSMC = Constrained) pushed Supplier A to 85.5% Constrained, Supplier B to 84.9%, and Supplier C to 92.1% — a full cascade from one piece of observed evidence. Supplier A sourced directly from TSMC. Supplier B sourced through a German broker using the same fab. Supplier C supplied the subassembly that Supplier B required, making it a de facto Tier 2 node on the same dependency chain. obs(Rare Earth Policy = Restricted) revealed a second cascade: Supplier B to 59.7% Constrained, Geopolitical Trade Tension updating to 74.3% High. obs(Port Congestion = High) revealed a third: GTT to 65.3% High, pulling Rare Earth Policy to 38.1% Restricted through the shared confounder. The graph encodes four upstream drivers that create hidden correlation — TSMC Allocation and Global Tech Cycle on the semiconductor side; Rare Earth Policy and Geopolitical Trade Tension on the logistics side — that the scorecard treated as independent rows.

SupplyChainRisk-AllRungs.bayes
ImageObs / DoNodeSetResult
sc-hc-priorclear
Prior marginals — suppliers appear independent
sc-hc-tsmcclear
obsTSMC AllocationConstrainedSupplier A 85.5%, B 84.9%, C 92.1% — all update
sc-hc-rareearthclear
obsRare Earth PolicyRestrictedSupplier B 59.7%, GTT updates to High 74.3%
sc-hc-portclear
obsPort CongestionHighGTT High 65.3%, Logistics Delay High 61.4%
Supply Chain Hidden Correlations — prior, three suppliers appear independent before any observed evidence is entered
Prior — no observed evidence set

Three suppliers appear independent at prior. The graph already encodes the hidden common causes — TSMC Allocation, Rare Earth Export Policy, Port Congestion — the structure is visible before any evidence is entered.

Download this model →

The structural failure

Supply chain risk tools score nodes in isolation. Disruptions propagate through edges. A node-scoring approach is structurally incapable of modeling cascade, correlation, or intervention — because those are properties of connections, not of individual suppliers. This is the same structural problem as The Aggregation Problem — physical rather than financial, but the mathematical failure is identical.

The team qualified a single genuinely independent semiconductor source — a Korean fab with no TSMC upstream exposure and a different logistics corridor. They increased buffer stock to six weeks on the critical component. Total investment: $3.1M across qualification costs, buffer stock, and working capital.

In the twelve months following, four disruption events that would previously have reached the production line were absorbed:

EventPrevious Outcome (estimated)Actual OutcomeSaving
TSMC allocation reduction, Q1clear
12-day stoppageKorean source covered 100% of shortfall$4.1M
Rotterdam port slowdown, Q2clear
5-day delay6-week buffer absorbed entirely$1.9M
Supplier B quality hold, Q3clear
8-day partial stoppageKorean source + buffer: no line impact$1.7M
Malaysian logistics disruption, Q4clear
3-day delayRerouted through German corridor$0.7M

The Bottom Line

  • The scorecard said "three independent suppliers." The model said "one fab, three labels." The model was right.
  • The proposed fix (dual-sourcing) was correct in direction but would have delivered 12% risk reduction. The right fix delivered 85%.
  • The port was not the root cause. Counterfactual analysis prevented $2M in misdirected logistics investment.
  • $3.1M investment. $8.4M recovered in year one. Payback in 4.3 months.

Each model is the formal structure underlying one of the three questions on this page. Download, set evidence on any node, run inference. The model does the calculation — you observe where the scorecard was wrong.

SupplyChainRisk-AllRungs.bayes — Rung 3
8-node SCM with Market Concentration Risk as the confounder (drives both Source Independence and Semiconductor Demand Spike) and U_Source / U_Stoppage exogenous noise nodes. Abduct to the actual disruption; then: do(Port=Absent) → 72%, do(Source=Independent) → 11%, do(+Stock=6wk) → 5%. Port delay was an amplifier, not the cause.
SupplyChainRisk-AllRungs.bayes — Rung 2
7-node intervention model with Supplier Concentration Environment as the confounder. do(Second Source = Same Fab) → 59% (12% reduction); do(Second Source = Independent Fab) → 11% (85% reduction); do(+Safety Stock=6wk) → 4%. Compare do() vs obs() to see how much of the apparent benefit from independent sourcing is confounded by the structural market environment.
SupplyChainRisk-AllRungs.bayes — Rung 1
18-node hidden correlation model. Three “independent” suppliers sharing upstream causes: TSMC Allocation, Rare Earth Export Policy, Port Congestion. Set obs(TSMC = Constrained): all three supplier nodes update simultaneously. The independence assumption collapses when the hidden common causes are made explicit.

All models require Bayes Server (free edition available). See Download Models for the full library.

Next Step

Every manufacturer has a critical path where the scorecard says “managed” but the team knows a single failure cascades. The causal model finds that path — and quantifies what it would cost to move it.

The models are free. What I provide is the judgment to build the right structure for your specific situation, encode your experts’ knowledge into it, and turn the output into decisions your board can act on. The discipline stays with your team.

info@rung3.ai

This case is a composite drawn from published supply chain literature and practice. Specific figures are representative. No individual organization or engagement is described. The Bayes Server models are working files: download, set evidence, and run inference.