# Per-economy packages — S301 forced-labour FRN

60 self-contained PDFs, one per investigated economy. Built for distribution
alongside a blog post explaining the notice's structure.

**Source:** `documentation/260723_S301_FL_FRN.pdf` (431 pp).
**Built by:** `code/2_build_economy_packages.py`.
**Verified by:** `code/3_verify_economy_packages.py`.

## What each file contains

Each file carries a **navigation outline** (the sidebar/bookmarks pane in any
PDF reader), so a 250–370 page document is navigable without scrolling:

```
About this extract
Notice of action
  Summary and effective dates
  Tariff rates determined
  Determinations in 60 investigations
    <Economy>                              <- this economy's determination
Annex I — tariff headings and U.S. note 52
  Tariff heading for <Economy>             <- where its rate is set
  U.S. note 52
  Exemptions for <Economy> — note 52(j)(N) <- the 13 economies that have one
  Net-of-MFN calculation — note 52(k)      <- the 5 net-of-MFN economies
Annex II — product exemptions
  Explanatory note and scope-limitation markers
  Index of parts
  Part A — Goods of any investigated economy
  Part <X> — <that economy's part>
```

Bookmarks address pages by position in the file, so they stay correct even
though the printed folios jump.

| Pages | Content |
|---|---|
| 1 | SGEPT editorial page — economy, rate, in-force dates, contents, link to GTA |
| 1–72 | Notice body and the determinations for all 60 economies |
| 73–136 | Annex I — tariff headings and U.S. note 52 |
| 137–138 | Annex II explanatory note and index of parts |
| 139–242 | Annex II Part A — exemptions for every investigated economy |
| varies | That economy's own Annex II part(s), if it has any |

Printed page numbers are the original notice's throughout, so any page cites
back to the source. They jump where another economy's annex part was omitted.

## Why not just ship the modular split

`results/packages/` holds an accurate 16-way modular split (P1 + P2 + 14 country
parts), audited in `results/packages/RED-TEAM.md`. Those slices are correct, but
a single country part cannot stand alone:

- it states no tariff rate (the rate lives in Annex I),
- it carries no date,
- it uses the `Ex` scope-limitation marker without its definition (that is on p137), and
- it omits country-specific exemptions that sit in **Annex I** rather than Annex II —
  Jordan's psyllium-husk and aloe carve-out is on p135, Ecuador's on p126.

These packages fold all of that back in. The only material excluded from any
file is the other economies' Annex II parts.

Everything in pp 1–242 is included whole rather than filtered, because U.S.
note 52 subdivisions (a)–(f) and (h)–(i) are country-neutral rules that name no
economy — a name-based filter would silently drop them.

## Sizes

47 economies take Part A only (243 pp). The 13 with their own part run 246–367 pp;
Jordan, El Salvador and Guatemala are largest because they also take Part O
(CAFTA-DR textiles, 117 pp).

`economy_package_manifest.csv` lists every file with its regime, parts, source
page ranges and page count.

## Verification

`python3 code/3_verify_economy_packages.py` — passes. It uses poppler
(`pdftotext`), independent of the builder's `pypdf`, and checks per economy:
page count; that the editorial page names the economy, regime, dockets, SGEPT
and the GTA link; that all 14,954 content pages are text-identical to the source
pages they claim to be; that the economy's own parts are present; that no other
economy's part interior is included; that p137 is present; that no source page
is duplicated (Jordan's Parts N and O share p315); that the outline exists,
contains the required entries, and that every bookmark resolves in range — with
each `Part X` bookmark landing on the page whose printed folio is that part's
actual first page; and that the page-1 link is exactly
`https://globaltradealert.org`.

## Regenerating

```bash
python3 code/2_build_economy_packages.py    # ~7 s
python3 code/3_verify_economy_packages.py   # ~20 s
```

Brand assets are bundled in `documentation/assets/` (SGEPT navy logo, Roboto
Light/Regular/Medium), so the build does not depend on locally installed fonts.
