Files
khadhroony-bobobot/docs/prompts/PROMPT_REPRISE_khadhroony-bobobot_0.7.51-raydium-amm-v4.md
2026-06-08 12:32:58 +02:00

5.9 KiB

Prompt de reprise — khadhroony-bobobot 0.7.51 / Raydium AMM v4 event coverage

Reprise du projet khadhroony-bobobot après clôture de 0.7.50 raydium_launchpad et re-vérification finale CPMM/CLMM.

Archive de départ

Utiliser la dernière archive complète du workspace intégrant les deltas validés jusqu'à :

0.7.50-raydium-launchpad-final

Joindre aussi les docs et SQL de validation à jour :

README.md
ROADMAP.md
CHANGELOG.md
docs/DEX_DECODER_MATRIX.md
docs/DEX_EVENT_COVERAGE_MATRIX.md
docs/DB_EVENT_MODEL_REVIEW.md
docs/reports/RAYDIUM_LAUNCHPAD_EVENT_COVERAGE_REPORT.md
validation_sql/SQL_VALIDATION_RAYDIUM_LAUNCHPAD_0_7_50.sql
validation_sql/SQL_VALIDATION_RAYDIUM_CPMM_AUDIT_CLEANUP_0_7_50_FINAL.sql
validation_sql/SQL_VALIDATION_RAYDIUM_CPMM_0_7_50_RECHECK.sql
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_50_RECHECK.sql

État validé avant reprise

0.7.50 a clôturé raydium_launchpad et consolidé les rechecks CPMM/CLMM.

Dernier replay local rapporté avant clôture :

1103 replayed
0 decode skipped
1124 ledger upserts
542 unsafe ledger rows
561 trades
50 liquidity
13 lifecycle
0 tokenAccount
2224 candle upserts
instructionObservations = 7013
resetDeleted = 1182

Points de clôture à préserver :

raydium_launchpad : surface canonique, program id LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj
Launchpad trade_event matérialisé seulement quand corpus + successful tx le prouvent
Launchpad initialize* fournit le catalogue pool/pair, pas de faux trade/candle
CPMM 40f4bc78a7e9690a est raydium_cpmm.anchor_idl_instruction decoded-only
CPMM residual raydium_cpmm.instruction_audit 40f4bc78a7e9690a doit être nettoyé après replay final
CLMM residual instruction_audit / upstream fallback doivent rester vides
k_sol_instruction_observations reste une table technique, pas une table métier
Solscan instruction=<discriminator> est une aide de découverte, pas une preuve métier

Requête CPMM post-fix obligatoire :

SELECT
    json_extract(payload_json, '$.discriminatorHex') AS discriminator_hex,
    COUNT(*) AS audit_count,
    COUNT(DISTINCT transaction_id) AS tx_count
FROM k_sol_dex_decoded_events
WHERE protocol_name = 'raydium_cpmm'
  AND event_kind = 'raydium_cpmm.instruction_audit'
GROUP BY discriminator_hex
ORDER BY audit_count DESC, discriminator_hex;

Cette requête doit être vide après replay forceDexDecode=yes.

Objectif 0.7.51raydium_amm_v4

Reprendre Raydium AMM v4 legacy au même niveau de couverture que CPMM/CLMM :

swaps
pool lifecycle / pool_create
add_liquidity / remove_liquidity
fees / admin/config
side effects SPL Token / Token-2022 documentés mais non promus comme raydium_amm_v4.* directs
fallback instruction_audit nettoyé quand une entrée locale spécialisée couvre l'instruction
coverage entries synchronisées et rafraîchies

Code local canonique :

raydium_amm_v4

Program id canonique connu :

675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8

Solscan Program IDL / recherche par instruction :

https://solscan.io/account/675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8#programIdl
https://solscan.io/account/675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8?instruction=<DISCRIMINATOR>&hide_spam=true&hide_failed=true&show_related=false&sort=desc

Sources Git/IDL à utiliser systématiquement

https://github.com/sevenlabs-hq/carbon/tree/main/decoders
https://github.com/0xfnzero/solana-streamer
https://github.com/0xfnzero/sol-parser-sdk/tree/main/idl
https://github.com/pinax-network/substreams-solana-idls/tree/main/src
https://github.com/hodlwarden/solana-tx-parser/tree/main/src
https://docs.vybenetwork.com/docs/available-dexs-amms

Pour AMM v4, vérifier aussi les IDL/JSON Raydium legacy présents dans fnzero, notamment les fichiers autour de raydium_amm_v4 / raydium_pool_v4, sans promouvoir raydium_pool_v4 tant que son program id et son rôle métier ne sont pas prouvés localement.

Règles fixes

Rust 2024
pas de mod.rs
fichiers Rust avec // file: ...
pas de anyhow
pas de thiserror
pas de ? / unwrap / expect dans kb_lib applicatif
match / if let Err / let Err = ... else
rustdoc sur API publique
re-exports db.rs puis lib.rs si DB modifiée

Invariants métier

non-trade event = jamais trade/candle
failed transaction = audit-only / jamais matérialisée métier
upstream Git/IDL/Solscan = indice, pas preuve métier
program id upstream non promu sans corpus local
side effects SPL Token / Token-2022 restent transversaux sauf preuve multi-DEX et décision DB
instruction_audit et upstream_git.instruction_match doivent être nettoyés quand une entrée locale spécialisée couvre le discriminant

Workflow conseillé

  1. Créer une nouvelle base SQLite dédiée 0.7.51.
  2. Inventorier Carbon/fnzero/Pinax/Solscan Program IDL pour raydium_amm_v4.
  3. Synchroniser k_sol_dex_event_coverage_entries avec decoder_code = raydium_amm_v4.
  4. Utiliser Solscan instruction=<discriminator> pour obtenir rapidement des signatures non failed.
  5. Backfill Demo2 signature/pool.
  6. Replay local avec :
skipDexDecode = no
forceDexDecode = yes
deferInstructionObservations = yes
  1. Vérifier :
coverage listed/observed/materialized
residual instruction_audit
residual upstream_git.instruction_match
failed tx materialization = 0
non-trade trade_count = 0
trade/candle only for swap events validés

Livrables attendus

archive delta fichiers modifiés/ajoutés
README.md / ROADMAP.md / CHANGELOG.md mis à jour
docs/DEX_DECODER_MATRIX.md
docs/DEX_EVENT_COVERAGE_MATRIX.md
docs/DB_EVENT_MODEL_REVIEW.md
docs/reports/RAYDIUM_AMM_V4_EVENT_COVERAGE_REPORT.md
validation_sql/SQL_VALIDATION_RAYDIUM_AMM_V4_0_7_51.sql

Validation finale locale :

cargo fmt
cargo test -p kb_lib
cargo clippy -p kb_lib --all-targets -- -D warnings