This commit is contained in:
2026-06-19 10:29:17 +02:00
parent 319be14aa6
commit 58f9b36969
24 changed files with 6432 additions and 741 deletions

View File

@@ -3,6 +3,101 @@
# khadhroony-bobobot
## État final validé `0.7.57` — `meteora_dlmm` full decode / full materialization
La tranche `0.7.57 meteora_dlmm` 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
LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo
```
Source IDL locale prioritaire :
```text
idls/meteora_dlmm.LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo.json
```
Surface couverte : `76` instructions IDL, `30` events Anchor et `12` accounts, avec correction locale du discriminant `75c73e67068e1fcb`, identifié comme `initialize_preset_parameter_v2` par les logs Anchor (`Instruction: InitializePresetParameterV2`) et par hash Anchor. Les entrées observées utiles ne restent pas en decoded-only : elles alimentent `trade`, `liquidity`, `lifecycle`, `fee`, `reward`, `admin` ou `orderbook` selon leur famille.
Validation locale finale rapportée :
```text
cargo test -p kb_lib -> 460 passed / 0 failed
cargo clippy -p kb_lib --all-targets -- -D warnings -> OK
769 replayed
0 decode skipped
769 ledger upserts
646 unsafe ledger rows
106 trades
664 liquidity
1107 lifecycle
0 tokenAccount
424 candle upserts
instructionObservations = 8062
resetDeleted = 9898
catalog = 169 tokens / 218 pools / 218 pairs
```
Règles métier verrouillées :
- les trades/candles DLMM proviennent uniquement des instructions swap fiables : `swap`, `swap2`, `swap_exact_out`, `swap_exact_out2`, `swap_with_price_impact`, `swap_with_price_impact2` ;
- `swap_event` et `swap2_evt` sont matérialisés comme `swap_log` lifecycle afin d'éviter tout double comptage trade/candle ;
- les positions, bins, pool create, preset parameters, pair status, token badge et operator/config alimentent lifecycle/admin selon contexte ;
- les limit orders alimentent `k_sol_orderbook_events` et ne produisent jamais trade/candle ;
- les fees DLMM utilisent `k_sol_fee_events` + `k_sol_fee_event_amounts`, avec recovery strictement allowlistée depuis inner SPL transfers ;
- les rewards DLMM utilisent une recovery strictement allowlistée, sans inventer de montant pour les initialisations/configurations ;
- les transactions failed restent décodées/auditables mais ne matérialisent aucune table métier.
Synthèse fee/reward finale observée :
```text
claim_fee 64 parents / 64 legs
claim_fee2 63 parents / 88 legs
claim_fee_event 127 parents / 187 legs
claim_fee2_event 78 parents / 118 legs
composition_fee_event 51 parents / 63 legs
withdraw_protocol_fee 14 parents / 20 legs
zap_protocol_fee 13 parents / 13 legs
claim_reward 15 parents / 1 scalar amount
claim_reward2 19 parents / 10 scalar amounts
claim_reward_event 34 parents / 25 scalar amounts
claim_reward2_event 19 parents / 10 scalar amounts
fund_reward 10 parents / 10 scalar amounts
fund_reward_event 10 parents / 10 scalar amounts
initialize_reward 9 parents / 0 amount, attendu car init/config
initialize_reward_event 9 parents / 0 amount, attendu car init/config
```
Checks de fermeture `0.7.57` :
- fallback `upstream_git` `meteora_dlmm` pour entrées couvertes localement : vide ;
- `instruction_audit` observé : `0` ;
- decoded `meteora_dlmm` 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 scalaire sans leg : vide ;
- fee amount legs orphelins : vide ;
- limit/orderbook vers trade/candle : vide ;
- duplicate logical coverage rows : vide.
Écart coverage restant et expliqué : `close_bin_array` affiche `16 observed / 14 materialized`, car `14` transactions sont OK et matérialisées, tandis que `2` transactions failed (`Custom 6015`) restent audit-only.
Documents de référence :
```text
docs/reports/METEORA_DLMM_EVENT_COVERAGE_REPORT.md
docs/VALIDATION_STATUS_0_7_57_FINAL.md
validation_sql/SQL_VALIDATION_METEORA_DLMM_0_7_57.sql
docs/prompts/PROMPT_0_7_58_DEMO4_PROGRAM_SURFACE_DISCOVERY.md
docs/prompts/PROMPT_0_7_59_SQLITE_DB_TRANSACTION_MERGER_BINARY.md
docs/prompts/PROMPT_0_7_60_METEORA_DAMM_NEXT_DEX.md
```
Prochaine étape recommandée : `0.7.58 demo4 / program surface discovery`, une fonctionnalité d'affichage et de scoring des contenus non encore pris en compte (`program_id`, discriminators, Anchor logs/events, upstream fallback), sans matérialisation automatique et sans promotion automatique dans les decoders.
## État final validé `0.7.56` — `meteora_dbc` + socle `fee_event_amounts`
@@ -88,7 +183,7 @@ 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`.
La tranche suivante `0.7.57 meteora_dlmm` est désormais clôturée. La prochaine étape recommandée est `0.7.58 demo4 / program surface discovery`, puis `0.7.59` pour le binaire de consolidation de bases SQLite.
## État final validé `0.7.55` — `pump_fees`