42 lines
3.8 KiB
Markdown
42 lines
3.8 KiB
Markdown
<!-- file: docs/CODE_REUSE.md -->
|
||
<!-- version: 2 -->
|
||
|
||
# Réutilisation de code
|
||
|
||
Ce document liste les composants de l'ancien workspace qui peuvent servir de référence pour le nouveau workspace. Le code ne doit pas être copié mécaniquement : chaque portion reprise doit être adaptée aux nouvelles frontières de crates, aux règles de nommage, aux règles `crate::` et au backend PostgreSQL.
|
||
|
||
## Composants candidats
|
||
|
||
| Composant | Cible dans le nouveau workspace | Décision provisoire |
|
||
|--------------------------------------------|-------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------|
|
||
| Client RPC HTTP | `kb_rpc` | Réutiliser les idées : retry, backoff, limites, traces, idempotence. Réécrire l'API selon les nouveaux modèles. |
|
||
| Pool RPC HTTP | `kb_rpc` | Reprendre le principe de sélection d'endpoint et de contrôle de débit. Isoler les métriques et les erreurs dans `kb_core`. |
|
||
| Client WebSocket | `kb_rpc` | Reprendre la gestion ping/pong, subscribe/unsubscribe, shutdown explicite et reconnexion contrôlée. |
|
||
| Pool WebSocket | `kb_rpc` | Garder l'idée de pool, mais éviter toute dépendance vers les décodeurs ou le stockage concret. |
|
||
| Ledger de replay | `kb_pipeline` et `kb_store_core` | Réécrire en versionné par module, version, scope et input hash. |
|
||
| Validation SQL | `validation_sql/` | Porter seulement les contrôles encore utiles : doublons de signatures, events failed, non-swap vers trade, coverage résiduelle. |
|
||
| Découvertes de discriminators | `docs/DECODER_SURFACE_AUDIT.md`, `idls/`, futurs catalogues | Conserver comme corpus de décision, pas comme support automatique. |
|
||
| Matérialisations trade/liquidity/lifecycle | `kb_materializer_*` | Reprendre les règles validées, mais séparer strictement decode et materialize. |
|
||
|
||
## Interdictions
|
||
|
||
- Ne pas importer directement l'ancien schéma SQLite dans les nouveaux décodeurs.
|
||
- Ne pas faire dépendre `kb_rpc` de `kb_store_pg`.
|
||
- Ne pas faire dépendre un décodeur de `kb_pipeline`.
|
||
- Ne pas conserver une fonction monolithique de replay global.
|
||
|
||
## Critère d'acceptation
|
||
|
||
Une portion reprise est acceptée seulement si elle respecte les règles suivantes :
|
||
|
||
- responsabilité limitée à un crate cible ;
|
||
- documentation de code en anglais ;
|
||
- absence de `use` hors traits nécessaires ;
|
||
- erreurs typées via `kb_core` ;
|
||
- tracing target stable ;
|
||
- tests unitaires ou validation de build.
|
||
|
||
## Interfaces officielles actuelles
|
||
|
||
La réutilisation prioritaire ne concerne pas uniquement l’ancien code. Les enums, types, IDs et encodeurs publiés dans les interfaces officielles Solana/SPL doivent être utilisés lorsqu’ils exposent un contrat compatible avec les règles du workspace. La matrice, les exceptions `bincode` et l’ordre `wincode`/Borsh/parser borné sont maintenus dans `docs/SOLANA_INTERFACE_DEPENDENCIES.md`.
|