10 KiB
Prompt de reprise — khadhroony-bobobot 0.7.54 — pump_fun
Tu reprends le workspace Rust/Tauri khadhroony-bobobot après clôture documentaire et fonctionnelle de 0.7.53 pump_swap.
1. Fichiers à utiliser comme base
Je fournis l’archive la plus récente du workspace, intégrant normalement les deltas de clôture 0.7.53.
À considérer comme sources locales de savoir :
- le code Rust du workspace ;
- les fichiers Markdown (
README.md,ROADMAP.md,CHANGELOG.md,docs/**) ; - les SQL de validation dans
validation_sql/**; - le répertoire
idls/**, ajouté au projet, contenant des IDL JSON téléchargés depuis Solscan ; - les liens Git/upstream déjà documentés dans les docs ;
- les résultats SQL/logs que je colle dans la conversation.
Ne pas supposer que les docs sont parfaites : les vérifier contre le code et contre les IDL locales.
2. État validé avant cette version
La version 0.7.53 a fermé pump_swap côté transaction/log decoder :
cargo test -p kb_lib:421 passed;cargo clippy -p kb_lib --all-targets -- -D warnings: OK ;pump_swap.buy,pump_swap.sell,pump_swap.buy_exact_quote_inmatérialisent correctement les trades ;buy_exact_quote_inutilisepump_swap_anchor_buy_eventquand l’AnchorBuyEventexact est disponible ;- les
*_eventAnchor PumpSwap sont décodés en audit-only sauf exception métier explicite ; claim_token_incentives_eventest prêt à matérialiserk_sol_reward_eventssi un event réussi apparaît ;pump_swapne présente plus de decoded event sans coverage, ni fallback upstream résiduel, ni trade candidate réussi non matérialisé ;- les surfaces Raydium déjà travaillées (
raydium_amm_v4,raydium_clmm,raydium_cpmm) ne doivent pas être rouvertes sauf bug prouvé ; - les petits gaps Meteora sont volontairement différés.
Ne pas modifier PumpSwap ou Raydium sauf preuve SQL/code claire d’une régression.
3. Objectif de la version 0.7.54
Objectif principal : ouvrir et avancer une tranche pump_fun.
Cette tranche doit traiter la surface launch/mint Pump.fun, qui est logiquement prioritaire avant pump_fees.
Le backlog global montre des entrées pump_fun encore en fallback upstream, notamment :
pump_fun.collect_creator_fee/ discriminator1416567bc61cdb84;pump_fun.migrate_bonding_curve_creator/577c34bf3426d6e8;pump_fun.distribute_creator_fees/a572670079cef751;pump_fun.admin_set_creator/4519ab8e39ef0d04;pump_fun.extend_account/ea66c2cb96483ee5;pump_fun.set_creator/fe94ff70cf8eaaa5;pump_fun.migrate/9beae792ec9ea21e;pump_fun.claim_cashback/253a237ebe35e4c5;pump_fun.sell/33e685a4017f83ad;- autres discriminators
pump_funobservés dansk_sol_instruction_observations.
L’objectif n’est pas seulement de faire disparaître un fallback : il faut couvrir proprement la surface pump_fun :
- registry/coverage ;
- decoder local ou statut local explicitement decoded-only/audit-only ;
- matérialisation métier si les données sont fiables ;
- tests unitaires ;
- SQL de validation ;
- documentation.
4. Périmètre
Inclus
pump_funlaunch/mint/bonding-curve surface ;- instructions/events liés à création/migration/configuration/creator fees/cashback si présents dans IDL ou corpus ;
- intégration coverage ;
- matérialisation vers tables métier seulement si fiable.
Hors périmètre sauf nécessité démontrée
pump_swap, déjà fermé en0.7.53;raydium_*, sauf régression prouvée ;meteora_*, volontairement différé ;jupiter_swap,dflow_aggregator_v4,onchain_labs_dex_v2,orca_whirlpools, backlog futur ;pump_fees, qui doit venir aprèspump_fun, probablement en0.7.55.
5. Méthode obligatoire
5.1 Nouvelle base SQLite
Créer une nouvelle DB dédiée à 0.7.54, ne pas travailler sur l’ancienne DB de validation PumpSwap.
Démarrage attendu :
- catalog initial propre ou connu ;
- backfills ciblés ;
- replay forcé ;
- validation SQL.
5.2 Backfill de corpus
Construire un corpus local à partir de :
- filtres Solscan.io quand disponibles ;
- Demo3 discovery quand nécessaire ;
- batch backfill de groupes de signatures ;
- program/signature backfill si pertinent ;
- signatures issues des requêtes SQL
sample_signature.
Utiliser d’abord les signatures fortes observées dans le backlog :
pump_fun.collect_creator_fee;pump_fun.migrate_bonding_curve_creator;pump_fun.distribute_creator_fees;pump_fun.admin_set_creator;pump_fun.extend_account;pump_fun.set_creator;pump_fun.migrate;pump_fun.claim_cashback;- puis autres discriminators observés.
Après chaque groupe de backfill :
- replay local avec
skipDexDecode=no; - utiliser
forceDexDecode=yesquand le decoder/coverage change ; deferInstructionObservations=yes;- rafraîchir catalog ;
- relancer les SQL de surveillance.
5.3 Sources
Utiliser en priorité :
idls/**local ;- code existant ;
- docs existantes ;
upstream_registry_generated.rs;- sources Git déjà référencées dans les docs ;
- Solscan signatures/logs ;
- payloads locaux DB.
Si une IDL locale contredit une source Git, signaler la divergence et ne pas inventer.
6. Contraintes de code Rust
Respecter strictement les conventions du projet :
- Rust 2024 ;
- pas de
?; - pas de
unwrap()/expect()en code applicatif ; - pas de
anyhow/thiserror; match/if let Errexplicites ;- async-first ;
tracingobligatoire ;- pas de
mod.rs; - pas de
pub mod; utilisermod+pub use; - imports limités, types appelés de façon qualifiée quand c’est la convention locale ;
- tests offline ;
- ne pas casser
#![deny(unreachable_pub)]et#![warn(missing_docs)].
Si des requêtes DB sont ajoutées ou déplacées, penser aux re-exports :
kb_lib/src/db.rs;kb_lib/src/lib.rs.
7. Matérialisation attendue
Pour pump_fun, ne pas forcer une matérialisation si les montants/acteurs/comptes ne sont pas prouvés.
Classer explicitement chaque entrée :
k_sol_launch_eventspour les événements de launch/mint/migration ;k_sol_fee_eventssi l’instruction représente réellement des frais exploitables ;k_sol_pool_admin_eventssi c’est de la configuration/admin/creator ;k_sol_reward_eventsuniquement si c’est réellement une récompense/incitation/cashback fiable ;k_sol_dex_decoded_events_onlysi audit-only ou données insuffisantes ;k_sol_trade_eventsseulement si c’est un swap/trade fiable ;skip*Reasonexplicite quand non matérialisable.
Ne jamais matérialiser une transaction failed comme business event.
8. SQL de validation à utiliser
Utiliser et adapter :
validation_sql/SQL_VALIDATION_DEX_COVERAGE_GLOBAL_0_7_53.sql;- les SQL de validation PumpSwap comme modèle ;
- une nouvelle validation dédiée à
pump_fun, par exemple :validation_sql/SQL_VALIDATION_PUMP_FUN_0_7_54.sql.
Requêtes minimales attendues :
- coverage
pump_fun; - instruction observations
pump_fun; - decoded events
pump_funsans coverage ; - fallback upstream
pump_funrésiduel ; - successful non-materialized events sans skip reason ;
- failed tx materialization safety ;
- multi-target materialization safety ;
- materialization summary ;
- comparaison entre
k_sol_instruction_observationsetk_sol_dex_event_coverage_entries; - global watchlist après replay.
9. Invariants de validation
Après correction, viser :
- pas de
pump_fundecoded event local sans coverage ; - pas de fallback
upstream_gitrésiduel pour les entréespump_funcouvertes localement ; - pas de materialized business event sur failed transaction ;
- pas de multi-target incohérent ;
- tous les events/instructions observés ont :
- un decoder local,
- ou un statut audit-only,
- ou un skip reason explicite,
- ou une justification documentée s’ils restent upstream-only.
10. Documentation à mettre à jour
À la fin de la tranche, mettre à jour :
CHANGELOG.md: une ligne ;README.md: état courant, nouvelle version, validation ;ROADMAP.md: phasage et clôture/état depump_fun, puis annonce depump_feesen version suivante ;docs/DEX_DECODER_MATRIX.md;docs/DEX_EVENT_COVERAGE_MATRIX.md;- éventuellement un rapport :
docs/reports/PUMP_FUN_EVENT_COVERAGE_REPORT.md.
Ne pas gonfler les docs inutilement : noter les faits validés, les limites, et les prochaines tranches.
11. Format de livraison attendu
Ne pas fournir une archive complète du workspace sauf demande explicite.
Fournir un delta zip contenant uniquement les fichiers modifiés/ajoutés.
Nom recommandé :
khadhroony-bobobot-v0.7.54-pump_fun-delta-N-files.zip
Chaque réponse de livraison doit inclure :
- résumé des changements ;
- liste exacte des fichiers modifiés ;
- commandes à lancer :
cargo fmtcargo test -p kb_libcargo clippy -p kb_lib --all-targets -- -D warnings
- replay recommandé ;
- SQL à exécuter ;
- ce qui est attendu dans les résultats.
12. Priorités si plusieurs gaps apparaissent
Ordre de priorité :
pump_fun;pump_feesseulement si strictement nécessaire pour comprendre un fluxpump_fun;- ne pas traiter Meteora dans cette version ;
- ne pas rouvrir Raydium sauf régression démontrée ;
- ne pas ouvrir Jupiter/dFlow/onchain_labs dans cette tranche sauf pour les classer en backlog.
13. Première tâche demandée
Commencer par analyser l’archive fournie :
- identifier les fichiers existants liés à
pump_fun,pump_fees, upstream registry, coverage, materialization ; - chercher dans
idls/**s’il existe une IDL Solscan liée àpump_fun; - produire un état des lieux court :
- entrées upstream disponibles ;
- entrées observées dans SQL/logs fournis ;
- fichiers à modifier ;
- hypothèse de classification par entry ;
- SQL initial de backfill/validation ;
- proposer puis produire le premier delta minimal.