This commit is contained in:
2026-06-15 20:16:27 +02:00
parent 3b908b318e
commit 045af4931c
44 changed files with 5328 additions and 113 deletions

View File

@@ -2,6 +2,74 @@
# khadhroony-bobobot
## État final validé `0.7.54` — `pump_fun`
La tranche `0.7.54 pump_fun` est clôturée côté coverage, décodage local maximal, matérialisation métier prudente et validation SQL. Elle ferme la surface Pump.fun principale avant l'ouverture de `0.7.55 pump_fees`.
Program id canonique :
```text
6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
```
Source IDL locale prioritaire :
```text
idls/pump_fun.6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P.json
```
Points verrouillés :
- les `40` instructions et `23` events Anchor connus par l'IDL locale sont inventoriés et couverts localement ;
- les instructions IDL-only absentes du registre upstream initial sont intégrées côté coverage, notamment `buy_v2`, `sell_v2`, `buy_exact_quote_in_v2`, `migrate_v2`, `claim_cashback_v2`, `collect_creator_fee_v2`, `distribute_creator_fees_v2` et `update_buyback_config` ;
- `pump_fun.buy` et `pump_fun.sell` restent matérialisés directement comme trades quand les montants sont fiables ;
- `pump_fun.buy_exact_sol_in` est matérialisé directement, y compris pour les logs `Program data` Anchor tronqués quand les montants exacts sont extractibles ;
- `pump_fun.buy_v2`, `pump_fun.sell_v2` et `pump_fun.buy_exact_quote_in_v2` restent des instructions audit/coverage/routing : elles ne sont pas matérialisées directement ;
- la matérialisation canonique des trades v2/exact passe par `pump_fun.trade_event` quand l'event Anchor porte les montants exécutés et se corrèle sans ambiguïté à l'instruction ;
- les `trade_event` couverts par un trade direct reçoivent un skip explicite afin d'éviter le double-count ;
- les familles non-trade alimentent uniquement les tables prévues (`launch`, `fee`, `reward`, `admin`, `lifecycle`) ou restent decoded-only/audit-only avec raison explicite ;
- les transactions failed restent décodables pour audit mais ne produisent aucun business event.
Validation locale finale rapportée après replay forcé :
```text
1679 replayed
0 decode skipped
1679 ledger upserts
145 unsafe ledger rows
89 trades
0 liquidity
10 lifecycle
0 tokenAccount
348 candle upserts
instructionObservations = 13905
resetDeleted = 1112
catalog = 52 tokens / 50 pools / 50 pairs
```
Matérialisation Pump.fun finale observée :
```text
pump_fun.buy 17 trades
pump_fun.sell 25 trades
pump_fun.buy_exact_sol_in 15 trades
pump_fun.trade_event 25 trades
```
Checks de fermeture :
- fallback `upstream_git` Pump.fun : vide ;
- decoded Pump.fun sans coverage : vide ;
- fallback upstream résiduel pour entrées couvertes : vide ;
- successful non-materialized sans skip reason : vide ;
- failed transaction avec business materialization : vide ;
- multi-target materialization : vide ;
- trade candidates Pump.fun sans matérialisation ni skip : vide ;
- watchlist globale : plus aucun `pump_fun`, backlog restant principalement `pump_fees`, puis `jupiter_swap` et `dflow_aggregator_v4`.
La suite immédiate est `0.7.55 pump_fees` sur nouvelle base SQLite, avec politique identique : tout ce qui peut être décodé doit l'être, et tout ce qui peut être matérialisé de manière fiable doit l'être.
## État final validé `0.7.53` — `pump_swap`
La tranche `0.7.53 pump_swap` est clôturée côté décodage transaction/log et matérialisation métier. Elle ferme le program id unique `pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA` sans rouvrir Raydium.
@@ -58,7 +126,7 @@ Livrables `0.7.53` :
- `validation_sql/SQL_VALIDATION_DEX_COVERAGE_GLOBAL_0_7_53.sql` ;
- `idls/` comme corpus local d'IDL Solscan à comparer aux sources Git.
La suite immédiate est `pump_fees` / `pump_fun` selon priorité de backlog observé. Les petits gaps Meteora sont volontairement reportés aux tranches Meteora futures.
La suite immédiate après `0.7.54 pump_fun` est `pump_fees` (`0.7.55`). Les petits gaps Meteora restent volontairement reportés aux tranches Meteora futures.
## État final validé `0.7.51` — `raydium_amm_v4`
@@ -487,14 +555,14 @@ Si une requête DB est ajoutée ou modifiée, mettre à jour les re-exports dans
## 8. Priorité immédiate
La priorité immédiate après la clôture `0.7.53` est la suivante :
La priorité immédiate après la clôture `0.7.54 pump_fun` est la suivante :
1. `0.7.53` est clos pour `pump_swap` : ne rouvrir que pour correction de bug, pas pour ajout fonctionnel IDL déjà couvert ;
2. maintenir les checks globaux de surveillance dans `validation_sql/SQL_VALIDATION_DEX_COVERAGE_GLOBAL_0_7_53.sql` après chaque gros backfill ;
3. traiter ensuite le backlog observé, en priorité `pump_fees`, puis `pump_fun`, puis `jupiter_swap` si lobjectif devient lanalyse des routes/agrégateurs ;
4. reporter volontairement les corrections Meteora restantes (`meteora_dlmm.swap`, `meteora_damm_v2.swap`, `meteora_damm_v2.instruction_audit`) aux tranches Meteora dédiées ;
5. ne pas rouvrir `raydium_amm_v4`, `raydium_clmm` ou `raydium_cpmm` tant que les requêtes Raydium normalisées restent vides ;
6. garder `raydium_launchpad` et `raydium_stable_swap` en surveillance : les entrées non observées restent `upstream_git_mapped_unverified`, pas des régressions.
1. ouvrir `0.7.55 pump_fees` sur une base SQLite neuve ;
2. décoder toutes les instructions et tous les events connus de `idls/pump_fees.pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ.json` ;
3. matérialiser tout ce qui est prouvable : fee accounting, fee sharing, social/donation fee PDA, buyback, config/admin, rewards éventuelles ;
4. ne créer aucun trade/candle direct pour `pump_fees` sauf preuve transactionnelle forte d'un swap économique autonome ;
5. maintenir les checks Pump.fun/PumpSwap/Raydium en non-régression ;
6. reporter Meteora/Jupiter/dFlow aux tranches prévues sauf si une dépendance stricte apparaît pendant l'analyse `pump_fees`.
Garde-fous constants :
@@ -605,8 +673,8 @@ La suite fonctionnelle reprend par Raydium avant Meteora :
4. `0.7.51``raydium_amm_v4` ;
5. `0.7.52``raydium_stable_swap` — clôturé ;
6. `0.7.53``pump_swap` — clôturé ;
7. `0.7.54``pump_fees` ;
8. `0.7.55``pump_fun` ;
7. `0.7.54``pump_fun` ;
8. `0.7.55``pump_fees` ;
9. `0.7.56+` — Meteora, routers/agrégateurs, Phoenix/OpenBook, Orca puis les autres DEX/surfaces.
`raydium_pool_v4.json` reste repoussé en audit conditionnel tardif, pas une tranche bloquante.