Release summaries
i18n-readiness-diagnostic-dx
Add the report-only missing_translation static diagnostic to contracts-spec and an optional locale-override argument to the design-system useI18n hook for the en/fr/es readiness program.
maintainer
Translation diagnostics gain a missing_translation code (non-en value identical to en) emitted at info level (report-only), with checkMissingTranslation and missingTranslationAllowlist options. useI18n accepts an optional localeOverride for per-component locale resolution.
integrator
Surfaces can detect untranslated English stubs per catalog group (with a brand/code/cognate allowlist) without failing CI, and pass a per-component locale into useI18n to drive locale-correct value formatting.
translation-catalog-sharding-ssr-additive
Add factory-stack SSR snapshot/hydration, loader shard scoping, RouteShardManifest, and parity diagnostics extensions for translation catalog sharding + SSR.
maintainer
BREAKING: createTranslationRuntime engine deleted from translation-runtime (subpaths ./runtime, ./registry, ./runtime-helpers removed; preference-override-layer construction dropped). createRuntimeTranslationResolver removed from design-system. Factory stack gains snapshot/hydration/load surface (I18nFactorySnapshot, I18nFactoryHydrationPayload, createI18nFactoryFromHydrationPayload, collectLocaleScopedCatalogs, resolveLocaleWithin). Parity diagnostics gain unsupported_locale_claim, manifest_spec_key_missing, validateManifestCatalogDrift, ManifestRouteEntry. Loader gains specKeys?, computeShardDelta, loadShardDelta. RouteShardManifest + defineRouteShardManifest authored in app layer. resolveTranslationPreferenceContext (context/precedence resolution) is preserved.
integrator
BREAKING: remove all createTranslationRuntime call sites; migrate to createI18nFactory + hydrationPayload() + createI18nFactoryFromHydrationPayload for SSR. Replace createRuntimeTranslationResolver with createTranslationResolver in design-system. Use loadShardDelta for route-level lazy loading. Use validateManifestCatalogDrift to catch manifest↔catalog drift in CI. RouteShardManifest defines route→specKey tier bindings in the app/bundle layer. Preference-override-layer construction has no replacement; drop it.
customer
Translation shards are now scoped per route for faster initial loads and incremental navigation fetches with no hydration mismatch.
unified-contractspec-database-runtime
Unified ContractSpec database runtime: createDatabaseRuntime() preset (pooling, zero-config observability, RLS tenant scoping, AuthOS principal carriage, governed resolvers) plus a typed N+1-safe relational read path, a spec-first generated Drizzle schema, and an SSR prefetch→hydrate bridge. Fully additive.
maintainer
New server-only runtime-managed/database subpath exports createDatabaseRuntime returning { provider (tenant-scoped), governedQuery, governedMutation, withTenant, close }. provider-database gains governed-relational-read (LEFT JOIN LATERAL + json_agg), governed-sql-guards, typed-read, and a generated Drizzle schema + manifest. contracts-spec adds database.query.relational@1.0.0, defineDatabaseTable + databaseTables, and database.query/database.mutation SignalSpecs; QueryState.pageInfo + CacheEntry.pageInfo are additive. providers-impls deprecates the raw createDatabaseProvider hatch (guard test added). database.query.readonly@2.0.0 and governed-read.ts are behaviorally unchanged.
integrator
Adopt createDatabaseRuntime() from @lssm-tech/integration.runtime-managed/database (server-only) for pooled, observability-bound, tenant-scoped data access with pre-bound governed resolvers. Use withTenant(tenantId) on known-tenant server paths (the top-level provider fails closed without a tenant). For SSR, prefetchGovernedQuery → dehydrateGovernedQuery → HydrationBoundary from @lssm-tech/lib.presentation-runtime-next/data, building the client engine over the same CacheStore via createDataEngine({ localOffline: 'offline-capable' }). useContractQuery now exposes hasNextPage + fetchNextPage() (cursor default; offset unchanged).
customer
Database-backed pages load faster: server-prefetched reads hydrate on the client with no second fetch, lists paginate by cursor, and every query is automatically tenant-isolated and observable.
