0.7.49
This commit is contained in:
191
docs/prompts/NEXT_SESSION_PROMPT_0.7.47_1FE5_CONTINUATION_V2.md
Normal file
191
docs/prompts/NEXT_SESSION_PROMPT_0.7.47_1FE5_CONTINUATION_V2.md
Normal file
@@ -0,0 +1,191 @@
|
||||
# Prompt de reprise — khadhroony-bobobot `0.7.47-1FE5`
|
||||
|
||||
Reprise du projet `khadhroony-bobobot`.
|
||||
|
||||
## Archive de départ
|
||||
|
||||
Utiliser comme base de travail :
|
||||
|
||||
```text
|
||||
kb_lib-v0.7.47-1FE5-full.zip
|
||||
```
|
||||
|
||||
Joindre aussi les docs mises à jour :
|
||||
|
||||
```text
|
||||
README.md
|
||||
ROADMAP.md
|
||||
CHANGELOG.md
|
||||
docs/DEX_DECODER_MATRIX.md
|
||||
```
|
||||
|
||||
## Décision de planification
|
||||
|
||||
Ne plus tenter “tous les events de tous les decoders” dans une seule session. L’objectif reste de couvrir tous les decoders disponibles dans Carbon et les sources Git/IDL, mais par tranches DEX/version.
|
||||
|
||||
Ordre cible :
|
||||
|
||||
```text
|
||||
raydium_cpmm
|
||||
raydium_clmm
|
||||
pump_swap
|
||||
pump_fun
|
||||
meteora_dbc
|
||||
meteora_dlmm
|
||||
meteora_damm_v1
|
||||
meteora_damm_v2
|
||||
phoenix_v1
|
||||
openbook_v2
|
||||
orca_whirlpools
|
||||
launch surfaces
|
||||
DEX historiques / candidats
|
||||
```
|
||||
|
||||
## Sources upstream obligatoires
|
||||
|
||||
Ces sources sont des indices de décodage, pas des preuves de validation locale :
|
||||
|
||||
```text
|
||||
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
|
||||
```
|
||||
|
||||
## État validé
|
||||
|
||||
Dernier état validé côté `kb_lib` :
|
||||
|
||||
```text
|
||||
cargo test -p kb_lib
|
||||
371 passed
|
||||
```
|
||||
|
||||
Clippy doit être relancé à chaque tranche :
|
||||
|
||||
```bash
|
||||
cargo clippy -p kb_lib --all-targets -- -D warnings
|
||||
```
|
||||
|
||||
## 0.7.47 acquis
|
||||
|
||||
- Upstream Git Registry ajouté.
|
||||
- Demo3 étendu : multi-target, multi-source, pagination, orderbook targets, burn/mint/transfer/wrap/unwrap/stake.
|
||||
- Demo2 backfill signature fonctionnel.
|
||||
- Replay local avec ledger.
|
||||
- OpenBook v2 decoder audit-only.
|
||||
- Phoenix v1 decoder audit-only.
|
||||
- Les decoders audit-only ne produisent aucun trade/candle.
|
||||
|
||||
## OpenBook v2
|
||||
|
||||
Program id :
|
||||
|
||||
```text
|
||||
opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb
|
||||
```
|
||||
|
||||
État :
|
||||
|
||||
```text
|
||||
audit-only local decoder
|
||||
upstream_git fallback cleaned
|
||||
Program data mapped:
|
||||
- FillLog
|
||||
- OpenOrdersPositionLog
|
||||
- TotalOrderFillEvent
|
||||
- SettleFundsLog
|
||||
trade_count = 0
|
||||
```
|
||||
|
||||
Ne pas activer de trade/candle tant que maker/taker/base/quote et les lots ne sont pas validés.
|
||||
|
||||
## Phoenix v1
|
||||
|
||||
Program id :
|
||||
|
||||
```text
|
||||
PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY
|
||||
```
|
||||
|
||||
État :
|
||||
|
||||
```text
|
||||
audit-only local decoder
|
||||
log instruction strict 0x0f
|
||||
events observed:
|
||||
- Reduce
|
||||
- Place
|
||||
- TimeInForce
|
||||
currentInstructionTag mappings:
|
||||
- 0x09 CancelUpToWithFreeFunds
|
||||
- 0x0c WithdrawFunds
|
||||
- 0x10 PlaceMultiplePostOnlyOrders
|
||||
trade_count = 0
|
||||
```
|
||||
|
||||
Prochaine action préférée : finir Phoenix v1 avec tous les events disponibles dans les sources Git/IDL, mais rester audit-only jusqu’à validation économique.
|
||||
|
||||
## Contraintes
|
||||
|
||||
- Rust 2024.
|
||||
- Pas de `mod.rs`.
|
||||
- Fichiers Rust avec entête `// file: ...`.
|
||||
- Exposition centralisée via `lib.rs`.
|
||||
- `#![deny(unreachable_pub)]`, `#![warn(missing_docs)]`.
|
||||
- Pas de `anyhow`.
|
||||
- Pas de `thiserror`.
|
||||
- Pas de `?`, `unwrap`, `expect` dans le code applicatif.
|
||||
- Utiliser `match`, `if let Err`, `let Err = ... else`.
|
||||
- Si une requête DB est ajoutée/modifiée, mettre à jour `kb_lib/src/db.rs`, puis `kb_lib/src/lib.rs` si nécessaire.
|
||||
|
||||
## Méthode par DEX/version
|
||||
|
||||
Pour chaque DEX/version :
|
||||
|
||||
1. inspecter Carbon + autres sources Git/IDL ;
|
||||
2. lister tous les discriminants instructions/events ;
|
||||
3. compléter `upstream_registry` / matrice si nécessaire ;
|
||||
4. utiliser Demo3 pour corpus ;
|
||||
5. backfill Demo2 ;
|
||||
6. replay forcé ;
|
||||
7. valider SQL ;
|
||||
8. ajouter decoder audit-only ou materialized selon preuve ;
|
||||
9. supprimer les doublons `upstream_git.instruction_match` si decoder spécialisé ;
|
||||
10. ne jamais produire trade/candle sans montants exploitables et sens économique validé.
|
||||
|
||||
## Requêtes de sécurité audit-only
|
||||
|
||||
```sql
|
||||
SELECT
|
||||
de.protocol_name,
|
||||
de.event_kind,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name IN ('openbook_v2', 'phoenix_v1')
|
||||
GROUP BY de.protocol_name, de.event_kind
|
||||
ORDER BY trade_count DESC;
|
||||
```
|
||||
|
||||
Attendu :
|
||||
|
||||
```text
|
||||
trade_count = 0
|
||||
```
|
||||
|
||||
## Livrable attendu
|
||||
|
||||
Pour chaque tranche :
|
||||
|
||||
- fichiers ajoutés/modifiés seulement ;
|
||||
- archive zip ;
|
||||
- commandes de test ;
|
||||
- requêtes SQL ;
|
||||
- notes sur ce qui reste non vérifié ;
|
||||
- ne pas prétendre qu’un event ou program id est vérifié sans corpus local.
|
||||
Reference in New Issue
Block a user