Verification log
Filled at each release. See the bottom of this file for the latest run.
2026-11-02 — initial release (commit 734affb and later), https://wp.spboucher.ai on M3U96b
| Check | Result |
|---|---|
Unit tests (pnpm test, vitest) |
23/23 passed (identifiers, citations APA/Chicago/BibTeX/RIS, extraction heuristics, chunking, lexical vectors, i18n key parity and date precision) |
End-to-end (pnpm test:e2e, Playwright, desktop Chrome + iPhone 14 viewport, against production) |
19 passed, 1 skipped (mobile-only test on desktop): home statistics = API stats, library filters/sort/display modes, paper page (Scholar meta, JSON-LD, cite dialog, versions, related, PDF HEAD 200), identifier aliases 308, unknown/reserved 404, French locale, search highlights, all discovery pages, machine endpoints (BibTeX, OAI, RSS, sitemap, graph, health), mobile menu, admin unauthenticated refusal, admin login → forced password change page |
Security audit (pnpm test:security https://wp.spboucher.ai) |
27/27 passed: CSP/HSTS/XFO/nosniff/referrer/permissions headers, no x-powered-by, admin redirects + noindex + no-store, upload/preview 401 without session, cross-origin POST rejected, event input validation, SQL-injection attempt harmless, unknown file 404, path traversal blocked, reserved identifiers hidden (pages, API, OAI), search rate limit 60/min, robots disallow /admin, no secrets in HTML |
Deployment verification (pnpm verify:deploy https://wp.spboucher.ai) |
38/38 passed: TLS + health < 2 s, stats = health = list total = OAI record count (39), manuscript download with SHA-256 header, 21 routes 200, Scholar/DC/JSON-LD/hreflang, FR render distinct, 308 alias, 404s, admin protected |
| Worker pipeline | 39/39 manuscripts: integrity OK, 5,139 full-text chunks, previews, lexical vectors; 39/39 paper embeddings and 5,139/5,139 chunk embeddings (OpenAI text-embedding-3-small, model verified via API); relations: 498 topic, 396 method, 28 dataset, 2 author, 156 lexical (inferred), 151 semantic (inferred) |
| Backup + restore drill | Nightly job ran (pg_dump + manuscripts, AES-256, rsync to M3U96a OK); pnpm restore:drill restored the encrypted dump into a scratch DB: papers 41/41, versions 39/39, files 39/39, authors 3/3, topics 36/36, chunks 5,139/5,139 |
| Infrastructure | DNS unchanged (pre-existing A record), Caddy route added by mld deploy, Let's Encrypt certificate issued, PM2 wp-web + wp-worker online, registry updated, mld adopt done (node clone = source of truth) |