https://sonarly.com/issue/17644?type=bug
SSE subscription events include all database columns (including custom fields), but `computeOptimisticRecordFromInput` throws a fatal error when it encounters fields not present in the client's object metadata, breaking real-time updates for workspaces with custom fields.
Fix: **What changed:** In `computeOptimisticRecordFromInput.ts`, replaced the `throw new Error(...)` with `console.warn(...)` when unknown fields are detected in the record input (lines 73-77).
**Why:** The function validates that all fields in `recordInput` exist in `objectMetadataItem.fields`. This validation was originally written for mutation-triggered optimistic updates where the frontend controls the input shape. When SSE real-time events were added (via `useTriggerOptimisticEffectFromSseUpdateEvents`), this function started receiving server-controlled input that includes ALL database columns — including custom fields the workspace has added (e.g., Salesforce-migrated fields like `salesforceAccountId`, `fiscalYear`, `forecastCategory`).
The function's main for-loop (line 80) iterates only over `objectMetadataItem.fields`, so unknown fields in `recordInput` are already naturally skipped and never make it into the output. The throw was a defensive assertion that became incorrect when the caller contract expanded. Converting to `console.warn` preserves observability while allowing graceful degradation.
**Test update:** Updated the existing test from asserting a throw to asserting a `console.warn` call and verifying that known fields (like `city: 'Paris'`) are still correctly processed while unknown fields are skipped.