Back to case study

Recorded engineering evidence

Automated validation

43 passed · 0 failed · 43 checks

This is a recorded local test run, not a live production monitor. Inquiry tests use synthetic data and simulated email responses. Browser checks and the September 9, 2026 controlled inbox test are reported separately in the case study.

Run details

Completed (UTC)
Command
npm run validation:report
Runner
Node.js test runner with tsx; tests/*.test.ts
Runtime
Node.js 24.9.0 · Next.js 15.5.24 · React 19.2.8
Platform
darwin / arm64
Storage
Isolated local SQLite test databases
Email
Simulated provider responses
Source SHA-256
407920df7c5c8957cb7e1b4978ad4bfc231bc5d407441992fa984db5927124c5

The fingerprint covers application code, catalog, scripts, tests and dependency manifests. The report contains result metadata only; raw test logs and inquiry records are excluded.

View the generated JSON report

Individual results

  1. Catalog rejects duplicate identities, URLs, ordering, missing covers and malformed dimensions — passed
  2. Photo and series identities survive renamed slugs and rearranged display order — passed
  3. Build prepares only published imports and rejects missing delivery assets or stale dimensions — passed
  4. Collections resolve an explicit cross-shoot sequence without changing canonical photo records — passed
  5. Collection validation rejects missing, duplicate, cross-source and unavailable references — passed
  6. Unlisted old series stay routable; new source-only series do not gain routes or inquiry references — passed
  7. Configured featured works resolve and preserve the single 16-photo Graduation collection — passed
  8. Hero curation resolves the configured distinct published landscape photographs with descriptive alternatives — passed
  9. Slideshow navigation wraps in both directions and skips failed photographs — passed
  10. T06 multilingual names and empty optional fields are accepted — passed
  11. T07 runtime validation catches wrong types, email, length, enum, impossible date, and extra data — passed
  12. T04/T05 public references are allowlisted, arbitrary objects and traversal are rejected — passed
  13. T08 simultaneous requests create exactly one durable record; a restart can replay the receipt — passed
  14. T08 same key different payload conflicts; same email with a new key is allowed — passed
  15. T09 failed storage cannot return a successful receipt — passed
  16. Rate limiting is durable and retries do not consume another slot — passed
  17. T10 failure preserves the record; concurrent workers send once and explicit retry recovers — passed
  18. T10 uncertain sends and interrupted workers require review before resend — passed
  19. Preview notification processing does not claim acceptance — passed
  20. Retention removes only resolved old records and retains unresolved notifications — passed
  21. T02 catalog photos exist, are nonempty, and all covers belong to the series — passed
  22. Outbox processing finds an old pending record behind more than 100 resolved records — passed
  23. Reference display name is resolved by the server and preserved with the inquiry — passed
  24. Resend adapter uses a fixed recipient/subject, plain text and a stable provider idempotency key — passed
  25. A Vercel runtime fails closed without durable remote storage — passed
  26. Operator review exports one private record without overwriting files or changing notification state — passed
  27. Public series have unique routes and stable inquiry IDs; featured order is explicit — passed
  28. Publication and curated sorting apply before route lookup; renaming a slug preserves identity — passed
  29. Sitemap and public API expose the same published series links — passed
  30. Stored return positions reject unsafe paths, malformed values and expired visits — passed
  31. Local photo dimensions match oriented files; remote delivery preserves series identity and order — passed
  32. Delivery assets reject unapproved hosts, mutable paths and malformed dimensions — passed
  33. T06/T08 receipt comes after persistence, is retry-safe, and never returns customer data — passed
  34. Local loopback aliases are accepted for the same port — passed
  35. T07/T11 route rejects cross-origin, invalid content type, extra privileged fields, malformed and oversized bodies — passed
  36. T05 stale reference returns a correctable field error and creates no record — passed
  37. Production notification attempts run after persistence; retries do not resend accepted jobs and failures still return a receipt — passed
  38. Production environment values with surrounding whitespace still send the saved inquiry once — passed
  39. T09 database failure produces an uncertain-receipt error, never success — passed
  40. Studio validates selections, own-series covers, ordering and both crop bounds — passed
  41. Curation changes public covers and featured order while preserving photo order and URLs — passed
  42. Local editor is disabled in production and rejects remote hosts and cross-site requests — passed
  43. Atomic save backs up the prior version; stale, concurrent and invalid writes cannot overwrite it — passed