rest-api-optimistic-update-race-condition

Par divinevideo · divine-mobile

Skill documentant le pattern de mise à jour optimiste pour corriger les bugs de disparition de contenu liés au décalage d'indexation REST API dans l'app Flutter Divine (Nostr).

npx skills add https://github.com/divinevideo/divine-mobile --skill rest-api-optimistic-update-race-condition

REST API Optimistic Update Race Condition

Ce skill est une fiche de connaissance complète et opérationnelle — pas un squelette — intégrée au repository divinevideo/divine-mobile, une application Flutter de partage de vidéos courtes construite sur le protocole Nostr. Il documente un problème architectural précis et ses solutions, à destination de Claude pour qu'il puisse diagnostiquer et corriger ce type de bug directement dans le code du projet.

Problème couvert

Lorsqu'une application utilise une architecture duale (écriture via WebSocket ou base de données directe, lecture via une REST API avec indexation asynchrone — ClickHouse, Elasticsearch, etc.), du contenu publié peut « disparaître » après publication. L'UI re-fetche depuis l'API avant que l'indexation soit terminée et obtient des données périmées. Dans le contexte de Divine, cela se traduit par des vidéos qui s'affichent brièvement dans le profil ou le feed, puis disparaissent à la navigation ou au rafraîchissement.

Ce que le skill apporte à Claude

Le skill décrit trois stratégies de résolution — mise à jour optimiste locale (recommandée), approche hybride avec réconciliation différée, et cache write-through — avec des exemples de code Dart concrets tirés du provider ProfileFeedProvider de l'application. Il inclut également des critères de déclenchement (patterns de logs, symptômes), une procédure de vérification post-correctif, et des pointeurs vers les patterns architecturaux associés (CQRS, Event Sourcing, Optimistic UI).

Utilisation

Quand un utilisateur signale que du contenu publié n'apparaît pas dans son feed ou son profil, ou disparaît après rafraîchissement, Claude peut s'appuyer sur ce skill pour identifier si la cause est un décalage d'indexation REST et proposer directement le correctif adapté au code Flutter/Riverpod du projet, sans avoir à reconstituer le raisonnement depuis zéro.

Skills similaires