P.O. Record — manual & release notes

How to search, read and navigate the Proximal Origin record.

DRASTIC Research

1. Getting started

The app is a folder of static files. It needs a local web server — opening index.html from the file system will not work, because the browser blocks the data fetches.

cd ~/Work/Reports/PO_Slack/page_based
python3 -m http.server 8080

Then open http://localhost:8080/. Leave the terminal running; Ctrl+C stops the server.

First paint takes a few seconds: the app loads four data files and then draws the first source PDF (52 MB) into the reading area.

2. What is in the record

Four releases, each from a different archive. They are merged into one timeline, but each keeps its own provenance, and the colour of a document always tells you which medium it came from.

ReleaseMediumEntriesPeriodColour
Rand Paul — Slack Part 1 (screenshots)Slack1,2561 Feb – 30 Apr 2020 blue, lighter shade
Rand Paul — Slack Part 2 (export)Slack11,35130 Apr 2020 – 28 Jun 2023 blue, darker shade
FOIA — Proximal_Origin_Emails.pdfEmail10031 Jan – 27 Jul 2020 green
FOIA — SSCP-Drafts-of-Proximal-Origin.pdfManuscript drafts201 Feb – 5 Mar 2020 amber

That is 12,727 entries in total, spanning January 2020 to June 2023.

Read the shades this way: the hue is the medium (blue = Slack, green = email, amber = manuscript draft) and the shade is the release. Rand Paul's two Slack tranches are therefore two shades of the same blue. The FOIA productions are all green, and each new FOIA release joins as another shade of green rather than a new colour.

Seven entries are release notes (grey) — Slack's own "channel created / joined" furniture. They are publisher metadata about the release, not documents in it, so they are kept separate and can be filtered out.

3. The screen and its three rails

Left to right (landscape) there are three collapsible rails and three work areas:

AreaWhat it does
📖 P.O. guideThe sections of the article, and the documents each one rests on.
🔖 BookmarksYour own saved pointers into the record.
📊 TimelineEntries and search hits over time.
ResultsThe matched boxes.
PDF panelOne of four tabs — see §8 — following the box you opened.

Collapsing and resizing

Every rail and panel collapses by clicking its header (the chevron flips to point back). A collapsed rail stays a thin 36 px strip with its title turned sideways, so it can always be opened again — there is no state you can get stuck in. All three rails and both timelines are open by default.

Two drag handles resize the work areas: the one between the results and the PDF panel (width in landscape, height in portrait), and the one under the timeline.

Landscape and portrait

The Switch to… button in the toolbar flips the whole arrangement. The time axis turns with it: vertical in landscape, horizontal in portrait. The bookmarks rail follows the same convention — a vertical list down the left in landscape, a horizontal strip across the top in portrait, with its scroll arrows turning from ▲▼ to ◀▶ to match.

5. Reading a box

Each result is a card: a header line (date, sender, time, source badge, medium badge, hit count), any chips, the hit navigation bar, and the text itself.

Clicking an email or a manuscript draft loads that release's PDF into the reading area automatically, at the cited page — you never have to pick the source yourself.

6. Scrolling inside a box

A long message is capped in height, and the box scrolls internally. Because the results list itself also scrolls, two scrollbars on screen at once is confusing — so every box has its own always-visible draggable scrollbar down its right edge.

7. The timeline

Two charts sharing one time axis. On the left (bottom in portrait): all entries per day. On the right (top): search hits per day.

Reading the entries side

Each day's bar is stacked, one segment per box kind (Slack message, Email, Manuscript draft, Release note) in a single flat colour — no per-release shading on the bars themselves, so a glance tells you the kind, not which FOIA production it came from. A kind absent from a day simply has no segment there.

The legend

Below the chart, one bordered group per box kind, each with its own checkbox, swatch, name and total. Tick a group's own checkbox to show or hide that whole kind everywhere — search, browse and the chart together, the same thing the Sources dropdown does. Nested under each group is a row of smaller checkboxes, one per release that kind came from (e.g. Slack Part 1 / Part 2) — tick one to show or hide just that release, leaving the rest of the kind in place.

Zooming and selecting

8. Main Docs / Linked Docs / Tragicomedy / Thread

The PDF panel on the right always shows one of these four. The result list on the left sits in its own panel too, under a single tab labelled Content. "Timeline" used to be the name of one of these tabs too — it now only means the chart in §7, to stop one word meaning two different things.

TabShows
Main Docsthe five ingested, searchable sources (Slack, email, manuscript drafts), following whichever box you opened
Linked Docsother documents the article cites that are not one of the five above, trimmed to just their cited pages — no search, no entries, a page number is all a citation ever names here
P.O. — A Tragicomedythe article itself, each page already opening on the heading a guide section points to
🧵 Threada message's full reply/forward chain, upstream and downstream, Gmail-style — each message carries an Open in Main Docs link to its scanned page and an Open in Content link that instead recentres the left-hand Content list on it

A box with a reply/forward link shows a 🧵 Thread button; clicking it opens that conversation. Clicking another message's card in the Thread tab re-centres the conversation on it. Each message also carries two jump links: Open in Main Docs jumps straight to that message's scanned page without losing your place in the thread, and Open in Content instead recentres the left-hand Content list on that exact message.

9. The P.O. guide rail

The left rail is the index of the article itself — its 214 dated sections — so any message can be read against the claim it supports.

Click a section and the detail box below lists what that section rests on: one line per citation, in alphabetical order by document, each showing the medium (in that medium's colour), the page, and the date.

The little badges on each section (e.g. slack 12, email 3) count its citations by medium, in the same colours as the timeline — so the guide and the charts are read the same way.

10. Bookmarks

Your own pointers into the record. Click 🔖 on any box to add one; click again to remove it. The rail lists them with the date and the medium.

Saving and loading

💾 Save writes the whole list to a named JSON file (po-slack-bookmarks-YYYY-MM-DD.json). 📂 Load reads such a file back and replaces the current list — it asks first, and it refuses a file that is not a bookmark file rather than silently emptying the rail.

Across the other DRASTIC apps. The file format is deliberately generic: every bookmark records which app it belongs to (po-slack, fauci-diary, daszak-calendar) and the URL to reach it, alongside the P.O.-specific fields. So one bookmarks file can hold pointers into the Fauci Diary and the Daszak calendar as well as into this app. This app jumps directly to entries it holds; for a pointer to a sibling app it opens that app's URL. The format is versioned, so a later app can add fields without breaking an older file.

11. Keyboard

Enter in the search box — search Enter in Jump-to-date — go ↑ ↓ — walk the matches PageUp PageDown — page the box under the pointer ← → — previous / next PDF page

The split is deliberate: vertical keys belong to the match list, because that is what you navigate most; paging inside a long box is on PageUp/PageDown; and the horizontal keys are left to the PDF.

12. Known limits

Stated plainly, because they affect what the record can be asked.

13. Release notes

v1.4 — Main Docs / Linked Docs renaming, Content panel, Open in Content

v1.3 — Thread tab, Reference Sources tab, timeline rework, tab renaming

v1.2 — bookmarks, guide, provenance

v1.1 — mixed sources, scrolling, the guide

v1.0 — the P.O. Slack record