<!-- file: docs/prompts/NEXT_SESSION_PROMPT_0.7.47_EVENT_COVERAGE_V3.md -->

# Prompt de reprise — khadhroony-bobobot `0.7.47-1FE5` / Event coverage

Reprise du projet `khadhroony-bobobot`.

## Archive de départ

Utiliser :

```text
khadhroony-bobobot-v0.7.47-1FE5-full.zip
```

Et les docs :

```text
README.md
ROADMAP.md
CHANGELOG.md
docs/DEX_DECODER_MATRIX.md
docs/DEX_EVENT_COVERAGE_MATRIX.md
docs/DB_EVENT_MODEL_REVIEW.md
```

## Décision de reprise

Ne pas essayer de “faire tous les events de tous les DEX” dans une seule session.

La stratégie est maintenant :

```text
un DEX/version = une tranche
tous les events listés = audit coverage
matérialisation seulement après corpus + SQL + invariants
```

## 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://github.com/openbook-dex/openbook-v2
- https://github.com/all-in-one-blockchain/phoenix-onchain-mm
- https://docs.vybenetwork.com/docs/available-dexs-amms

## Objectif événementiel

Décoder le maximum d’events, pas seulement les swaps.

Inclure explicitement :

```text
swap
pool_create
add_liquidity
remove_liquidity
position_open
position_close
fee
reward
admin/config
mint
burn
transfer
account_create
account_close
wrap_sol
unwrap_sol
order_place
order_cancel
order_fill
consume_events
settle_funds
vault_deposit
vault_withdraw
lock
unlock
launch
migration
stake
unstake
unknown/unmapped audit
```

Raison : burn, perte de liquidité, changements admin/config, vault withdraw, migration, mint anormal, close account, etc. peuvent influencer une décision de trading même si ce ne sont pas des trades.

## Base de données

La base actuelle suffit pour audit-only via `k_sol_dex_decoded_events`, mais elle n’est pas suffisante pour tout exploiter en requêtes métier.

À considérer avant ou pendant `0.7.48` :

```text
k_sol_dex_event_coverage_entries
k_sol_token_transfer_events
k_sol_token_account_events
k_sol_orderbook_events
k_sol_vault_events
k_sol_launch_events
k_sol_liquidity_lock_events
```

Priorité minimale :

```text
1. k_sol_dex_event_coverage_entries
2. k_sol_token_transfer_events
3. k_sol_orderbook_events
```

## Ordre des versions

```text
0.7.48-pre  event coverage + DB model checkpoint
0.7.48      raydium_cpmm
0.7.49      raydium_clmm
0.7.50      pump_swap
0.7.51      pump_fun
0.7.52      meteora_dbc
0.7.53      meteora_dlmm
0.7.54      meteora_damm_v1
0.7.55      meteora_damm_v2
0.7.56      phoenix_v1
0.7.57      openbook_v2
0.7.58      orca_whirlpools
0.7.59      launch surfaces
0.7.60      DEX historiques/candidats
0.7.61      validation consolidée
```

## Règles fixes

- Un event non-trade ne produit jamais trade/candle.
- Une transaction failed reste audit, jamais trade/candle.
- Un discriminator upstream n’est pas une preuve métier.
- Un program id upstream n’est pas vérifié sans corpus local.
- Chaque decoder spécialisé doit remplacer le fallback `upstream_git.instruction_match` pour éviter les doublons.
- Tout event connu mais non observé reste `upstream_git_mapped_unverified`.
- Tout event observé mais non matérialisé reste audit-only ou decoded, pas materialized.

## Prochaine tâche recommandée

Commencer par :

```text
0.7.48-pre — event coverage + DB model checkpoint
```

Livrables attendus :

1. ajouter/documenter une table de couverture event/discriminator ;
2. générer un rapport de couverture par DEX/version ;
3. préparer `raydium_cpmm` avec la liste complète des events depuis Carbon/fnzero/IDL ;
4. ne pas changer encore la matérialisation trade/candle.
