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 inapps/
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
pgandundicierrors thrown inside the OCR handler used to escape Fastify's global handler asinternal_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 typedEkycErrorenvelopes:- Postgres errors (5-character SQLSTATE on
.code) →internal_errorwith the pg message verbatim plusdb_codeinextra. - undici / Node network errors (
UND_ERR_*,ECONNREFUSED,ENOTFOUND,ETIMEDOUT, etc.) →service_unavailablewithnetwork_codeinextra. - Truly unknown errors still bubble to the global handler so the original stack is logged.
Same defensive-coding gap exists in
face.tsandliveness.ts— tracked as a follow-up. - Postgres errors (5-character SQLSTATE on