# Methodology

## What this measures

Three ledgers built from the record:

- **Cost** (`cost_revisions.csv`) — the four announced budgets, 2017 to 2025, from the published story. Escalation is `(final - original) / original`, reported as the published 54% (the exact value is 54.5%; the story floors it).
- **Capacity and demand** (`capacity.csv`, `passengers.csv`) — the terminal's 13-15M design against annual passengers at five points from the ~20M hub peak to 9.95M in 2024. Excess capacity is `(design - demand) / demand`.
- **Financing** (`financing.csv`, `debt_service.csv`) — grants versus revenue bonds, and the debt-service schedule, reconstructed from the Authority's audited Annual Comprehensive Financial Reports (2019 baseline, 2024 current).

## Sourcing rules

Every figure carries a `source_id` that resolves to a file in `01-sources-archive/`, captured and fixed by a SHA-256 sidecar before any number was drawn from it. `verify.py` enforces the resolution; a figure whose source is not archived does not pass the gate. Figures the Authority asserts (jobs, economic impact) are labeled `authority_claim` and are attributed, not adopted.

## Scope limits, stated in place

- The debt-service schedule combines the Series 2021 and 2023 bonds; it is Authority-wide (PIT and AGC), and the 2024 report describes both series as financing the Terminal Modernization Program.
- The ~$410.5M April 2025 issuance is a subsequent event in the 2024 report; its final terms confirm against the 2025 report.
- Passenger figures are the counts as published; a single definition is held across the series.

## Reproduce

```
pip install -r 03-harness/requirements.txt   # only pypdf/openpyxl are optional add-ons; re-hash needs stdlib
python 03-harness/capture.py       # re-fetch the sources (network)
python 03-harness/build.py --check # recompute the figures, compare, change nothing
python 03-harness/gate.py          # refuse to ship unless everything resolves
python 03-harness/check.py         # the reader's one command
```
