This commit is contained in:
2026-06-17 16:06:09 +02:00
parent be12f5810b
commit 319be14aa6
37 changed files with 7129 additions and 363 deletions

View File

@@ -4,6 +4,92 @@
## État final validé `0.7.56` — `meteora_dbc` + socle `fee_event_amounts`
La tranche `0.7.56 meteora_dbc` est clôturée côté decoder local maximal, coverage, tests synthétiques, matérialisation prudente et validation SQL sur base dédiée. Le programme traité est :
```text
dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN
```
Source IDL locale prioritaire :
```text
idls/meteora_dbc.dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN.json
```
Surface couverte : `28` instructions, `23` events Anchor, `9` accounts et `59` types. Les instructions `swap` et `swap2` sont les seules candidates trade/candle directes, uniquement lorsque les montants et les mints base/quote sont fiables. Les initialisations de virtual pool, migrations, lockers, metadata/config/operator et transferts de créateur alimentent les tables non-trade adaptées ou restent decoded-only avec raison explicite. Les transactions failed restent audit-only.
Validation locale finale rapportée :
```text
cargo test -p kb_lib -> 446 passed / 0 failed
cargo clippy -p kb_lib --all-targets -- -D warnings -> OK
480 replayed
0 decode skipped
480 ledger upserts
454 unsafe ledger rows
264 trades
1 liquidity
122 lifecycle
0 tokenAccount
1056 candle upserts
instructionObservations = 7167
resetDeleted = 3583
catalog = 86 tokens / 60 pools / 60 pairs
```
Matérialisation DBC finale observée :
```text
claim_creator_trading_fee 8 parents / 8 scalar / 8 legs
claim_partner_pool_creation_fee 10 parents / 10 scalar / 10 legs
claim_protocol_fee 10 parents / 10 scalar / 10 legs
claim_protocol_pool_creation_fee 10 parents / 10 scalar / 10 legs
claim_trading_fee 11 parents / 6 scalar / 18 legs
creator_withdraw_surplus 2 parents / 2 scalar / 2 legs
partner_withdraw_surplus 9 parents / 9 scalar / 9 legs
withdraw_leftover 10 parents / 10 scalar / 10 legs
withdraw_migration_fee 9 parents / 9 scalar / 9 legs
zap_protocol_fee 10 parents / 10 scalar / 10 legs
Total meteora_dbc 89 fee parents / 96 amount legs
```
La tranche introduit le socle générique `k_sol_fee_event_amounts` :
- `k_sol_fee_events` reste l'événement fee parent ;
- `k_sol_fee_event_amounts` stocke les legs de montants, avec `fee_event_id`, `leg_index`, `token_mint`, `amount_raw`, comptes source/destination et `amount_source` ;
- tout parent fee avec `fee_token_mint + fee_amount_raw` crée automatiquement un leg scalaire ;
- les fees multi-mint/multi-leg laissent le parent sans montant scalaire et stockent les montants fiables dans les legs ;
- une recovery `allowlisted_inner_spl_transfer` existe pour les anciens DEX validés, mais aucun futur décodeur ne l'hérite par défaut ;
- tout futur décodeur doit déclarer explicitement sa policy de récupération des montants fee.
Checks de fermeture `0.7.56` :
- fallback `upstream_git` `meteora_dbc` pour entrées couvertes localement : vide ;
- decoded `meteora_dbc` sans coverage : vide ;
- successful non-materialized sans `skip*Reason` ou policy explicite : vide ;
- failed transaction avec business materialization : vide ;
- multi-target materialization : vide ;
- non-swap vers trade/candle : vide ;
- parent fee avec `fee_token_mint + fee_amount_raw` mais sans `k_sol_fee_event_amounts` : vide ;
- legs fee orphelins : vide ;
- recovery générique `allowlisted_inner_spl_transfer` non appliquée à `meteora_dbc`, qui reste couvert par ses chemins spécifiques.
Contrôles croisés réalisés sur anciennes bases : `raydium_launchpad`, `raydium_cpmm`, `pump_swap`, `pump_fees`, `pump_fun`, `raydium_amm_v4`, `raydium_clmm`, `raydium_stable_swap`. Les parents fees scalaires ont des legs ; les events sans transfert exploitable restent documentés par `fee_instruction_has_no_actual_transfer` ou `fee_instruction_has_only_zero_amount_transfers`.
Documents de référence :
```text
docs/reports/METEORA_DBC_EVENT_COVERAGE_REPORT.md
docs/reports/FEE_EVENT_AMOUNTS_MODEL_NOTE_0_7_56.md
docs/VALIDATION_STATUS_0_7_56_FINAL.md
validation_sql/SQL_VALIDATION_METEORA_DBC_0_7_56.sql
docs/prompts/PROMPT_0_7_57_METEORA_DLMM_FULL_DECODE_MATERIALIZATION.md
```
Prochaine tranche recommandée : `0.7.57 meteora_dlmm` en mode full decode / full materialization, sur le programme `LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo`, avec vérification complète de l'IDL locale `idls/meteora_dlmm.LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo.json`.
## État final validé `0.7.55` — `pump_fees`
La tranche `0.7.55 pump_fees` est clôturée côté decoder local maximal, coverage, tests synthétiques, matérialisation prudente et validation SQL. Le programme `pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ` est traité comme surface fee/config/accounting : `get_fees` reste decoded-only, les claims social fee alimentent `k_sol_reward_events`, les donation/buyback alimentent `k_sol_fee_events`, les authority/config/tier/update alimentent `k_sol_pool_admin_events`, les créations/init/extend alimentent `k_sol_pool_lifecycle_events`, et aucun trade/candle direct n'est produit.
@@ -603,7 +689,7 @@ Si une requête DB est ajoutée ou modifiée, mettre à jour les re-exports dans
La priorité immédiate après la clôture `0.7.55 pump_fees` est la suivante :
1. ouvrir `0.7.56 meteora_dbc` sur une base SQLite neuve ;
1. reprendre `0.7.57 meteora_dlmm` sur une base SQLite neuve ;
2. décoder toutes les instructions/events DBC connus par l'IDL locale et les sources Git ;
3. matérialiser uniquement ce qui est prouvable : launch/bonding, swaps fiables, migration, liquidity, fees/admin/config ;
4. ne créer aucun trade/candle DBC sans montants, sens économique, pool/pair et mints fiables ;