d08c312c62
Dos crashes de producción con la misma causa raíz: atributos declarados no-opcionales en Swift (@NSManaged id: UUID, date: Date) que llegan nil en runtime — NSPersistentCloudKitContainer materializa registros de otros dispositivos por fases y los objetos borrados pueden seguir referenciados por vistas vivas. El force-bridge de nil revienta: 1. UUID._unconditionallyBridgeFromObjectiveC en ForEach (keypath Identifiable.id) 2. Date._unconditionallyBridgeFromObjectiveC en ChartsViewModel.monthlyTotals Fix sistémico (no por call-site): NSManagedObject.safeValue(forKey:fallback:healing:) lee el primitive y cae a un valor seguro; id se auto-cura (UUID nuevo escrito al primitive sin ensuciar el objeto). Aplicado a: - Snapshot: id (heal), date, createdAt (fallback distantPast) - InvestmentSource / Goal / Account: id (heal), name (fallback "") - Category: id (heal), name, colorHex, icon (fallbacks neutros) Los accessors son @objc → NSSortDescriptor(keyPath:) y KVC siguen funcionando. awakeFromInsert/awakeFromFetch se mantienen. Smoke test UITest en verde. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WoScpmHdVj1aUf4rAp6hbe