This commit is contained in:
2026-06-11 17:22:55 +02:00
parent bfdb2e69ae
commit 38f42da970
23 changed files with 2650 additions and 35 deletions

View File

@@ -78,7 +78,7 @@ non-swap CLMM avec trade_count > 0 = 0
Les 11 Anchor / `Program data` events CLMM restent listés en `upstream_git_unverified` car aucun corpus local ne les observe encore. Le code est préparé pour les accueillir en audit-only lorsquils apparaîtront dans un corpus local, sans créer de trade/candle par défaut.
La tranche `0.7.51 raydium_amm_v4` est maintenant validée côté `kb_lib`. La suite de roadmap reprend avec `0.7.52 raydium_stable`, tandis que `raydium_pool_v4` reste un audit conditionnel ultérieur et ne doit pas être promu sans confirmation de program id/rôle/corpus.
Les tranches `0.7.51 raydium_amm_v4` et `0.7.52 raydium_stable_swap` sont maintenant validées côté `kb_lib`. La suite de roadmap reprend avec les rechecks conditionnels et les surfaces restantes, tandis que `raydium_pool_v4` reste un audit conditionnel ultérieur et ne doit pas être promu sans confirmation de program id/rôle/corpus.
## Organisation documentaire
@@ -320,7 +320,7 @@ Chaque DEX ou variante de DEX doit avoir sa propre étape de validation. Les fam
À garder dans la matrice mais sans bloquer les versions immédiates :
- `raydium_stable_swap` tant que son usage réel nest pas démontré par corpus local ;
- `raydium_stable_swap` est désormais démontré par corpus local en `0.7.52` ; le garder comme DEX effectif supporté, avec surveillance des nouveaux discriminants ;
- vieux programmes legacy uniquement utiles pour compatibilité ou replay historique ;
- agrégateurs/routeurs comme `okx_dex` tant quils ne correspondent pas à un DEX direct matérialisable ;
- entrées ambiguës comme `zora` tant quaucun programme Solana pertinent nest prouvé.
@@ -433,7 +433,7 @@ La priorité immédiate après le point de reprise `0.7.43-E5C` est :
2. `0.7.49` : `raydium_clmm` — clôturé côté instructions observées, matérialisation non-trade prouvée et nettoyage fallback ;
3. `0.7.50-pre-r2` : `raydium_launchpad` clos + re-vérification `raydium_cpmm` / `raydium_clmm` ;
4. `0.7.51` : `raydium_amm_v4` ;
5. `0.7.52` : `raydium_stable` ;
5. `0.7.52` : `raydium_stable_swap` — clôturé ;
6. `0.7.53` : `raydium_pool_v4` audit / program-id decision seulement si program id distinct et corpus exploitable ;
7. `0.7.54` : `pump_swap` ;
8. `0.7.55` : `pump_fun` ;
@@ -546,7 +546,7 @@ La suite fonctionnelle reprend par Raydium avant Meteora :
2. `0.7.49``raydium_clmm` ;
3. `0.7.50-pre-r2``raydium_launchpad` + clôture CPMM/CLMM ;
4. `0.7.51``raydium_amm_v4` ;
5. `0.7.52``raydium_stable` ;
5. `0.7.52``raydium_stable_swap` — clôturé ;
6. `0.7.53``raydium_pool_v4` audit conditionnel, sans promotion automatique ;
7. `0.7.54+` — Pump, Meteora, Phoenix/OpenBook, Orca puis les autres DEX/surfaces.
@@ -631,4 +631,37 @@ Cette tranche complète la clôture Raydium en ajoutant `cpi_event` pour CPMM/CL
Le discriminant CPMM `40f4bc78a7e9690a` est désormais codé comme `raydium_cpmm.anchor_idl_instruction` : les signatures inspectées correspondent aux instructions Anchor `IdlCreateAccount` / `IdlCloseAccount`, donc il reste `decoded_events_only` et ne matérialise aucune table métier.
Rapport de clôture : `docs/reports/RAYDIUM_CPMM_CLMM_RECHECK_REPORT_0_7_50_PRE_R2.md`.
Rapport de clôture : `docs/reports/RAYDIUM_CPMM_CLMM_RECHECK_REPORT_0_7_50_PRE_R2.md`.
## Tranche clôturée — 0.7.52 raydium_stable_swap
`0.7.52` clôture Raydium Stable Swap avec le code local canonique `raydium_stable_swap` et le program id `5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h`.
Décisions finales :
- Stable Swap est décodé en layout legacy **1 octet**.
- La surface locale observée `00..0d` est couverte : lifecycle, model setup, admin/config, liquidity, orderbook side effects, fees et swaps.
- `swap_base_in` / `swap_base_out` produisent trades/candles uniquement avec des montants exacts dérivés des deltas de vaults (`amountSource=stable_swap_vault_balance_delta`).
- Les arguments dinstruction `amountInRaw`, `minimumAmountOutRaw`, `maxAmountInRaw`, `amountOutRaw` sont conservés comme bornes dinstruction, mais ne sont pas utilisés comme prix/montants exacts.
- Les transactions failed restent decoded-only avec `skipTradeReason=failed_transaction` et `skipCandleReason=failed_transaction`.
Livrables de clôture :
- `kb_lib/src/dex/raydium_stable_swap.rs`
- `docs/reports/RAYDIUM_STABLE_SWAP_EVENT_COVERAGE_REPORT.md`
- `validation_sql/SQL_VALIDATION_RAYDIUM_STABLE_SWAP_0_7_52.sql`
Validation locale finale :
```text
cargo test -p kb_lib -> 407 passed, 0 failed
cargo clippy -p kb_lib --all-targets -- -D warnings -> ok
```
Replay final observé :
```text
replayed=298, trades=290, liquidity=16, lifecycle=4, candle_upserts=1160,
instructionObservations=5317, catalog=40 tokens / 59 pools / 59 pairs
```
Statut : **clôturé côté code et validation locale**.