Summary: Coverage-depth: deepened SIPRI 2025 defense-spending coverage with seven additional national spenders — Germany ($114bn, +24%), India ($92.1bn, +8.9%), United Kingdom ($89.0bn, −2.0%), Ukraine ($84.1bn, +20%), Saudi Arabia ($83.2bn, +1.4%), France ($68.0bn, +1.5%), and Japan ($62.2bn, +9.7%) — verified against SIPRI's 2025 press release (same release/basis as the existing top-3). Live observations rose from 47 to 54. This is the first record-additive release; versioned provenance is now derived per version from its own frozen payload, so prior versions keep available provenance. The export gained coverageDepthVersion. Export version bumped to 1.187.0.


Summary: Added the methodology and conformance batch (Trains 136–140): data-caveats, source-hierarchy, and refresh-policy methodology pages, answer-engine documentation reconciliation, and a final extension audit (an answer-engine audit group on /data-audit plus a 150-item marathon backlog). The export gained dataCaveatsMethodologyPath, sourceHierarchyMethodologyPath, refreshPolicyMethodologyPath, and answerEngineAuditVersion. No data values changed. Export version bumped to 1.186.0.


Summary: Added the structured-data and crawler batch (Trains 131–135): a schema-type export (/structured-data/schema-types.json), a structured-data coverage matrix (/structured-data/coverage), a full LLM crawler brief (/llms-full.txt), a crawl-priorities export (/crawler-guide/priorities.json), and a static-API methodology page (/methodology/static-api). These document and index existing JSON-LD and static endpoints; no data values changed. The export gained schemaTypesPath, structuredDataCoveragePath, llmsFullPath, crawlerPrioritiesPath, and staticApiMethodologyPath. Export version bumped to 1.185.0.


Summary: Added the answer-engine navigation batch (Trains 126–130): an answer-hub coverage page (/answer-hubs), a query-to-route matrix (/queries) with CSV/JSONL exports, and FAQ-by-caveat grouping (/faq/caveats) with FAQ CSV/JSONL exports. These are navigation and serialization surfaces over existing source-linked content; no data values changed. The export gained answerHubsPath, queriesPath, queryMatrixCsvPath, queryMatrixJsonlPath, faqCaveatsPath, faqCsvPath, and faqJsonlPath. Export version bumped to 1.184.0.


Summary: Capped versioned HTML detail prerendering to the latest 10 materialized versions to bound build cost (static-page growth). Older versions stay fully available as machine-readable JSON (data/diff/provenance) and are listed honestly in the version registry with htmlDetailAvailable:false — no HTML page is fabricated. /changes and /versions explain the cap; the export gained versionHtmlDetailLimit and the registry gained per-version htmlDetailAvailable/dataJsonAvailable/diffJsonAvailable. No data values changed. Export version bumped to 1.183.0.


Summary: Added a build-cost audit at /performance/build-cost (+ data.json): static pages attributed by route family, computed from the route and static-param registries, showing versioned routes dominate and how many pages each release adds. The export gained buildCostPath and buildCostJsonPath. No data values changed. Export version bumped to 1.182.0.


Summary: Surfaced route-purpose badges on each HTML entry in the /routes catalog, showing the purpose and audience of every page inline. The export gained routePurposeBadgeVersion. No data values changed. Export version bumped to 1.181.0.


Summary: Added a route-purposes page at /routes/purposes classifying every public page by what it is for and who it serves, grouped by purpose. The export gained routePurposesPath. No data values changed. Export version bumped to 1.180.0.


Summary: Added machine-readable entity exports at /entities/data.json, .csv, and .jsonl (one row per modeled entity with its type). The export gained entitiesJsonPath, entitiesCsvPath, and entitiesJsonlPath. No data values changed. Export version bumped to 1.179.0.


Summary: Added an entities catalog at /entities listing every modeled subject — countries, commodities, conflicts, and chokepoints — grouped by type. The export gained entitiesPath. No data values changed. Export version bumped to 1.178.0.


Summary: Added machine-readable metric exports at /metrics/data.json, .csv, and .jsonl (one row per metric definition). The export gained metricsJsonPath, metricsCsvPath, and metricsJsonlPath. No data values changed. Export version bumped to 1.177.0.


Summary: Added a metrics catalog at /metrics: every metric definition with its unit, category, plain-language description, and observation count. The export gained metricsCatalogPath. No data values changed. Export version bumped to 1.176.0.


Summary: Added machine-readable unit exports at /units/data.json, .csv, and .jsonl (one row per unit with definition and comparability note). The export gained unitsJsonPath, unitsCsvPath, and unitsJsonlPath. No data values changed. Export version bumped to 1.175.0.


Summary: Documented unit comparability at /methodology/unit-comparability: the rules for when two figures sharing a unit can be compared — currency basis, nominal vs real, vintage, geography, definition, and index base period must all match. The export gained unitComparabilityPath. No data values changed. Export version bumped to 1.174.0.


Summary: Added a units reference at /units: every unit used across the indicators with a short definition and a comparability note on when values in that unit can be compared. The export gained unitsPath. No data values changed. Export version bumped to 1.173.0.


Summary: Added machine-readable catalog exports at /catalog/data.json (sources + cross-linked indicators), .csv, and .jsonl. The export gained catalogJsonPath, catalogCsvPath, and catalogJsonlPath. No data values changed. Export version bumped to 1.172.0.


Summary: Added a combined catalog at /catalog cross-linking sources and indicators: every indicator resolves to the source that backs it and every source shows how many indicators it backs. The export gained combinedCatalogPath. No data values changed. Export version bumped to 1.171.0.


Summary: Added machine-readable indicator-collection exports at /indicators/collections/data.json, .csv, and .jsonl (one row per observation with its category). The export gained indicatorCollectionJsonPath, indicatorCollectionCsvPath, and indicatorCollectionJsonlPath. No data values changed. Export version bumped to 1.170.0.


Summary: Added an indicator collection page at /indicators/collections grouping every observation by metric category — energy, shipping, food, defense, markets, trade, macro — with each row labeled live or sample. The export gained indicatorCollectionPath. No data values changed. Export version bumped to 1.169.0.


Summary: Added machine-readable source-collection exports at /sources/collections/data.json, .csv, and .jsonl (one row per source with its type). The export gained sourceCollectionJsonPath, sourceCollectionCsvPath, and sourceCollectionJsonlPath. No data values changed. Export version bumped to 1.168.0.


Summary: Added a source collection page at /sources/collections grouping every cited source by type — official, intergovernmental, academic, market, industry — with per-source usage counts. The export gained sourceCollectionPath. No data values changed. Export version bumped to 1.167.0.


Summary: Added per-version badges surfacing how many export fields each version added and whether its payload is frozen, shown on /versions/compare. The export gained versionBadgeVersion. No data values changed. Export version bumped to 1.166.0.


Summary: Added machine-readable version-comparison exports at /versions/compare/data.json, .csv, and .jsonl. The export gained versionComparisonJsonPath, versionComparisonCsvPath, and versionComparisonJsonlPath. No data values changed. Export version bumped to 1.165.0.


Summary: Added a version comparison table at /versions/compare: every materialized version side by side with its field count, fields added, graph totals, and frozen-payload status — derived from the append-only snapshot ladder. The export gained versionComparisonPath. No data values changed. Export version bumped to 1.164.0.


Summary: Documented the changelog taxonomy at /methodology/changelog-taxonomy: the change kinds the update log records — data, editorial, source — and what each means for sourced values, grounded in the real kind enum. The export gained changelogTaxonomyPath. No data values changed. Export version bumped to 1.163.0.


Summary: Added machine-readable issue exports at /issues/data.json (categories + counts + instances), .csv, and .jsonl. The export gained issuesJsonPath, issuesCsvPath, and issuesJsonlPath. No data values changed. Export version bumped to 1.162.0.


Summary: Wired live issue instances to the records they affect on /issues — derived only from real data signals (stale figures, sample rows, contested claims), each pointing to its record by type--id key. Never a fabricated incident log. The export gained issuesWiredVersion. No data values changed. Export version bumped to 1.161.0.


Summary: Added an issues taxonomy at /issues: the categories of data problems we track — stale figures, coverage gaps, sample-pending-live, source health, overdue reviews, contested claims, and definition ambiguity — each routed to the surface that monitors it. A classification of issue types, not a fabricated incident log. The export gained issuesTaxonomyPath. No data values changed. Export version bumped to 1.160.0.


Summary: Added machine-readable freshness exports at /freshness/data.json, .csv, and .jsonl (one row per live observation). The export gained freshnessJsonPath, freshnessCsvPath, and freshnessJsonlPath. No data values changed. Export version bumped to 1.159.0.


Summary: Added a per-figure freshness dashboard at /freshness: every live observation with its as-of date, source cadence, and current/aging/stale status, computed from the data. A re-check signal, not a correctness claim. The export gained freshnessDashboardPath. No data values changed. Export version bumped to 1.158.0.


Summary: Documented the freshness policy at /methodology/freshness: what current, aging, and stale mean and the cadence-aware thresholds (monthly vs annual vs unknown) behind them — a re-check signal against each source's cadence, not a correctness claim. The export gained freshnessMethodologyPath. No data values changed. Export version bumped to 1.157.0.


Summary: Added machine-readable confidence-distribution exports at /confidence/data.json, .csv, and .jsonl. The export gained confidenceJsonPath, confidenceCsvPath, and confidenceJsonlPath. No data values changed. Export version bumped to 1.156.0.


Summary: Added a live confidence breakdown at /confidence: counts of high, medium, and low confidence across every observation and claim, computed from the data. The export gained confidencePath. No data values changed. Export version bumped to 1.155.0.


Summary: Documented the confidence rubric at /methodology/confidence: what high, medium, and low confidence mean and when each is assigned — a conservative, stated signal of how directly a value is source-reported, not a statistical error bar. The export gained confidenceRubricPath. No data values changed. Export version bumped to 1.154.0.


Summary: Added machine-readable caveat exports at /caveats/data.json, .csv, and .jsonl. The export gained caveatsJsonPath, caveatsCsvPath, and caveatsJsonlPath. No data values changed. Export version bumped to 1.153.0.


Summary: Added inline caveat badges next to affected figures, linking to the relevant standing caveat at /caveats with the caveat text in reach. The export gained caveatBadgeVersion. No data values changed. Export version bumped to 1.152.0.


Summary: Added a caveats registry at /caveats: every standing caveat that applies across the product — not real-time, partial coverage, sample labeling, associative-not-causal, benchmark prices, economic-impact scope, source-reported values, and frozen versions — each listing the surfaces it applies to. The export gained caveatsPath. No data values changed. Export version bumped to 1.151.0.


Summary: Added machine-readable claims exports at /claims/data.json, .csv, and .jsonl. The export gained claimsJsonPath, claimsCsvPath, and claimsJsonlPath. No data values changed. Export version bumped to 1.150.0.


Summary: Added a claims catalog at /claims: every qualitative claim in the dataset joined to its source and carrying its confidence and live/sample mode — associative, not causal. The export gained claimsPath. No data values changed. Export version bumped to 1.149.0.


Summary: Added machine-readable validation-matrix exports at /validation/data.json, .csv, and .jsonl (one row per surface × dimension cell). The export gained validationMatrixJsonPath, validationMatrixCsvPath, and validationMatrixJsonlPath. No data values changed. Export version bumped to 1.148.0.


Summary: Added a validation matrix at /validation: a coverage map of which checks — sourcing, labeling, schema validity, catalog reconciliation, no-overclaim, and versioning — guard which surfaces, naming the test that enforces each cell. A coverage map of the local checks, not a live test runner. The export gained validationMatrixPath. No data values changed. Export version bumped to 1.147.0.


Summary: Added a fact-intake checklist at /methodology/fact-intake: the attributes every qualitative claim must carry — a single associative statement, a sourceId, a confidence level, an economic-impact scope, and framing that never implies real-time or complete coverage. The export gained factIntakePath. No data values changed. Export version bumped to 1.146.0.


Summary: Added an observation-intake checklist at /methodology/observation-intake: the fields every live or sample figure must carry — value and unit, live/sample mode, sourceId, confidence, as-of and last-reviewed dates, and a subject link — mirroring the observation schema. The export gained observationIntakePath. No data values changed. Export version bumped to 1.145.0.


Summary: Added a source-intake checklist at /methodology/source-intake: the fields every new source must carry before inclusion — stable id, publisher, deep link, access date, type/tier, and reuse terms — mirroring the source schema. The export gained sourceIntakePath. No data values changed. Export version bumped to 1.144.0.


Summary: Documented the local commands the contract relies on at /maintainers/commands: the lint/test/build/audit:data release gate plus what each command guards — all local, dependency-free, with no secrets or remote calls. The export gained maintainerCommandsPath. No data values changed. Export version bumped to 1.143.0.


Summary: Added a maintainer-facing index at /maintainers gathering the surfaces that keep the contract honest — health and status, audits and integrity, provenance and versions, and the release process. The export gained maintainersPath. No data values changed. Export version bumped to 1.142.0.


Summary: Added machine-readable release-checklist exports at /methodology/release-checklist/data.json, .csv, and .jsonl so the release process is consumable as data. The export gained releaseChecklistJsonPath, releaseChecklistCsvPath, and releaseChecklistJsonlPath. No data values changed. Export version bumped to 1.141.0.


Summary: Documented the per-release checklist at /methodology/release-checklist: the ordered steps every additive release follows across build, version & freeze, verify, and ship — including advertising one new field, freezing a byte-stable payload, and reconciling the catalog. The export gained releaseChecklistPath. No data values changed. Export version bumped to 1.140.0.


Summary: Documented the resource lifecycle at /methodology/resource-lifecycle: the seven stages every resource passes through — proposed, sourced, drafted, reviewed, published, maintained, and superseded/retired — each with its gate, including the no-silent-deletion rule. The export gained resourceLifecyclePath. No data values changed. Export version bumped to 1.139.0.


Summary: Added a sitemap-style resource map at /resources/map: every public resource grouped by audience — developers, analysts, journalists, educators, AI crawlers, and general discovery — and labeled by format (HTML, JSON, CSV, JSONL, schema). The export gained resourceMapPath. No data values changed. Export version bumped to 1.138.0.


Summary: Upgraded the dataset landing page to v3: a single, scannable resource directory that groups every consumer-contract surface by what you are trying to do — get the data, understand the shape, validate & trust, track changes, and cite & reuse. The export gained landingDirectoryVersion. No data values changed. Export version bumped to 1.137.0.


Summary: Final base-extension audit: reconciled every consumer-contract surface added across the extension, confirmed the route catalog, sitemaps, frozen payloads, and checksums stay internally consistent, and expanded docs/consumer-contract-backlog.md to a prioritized list of 100+ additive, static, backward-compatible items. The export gained baseExtensionAuditVersion. No data values changed. Export version bumped to 1.136.0.


Summary: Added a catalog reconciliation audit to npm run audit:data: every concrete advertised *Path in the export (and the surface/bundle/download export paths) is verified to resolve to a real route in the route catalog, so the contract can never advertise a dead link. The export gained catalogReconciliationVersion. No data values changed. Export version bumped to 1.135.0.


Summary: Added a cautious-language style guide at /methodology/style-guide: prefer associative over causal phrasing, treat prices as benchmarks, state as-of/review dates rather than real-time, acknowledge partial coverage, label sample rows, and stay within an economic-impact scope — the rules the no-overclaim audit enforces. The export gained styleGuidePath. No data values changed. Export version bumped to 1.134.0.


Summary: Expanded the no-overclaim audit sitewide: npm run audit:data now scans every page for forbidden phrasing ("real-time data/tracking", un-negated "complete coverage", "guarantee(s)") and confirms the global caveats remain present. The export gained noOverclaimAuditVersion. No data values changed. Export version bumped to 1.133.0.


Summary: Added glossary CSV/JSONL distributions v2 at /glossary/data.csv and /glossary/data.jsonl, now including category, linked-page count, and related paths per term. The export gained glossaryCsvPath, glossaryJsonlPath, and glossaryExportVersion (2). No data values changed. Export version bumped to 1.132.0.


Summary: Added glossary ↔ data cross-links: a reverse index (path → glossary terms) surfaced on /glossary and a full forward+reverse machine export at /glossary/crosslinks.json. The export gained glossaryCrosslinksPath and glossaryCrossLinksVersion. No data values changed. Export version bumped to 1.131.0.


Summary: Added the machine-readable data model export at /data-model/data.json mirroring the data model page. The export gained dataModelJsonPath. No data values changed. Export version bumped to 1.130.0.


Summary: Added a human-readable data model at /data-model describing the six core entities (Source, MetricObservation, IndicatorSeries, CitationFact, ProvenanceRecord, VersionDiff), their key fields, relationships, and authoritative JSON Schema. The export gained dataModelPath. No data values changed. Export version bumped to 1.129.0.


Summary: Added CSV and JSONL serializations of the identifier crosswalks at /crosswalks/data.csv and /crosswalks/data.jsonl. The export gained crosswalksCsvPath and crosswalksJsonlPath. No data values changed. Export version bumped to 1.128.0.


Summary: Added identifier crosswalks at /crosswalks (and /crosswalks/data.json): for every record, the equivalent addresses across Warconomy's id and path schemes (record key, id, page, JSON, record history). The export gained crosswalksPath and crosswalksJsonPath. No data values changed. Export version bumped to 1.127.0.


Summary: Added the machine-readable cluster index at /clusters/data.json mirroring the clusters page. The export gained clustersJsonPath. No data values changed. Export version bumped to 1.126.0.


Summary: Added a clusters page at /clusters: a navigational rollup of the canonical categories with each cluster's pages, live/sample counts, and source counts. A grouping view, not a statistical clustering model. The export gained clustersPath. No data values changed. Export version bumped to 1.125.0.


Summary: Added a search examples page at /search/examples: canonical questions mapped to their best source-linked surface (from the query manifest), doubling as example queries for the static search. The export gained searchExamplesPath. No data values changed. Export version bumped to 1.124.0.


Summary: Added a standalone query manifest (v2) at /datasets/conflict-economic-impact/queries.json: every canonical query intent mapped to its best citation surface, with surface-type counts, backing record ids, and caveats — richer than the hub summary. The export gained queryManifestPath and queryManifestVersion. No data values changed. Export version bumped to 1.123.0.


Summary: Added a crawler guide at /crawler-guide for AI and search crawlers: where the machine-readable surfaces are, a recommended crawl path, and the honesty caveats to carry into any citation. Complements llms.txt. The export gained crawlerGuidePath. No data values changed. Export version bumped to 1.122.0.


Summary: Added a journalist guidance page at /journalists: cite the original source (not the aggregator), use ready-made citations with dates and versions, check review status, avoid causal overclaims, and never cite sample rows. The export gained journalistsPath. No data values changed. Export version bumped to 1.121.0.


Summary: Added an analyst guidance page at /analysts: how to pull the machine-readable export, pin a version for reproducibility, check provenance/coverage and confidence, and compare like-for-like (benchmarks tracked alongside risk, not causal attributions). The export gained analystsPath. No data values changed. Export version bumped to 1.120.0.


Summary: Added an educator/student guidance page at /education on using Warconomy to teach data literacy: tracing figures to sources, live vs sample, confidence and freshness, version pinning for reproducibility, and cautious non-causal language. The export gained educationPath. No data values changed. Export version bumped to 1.119.0.


Summary: Added a spreadsheets guide at /developers/spreadsheets: pull CSV distributions into Google Sheets (IMPORTDATA) or Excel (Data → From Web / Power Query); refresh re-reads the current file but is not a live feed. The export gained spreadsheetsPath. No data values changed. Export version bumped to 1.118.0.


Summary: Added an R guide at /developers/r: read.csv for CSV distributions and jsonlite for the JSON export, then filter to live observations. The export gained rPath. No data values changed. Export version bumped to 1.117.0.


Summary: Added a Python guide at /developers/python: requests + pandas to load the dataset, filter to live observations, join to sources, and read CSV distributions into DataFrames. The export gained pythonPath. No data values changed. Export version bumped to 1.116.0.


Summary: Added a command-line guide at /developers/cli: curl + jq one-liners to fetch the dataset, filter to live values, join to sources, pin a version, and verify checksums. Nothing to install. The export gained cliPath. No data values changed. Export version bumped to 1.115.0.


Summary: Added a no-install SDK guide at /developers/sdk: a tiny zero-dependency copy-paste fetch helper (TypeScript) wrapping the static endpoints with typing and version pinning. There is no package to install. The export gained sdkPath. No data values changed. Export version bumped to 1.114.0.


Summary: Added a validate-a-package guide at /developers/validate-package: read the manifest, confirm resources resolve, validate against the JSON Schemas, verify integrity with the checksums, and confirm the pinned version — all against static files. The export gained validatePackagePath. No data values changed. Export version bumped to 1.113.0.


Summary: Added a permanent-identifiers methodology page at /methodology/permanent-identifiers explaining how source ids, observation ids, record keys, version pins, and route paths stay stable and additive (and what is maintained vs. stable). The export gained permanentIdentifiersPath. No data values changed. Export version bumped to 1.112.0.


Summary: Added BibTeX and RIS dataset citation exports at /citations/dataset.bib and /citations/dataset.ris for reference managers, each pinning the dataset version and noting the CC BY 4.0 license. The export gained citationBibtexPath and citationRisPath. No data values changed. Export version bumped to 1.111.0.


Summary: Added formatted dataset citation styles (APA, MLA, Chicago, Harvard) to /citations and the citation catalog JSON, each pinning the dataset version. The export gained citationStylesVersion. No data values changed. Export version bumped to 1.110.0.


Summary: Added an explicit license & reuse page at /license (and /license/data.json): the compilation is CC BY 4.0 with attribution, underlying sources retain their own terms, sample rows must not be cited, and the data carries no warranty and is not legal advice. The export gained licensePath and licenseJsonPath. No data values changed. Export version bumped to 1.109.0.


Summary: Added a flat sitewide downloads catalog at /downloads.json and /downloads.csv: every downloadable file (dataset bundle resources, the per-surface CSV/JSONL exports, and the syndication feeds) in one grouped list. The export gained downloadsJsonPath and downloadsCsvPath. No data values changed. Export version bumped to 1.108.0.


Summary: Added a consolidated download bundle at /datasets/conflict-economic-impact/bundle (and bundle.json): one grouped index of every static resource — core files, distributions, schemas, examples, and checksums — with the versioned-payload pattern and integrity links. Not a zip archive; direct links only. The export gained bundlePath and bundleJsonPath. No data values changed. Export version bumped to 1.107.0.


Summary: Added CSV and JSONL serializations for eight trust/catalog surfaces — source-health, review-actions, data-needs, citations, performance, routes, api, and schemas — each at /{surface}/data.csv and /{surface}/data.jsonl alongside the existing JSON. The export gained surfaceExportPaths (16 paths). No data values changed. Export version bumped to 1.106.0.


Summary: Added per-category quality cards: each category's data.json now carries a qualityCard (live/sample counts, live share, sources, facts, worst review status, high-priority review count, review actions, data needs), and the category rankings page shows a live-share column. Descriptive coverage signals, not a grade. The export gained categoryQualityCardVersion. No data values changed. Export version bumped to 1.105.0.


Summary: Added a dataset quality scorecard at /quality-scorecard (and /quality-scorecard/data.json) across four transparent, deterministic dimensions — sourcing coverage, live-vs-sample share, high-confidence share, and review coverage — with a composite mean. Descriptive signals only, explicitly not a grade or guarantee of correctness or completeness. The export gained qualityScorecardPath and qualityScorecardJsonPath. No data values changed. Export version bumped to 1.104.0.


Summary: Added a static status summary at /status (and /status/data.json): current export version, route/surface/schema counts, frozen-version count, checksummed-surface count, and provenance coverage. It is a point-in-time snapshot of the published dataset, not a live uptime monitor (the site is static files). The export gained statusPath and statusJsonPath. No data values changed. Export version bumped to 1.103.0.


Summary: Added a per-version provenance change view at /changes/{version}/provenance summarizing the provenance records added, removed, or changed against the previous materialized version (when both snapshots are reproducible; otherwise honestly noted). The export gained changeProvenanceHtmlPathPattern. No data values changed. Export version bumped to 1.102.0.


Summary: Added a per-version record-level change view at /changes/{version}/records listing the observation, source, fact, and series records added, removed, or changed against the previous frozen version (or honestly noting when no value-level diff is available). The export gained changeRecordsHtmlPathPattern. No data values changed. Export version bumped to 1.101.0.


Summary: Added a diffs index at /diffs (and /diffs/data.json) listing every per-version diff: which versions have a value-level diff (both the version and its predecessor frozen) versus a field/shape-level change page, with links to record diffs and provenance diffs. The export gained diffsIndexPath and diffsIndexJsonPath. No data values changed. Export version bumped to 1.100.0.


Summary: Added a chronological version timeline at /versions/timeline listing every materialized export version with its date, the fields it added, and links to its frozen payload, change page, and diff. The export gained versionsTimelinePath. No data values changed. Export version bumped to 1.99.0.


Summary: Added dedicated per-indicator version-history pages at /indicators/{id}/history showing which frozen dataset versions include each observation, with links to the indicator card, JSON, source, and record-history JSON. The export gained indicatorHistoryHtmlPathPattern. No data values changed. Export version bumped to 1.98.0.


Summary: Added dedicated per-source version-history pages at /sources/{id}/history showing which frozen dataset versions include each source, with links to the source page, JSON, and record-history JSON. The export gained sourceHistoryHtmlPathPattern. No data values changed. Export version bumped to 1.97.0.


Summary: Added human-readable per-record history pages at /records/{recordKey}, mirroring the JSON at /records/{recordKey}/data.json: each shows which frozen versions contain the record, its first and latest appearance, and links to the record's page, source, and provenance. The export gained recordHistoryHtmlPathPattern. No data values changed. Export version bumped to 1.96.0.


Summary: Added a sitewide provenance coverage report at /provenance (and /provenance/data.json): the share of records that are source-linked, the live/sample split, distinct vs registered sources, and how many materialized versions can reproduce a provenance snapshot. A coverage signal, not a completeness claim. The export gained provenanceReportPath and provenanceReportJsonPath. No data values changed. Export version bumped to 1.95.0.


Summary: Added human-readable per-version provenance pages at /datasets/conflict-economic-impact/versions/{version}/provenance, mirroring the JSON snapshots. Each page shows the record/source counts and fingerprint when the version's frozen record set matches current data, and honestly marks the snapshot unavailable (never fabricated) otherwise. The export gained versionProvenanceHtmlPathPattern. No data values changed. Export version bumped to 1.94.0.


Summary: Added a data-contract FAQ at /contract/faq (with FAQPage structured data) answering the common consumer questions: is there an API, how to pin a version, update cadence, citing figures, what changed between versions, integrity verification, backward compatibility, and coverage limits. The export gained contractFaqPath. No data values changed. Export version bumped to 1.93.0.


Summary: Added a task-oriented developer cookbook at /developers/cookbook with copy-paste recipes: join observations to sources, filter to citable live values, diff two versions, validate against the schema, pin a frozen version, verify integrity, and build a citation. The export gained cookbookPath. No data values changed. Export version bumped to 1.92.0.


Summary: The static OpenAPI 3.1 document now carries an illustrative response example for every endpoint (dataset, graph, manifest, per-source/indicator/category, schemas, and all CSV/JSONL distributions), so OpenAPI-aware tooling can preview each shape. Examples are illustrative shapes, not current values. The export gained openapiExamplesVersion. No data values changed. Export version bumped to 1.91.0.


Summary: Upgraded the data-package manifest to v2: resources are now grouped (core, distribution, schema, example, checksum) with titles and media types, and the manifest enumerates the TypeScript declarations, the representative examples, and the CSV/JSONL checksums, plus a richer contract block (hub, fixtures, compatibility, quickstart). The export gained packageManifestVersion (2). No data values changed. Export version bumped to 1.90.0.


Summary: Deepened export checksums to cover every surface — JSON, all CSV/JSONL distributions, the package manifest, all record and surface schemas, the representative examples, and every frozen versioned payload — and added CSV and JSONL serializations at checksums.csv and checksums.jsonl. The export gained checksumsCsvPath, checksumsJsonlPath, and checksumsVersion (2). No data values changed. Export version bumped to 1.89.0.


Summary: Published the backward-compatibility policy at /contract/compatibility: additive-only changes under semantic versioning, stable identifiers and paths, byte-frozen version payloads, no silent data changes, and honest unavailability rather than fabricated history. The export gained compatibilityPath. No data values changed. Export version bumped to 1.88.0.


Summary: Added worked TypeScript examples at /developers/types/examples that consume the published declarations: import the .d.ts, type the dataset fetch, narrow observations to live values, join observations to sources for citation, and check confidence and freshness. The export gained typesExamplesPath. No data values changed. Export version bumped to 1.87.0.


Summary: Published the TypeScript declarations as a canonical dataset resource at /datasets/conflict-economic-impact/types.d.ts, alongside data.json, schema.json, and checksums.json, so consumers can pin types next to the data. It serves the same declarations as /developers/types/warconomy-types.d.ts. The export gained typesDeclarationDatasetPath. No data values changed. Export version bumped to 1.86.0.


Summary: Added a five-minute developer quickstart at /developers/quickstart: fetch the static export, join observations to sources, validate against the JSON Schema, pin a frozen version, verify integrity with the checksums file, and cite the linked source — all copy-paste, no runtime API or SDK. The export gained quickstartPath. No data values changed. Export version bumped to 1.85.0.


Summary: Added a single consumer-contract hub at /contract that links every contract surface — the data-package manifest, checksums, TypeScript types and declarations, JSON Schemas, fixtures, validation guide, contract changelog, version registry, record history, and provenance — grouped by task (get the data, types & schemas, validate & verify, versioning & history, guides). The export gained contractHubPath. No data values changed. Export version bumped to 1.84.0.


Summary: Final consumer-contract cycle audit. Recorded an 80-item consumer-contract backlog (docs/consumer-contract-backlog.md) covering future additive, static, backward-compatible work, and added a backlog suite to npm run audit:data asserting the backlog stays populated and restates the no-fabrication constraints. The export gained contractBacklogVersion. No data values changed. Export version bumped to 1.83.0.


Summary: Consumer-contract consistency pass. Added a consistency suite to npm run audit:data that cross-checks the version ladder tip against the export version, confirms every frozen version has a committed payload (and no payload lacks a ladder entry), verifies the contract changelog tip matches the export, and asserts every advertised contract path resolves to a real catalog route. The export gained contractConsistencyVersion. No data values changed. Export version bumped to 1.82.0.


Summary: Platform inventory and developer guide now carry a consolidated 'Consumer contract' section that links the data-package manifest, export checksums, TypeScript types and declarations, contract fixtures, validation guide, contract changelog, per-surface JSON Schemas, and the record-history index in one place. The export gained docsConsolidationVersion. No data values changed. Export version bumped to 1.81.0.


Summary: Static API catalog v3 and llms.txt now advertise the full consumer contract. The /api endpoint catalog gained the data-package manifest, checksums, versioned provenance/provenance-diff/routes/graph-summary patterns, the record-history index and pattern, TypeScript declarations, fixtures, validation guide, and contract changelog. llms.txt added a dedicated 'Consumer contract' section. The export gained apiCatalogVersion. No data values changed. Export version bumped to 1.80.0.


Summary: Typed-contract audit expansion. Added a contract-audit suite to npm run audit:data that asserts the export advertises every consumer-contract surface (provenance snapshots/diffs, route/graph snapshots, record/observation/source histories, types + .d.ts, fixtures, validation, surface schemas, contract changelog, package manifest, checksums, landing); that every contract machine and schema route is in the route catalog; and that provenance snapshots/diffs, record histories, the package manifest, and checksums are populated and well-formed. The export gained contractAuditVersion. No data values changed. Export version bumped to 1.79.0.


Summary: Data package landing upgrade. The dataset page now leads its exports with a consolidated 'Consumer contract' section linking the package manifest, checksums, JSON Schemas and schema report, TypeScript types, test fixtures, validation guide, contract changelog, provenance, version snapshots, record histories, and the static endpoint/OpenAPI contract — one place for everything a consumer needs. The export gained dataPackageLandingVersion. No data values changed. Export version bumped to 1.78.0.


Summary: Export checksums. Added /datasets/conflict-economic-impact/checksums.json: deterministic djb2 fingerprints plus byte lengths for the major exports — data.json, graph.json, provenance.json, the core CSV/JSONL distributions, and every record + surface JSON Schema — computed at build time with no crypto dependency. Use them to detect drift; they are not a tamper-proofing guarantee. The package manifest links them. Wired the route catalog and the data sitemap. The export gained checksumsPath. No data values changed. Export version bumped to 1.77.0.


Summary: Dataset package manifest. Added /datasets/conflict-economic-impact/package.json: a static Data-Package-style manifest describing the dataset's resources (data.json, graph.json, provenance, CSV/JSONL distributions with mediatypes), schemas (record + surface + report), the consumer contract (types, OpenAPI, validation, changelog), the versioning patterns, a djb2 fingerprint of data.json, license/coverage, and caveats. It is explicitly not an npm package. Linked from the dataset page; wired the route catalog and the data sitemap. The export gained packageManifestPath. No data values changed. Export version bumped to 1.76.0.


Summary: Versioned graph summaries. Added /datasets/conflict-economic-impact/versions/<version>/graph-summary.json: a per-version citation-graph summary derived from the snapshot ladder (frozen node/edge totals) with a diff vs the previous version (node/edge count deltas). The per-type breakdown was not byte-frozen historically, so only the current version carries nodesByType/edgesByType; the node/edge type vocabulary has been stable since activation, so the diff reports count deltas with no fabricated historical type breakdowns. The registry gained versionGraphPathPattern; wired the data sitemap. No data values changed. Export version bumped to 1.75.0.


Summary: Versioned route catalog snapshots. Added /datasets/conflict-economic-impact/versions/<version>/routes.json: a per-version route/contract-surface snapshot derived from the append-only snapshot shape ladder (export field count, path-like field count, graph node/edge totals), with a diff vs the previous version (added export/path fields, graph deltas). The full HTML/machine route catalog was not byte-frozen historically, so past versions report the reproducible contract-shape view and are clearly marked derived; only the current version also carries the live route-catalog totals — no old catalog is fabricated. The registry gained versionRoutesPathPattern; wired the data sitemap. No data values changed. Export version bumped to 1.74.0.


Summary: Contract changelog. Added /developers/changelog (+ /developers/changelog/data.json): a contract-level changelog showing which export fields each version added to the machine-readable contract surface, derived from the append-only snapshot shape ladder — distinct from the content/editorial changelog at /changes. Because record counts have been stable across the materialized range, these are additive shape changes, not data changes; every addition is backward-compatible. Linked the content changelog and per-version diffs. Added a contract-changelog graph reference node; linked from /developers; wired /routes, /api, llms.txt, the sitemaps. The export gained contractChangelogPath and contractChangelogJsonPath. No data values changed. Export version bumped to 1.73.0.


Summary: JSON Schema coverage v3. Published conservative draft-07 schemas for the platform's derived/surface exports — provenance, provenance diff, record history, source history, route catalog, static API contract, data needs, citations, and performance — served under /datasets/conflict-economic-impact/schemas/<name>.schema.json. Like the core record schemas they pin only stable required fields and allow additional properties. Wired the route/endpoint catalogs and the data sitemap. The export gained surfaceSchemaPaths. No data values changed. Export version bumped to 1.72.0.


Summary: Consumer validation guide. Added /developers/validation (+ /developers/validation/data.json): step-by-step instructions and copy-paste snippets for validating every export against the published contract — data.json against schema.json, provenance source resolution, the citation graph's no-dangling-edges invariant, the per-record schemas, the CSV/JSONL distributions, and the version/record/provenance diffs. Static examples only; no runtime validation service. Added a validation graph reference node; linked from /developers; wired /routes, /api, llms.txt, the sitemaps. The export gained validationGuidePath and validationGuideJsonPath. No data values changed. Export version bumped to 1.71.0.


Summary: Contract test fixtures v2. Added /developers/fixtures (+ /developers/fixtures/data.json): a bundle of small valid example payloads (real records) for each contract type — observation, source, provenance, version diff, graph edge, record history — plus clearly-marked invalid examples (flagged __invalid with a __reason) for negative validator testing; invalid fixtures are deliberately broken copies, never real data. Added a fixtures graph reference node; linked from /developers; wired /routes, /api, llms.txt, the sitemaps, and docs/contract-fixtures.md. The export gained fixturesPath and fixturesJsonPath. No data values changed. Export version bumped to 1.70.0.


Summary: TypeScript consumer types. Added /developers/types (+ /developers/types/data.json) and a downloadable /developers/types/warconomy-types.d.ts: hand-maintained TypeScript interfaces aligned with the published JSON Schemas (observation, source, series snapshot, indicator series, fact, provenance record, version diff, graph node/edge, record history, dataset export). It is not an npm package — consumers download the .d.ts directly; types use index signatures so new export fields never break a build. Added a types graph reference node; linked from /developers; wired /routes, /api, llms.txt, and the sitemaps. The export gained typesPath and typesDeclarationPath. No data values changed. Export version bumped to 1.69.0.


Summary: Source version history. Each /sources/<id> page and its data.json now carry a version-history block: the frozen dataset versions that byte-contain the source, the records that cite it, and a link to the full record history. Appearances are derived strictly from committed frozen payloads. The export gained a sourceHistory descriptor. No data values changed. Export version bumped to 1.68.0.


Summary: Observation version history. Each /indicators/<id> card and its data.json now carry a version-history block: the frozen dataset versions that byte-contain the observation (first/latest frozen version, count) with a link to the full record history and the per-version compare. Appearances are derived strictly from committed frozen payloads. The export gained an observationHistory descriptor. No data values changed. Export version bumped to 1.67.0.


Summary: Record history index. Added /records (+ /records/data.json) and per-record /records/<type--id>/data.json: every observation, fact, source, and series with the frozen dataset versions that byte-contain it, plus links to the record's page, JSON, source, per-record provenance, and the version/provenance diff patterns. Version appearances are derived strictly from committed frozen payloads (no fabricated pre-activation history); records are keyed type--id to avoid cross-type collisions. Added a records graph reference node; wired /routes, /api, llms.txt, and the sitemaps. The export gained recordsPath, recordsJsonPath, and recordHistoryPathPattern. No data values changed. Export version bumped to 1.66.0.


Summary: Provenance diff exports. Added /datasets/conflict-economic-impact/versions/<version>/provenance-diff.json: a diff of provenance rows between a version and its previous materialized version, computed from the two provenance snapshots when both are available. It reports added/removed record ids and, for changed records, the changed field names with before/after scalars — never duplicating full records — and falls back honestly when a snapshot is unavailable. The version registry gained versionProvenanceDiffPathPattern; wired the data sitemap. No data values changed. Export version bumped to 1.65.0.


Summary: Versioned provenance snapshots. Added /datasets/conflict-economic-impact/versions/<version>/provenance.json: a per-version provenance snapshot. Provenance is derived data (it joins records to source authority/readiness, which the trimmed frozen source records do not carry), so a snapshot is served only for a version whose frozen full payload has the same record set as the current data — in which case the provenance genuinely equals that version's and is served with a djb2 fingerprint; otherwise an honest available:false marker is returned, never fabricated. The version registry gained versionProvenancePathPattern and a provenanceSnapshots summary (available/unavailable lists); wired the data sitemap. No data values changed. Export version bumped to 1.64.0.


Summary: Expanded final platform audits and backlog. Added a comprehensive final-audit suite to npm run audit:data that asserts every surface from this 20-train cycle is wired: provenance/source-health coverage, the OpenAPI contract, developer examples, source/indicator relationship graphs, the QA report, data needs, route review badges, methodology guides, the schema report, route-integrity/link exports, the citations catalog, and the performance report — plus that every new JSON route is in the route catalog, every new HTML route is in the sitemap, llms.txt lists the major entry points, the citation graph has no dangling edges, and there is no complete-coverage or unnegated real-time overclaim. Added a consolidated auditedSurfaces index to the export and a ranked next-build backlog in docs/backlog.md. No data values changed. Export version bumped to 1.63.0.


Summary: Consolidated platform navigation and docs. Added a 'Start here' grouping (Ask a question, Browse topics, Use the data, Check trust, Cite, Develop, Maintain) to the top of the platform inventory, a 'Start here' column to the footer covering the new developer/trust surfaces, and a developer/trust pointer on /about. Refreshed the README with a Start-here section linking the new surfaces. The export gained a startHere navigation array. No data values changed. Export version bumped to 1.62.0.


Summary: Static performance budget report. Added /performance (+ /performance/data.json): route counts and the byte sizes of the largest machine exports (data.json, graph.json, provenance.json), computed at build time, with a soft 400 KB budget for the main export. There are no external performance tools, no runtime measurement, and no field data — Warconomy is fully prerendered with no runtime API; interactivity is limited to small client-side filter UIs. Added a performance graph reference node; linked from /platform; wired llms.txt, the catalogs, the sitemaps, and docs/performance.md. The export gained performancePath and performanceJsonPath. No data values changed. Export version bumped to 1.61.0.


Summary: Citation snippet catalog. Added /citations (+ /citations/data.json): ready-made citation snippets for Warconomy pages, source pages, individual source-linked values, the dataset, and a versioned export — generated deterministically from the real records (every source and indicator), with sample rows flagged as not-citable-as-data. The cite-this block on every page now links the catalog. Added a citations graph reference node; wired llms.txt, the route/endpoint catalogs, and the sitemaps. The export gained citationsPath and citationsJsonPath. No data values changed. Export version bumped to 1.60.0.


Summary: Route integrity exports. Added /routes/integrity.json (every cataloged route with its type, whether it is in the sitemap, its review status, and a prerendered status) and /routes/links.json (an internal link graph derived from the deterministic citation graph: per-route outgoing links and incoming-link counts). Both are static models built from the in-repo route catalog, sitemap, and citation graph — no crawling and no runtime HTTP. Linked from /routes; wired the route/endpoint catalogs and the data sitemap. The export gained routeIntegrityPath and routeLinksPath. No data values changed. Export version bumped to 1.59.0.


Summary: Schema examples and validation report. The JSON Schemas now carry a $comment linking each to its real example payload and the data contract is bumped to v2 (still conservative and additive). Added /datasets/conflict-economic-impact/schema-report (+ data.json): a build-time report listing every schema, its required fields, the example that demonstrates it, and a deterministic check that all real observations, sources, and series satisfy their required fields. Linked from /data-dictionary; wired the route/endpoint catalogs and sitemaps. The export gained schemaReportPath and schemaReportJsonPath (schemaVersion is now 2). No data values changed. Export version bumped to 1.58.0.


Summary: Contributor methodology guides. Added /methodology/add-source, /methodology/add-observation, and /methodology/add-topic (each with a data.json): static, step-by-step guides for extending Warconomy that restate the source gates, dataMode, confidence, freshness/review rules, examples, and what not to do (no scraping, no jobs, no runtime APIs, no real-time claims). Linked from /methodology and llms.txt; wired the route/endpoint catalogs and sitemaps. The export gained methodologyGuidePaths. No data values changed. Export version bumped to 1.57.0.


Summary: Economic-impact query hub v3. The /economic-impact hub now opens with a route review badge, a 'Popular questions' chip row, and a 'Browse by category' grouping of every routed question by category (sanctions, conflicts, chokepoints, commodities, defense, cross-topic), plus a 'For developers & what's next' section linking the developer guide, static endpoints, data.json, provenance, and the data-needs backlog — on top of the existing question-routing table and citation surfaces. The export gained queryHubVersion. No data values changed. Export version bumped to 1.56.0.


Summary: Route-level review badges. Added a getRouteReviewSummary helper and a compact RouteReviewBadge showing data-as-of, reviewed-as-of, and a status chip (current/due-soon/overdue/stale/all-sample, or 'static-reference' for index/reference surfaces). Rendered on the platform, routes, api, developers, data-needs, qa, source-health, and data-dictionary pages, and every cataloged HTML route in /routes/data.json now carries a routeReviewSummary. All computed deterministically against site.dataAsOf — a trust signal, not a correctness claim. The export gained a routeReview descriptor. No data values changed. Export version bumped to 1.55.0.


Summary: Connected category dashboards to data needs. The sanctions, conflicts, chokepoints, and commodities dashboards now show a compact, category-specific 'Data needs / next source gates' callout (rendering nothing when a category has none), and each /categories/<id>/data.json gained dataNeedsCount, dataNeedsIds, and a reviewActionCount. The export gained a categoryDataNeeds descriptor. No data values changed. Export version bumped to 1.54.0.


Summary: Data needs backlog. Added /data-needs (+ /data-needs/data.json): an honest, static, source-gated backlog of data Warconomy would add once a properly citable public source exists — wheat/fertilizer/gas and TTF/JKM benchmarks, Gaza/Syria reconstruction estimates, deeper SIPRI/NATO defense coverage, a Suez transit refresh, the next CREA period, an OFAC/EU vessel-list refresh, the Ukraine RDNA successor, an openly-citable Red Sea freight index, and Black Sea grain volumes. Each item names the desired metric, required source type, why it is blocked, the risk, and whether it is a new topic/observation/series or a refresh. No values are asserted; paywalled/non-authoritative-gated items stay blocked. Added a data-needs graph reference node; linked from /data-maintenance and /review-actions; wired /platform, llms.txt, and the sitemaps. The export gained dataNeedsPath and dataNeedsJsonPath. No data values changed. Export version bumped to 1.53.0.


Summary: Static QA report. Added /qa (+ /qa/data.json): a higher-level quality-assurance map of the route families and build-time invariants Warconomy validates — routes, data exports, schemas, the citation graph, source links, sample labelling, review status, structured data, and sitemaps — each with its basis and representative routes. It states plainly that Warconomy is fully prerendered, so these are build-time invariants, not runtime monitoring, with no uptime/SLA claim; the authoritative per-check results stay on /data-audit and in npm run audit:data. Added a QA graph reference node; linked from /methodology, /data-audit, and /platform; wired llms.txt and the sitemaps. The export gained qaPath and qaJsonPath. No data values changed. Export version bumped to 1.52.0.


Summary: Deepened indicator citation cards. Each /indicators/<id> card and its data.json now surface citation readiness and source authority, the live review status, related time series, and an id/path-based indicator relationship graph (observation -> source, page, and tracking series), plus direct links to the indicator JSON, source page, and per-record provenance. The per-indicator JSON gained indicatorGraph, citationReadiness, sourceAuthority, review, relatedSeries, sourcePath, and provenancePath. The export gained an indicatorRelationships descriptor. No data values changed. Export version bumped to 1.51.0.


Summary: Deepened source relationship pages. Each /sources/<id> page and its data.json now surface the full relationship picture: citation readiness and authority, source-health/review status, the observations, facts, and time series that use the source, the pages where it appears, a provenance count, related categories, and an id/path-based source relationship graph (source → observations/facts → topic pages). The per-source JSON gained sourceGraph, seriesIds, provenanceCount, and relatedCategories. The export gained a sourceRelationships descriptor. No data values changed. Export version bumped to 1.50.0.


Summary: Data contract examples. Added /datasets/conflict-economic-impact/examples/<name>.json: small, real, representative example payloads for each record type — observation, source, provenance, version-diff, graph-node, and query-intent. Every example is a genuine record drawn from the fixtures (never fabricated); sample rows keep their own dataMode label. They let a consumer learn the exact shape before fetching the full dataset. Wired /developers, /data-dictionary, llms.txt, the route/endpoint catalogs, and the data sitemap. The export gained examplesPath and an examples list. No data values changed. Export version bumped to 1.49.0.


Summary: Developer consumption guide. Added /developers (+ /developers/data.json): a static guide for developers and researchers with copy-paste examples — fetch data.json, read live observations, join observations to sources, use the provenance export, read version and record-level diffs, load the CSV/JSONL distributions, and cite a page. It states plainly there is no runtime API, no auth, no rate limits, and no SDK package; every endpoint is a prerendered file and coverage is partial/not real-time. Added a developer-guide graph reference node; wired /api, /methodology, /platform, llms.txt, the sitemaps, and docs/developers.md. The export gained developersPath and developersJsonPath. No data values changed. Export version bumped to 1.48.0.


Summary: Record-level version diffs. Added /datasets/conflict-economic-impact/versions/<version>/record-diffs.json: a field-level diff of changed records between two frozen full payloads. For every changed observation, source, fact, series, distribution, glossary term, and query intent it lists the exact scalar fields that changed with their before/after values; nested objects/arrays are reported by field name only, and additions/removals stay in the version diff.json — no full records are duplicated. Linked from /changes/<version> and /changes/compare; wired llms.txt, the route patterns, and the data sitemap. The export gained recordDiffsPathPattern. No data values changed. Export version bumped to 1.47.0.


Summary: Static endpoint contract (OpenAPI 3.1). Added /api/openapi.json: an OpenAPI 3.1-style description that enumerates every machine-readable surface — data.json, graph.json, provenance, the versioned payload/diff patterns, per-source/indicator/category patterns, JSON Schemas, and CSV/JSONL distributions. It documents read-only GET operations only and is explicitly marked static: no runtime API, no auth, no API keys, no rate limits, no mutation, no query parameters, and no SLA/real-time guarantee (x-warconomy.runtimeApi=false). Wired /api, /routes, /data-dictionary, /methodology, the manifest, llms.txt, and the data sitemap. The export gained staticEndpointContractPath. No data values changed. Export version bumped to 1.46.0.


Summary: Static source-health surface. Added /source-health (+ /source-health/data.json): a manually maintained source-health checklist that flags where a cited source needs re-verification. For each source it combines the derived authority and citation readiness with the review status of the live observations that depend on it — sources with stale/overdue dependents rank first — plus observation counts, oldest dependent as-of, and a recommended manual action. It runs no scheduled checks, makes no HTTP requests, and is not an availability/SLA claim. Added a source-health graph reference node; linked from /source-quality, /review-actions, and /data-maintenance; wired /platform, llms.txt, and the sitemaps. The export gained sourceHealthPath and sourceHealthJsonPath. No data values changed. Export version bumped to 1.45.0.


Summary: Per-record provenance exports. Added /datasets/conflict-economic-impact/provenance.json (+ .csv + .jsonl): a flat, deterministic map from every source-linked record — observations, facts, series snapshots, and policy thresholds — to its source, derived authority and citation readiness, accessed/last-reviewed dates, as-of/period, data mode, confidence, the public page it appears on, and per-record caveats. It is id/path-based: no full record or source is duplicated. Every live observation, every fact, and every series snapshot is covered, and no internal/private paths are listed. Added a provenance graph reference node; wired the dataset page, /api, /routes, /data-dictionary, /platform, the manifest, llms.txt, and the data sitemap. The export gained provenancePath, provenanceCsvPath, and provenanceJsonlPath. No data values changed. Export version bumped to 1.44.0.


Summary: Data contract, route catalog and audit consolidation. Revised the platform inventory (v2) to list every surface added in this cycle — full snapshots/diffs, the data audit, JSON Schemas, the route catalog, the static-endpoint catalog, and the version-compare page — and refreshed /methodology to describe full frozen payloads, value-level diffs, the data audit, the data contract/schemas, and the route/endpoint catalogs (no runtime API). Added docs (data-diffs.md, data-audit.md, routes-and-endpoints.md, crawler-guide.md) and expanded npm run audit:data to assert the schema routes, route/endpoint catalog entries, compare/audit paths, and contract fields all resolve and stay honest (no real-time / no complete-coverage claims). The export gained a consolidated dataContract index plus platformInventoryVersion and methodologyVersion. No data values changed. Export version bumped to 1.43.0.


Summary: Public route & static-endpoint catalogs. Added /routes (+ /routes/data.json): a catalog of every public HTML page, machine JSON endpoint, JSON Schema, and CSV/JSONL distribution, plus dynamic route patterns — no internal/private paths. Added /api (+ /api/data.json): a static data-endpoint index that states plainly Warconomy has no runtime API (no keys, no rate limits, no servers) — every endpoint is a prerendered file. Added /routes and /api graph reference nodes; wired llms.txt, the manifest, and sitemaps. The export gained routesPath, routesJsonPath, staticApiPath, and staticApiJsonPath. No data values changed. Export version bumped to 1.42.0.


Summary: Dataset schemas + data contract. Published conservative, backward-compatible JSON Schemas (draft-07) at /datasets/conflict-economic-impact/schema.json plus observation/source/series/graph/diff schemas. They pin the required, stable fields and allow additional properties, so new export fields never break a consumer; enums cover stable value sets. Integrated into /data-dictionary and the dataset page (schema downloads + contract caveats). The export gained schemaVersion, contractPolicy, and schemaPaths; wired the manifest, llms.txt, and sitemaps. Added docs/data-contract.md. No data values changed. Export version bumped to 1.41.0.


Summary: Public data-audit surface. Added /data-audit (+ /data-audit/data.json): Warconomy's data-integrity checks evaluated deterministically at build time over the committed fixtures and surfaced publicly — source references, observation/graph/route/distribution/snapshot integrity, JSON-LD/FAQ visibility, and no-real-time/partial-coverage disclosure. It is a static audit (not runtime monitoring, not scheduled); the same invariants run in npm run audit:data, so a published build shows every check passing. Added a /data-audit graph reference node; linked from /methodology and /platform; wired the manifest, llms.txt, and sitemaps. The export gained dataAuditPath and dataAuditJsonPath. No data values changed. Export version bumped to 1.40.0.


Summary: Version comparison + changelog explorer. Added /changes/compare (+ /changes/compare/data.json): a static comparison of the latest materialized version against the previous one (value-level when both have a frozen payload), with a table of every materialized version showing frozen vs projected status and links to each change page, data.json, and diff.json. It states plainly that arbitrary historical compare needs two materialized versions and there is no runtime compare engine. Enhanced /changes with a materialized-versions table, snapshot/diff badges, a versioned-export badge, and Atom/compare links. Added a /changes/compare graph reference node; wired the manifest, llms.txt, and sitemaps. The export gained changesComparePath and changesCompareJsonPath. No data values changed. Export version bumped to 1.39.0.


Summary: Value-level dataset version diffs. With two frozen full payloads now committed (v1.37.0 and v1.38.0), versionDiff computes a complete value-level diff between them: changed top-level fields, added/removed routes and distributions, and added/removed/changed record ids for observations, sources, facts, series, query intents, and glossary — lean (ids and field names only, no duplicated records). The diff falls back to header/shape deltas when a frozen pair is unavailable. /changes/<version> and versions/<version>/diff.json render the value-level diff. The export gained diffCapabilities, diffJsonSchemaVersion, and diffFields. No data values changed. Export version bumped to 1.38.0.


Summary: Full frozen dataset payloads. Activated a complete per-version payload store: from v1.37.0 each released version's full export is frozen to a committed file (src/data/versioned/payloads/<version>.json) and served byte-for-byte at its versioned data.json route — no longer a projection. Versions 1.31.0–1.36.0 predate the store and keep an accurate projection (their exact historical bytes are not fabricated). Added snapshot integrity metadata (payload fingerprint, top-level key count, observation/source/fact/distribution/graph counts, payloadSource frozen|projected) to the version registry. The export gained fullSnapshotPolicy, materializedPayloadCount, and versionPayloadPathPattern. No data values changed. Export version bumped to 1.37.0.


Summary: Platform inventory + integrity hardening. Added a /platform page (+ /platform/data.json): a grouped, human + machine map of every surface (discovery/search, dashboards/topics, comparisons/rankings, trust/maintenance, versioning, machine-readable). Expanded npm run audit:data with a platform-audit suite that checks the inventory links only existing routes, review-action coverage of high-priority rows, category/comparison route existence, that every committed snapshot is materialized with a matching frozen shape, currentVersionPath alignment, ISO sitemap lastmod, robots→sitemap, and llms.txt surface coverage with no real-time overclaim. Added a /platform graph reference node; wired sitemaps, llms.txt, and the manifest. Added docs (review-actions, comparisons, category-exports, platform-inventory). The export gained platformPath + platformJsonPath (materialized as v1.36.0; real diff vs v1.35.0). No data values changed. Export version bumped to 1.36.0.


Summary: Category machine endpoints + comparison hub. Added per-category JSON endpoints (/categories/<id>/data.json for sanctions, conflicts, chokepoints, commodities, dashboards) mirroring the human category surfaces (page ids, live/sample counts, source counts, review counts, high-priority review ids). Added a /comparisons hub (+ /comparisons/data.json) indexing every comparison/ranking surface (defense comparison/rankings, chokepoint rankings, rankings hub, series compare, source-quality matrices, category rankings, commodities dashboard) and a count-based /categories/rankings (+ data.json). Added /comparisons and /categories/rankings citation-graph reference nodes; wired sitemaps, llms.txt, and the manifest. The export gained comparisonsPath, comparisonsJsonPath, categoryRankingsPath, and categoryJsonPathPattern (materialized as v1.35.0; real diff vs v1.34.0). No data values changed. Export version bumped to 1.35.0.


Summary: Review action center + source-quality v3. Added a /review-actions page (+ /review-actions/data.json): a prioritized, static manual-maintenance checklist that classifies every observation into deterministic buckets (refresh source, append next period, preserve historical snapshot, replace sample row, verify source availability, no immediate action) from review status and source cadence — nothing scheduled or automated. Source-quality v3 added authority×readiness and category×readiness matrices plus no-live and sample-only source lists (also in /source-quality.json). Cross-linked from /data-review, /data-maintenance, and /source-quality; added a /review-actions citation-graph reference node and a data-dictionary object. The export gained reviewActionsPath and reviewActionsJsonPath (materialized as v1.34.0; real diff vs v1.33.0). No data values changed. Export version bumped to 1.34.0.


Summary: Filter UX v2 + search discovery polish. The shareable static filter (on /indicators, /sources, /topics, /glossary, /search) gained clickable column-header sorting, an active sort chip, a copy-link button for the current filtered view, a no-JS hint, and canonicalized (stable-order) URL params. /search added a popular-searches quick-link row, a browse-by-type section, and searchExamples/popularQueries in /search/data.json. No data values changed; the export added filterUiVersion and searchExamplesPath (materialized as v1.33.0 with a real diff against v1.32.0). Export version bumped to 1.33.0.


Summary: Second materialized snapshot + real forward diff. Materialized v1.32.0 alongside v1.31.0 (both now have frozen headers and serve a full payload at /datasets/conflict-economic-impact/versions/<version>/data.json; pre-activation versions remain unavailable, not faked). This is a metadata-only release — the dataset values are unchanged — that adds six top-level export fields (latestMaterializedVersion, previousMaterializedVersion, currentChangePath, currentDiffPath, versionDiffSummaryPath, versionSnapshotSummary). The snapshot header now also freezes a shape fingerprint (top-level field names + graph totals), so the v1.32.0 diff is a genuine forward diff against v1.31.0: real count deltas, added/removed top-level fields, and graph node/edge deltas. /changes/1.32.0 and versions/1.32.0/diff.json render the real diff. Export version bumped to 1.32.0.


Summary: Durable-snapshot pass. Activated a forward-looking version snapshot system: a committed, append-only frozen count header per materialized version (src/data/versioned/snapshots.ts), seeded with v1.31.0 captured at release. The version registry is now snapshot-aware (snapshotType full/header/unavailable, previousMaterializedVersion, diffJsonPath), added a real diff route (/datasets/conflict-economic-impact/versions/<version>/diff.json) that computes before/after count deltas when a frozen predecessor exists — and honestly reports none when it does not (no historical snapshot is fabricated; pre-activation versions stay unavailable). The /changes/<version> page shows a real delta table when available. Researcher manifest gained the snapshot policy and diff/snapshot patterns; the consistency audit now checks materialized-vs-route agreement, header-vs-live counts, and currentVersionPath. The export gained snapshotPolicy, snapshotActivatedVersion, materializedVersionCount, versionSnapshotPathPattern, and versionDiffPathPattern. No values changed. Export version bumped to 1.31.0.


Summary: Discoverability & structured-data pass. Added a conservative WebSite SearchAction (→ /search?q=) to the site-wide JSON-LD, deterministic lastmod on all three sitemaps (per-record dates for dynamic entries, site.dataAsOf for static/data routes; no runtime Date), a /faq coverage report (+ /faq/data.json) listing every page with a visible FAQ and its caveat tags, and a /structured-data report (+ /structured-data/data.json) enumerating the schema.org types in use and where each appears. FAQPage JSON-LD remains emitted only where a visible FAQ is rendered. Wired both reports into the question hub, methodology, llms.txt, sitemaps, and the citation graph (two reference nodes). The export gained faqCoveragePath/faqCoverageJsonPath, structuredDataPath/structuredDataJsonPath, and searchActionTarget. No values changed. Export version bumped to 1.30.0.


Summary: Shareable-discovery pass. Upgraded the static filter layer on /indicators, /sources, /topics, /glossary, and /search with URL-synced state (filter/sort/search mirrored to the query string via history.replaceState — no router fetch, no tracking), sort controls, active-filter chips with individual removal, a '/' search shortcut, and an aria-live result count. The SSR fallback (full list, no JavaScript) is unchanged. Added a canonical per-surface URL/sort contract (searchSurfaces) surfaced in each surface's data.json under a discovery block and in the export's searchSurfaces; indicator records gained asOf for date sorting. Numeric sort is offered only where units are comparable (counts), never across /indicators' mixed units. No values changed. Export version bumped to 1.29.0.


Summary: Version & consistency pass. Added a dataset version registry (/datasets/conflict-economic-impact/versions and versions/data.json) listing every export version named in the change log, with the current version materialized as a frozen data.json and earlier versions documented but not fabricated as snapshots. Added per-version change-diff JSON (/changes/<version>/data.json) and improved the /changes/<version> page with an honest 'compared to previous version' section (no frozen prior snapshot, so current counts + change summary instead of fake deltas). Expanded the consistency audit (audit:data) to reconcile data.json vs CSV/JSONL row counts for observations/sources/facts/series, graph node/edge totals, JSON-index counts, query intents, glossary, category live totals, and route/distribution existence. Researcher manifest upgraded to v3 (search indexes, version registry, defense comparison). The export gained versionRegistryPath, versionRegistryJsonPath, versionDataPathPattern, and diffPathPattern. No values changed. Export version bumped to 1.28.0.


Summary: Defense comparison pass. Added a /defense/comparison route (top-3 country comparison + totals + the world-total trend, with currency/basis and not-causal caveats and an FAQ) and a defense-comparison question-hub intent. Verified-data append: SIPRI's directly-readable world military expenditure totals were confirmed for 2025 (US$2,887bn, +2.9% real) and 2024 (US$2,718bn, +9.4%), so a two-point world-military-expenditure time series (series-global-milex, 2024→2025, same current-USD basis) and a 2024 SIPRI source + source-linked fact were added. Per-country time series and the full top-10/regional totals stay blocked as documented data needs (no mixed-basis or chart-derived values). /defense/data.json gained comparison/observation/source/series ids, a country comparison block, and explicit data needs. No existing live observation values changed (still 47 live). Export version bumped to 1.27.0.


Summary: Discovery pass. Added a static, build-time search/filter layer (the site's first client-interactive component) over the existing data: in-page search and faceted filtering on /indicators, /sources, /topics, and /glossary, plus a combined /search page. No runtime fetch, no backend search, no tracking — the full lists stay server-rendered and visible without JavaScript. Added machine-readable /sources/data.json and /search/data.json and enriched the indicators/topics/glossary JSON with searchFields and filter facets; the export gained searchPath and searchIndexPaths and a sources JSON index. No values changed. Export version bumped to 1.26.0.


Summary: Data-surface & timeline pass. Added a /reconstruction scope page (Ukraine RDNA4 source-linked; other theatres listed as transparent data needs — economic cost only, no casualties/blame), machine /defense/data.json and /commodities/data.json (with commodity data-needs), and /changes/<version> detail pages. Refresh sweep: re-reviewed the periodic-source queue; no existing live values changed and site.dataAsOf held at 2026-06-05 (no superseding same-scope official values verified this pass). Skipped data candidates (wheat/fertilizer/gas commodities, Gaza/Syria reconstruction, defense top-10/regional) remain blocked on directly-verifiable accessible sources. Export version bumped to 1.25.0.


Summary: Trust & discovery pass. Source-quality dashboard v2 (breakdowns by readiness, authority, and citation role; source-of-record/research/unused counts) with breakdowns added to /source-quality.json and the export; per-page review/freshness badges (ReviewBadge) on topic pages and indicator cards; KeyTerms blocks on eight surfaces; a category jump-nav on /indicators; and source-quality/maintenance cross-links on /data-review. No values changed. Export version bumped to 1.24.0.


Summary: Structured-data & machine-index pass. Added eight lean machine JSON indexes (topics, dashboards, categories, glossary, series, indicators, rankings, data-dictionary), a sitemap split (/sitemap-pages.xml, /sitemap-data.xml), per-page Open Graph images, Dataset JSON-LD variableMeasured (PropertyValue) and a glossary DefinedTermSet, and ItemList JSON-LD on the index pages. The export gained jsonIndexes and sitemaps. No values changed. Export version bumped to 1.23.0.


Summary: Platform v2. Added series sparklines and a /series/compare view; a /data-dictionary; a /defense index and /rankings hub; thirteen more CSV/JSONL distributions (topics, dashboards, categories, query-intents, policy-thresholds, update-log, source-quality JSONL); per-source /sources/<id>/data.json; /source-quality.json; /changes/data.json; /atom.xml; /sanctions/timeline/data.json (grouped); /graph/data.json; and a versioned dataset route. A static default Open Graph image was added. Twenty-five distributions total; Dataset JSON-LD advertises them. No values changed. Export version bumped to 1.22.0.


Summary: Platform deepening. Expanded indicator time series to seven (all EIA chokepoint flows plus FAO/Henry Hub) with /series and /series/<id> pages; added seven more static distributions (series, glossary, faq, source-quality, graph-nodes, graph-edges CSV + series JSONL); added an /indicators index, a /changes log, a /graph citation-graph view, a /sanctions/timeline, a /defense/rankings view, /source-quality.json, per-indicator /indicators/<id>/data.json, and a researcher manifest.json. Dataset JSON-LD now advertises all DataDownload distributions. No values changed. Export version bumped to 1.21.0.


Summary: Platform expansion. Added a /source-quality dashboard, an /llms.txt and per-page citation blocks, static CSV/JSONL dataset distributions, an RSS changelog feed (/feed.xml), a /chokepoints/rankings view, a /transmission-map, per-observation /indicators/<id> citation cards, and a lightweight indicator time-series foundation (series block: FAO Food Price Index, Henry Hub gas, Malacca oil transit). Expanded defense spending with SIPRI 2025 top-spender values (US US$954bn, China US$336bn, Russia US$190bn) and glossary terms. No existing live values changed. Export version bumped to 1.20.0.


Summary: Commodities cluster + maintenance surface. Added a commodities category with three source-verified topics — oil benchmarks (EIA Brent US$92.88 & WTI US$91.16 spot, 29 May 2026), natural gas (EIA Henry Hub US$2.94 May / US$2.77 April 2026), and food prices (FAO Food Price Index 130.8 May 2026 plus its five sub-indices) — and a /commodities dashboard. Ten new live observations; two new EIA sources. Added a static /data-maintenance surface (review queue by cadence, periodic-source watchlist) — no scraping, no scheduled jobs. The export gained commoditySubjects, a maintenancePath, commodity query intents, and commodity glossary terms. No existing live values changed. Export version bumped to 1.19.0.


Summary: Chokepoint expansion. Added five source-verified chokepoint topics — Panama Canal, Strait of Malacca, Bab el-Mandeb, Turkish Straits, and Danish Straits — with live/source-linked indicators: Panama Canal Authority FY2024 transits (9,944) and revenue (4.99 billion balboas), and EIA Short-Term Energy Outlook quarterly oil-transit estimates (1Q–2Q 2025) for each chokepoint. Twelve new live observations, two new official sources (EIA STEO, Panama Canal Authority). Also added a /glossary of reference terms (DefinedTerm/ItemList JSON-LD) and a graph-derived 'related pages' helper; the export gained glossaryPath and glossaryTerms. The refresh sweep re-reviewed the existing high-priority queue: prior live values were left unchanged (no superseding same-scope official values adopted this pass) and remain dated historical snapshots. Export version bumped to 1.18.0.


Summary: Added a top-level economic-impact question hub (/economic-impact) that routes common natural-language questions to their best source-linked citation surface, via a deterministic query-intent registry. The export gained a queryHub block (query ids, recommended/related paths, and id/path-based intents with caveats); topicIndex gained a queryHubPath; and the citation graph gained an economic-impact query-hub node with recommends/mentions edges. No values, dashboards, or sitewide totals changed. Export version bumped to 1.17.0.


Summary: Citation-engine expansion. Added a fourth sanctions topic — secondary sanctions & third-country circumvention (/sanctions/secondary-sanctions-circumvention/economic-impact) — with two live/source-linked European Commission indicators (about 60 entities listed for circumvention in the 20th package, 23 April 2026; 50 Common High Priority customs codes, since February 2024) plus EC sources and source-linked facts; twenty-two live observations total across four sanctions topics. Added page-level FAQ/Q&A with FAQPage JSON-LD across the major pages, derived source-quality / citation-readiness metadata on the source registry, and a deterministic citation graph at graph.json. The export gained sourceQuality, faqIndex, and graphPath blocks. No existing live values or dashboards changed. Export version bumped to 1.16.0.


Summary: Citation-surface architecture pass: added a conflicts dashboard (/conflicts/dashboard) via the shared category-dashboard helper and a top-level /topics index. The export gained a topicIndex block and /conflicts/dashboard in dashboardHub (9 surfaces); conflicts now carries a dashboardPath. No values or sitewide totals changed. Export version bumped to 1.15.0.


Summary: Upgraded /dashboards into a citation hub indexing all overview surfaces (category dashboards, data dashboards, trust surfaces, source registry, dataset). Added an id/path-based dashboardHub block to the export. No values or sitewide totals changed. Export version bumped to 1.14.0.


Summary: Added a chokepoints overview dashboard (/chokepoints/dashboard), generalizing the dashboard pattern via a reusable getCategoryDashboardSummary helper. The chokepoints category now carries dashboardPath in dataReview.categorySummaries. No values or sitewide totals changed. Export version bumped to 1.13.0.


Summary: Added category-scoped review metadata: dataReview.categorySummaries groups the same sitewide review queue by public category (sanctions, conflicts, chokepoints, dashboards) with id-based high-priority/top review observation ids. /data-review gained a 'Review by category' section. No values or sitewide totals changed. Export version bumped to 1.12.0.


Summary: Added a cross-topic sanctions overview dashboard (/sanctions/dashboard) aggregating all three sanctions topics' indicators, policy thresholds, sources, and review status. Extended the export's sanctions block with dashboardPath and highPriorityReviewObservationIds (id-based, no data duplication). No live values changed. Export version bumped to 1.11.0.


Summary: Manual refresh sweep across stale/overdue high-priority live rows. Updated two same-metric values from newer official sources: EU seaborne crude price cap US$47.6 → US$44.10/bbl (effective 1 February 2026, EC dynamic mechanism) and EU-listed shadow-fleet vessels 557 → 632 (EU 20th package, 23 April 2026). Re-verified the U.S./G7 US$60 cap and products caps (unchanged); preserved the Red Sea, OFAC-action and CREA cumulative rows as dated historical snapshots. Added one EC source (ec-crude-cap-2026). site.dataAsOf unchanged. Export version bumped to 1.10.0.


Summary: Added a third sanctions subject — frozen Russian assets & Ukraine financing — with three live/source-linked indicators (immobilized Russian central-bank assets in the EU about €210 billion; G7 ERA loan total about US$50 billion; EU ERA contribution €18.1 billion) and EU Council / U.S. Treasury / European Commission sources. The sanctions export block now covers three topics. Twenty live observations total. Export version bumped to 1.9.0.


Summary: Added a second sanctions subject — the Russian oil shadow fleet & shipping sanctions — with three live/source-linked indicators (EU-listed shadow-fleet vessels 557; OFAC-designated vessels 183; CREA shadow-tanker export share about 36%) and EU/OFAC/CREA sources. The sanctions export block now covers two topics. Seventeen live observations total. Export version bumped to 1.8.0.


Summary: Hardened the sanctions citation surface: added a structured policyThresholds block and a reference-based sanctions block to the machine-readable export, and promoted a CREA fiscal/export-revenue indicator (Russian fossil-fuel export revenue, about EUR 734 million/day, April 2026; authoritative research, medium confidence). Fourteen live observations total. Export version bumped to 1.7.0.


Summary: Added a U.S. Treasury / OFAC source-of-record layer for the sanctions page: a live/source-linked U.S./G7 seaborne Russian crude price cap (US$60/bbl, since 5 December 2022) alongside the EU US$47.6/bbl cap, plus a Treasury source record and source-linked fact. Thirteen live observations total. Export version bumped to 1.6.0.


Summary: Added the sanctions on Russian energy trade page with three live/source-linked European Commission indicators (EU seaborne crude price cap US$47.6/bbl; premium-to-crude products cap US$100/bbl; Russian share of EU gas imports about 19%), plus EC sanctions/REPowerEU sources and source-linked facts. Twelve live observations total. Export version bumped to 1.5.0.


Summary: Added a deterministic source-review layer: per-observation reviewStatus/recommendedReviewBy/reviewPriority and a dataReview summary (current/due-soon/overdue/stale). Added UNCTAD Review of Maritime Transport 2024 and updated Suez Canal Authority FY2025 source-linked facts. No new live observation was promoted (official SCA/UNCTAD/IMF figures were not directly retrievable for a live row). Export version bumped to 1.4.0.


Summary: Added Red Sea / shipping live/static rows (nine live total): UNCTAD Suez transit −42% and container-ship transit −67% (Feb 2024) and IMF PortWatch Suez trade −50% YoY (early 2024), plus IMF and Suez Canal Authority source-linked facts. These are dated acute-phase snapshots, flagged by the freshness logic. Export version bumped to 1.3.0.


Summary: Expanded live/static coverage to six observations: added World Bank et al. RDNA4 reconstruction need (USD 524 billion), the FAO Food Price Index (May 2026), and the NATO 2%-of-GDP allies count (2025). Export version bumped to 1.2.0. Remaining rows stay labeled sample.


Summary: Added the first live/static indicator: EIA Brent crude monthly average (May 2026). Other rows remain labeled sample.


Summary: Initial dataset export published with sample observations and source-linked facts.