Late · How this is computedA feed is fresh within one scheduled interval plus half an interval (at least 20 minutes) of its last good run, late up to three intervals, stale beyond; failing when its newest failure is newer than its last good run.Method →Code → late, How this is computedA feed is fresh within one scheduled interval plus half an interval (at least 20 minutes) of its last good run, late up to three intervals, stale beyond; failing when its newest failure is newer than its last good run.Method →Code → fresh, How this is computedA feed is fresh within one scheduled interval plus half an interval (at least 20 minutes) of its last good run, late up to three intervals, stale beyond; failing when its newest failure is newer than its last good run.Method →Code → on demand · measured 12:28 UTC
Each state is computed from the run tables and the dates the committed files record, by one published rule. A committed file past its allowed age fails the build, so it cannot be deployed as current. Machine-readable: /api/health/freshness.
Needs attention: Review queue
01Scheduled feeds
What the server fetches by itself
Feed
Status
Last good run
Expected
Last failure
Runs this week
Research sweepWeb search per bottleneck for news that may tighten or loosen it; finds leads, publishes nothing.Leads on the desk and in /review →
Fresh
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
every 6 h
none on record
28
Event draftsReads sweep leads and drafts an event from each, quote checked against the page — on a reader’s own AI key, never the free AI.Unreviewed drafts in /review →
On demandRuns when a reader presses “Summarise with AI”, and hourly only for readers who switched on automatic updates — each time on their own key.
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
hourly
168
Science feedsPapers, preprints and grants from OpenAlex, arXiv, NSF, OpenAIRE and USAspending.Science pipeline →
Fresh
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
hourly
none on record
170
Job boardsOpen roles from the public Greenhouse, Lever and Ashby boards of directory companies.Careers →
Fresh
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
daily
none on record
7
Official statisticsPrice and output series from the BLS public API.Data series →
Fresh
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
every 6 h
none on record
28
Data-quality checksRe-opens a rotating slice of source links, quotes, tickers (SEC, OpenFIGI) and USGS table rows, and scores every dataset. No AI.Data quality →
Fresh
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
every 6 h
none on record
27
02Review queue
Open leads: found, not yet read, not expired
Late
How this is computedWaiting: open sweep leads — no reviewer decision, not expired. Oldest: whole days since the earliest open one was found. Drafts ready: waiting leads whose AI draft suggests an event and passed the checks.Method →Code → leads waiting; the oldest was found How this is computedWaiting: open sweep leads — no reviewer decision, not expired. Oldest: whole days since the earliest open one was found. Drafts ready: waiting leads whose AI draft suggests an event and passed the checks.Method →Code → ago. Leads should be read within 7 days; one nobody reviews within 30 days expires and leaves the queue, so a stale queue means the expiry itself is broken. Open the review inbox →
How this is computedA sweep lead is open while nobody has reviewed it and it was found less than 30 days ago; unreviewed and 30 days or older, it is expired. The review queue is open leads only: late when its oldest has waited more than 7 days, stale past 31.Method →Code → leads expired, never reviewed — kept, not deleted. See the expired leads →
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
30 d
Re-read each source and match the quote: pnpm tsx scripts/research/check-series.ts
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
30 d
Re-check each claim against its series and update checkedOn
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
365 d
pnpm run research:occupations (O*NET publishes yearly)
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
400 d
pnpm run research:usgs (new edition each February)
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
400 d
pnpm run research:producers (new country chapters through the year)
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
400 d
pnpm run research:producer-places (after research:producers)
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
400 d
pnpm run research:restrictions (OECD adds a data year annually)
How this is computedNow minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Method →Code →
60 d
pnpm run research:sanctions
Computed: For each resolved holding: the bottlenecks its companies hold (maker, capacity or part supplier), the ones a filing says they need or sell into, and everything upstream of a held or needed rail through recorded "needs" rows.Computed: Sum of the weights of the holdings that touch a rail, divided by the sum of the weights of all resolved holdings. With no weights given, every holding counts equally.Computed: For each country: the share of portfolio weight on a rail whose every recorded maker operates there, and the share on a rail with at least one recorded maker there. Part suppliers are not makers.Computed: Direct hits: bottlenecks where the failed node is a maker, a part supplier or the location. Makers wholly inside it are lost; makers also operating elsewhere are partly affected; the rest remain. Downstream: every bottleneck that needs a hit one, transitively, through recorded rows. Exposed: holders of hit and downstream bottlenecks and companies a filing says need or sell into them.Computed: The country’s recorded annual production divided by the recorded world total for the same year and unit, from config/substrata-quantities.ts (USGS).Computed: Rows that held over rows looked at, pooled across every check of that criterion for that dataset, rounded down to a tenth of a percent.Computed: The mean of the criterion scores that could be measured for the dataset.Computed: Rows: judged by the dataset’s first provenance check. Sourced: share of those that pass it. Verified: rows re-derived from their source by a network look, over every row such a look covers. Stale: rows past their declared age. Broken: source links that failed three tries.Computed: Tokens per UTC day on this site's free AI keys, summed per class: interactive (Ask and fact-checks, a reader waiting) and background. Background is zero from 2026-09-25: no scheduled job may call the free models, and test/no-free-background-ai.test.ts fails the build if one tries. Drafting runs on readers' own keys and is not on this ledger.Computed: Over every Ask question in the last 24 hours that got an answer: the 50th and 90th percentile (continuous, PostgreSQL percentile_cont) of milliseconds from the request reaching the server to the first answer text streamed, and to the finished answer.Computed: Count of rows in the bottleneck corpus: every material plus every non-material chokepoint.Computed: Count of bottlenecks whose assessed horizon is "now".Computed: Sum of four judged scores, each 0–3: concentration + substitution + lead time + inelasticity.Computed: Count of (bottleneck, producer) pairs across every material in the corpus.Computed: Producer rows counted by verification state from the corpus: sourced (an accepted primary source is linked) or unverified (none yet). Unchecked pages: open rows in the producer-sourcing queue, counted live from the database.Computed: Count of rows in the market-participant directory.Computed: Count of bottlenecks on which this organisation is recorded as a producer, a holder of the capacity, or a supplier of a critical part.Computed: Accepted events that name this organisation, plus (counted separately) accepted events on a bottleneck it holds that do not name it.Computed: Count of policy instruments in the corpus; each one links its official text.Computed: Count of science entries: technologies recorded as able to relieve a named bottleneck.Computed: Accepted events whose date falls within the last N days of today.Computed: Leads in the research sweep’s queue that no person has read yet and that have not expired, counted live from the database.Computed: Waiting: open sweep leads — no reviewer decision, not expired. Oldest: whole days since the earliest open one was found. Drafts ready: waiting leads whose AI draft suggests an event and passed the checks.Computed: Count of bottlenecks tagged with that technology, industry or stage.Computed: Number of distinct country codes on the rows being counted (makers, or rules).Computed: Rules counted by the effect recorded on each: "tightens" slows building, "loosens" speeds it; a rule recorded as both ways is counted in neither.Computed: Rules with at least one proponent: an organisation that asked for it in a document linked on the row.Computed: A judged level on a nine-step scale from "idea with a physical basis" (1) to "in production at scale" (9).Computed: Technologies tracked = science entries; bottlenecks addressed = distinct bottlenecks named as relieved by any entry; reaching production = entries judged 8 or 9; sourced = entries whose readiness cites a source.Computed: Kinds = rows in the capital-kinds list; providers = named funders, each linking its own mandate page; assessed = bottlenecks with a funding judgement; "money is not it" = those judged "not-money".Computed: Open = calls without a resolution; resolved = right + wrong + unclear; overdue = past the resolve-by date and not yet marked; hit rate = right ÷ (right + wrong), published only once enough calls have resolved.Computed: Bottlenecks on that stage of the loop, and how many of them have every producer row sourced.Computed: The highest severity score among the bottlenecks recorded as gates on the loop.Computed: Count of explainer files in content/learn, and of entries in the glossary.Computed: A place's annual production ÷ the published world total, same unit and year.Computed: Sum of the squares of each producer’s share of world output (0–1).Computed: Published reserves ÷ annual production, same place, unit and year.Computed: Accepted events in the last 90 days that tighten it, minus those that loosen it. Neutral events count for neither.Computed: One row per (bottleneck, holder) after the screen’s filters; the bottleneck count is the distinct bottlenecks among those rows.Computed: Organisations recorded on a bottleneck (maker, capacity holder or part supplier) whose shares, or a parent’s, trade on an exchange found in the SEC ticker file or OpenFIGI.Computed: Items per stage = papers, preprints and grants collected for the bottleneck whose relevance score is 2 or more, placed on a stage by the rule in lib/science.ts; judgements are counted separately.Computed: Items first collected in the last 7 days whose publication or award date is within the last 30 days.Computed: Items per institution per bottleneck, counting each item once per institution named on it by the source; a company is matched to the directory only when every distinguishing word of both names agrees.Computed: The latest value in a series minus the value before it, divided by the earlier value, same series and unit.Computed: Count of dated values in a series, or of series matching the filters, across the committed corpus and the official statistics fetched on schedule.Computed: Count of postings currently listed on the public job boards Substrata reads, after the page’s filters. By default software and business roles that name no bottleneck are left out; "Every role" puts them back.Computed: A posting is filed under a bottleneck when its title names one of that bottleneck’s terms, or its description names them at least twice (title only for software and business roles); its role family is the first family whose title terms its title names.Computed: For each skill or credential in the published list, the number of open postings whose title or description names any of its terms.Computed: Count of programmes in research/learning-paths.json, each with the official page it was checked on.Computed: A feed is fresh within one scheduled interval plus half an interval (at least 20 minutes) of its last good run, late up to three intervals, stale beyond; failing when its newest failure is newer than its last good run.Computed: Now minus the finish time of the last good run (feeds), or whole UTC days since the date the committed file records it was checked (datasets).Computed: A sweep lead is open while nobody has reviewed it and it was found less than 30 days ago; unreviewed and 30 days or older, it is expired. The review queue is open leads only: late when its oldest has waited more than 7 days, stale past 31.Computed: Position of a country when the countries USGS lists individually are sorted by the same column, largest first; equal values share a rank.Computed: Latest year ÷ the year before − 1, same country, same column of the same table (USGS or EIA).Computed: A country's resources are ordered by its largest share of world output on any production column of each table (e.g. palladium within PGMs).