Skip to main content

Platform changelog

The platform's per-component changelogs live in their respective repositories:

  • api-gateway — currently published as commits; aggregator coming
  • control-plane
  • ML services (svc-ocr, svc-face, svc-liveness) — published as commits in apps/

For high-level rollout milestones, see the rebuild roadmap and per-sub-project design specs.

Recent notable changes

2026-05-13 — api-gateway

  • OCR route: defensive IO-error mapping. Raw pg and undici errors thrown inside the OCR handler used to escape Fastify's global handler as internal_error / unexpected, hiding the actual cause (database error, upstream unreachable, etc.) from the caller and the audit log. The route now maps known IO shapes to typed EkycError envelopes:

    • Postgres errors (5-character SQLSTATE on .code) → internal_error with the pg message verbatim plus db_code in extra.
    • undici / Node network errors (UND_ERR_*, ECONNREFUSED, ENOTFOUND, ETIMEDOUT, etc.) → service_unavailable with network_code in extra.
    • Truly unknown errors still bubble to the global handler so the original stack is logged.

    Same defensive-coding gap exists in face.ts and liveness.ts — tracked as a follow-up.