docs/corrections.mdx
WorldMonitor's Energy Atlas publishes evidence bundles — not opinions —
for pipelines, storage facilities, fuel shortages, and disruption
events. A deterministic, versioned classifier turns those bundles into
public badges (flowing / reduced / offline / disputed for
assets; confirmed / watch for shortages).
When the classifier goes live, every time it changes a public field — because evidence updated, because staleness decayed a badge, because a new classifier version re-derived an old asset, or because an operator/regulator-submitted correction was applied — it will write an append-only entry here.
This is the designed audit surface. The evidence registries themselves are forward-looking snapshots; this log, once live, will be the history of how each status arrived at where it is today.
Each entry is planned as a row with the following fields:
{
date: string, // ISO8601 — when the change was written
assetOrEventId: string, // matches an id in the pipeline / storage / shortage / disruption registry
fieldChanged: string, // e.g. 'publicBadge', 'physicalState', 'severity', 'evidence.sanctionRefs'
previousValue: unknown, // value before the change
newValue: unknown, // value after the change
trigger: 'classifier' | 'source' | 'decay' | 'override',
sourcesUsed: string[], // URLs cited by the classifier for this change
classifierVersion: string, // version that produced newValue (e.g. 'badge-deriver-v1')
}
The matching proto surface lives at
GetPipelineDetail.revisions and GetStorageFacilityDetail.revisions.
Both currently return empty arrays by design — the handlers document
"Revision log arrives in a post-launch release" in their code comments
rather than pretending the surface is live.
classifier — a routine classifier pass re-derives the field
from the current evidence bundle. Expected to be the most common
trigger once live.source — a new evidence source arrives (regulator filing,
operator press release, sanction list update) and the classifier
re-derives accordingly.decay — the evidence is older than the staleness window
(14 days for registry fields, 30 days for shortage evidence) and the
classifier demotes a non-positive badge to disputed or watch.override — a break-glass manual override is applied. Reserved
for demonstrably-wrong classifier outputs flagged by readers.
Overrides will carry the same sourcesUsed discipline as classifier
entries.classifier_version field. A reader can pin expectations to a
version today even though the revision-log history-of-versions
surface isn't yet published.override-trigger entry writer. Same dependency: ships with the
classifier.Until the revision log is live, the audit path for any status on the Energy Atlas is:
regulator / operator / press /
satellite).override entries once the
revision log ships.Two reasons to publish the spec before the writer lands:
revisions in
GetPipelineDetail.revisions / GetStorageFacilityDetail.revisions
is part of the RPC contract that agents and MCP clients consume.
Documenting it now means downstream consumers can code against the
stable shape before live data arrives.Neither reason justifies overstating the current state. When live
entries start appearing on this page, the Status callout at the top
will be replaced with a "last updated" timestamp and the "NOT live"
section will be removed.