The central thesis of Article 10 is that prediction should be simulation, not inference. This article describes the architecture that makes simulation possible for economic and supply chain systems: the constraint graph.

A constraint graph is a directed graph of measurable physical quantities connected by causal edges that encode known transfer functions. Each node represents a quantity that can be measured and updated from real-world data sources. Each edge represents a known relationship between two quantities, whether linear, threshold-based, or delay-based. The graph is the model. Simulation is the act of propagating current node values forward through the edges to compute future states.1

Nodes. A node is any physical quantity that satisfies three criteria. First, it must be measurable: there must be a public or obtainable data source that reports its current value. Mine production in millions of pounds, enrichment capacity in separative work units, reactor demand in gigawatts. Second, it must have physical bounds: upper and lower limits determined by geology, engineering, regulation, or economics. A mine cannot produce negative uranium. Enrichment capacity cannot exceed the installed centrifuge cascade throughput. Third, it must have a known update cadence: how frequently new measurements become available. SEC filings are quarterly. EIA reports are monthly. Spot prices are daily.

Each node also carries a confidence score between 0 and 1 that reflects the reliability of the current measurement. A node updated from a direct measurement (mine production reported by the operator) has high confidence. A node inferred from secondary sources (estimated inventory levels based on trade flow data) has lower confidence. The confidence score determines the width of the uncertainty band used in Monte Carlo simulation.

Edges. Edges encode the causal relationships between nodes. The relationship types are:

LINEAR

y = coefficient * x

The simplest relationship. Reactor demand = installed capacity (GW) times 0.4 Mlbs/GW/year. The coefficient is determined by the physics of nuclear fission and fuel burnup. It varies slightly by reactor type but the aggregate is stable.

THRESHOLD

y = f(x) with discontinuity at trigger value

Non-linear responses at critical values. When uranium spot price drops below $60/lb, new mine development ceases because the economics don't work. Above $80/lb, marginal ISR operations restart. The threshold creates a step function in the supply response curve. Threshold edges are the most predictively valuable because they identify price levels where behavior changes qualitatively.

DELAY

y(t) = f(x(t - lag))

Time-shifted relationships. A mine development decision made today produces first ore in 7-10 years. An enrichment plant expansion started today reaches full capacity in 5-7 years. Delay edges are what make supply-demand imbalances persistent: even when the market signals that more supply is needed, the physical infrastructure cannot respond for years.

DEPLETION

y(t) = y(t-1) * (1 - depletion_rate)

Resources that decline over time. ISR well field production drops 3-5% per year from peak. Government stockpiles draw down at a fixed annual rate. Depletion edges create an inherent clock: the available supply diminishes with each passing year unless new capacity is added.

Simulation. Forward simulation uses Monte Carlo methods to propagate uncertainty through the graph. For each of N scenarios (typically 200), the simulation samples each uncertain edge coefficient from a distribution determined by the edge's confidence. A coefficient of 0.85 with confidence 0.8 is sampled uniformly from [0.68, 1.02] (plus or minus 20 percent). A coefficient with confidence 0.5 is sampled from [0.51, 1.19] (plus or minus 40 percent). The wider the uncertainty, the more the scenarios diverge, which is exactly the behavior we want: the simulation's spread IS the uncertainty estimate, just as in ensemble weather forecasting.2

For each scenario, the simulation steps forward one month at a time. At each time step, it propagates values through linear and threshold edges, applies depletion functions, and checks delay edges to see if any lagged inputs have arrived. The output is a trajectory for every node across every scenario. From these trajectories, the simulation computes the median, 10th percentile, and 90th percentile for each node at each time step.

Bottleneck identification. The most valuable output of the simulation is not any single node trajectory. It is the identification of binding constraints: nodes where demand exceeds supply in a high fraction of scenarios. A node is flagged as a bottleneck when it reaches within 10 percent of its physical bound in more than 60 percent of scenarios. The bottleneck severity ranking orders these constraints by the fraction of scenarios in which they bind and the time horizon at which they bind.

This is the prediction that the constraint graph generates. Not "uranium will go up." Instead: "Western enrichment capacity becomes the binding constraint in month 14 in 73 percent of scenarios, with the bottleneck severity increasing to 89 percent by month 24." This prediction is specific, falsifiable, time-bounded, and physically grounded. It is also the kind of prediction that no amount of expert inference would produce, because it emerges from the interaction of multiple nodes rather than from any single observable trend.

The LLM as validator. The constraint graph generates predictions. The LLM's role is to validate them. After the simulation completes, a single Opus call reviews the top three bottleneck predictions with the prompt: "Given the current state of the uranium fuel cycle and recent industry developments, do these simulation-identified bottlenecks make physical sense? What constraint am I missing? What assumption might be wrong?" If the LLM flags a gap, a missing node or a miscalibrated edge, the flag is logged for human review. The predictions ship regardless. The system tracks whether graph-based predictions or LLM-based predictions score better over time, which is the meta-learning signal that guides future architecture decisions.

Comparison to probabilistic graphical models. The constraint graph shares DNA with Bayesian networks but differs in important ways. A Bayesian network represents probability distributions over random variables and infers posterior probabilities given evidence. A constraint graph represents physical quantities with known transfer functions and simulates forward trajectories. The Bayesian network answers "what is the probability of X given Y?" The constraint graph answers "what happens to X over the next 24 months given the current state of the system?" Both are directed acyclic graphs. Both can be used for prediction. But the constraint graph's predictions are grounded in physics rather than statistics, which makes them more interpretable and more robust to distribution shifts.3

References

  1. Pearl, J. (2009). Causality: Models, Reasoning, and Inference. 2nd ed. Cambridge University Press.
  2. Koller, D. & Friedman, N. (2009). Probabilistic Graphical Models: Principles and Techniques. MIT Press.
  3. Heckerman, D. (1995). "A Tutorial on Learning with Bayesian Networks." Microsoft Research Technical Report MSR-TR-95-06.
  4. Spirtes, P. et al. (2000). Causation, Prediction, and Search. 2nd ed. MIT Press.