NROL-AO is a self-hosted Bayesian epistemic engine for forecasting real-world events — built around one load-bearing principle: beliefs only move when the world moves. Every posterior change is traceable to a typed observation routed through a pre-committed likelihood. Humans and LLMs are perception: they notice, extract, and propose. The server alone is authority: it validates and commits.
A topic poses a question with a date-banded resolution (e.g. "when does Hormuz reopen?"). It carries mutually-exclusive hypotheses (H1, H2, …), each with a prior and a midpoint. Indicators are pre-committed, falsifiable signals — each with explicit likelihoods (LRs) saying how it moves each hypothesis if it fires. Anti-indicators are the inverse: their LRs are authored to suppress their targeted hypothesis.
When evidence matches an indicator, a typed transition (FIRE / OBSERVE / PARK / SCHEMA_GAP) is proposed. Only a validated, approved commit runs the Bayesian update — there is no freeform "set H3 to 0.72" path, even with approval.
The active (committed) posterior is moved only by approved typed commits through indicator likelihoods. It quantizes sub-threshold evidence to LR=1.0 and has only a deadline cliff for time.
The shadow posterior is a second, independent estimate computed from a model of how long these situations tend to last — not from news. The key idea it captures: elapsed time is itself evidence. If a strait has been closed 60 days with no reopening, that fact alone makes an early reopening less likely — and the shadow reflects it. The active posterior doesn't count this; it only moves when a specific news event fires an indicator.
The shadow is a guide, not the system. It never changes the real probabilities — it just gives you a second opinion to compare against. When the two disagree, the useful question is: is the active estimate ignoring how much time has passed?