Release history

Changelog

Version history for the PEPIndex (Presidential Economic Pressure Index)

Photo by RUBENIMAGES. on Unsplash

PEPIndex publishes deliberately separate version numbers. The values below describe the current release:
IdentifierCurrentMeaning
API path versionv1URL contract — /api/v1/…
API implementation2.0.0App / OpenAPI version
Schema (data dictionary)1.4.4Output / table schema
Methodology1.2.20Scoring framework
Data buildgenerated_atISO timestamp on every snapshot

API changes & stability contract

The REST API publishes a machine-readable contract at /openapi.json (interactive docs at /docs), with versioned copies pinned per methodology release. Stability promise: additive changes (new endpoints, new optional response fields) ship at any time — clients should tolerate unknown fields. Breaking changes (removing or renaming a top-level response field, removing an endpoint, changing an endpoint's access tier) are announced in this section at least 30 days before taking effect. The /api/v1 path prefix changes only with a v2.
DateChangeType
Oct 2026GET /api/v1/index/branch/congressional adds cbo_estimates_30d and related_bills; the free snapshot's branch_reaction.congressional carries bothAdditive
Oct 2026New free endpoint: GET /api/v1/labor/government (government workforce trends); the free snapshot adds government_workforceAdditive
Oct 2026New error: 403 unavailable_in_region for requests from jurisdictions where PEPIndex is not offeredAdditive
Aug 2026Versioned OpenAPI contract published (pinned per methodology release; live at /openapi.json)Additive
Jul 2026New endpoints: GET /api/v1/index/branch/{judicial|congressional} (free), GET /api/v1/sector-reactions (Standard), GET /api/v1/events/{id}/sector-reaction (Premium)Additive
Jul 2026Free snapshot adds branch_reaction; index history adds branch columns and daily S&P 500 closeAdditive
—No breaking changes announced.—

Data correction October 2026 — Fabricated chicken-outs removed from the published rate

An audit of the live headline found events recorded as abandoned with no evidence. Most were official documents that themselves imposed a measure — a proclamation or order that carried a policy out — mistaken for unmet threats when their monitoring window closed; one had kept a resolver's verdict on its evidence after being re-opened. Twenty-eight such outcomes were re-opened and the action documents among them retired with no outcome; one benchmark (the June 2026 Section 232 metals amendment, which took effect on its stated date) is now recorded as carried out; and the published history was rebuilt. The chicken-out rate and the live headline moved as a result; the scoring formula did not change.

v1.2.20 October 2026 — Trade threats that were carried out, and more of Congress's answers

Some trade threats were carried out by a proclamation or order that never names the threat's target, such as a worldwide import surcharge. Those threats stayed open, added to live deadline pressure, and would eventually have been recorded as abandoned, a chicken-out for an action that happened. Before a trade threat's window closes it is now checked against independent reporting, after the Federal Register has had its chance, and the outcome is recorded with where the evidence came from. Congress's resolutions to end the Brazil and the worldwide tariff emergencies are now linked to the threats they answer, still by reviewed exact rules rather than by topic.

v1.2.19 October 2026 — Congress: the resolutions that answer threats, votes and CBO estimates

The congressional reaction index had read zero, because it only counted bills that a threat itself names, and presidential threats almost never name one. It now also counts the legislation Congress uses to answer a threat, linked by exact rules rather than by topic: resolutions to terminate the national emergency a tariff rests on, and resolutions disapproving a rule tied to a threat. Recorded votes and Congressional Budget Office cost estimates on those bills come in with the same data. The free congressional index endpoint and the Overview tile now list the bills with their latest action. A response resolution adds to the reaction index but never decides a threat's outcome. The headline index and every event score are unchanged.

Availability October 2026 — Not offered in certain jurisdictions

PEPIndex — the website, the API and paid subscriptions — is not offered in certain jurisdictions. Visitors from them see an availability page, API requests are refused with 403 unavailable_in_region, and no key is issued for a billing address there. See the terms.

v1.2.18 (data) October 2026 — Government workforce trends

Federal, state and local government payrolls, and federal job openings, hires, quits and layoffs, now come in with the monthly labor data. They are free, on the Live Data tab and at /api/v1/labor/government: the latest month, the change from a month and a year earlier, the change since January 2025, two years of history, and the tracked threats aimed at government workers. Federal payrolls were 2.68 million in September 2026, down 328,000 (10.9%) from January 2025. No score or index value changes: these series are shown alongside the index, not used to compute it.

v1.2.18 October 2026 — Live pressure counts only threats

The live headline adds pressure from open threats whose deadline has passed. Some open events were not threats at all but the official documents that carried a policy out, such as a proclamation imposing duties; the document is the follow-through, so there is no deadline for it to miss. Those events no longer add live pressure, and neither do statements classified as something other than a new threat. The live headline drops as a result. The settled index, its history and every event score are unchanged.

Sources September 2026 — Independent nonprofit records of federal actions

A new corroboration source: an independent nonprofit's public records of federal workforce, funding and program cuts. It is collected to corroborate domestic outcomes and appears in the source-freshness view; it is not yet matched to events and feeds no score.

v1.2.17 (ops) August 2026 — Statistical revisions, and reporting BLS by release schedule

No scoring or methodology change — three data-integrity fixes on the economic input layer:

v1.2.17 August 2026 — The behavioural dimensions become measurements

Four scoring inputs existed only as function parameters, with nothing stored behind them, so two dimensions — Rhetorical Dilution and Scope Reduction — were arithmetically constant for every live event, and Framing Shift ran on one input instead of two. Each is now measured and stored: dilution and framing are measured from follow-up statements the classifier already processed and previously discarded, matched to their event deterministically; scope is judged by the resolvers on their existing calls and recorded as null rather than guessed when the evidence is silent. A separate defect is corrected in the same release: events minted from a Federal Register document were being “resolved” by that same document, producing an outcome on the threat date and a single repeated score. Published history is rebuilt in full so the whole series is computed under one formula (methodology v1.2.17).

Correction (August 2026): the dilution and framing half of that release did not initially take effect. Two independent defects had to be fixed in sequence — the writer’s branch condition was unsatisfiable, and the classifier’s output contract nulled the very fields the matcher reads — so those two inputs measured nothing until both were corrected. Scope Reduction, the other half, worked throughout. The two are now populated by the corrected live path and by a historical pass that attaches a follow-up statement to an already-resolved event only when it was contemporaneous with it (after the threat, no later than the outcome). Coverage is still thin and is stated as a limit on the validation page — an unmeasured input contributes nothing rather than assuming no softening.

v1.2.16 July 2026 — Judicial coverage: the courts where executive orders actually get challenged

The index tracked executive orders on the way in, but not the litigation that decides them (schema v1.4.4, methodology v1.2.16):

v1.2.15 July 2026 — Market-reaction expansion: sector reaction & government-branch sub-indices

Market reaction now goes beyond the single economic lens (schema v1.4.2, methodology v1.2.15):

v1.4.1 (data) July 2026 — Index enrichment & the rhetorical sub-index

A full dataset audit populated four surfaces that were empty or NULL and fixed two bugs (schema v1.4.1, no methodology change):

v1.2.14 (ops) July 2026 — Alerts, distribution & verification backstop

Operational and product updates under the v1.2.14 methodology (schema v1.4.0):

v1.2.14 July 2026 — Reconciliation integrity & provenance-weighted scoring

v1.2.13 (ops) June–July 2026 — Coverage, billing & reliability

Operational updates under the v1.2.13 methodology (schema v1.3.7–v1.3.8):

v1.2.13 June 2026 — Realistic outcomes

Corrected an artifact where the index recorded a ~97% chicken-out rate with zero follow-throughs. Four fixes:

v1.2.12 June 2026 — Deadline-pressure window reconciliation

Closed a limbo gap where deadline-after-threat events could drop out of both the live-pressure and settled index between their threat-aging and finalization anchors. Live pressure now runs from the stated deadline to the end of the monitoring window, the exact complement of finalization.

v1.2.11 June 2026 — Event lifecycle finalization

Every event now terminates as a TACO or a facilitation rather than tracking indefinitely. Historical backfill finalizes immediately instead of parking in monitoring. The calibration lock is applied consistently across both seed catalogues.

v1.2.10 June 2026 — Live deadline pressure

Overdue, unresolved threats now build a provisional live_pressure_score each cycle, so an unmet deadline visibly accrues pressure over time. The settled index value is unchanged; a new index.live_value folds overdue pressure in so the headline can move in real time.

v1.2.7 – v1.2.9 June 2026 — USTR Section 301 coverage + efficiency

Section 301 USTR actions publish as Federal Register notices (not presidential documents) and were previously invisible to the index. The pipeline now ingests USTR notices as a threat source of their own, with a notice-window backfill fix (v1.2.9) and a calibration-catalogue lock (v1.2.8) that freezes hand-curated benchmarks so their values never drift.

v1.2.4 – v1.2.6 May–June 2026 — Live data + proclamation ingestion

The dashboard now reads live data from GET /api/v1/snapshot, decoupling published-data freshness from deployments. Presidential proclamations (Section 232 / reciprocal tariffs) are now classified into events. Academic-only replication datasets were removed in favor of freely-citable published constants.

v1.2.0 – v1.2.3 May 2026 — Statutory authority + economic verification

Added the statutory_authority field (IEEPA, Section 301/232/122, etc.), a redundant fallback source for trade-court records, and BEA PCE pass-through series for cross-validation against the Yale Budget Lab Tariff Tracker.

v1.1.0 May 2026 — Economic impact methodology

Integrated the four-group economic-impact methodology, formalized the six-dimension behavioral scoring framework, added the recency-weighted rolling index, and published the REST API specification.

v1.0.0 May 2026 — Initial public release

Four-criterion event definition (specificity, actionability, measurability, materiality), four-domain taxonomy (Trade, Foreign Policy, Domestic, Rhetorical), five-stage event lifecycle, and AI-assisted detection with human-in-the-loop review.