# DA-EX-001 — Public reproducible evidence package

## Повторити перевірку

1. Розпакуйте ZIP у нову папку.
2. Відкрийте цю папку в терміналі. Потрібен Node.js 24 або новіший; опублікований звіт вказує точну версію фактичного запуску.
3. Запустіть:

```sh
node verify.mjs
```

Зовнішні пакети, `npm install`, обліковий запис, сервер і мережа не потрібні. Запуск створює `verification.local.json`. Опублікований `report.json` залишається незмінним. За невдалої перевірки процес завершується з ненульовим кодом і записує FAIL.

Код використовує справжню SQLite, тимчасові бази й контрольні дані. Він не звертається до робочого API сайту та не надсилає повідомлень. Тимчасова база на диску видаляється після перевірки. Браузерна кнопка на сайті перевіряє SHA-256 файлів; повний запуск серверного обробника виконує команда вище.

## Reproduce

Extract to a fresh folder and run `node verify.mjs` using Node.js 24 or later. No external dependencies or network are required. The exact runtime used for the published result is recorded in `report.json`. A local rerun produces `verification.local.json`; the published report is preserved. A failing assertion produces FAIL and a nonzero exit code.

## Read the chain

- **Claim and formal property:** `SPEC.md`.
- **Executable artifact:** `artifact/lib/inquiries.js`, its shared validator and SQL schema. `artifact/app/api/inquiries/route.ts` shows the site's handler binding.
- **Procedure and inputs:** `verify.mjs`, `fixtures.json`.
- **Observed results:** `report.json`, including the event journal, counts, runtime and timestamp.
- **Byte identity:** `manifest.json`; the site exposes its expected SHA-256. Hash agreement alone is not independent publisher authentication.
- **Guarantee boundaries:** `SPEC.md` and the report's `limits` field.

Do not summarize a PASS as proof of every input, Cloudflare D1 crash recovery, distributed concurrency, physical execution, or readiness of another product. Review the exact scope before reusing the result.
