Private research assets

Exhibit A turns routing exhaust into three versioned, local datasets. They live under engine/.exhibit-a/research/, have no public read endpoint, and are never posted to a pull request.

Example scheduled observatory invocation:

python3 -m exhibit_a.cli observe .exhibit-a/cases/CASE.json \
  https://github.com/org/repo.git --upstream-sha 0123456789abcdef \
  --out .exhibit-a/research

The scheduler is responsible for resolving upstream main to a SHA. Exhibit A accepts only that validated SHA and an HTTPS URL; it never widens Git input rules to accept an untrusted branch expression. Observatory and human labels route research records only. Neither can change a Case verdict.