v0.1.0-pre.074

This commit is contained in:
2026-07-31 23:53:03 +02:00
parent 5e1ad759d8
commit f1e9d6069b
35 changed files with 1632 additions and 1303 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/README.md --> <!-- file: docs/README.md -->
<!-- version: 6 --> <!-- version: 7 -->
# Documentation active de Khadhroony Bot3 # Documentation active de Khadhroony Bot3
@@ -36,14 +36,13 @@ Modèles documentaires non génératifs :
- [`templates/CRATE_USAGE_TEMPLATE.md`](templates/CRATE_USAGE_TEMPLATE.md) ; - [`templates/CRATE_USAGE_TEMPLATE.md`](templates/CRATE_USAGE_TEMPLATE.md) ;
- [`templates/CRATE_CHANGELOG_TEMPLATE.md`](templates/CRATE_CHANGELOG_TEMPLATE.md). - [`templates/CRATE_CHANGELOG_TEMPLATE.md`](templates/CRATE_CHANGELOG_TEMPLATE.md).
## 4. Audits et décisions en cours ## 4. Audits et décisions actifs
- [`DOCUMENTATION_REFACTOR_AUDIT.md`](DOCUMENTATION_REFACTOR_AUDIT.md) ; - [`audits/V0_4_6_ALIGNMENT_AUDIT.md`](audits/V0_4_6_ALIGNMENT_AUDIT.md) ;
- [`DOCUMENTATION_REFACTOR_PLAN.md`](DOCUMENTATION_REFACTOR_PLAN.md) ;
- [`decisions/DOCUMENT_ARCHIVE_SELECTION_POLICY.md`](decisions/DOCUMENT_ARCHIVE_SELECTION_POLICY.md) ; - [`decisions/DOCUMENT_ARCHIVE_SELECTION_POLICY.md`](decisions/DOCUMENT_ARCHIVE_SELECTION_POLICY.md) ;
- [`decisions/WINCODE_COMPATIBILITY_POLICY.md`](decisions/WINCODE_COMPATIBILITY_POLICY.md). - [`decisions/WINCODE_COMPATIBILITY_POLICY.md`](decisions/WINCODE_COMPATIBILITY_POLICY.md).
Ces audits seront archivés sous `olddocs/archivekbot3/` lorsquils auront été remplacés par des documents normatifs ou des rapports de clôture. Les audits et prompts de migration remplacés sont conservés sous `olddocs/archivekbot3/`.
## 5. Documents techniques actifs à reclasser ## 5. Documents techniques actifs à reclasser
@@ -71,29 +70,19 @@ Elles peuvent être chargées directement par les tests unitaires ou dintégr
## 7. Documentation par crate ## 7. Documentation par crate
Chaque crate devra posséder : Les onze crates possèdent désormais `README.md`, `TODO.md`, `USAGE.md` et `CHANGELOG.md` :
```text - [`kb-core`](../kb-core/README.md) ;
README.md
TODO.md
USAGE.md
CHANGELOG.md
```
Leur création commencera après stabilisation des documents transversaux, par lots de crates. `USAGE.md` documentera les APIs publiques réelles et pourra signaler les tests particulièrement instructifs.
## Documentation des crates
Le premier lot documenté comprend :
- [`kb-lib`](../kb-lib/README.md) ;
- [`kb-store`](../kb-store/README.md) ;
- [`kb-config`](../kb-config/README.md) ; - [`kb-config`](../kb-config/README.md) ;
- [`kb-logging`](../kb-logging/README.md). - [`kb-lib`](../kb-lib/README.md) ;
- [`kb-logging`](../kb-logging/README.md) ;
## Audits - [`kb-program-ids`](../kb-program-ids/README.md) ;
- [`kb-pipeline`](../kb-pipeline/README.md) ;
- [Audit dalignement des TODO par crate](audits/CRATE_TODO_VERSION_ALIGNMENT_AUDIT.md) - [`kb-pipeline-demo-scenarios`](../kb-pipeline-demo-scenarios/README.md) ;
- [`kb-onchain-transport`](../kb-onchain-transport/README.md) ;
- [`kb-store`](../kb-store/README.md) ;
- [`kb-wallet`](../kb-wallet/README.md) ;
- [`kb-app-demo-desktop`](../kb-app-demo-desktop/README.md).
## Guides ## Guides

View File

@@ -0,0 +1,314 @@
<!-- file: docs/audits/V0_4_6_ALIGNMENT_AUDIT.md -->
<!-- version: 1 -->
# Audit ciblé dalignement `0.4.6`
## 1. Objet
Cet audit détermine si `khadhroony-bot3` peut être officiellement aligné sur le périmètre fonctionnel de `khadhroony-bot2 0.4.6`.
Il ne refait pas les audits protocolaires complets déjà réalisés pour Solana Core, SPL Memo, SPL Token, SPL Associated Token Account, Token-2022 et le registre SPL ElGamal. Il synthétise leur migration, les tests disponibles, les validations Devnet connues et les écarts résiduels démontrés.
## 2. Base examinée
Base documentaire et source :
```text
khadhroony-bot3 v0.1.0-pre.073
```
Le workspace contient onze crates :
1. `kb-core` ;
2. `kb-config` ;
3. `kb-lib` ;
4. `kb-logging` ;
5. `kb-program-ids` ;
6. `kb-pipeline` ;
7. `kb-pipeline-demo-scenarios` ;
8. `kb-onchain-transport` ;
9. `kb-store` ;
10. `kb-wallet` ;
11. `kb-app-demo-desktop`.
Toutes utilisent actuellement la version workspace `0.1.0`. Aucun changement vers `0.4.6` ne doit être effectué avant clôture des blocants de la section 9.
## 3. Architecture migrée
### 3.1 Consolidations principales
| Bot2 | Bot3 | Statut |
|------------------------------------|------------------------------|-------------------------------------|
| modèles et contrats répartis | `kb-core` et `kb-lib` | migré et consolidé |
| décodeurs séparés | modules de `kb-lib` | migré |
| exécuteurs séparés | modules de `kb-lib` | migré |
| matérialisateurs séparés | modules de `kb-lib` | migré |
| stockage core et PostgreSQL séparé | `kb-store` | migré et consolidé |
| crates RPC et transports | `kb-onchain-transport` | migré et renommé |
| pipeline historique | `kb-pipeline` | migré |
| scénarios dépendants du desktop | `kb-pipeline-demo-scenarios` | extraits partiellement |
| application de démonstration | `kb-app-demo-desktop` | migrée et renommée |
| wallet temporaire | `kb-wallet` | migré, capacités avancées reportées |
La consolidation modifie la structure des crates, mais ne constitue pas en elle-même un écart fonctionnel.
### 3.2 Binaires et crates mixtes
- `kb-app-demo-desktop` reste une crate mixte bibliothèque et binaire ;
- `kb-pipeline-demo-scenarios` reste une crate mixte ;
- sa bibliothèque sappelle `kb_pipeline_demo_scenarios` ;
- son binaire explicite sappelle `kb-pipeline-demo-scenarios-cli` ;
- `autobins = false` empêche la création dune cible implicite concurrente.
## 4. Documentation et règles
### 4.1 Contrat par crate
Les onze crates disposent désormais de :
```text
README.md
TODO.md
USAGE.md
CHANGELOG.md
```
Les TODO sont classés par échéance :
- blocants avant `0.4.6` ;
- travaux entre `0.4.6` et `0.4.7` ;
- versions ultérieures ;
- reports conditionnels.
### 4.2 Documentation transversale
Les documents actifs couvrent :
- architecture générale et carte des crates ;
- pipeline et stockage ;
- configuration et logging ;
- RPC, backfill et WebSocket ;
- extraction Core, replay et matérialisation ;
- PostgreSQL ;
- validation Devnet ;
- règles documentaires.
Les anciens plans et prompts de migration ont été archivés sous `olddocs/archivekbot3/`.
## 5. Capacités fonctionnelles alignées sur bot2 `0.4.6`
### 5.1 Fondation et stockage
- contrats derreur et identités de modules ;
- configuration typée JSON et schéma embarqué ;
- logging structuré ;
- stockage canonique, observations, tables Core et decode/materialization ;
- migrations PostgreSQL et diagnostics ;
- pagination et requêtes de replay bornées.
### 5.2 Transports et acquisition
- JSON-RPC HTTP standard ;
- WebSocket standard ;
- pools et rôles dendpoints ;
- acquisition de signatures et transactions ;
- adaptation canonique ;
- simulation, soumission et confirmation ;
- backfill HTTP, reprise et annulation coopérative.
### 5.3 Pipeline
- extraction Core ;
- decode replay contextualisé ;
- matérialisation optionnelle et idempotente ;
- inspections stateful ;
- corrélations et préflights Token-2022 ;
- orchestration de preuves et postconditions.
### 5.4 Solana Core et SPL
Sont migrés jusquau périmètre historique de bot2 `0.4.6` :
- Solana Core et programmes natifs ;
- SPL Memo v1, v3 et v4 ;
- SPL Token classique ;
- SPL Associated Token Account ;
- Token-2022 et extensions couvertes ;
- registre SPL ElGamal dans les couches effectivement implémentées.
Memo v1 et v3 restent non exécutables. Memo v4 reste la génération exécutable.
## 6. Validations connues
### 6.1 Base `pre.062`
La base de migration a été déclarée validée avec :
```text
kb-pipeline-demo-scenarios :
- 39 tests de bibliothèque
- 1 test de binaire
kb-app-demo-desktop :
- 117 tests
```
Audits connus :
```text
General Rust rule audit: clean
Rust export completeness audit: 0 candidate(s)
Khadhroony workspace rule audit: clean
```
### 6.2 Devnet
Ont été validés sur Solana Devnet :
- System Transfer ;
- Memo v4 ;
- ATA classique ;
- ATA Token-2022 ;
- SPL Token `TransferChecked` ;
- Token-2022 :
- `MintToChecked` ;
- `TransferChecked` ;
- `ApproveChecked` ;
- `Revoke` ;
- `BurnChecked` ;
- `FreezeAccount` ;
- `ThawAccount` ;
- `CloseAccount`.
Les parcours couverts incluent simulation, confirmation opérateur, envoi, confirmation, insertion canonique, extraction Core, replay, matérialisation et idempotence.
### 6.3 Validation exécutée pendant cet audit
Avec le `Cargo.lock` de référence fourni séparément :
```text
General Rust rule audit: clean
Rust export completeness audit: 0 candidate(s)
Khadhroony workspace rule audit: clean
```
Les commandes Cargo nont pas pu être réexécutées dans lenvironnement de production du delta, car le binaire `cargo` ny est pas disponible. Les résultats historiques ne sont donc pas présentés comme nouvellement exécutés.
## 7. Éléments non bloquants pour `0.4.6`
### 7.1 Metaplex Token Metadata
Le décodeur a été commencé dans bot2 `0.4.7`, puis migré dans bot3. La matérialisation historique doit être vérifiée et les éléments suivants restent à terminer après lalignement `0.4.6` :
- exécuteur ;
- complément éventuel de matérialisation ;
- orchestration pipeline ;
- scénarios de démonstration ;
- panneaux desktop ;
- validations finales.
Ces travaux appartiennent à la future version fonctionnelle `0.4.7`.
### 7.2 Registre SPL ElGamal
Le registre est implémenté dans certaines couches, mais nest pas déclaré validé sur Devnet ou Mainnet.
La validation dépend notamment :
- de la confirmation du déploiement réseau ;
- dun générateur de preuve `PubkeyValidity` ;
- dun compte `Proof Context State` valide ;
- dun scénario opérateur fonctionnel.
Cette absence de validation réseau ne bloque pas lalignement sur bot2 `0.4.6`, car bot2 ne disposait pas non plus de cette validation réelle. Elle doit rester explicitement documentée.
### 7.3 Capacités planifiées après `0.4.7`
Ne bloquent pas `0.4.6` :
- split de `kb-config` et configuration logging dédiée en `0.5.x` ;
- complétion de `kb-wallet` en `0.5.x` ;
- décodeur générique Anchor et surfaces complémentaires en `0.6.x` ;
- protocoles Meteora, Raydium, Pump, Orca, Jupiter et autres ;
- transports streaming avancés en `0.13.x`.
## 8. Écarts architecturaux acceptés
Les différences suivantes sont des choix bot3 validés, pas des régressions :
- fusion des décodeurs, exécuteurs et matérialisateurs dans `kb-lib` ;
- fusion des contrats et implémentations de stockage dans `kb-store` ;
- renommage de `kb-rpc` en `kb-onchain-transport` ;
- séparation des scénarios réutilisables dans `kb-pipeline-demo-scenarios` ;
- maintien de `kb-app-demo-desktop` comme package mixte ;
- maintien dun wallet minimal avant sa complétion en `0.5.x`.
## 9. Blocants démontrés avant passage officiel à `0.4.6`
### 9.1 Desktop et contrat Tauri
Il reste à obtenir une validation explicite et complète de :
1. la synchronisation des adaptateurs Tauri et des payloads TS-RS avec les APIs réutilisables ;
2. la couverture des cycles douverture, fermeture et réouverture des fenêtres concernées.
### 9.2 Cycle de vie WebSocket
Le code place la session WebSocket dans `AppState`, distinctement de la fenêtre, et expose des commandes explicites de statut, connexion, désabonnement et déconnexion.
Il reste néanmoins à valider explicitement :
1. que fermer `demo_ws` ne ferme pas une session active ;
2. que rouvrir `demo_ws` récupère létat courant ;
3. que larrêt intervient uniquement sur déconnexion explicite, fermeture de lapplication ou timeout prévu.
Ces validations doivent être couvertes par des tests ou une campagne reproductible avant retrait des tâches du TODO.
### 9.3 Validation complète dans le workspace réel
Avant le changement de version, exécuter :
```bash
cargo fmt --all
cargo check --workspace
cargo clippy --all-targets
python3 scripts/audit_rust_workspace_rules.py
cargo test -p kb-pipeline-demo-scenarios
cargo test -p kb-app-demo-desktop
```
Exécuter également les tests ciblés de toute crate modifiée par les correctifs issus de cet audit.
La validation frontend doit utiliser :
```bash
cargo tauri dev -c kb-app-demo-desktop/tauri.conf.json
```
## 10. Liste fermée des écarts à traiter
Avant `0.4.6`, traiter uniquement :
- validation Tauri/TS-RS ;
- validation des cycles de fenêtres ;
- validation du cycle de vie persistant de `demo_ws` ;
- éventuelles corrections directement révélées par ces validations ;
- exécution finale des commandes de validation du workspace.
Aucun nouvel audit complet des protocoles déjà validés nest requis.
## 11. Conclusion
```text
NOT_READY_FOR_0_4_6
```
Le périmètre fonctionnel historique de bot2 `0.4.6` est largement migré et les différences architecturales sont documentées. Le passage officiel reste bloqué par des validations desktop/WebSocket explicites et par la validation finale du workspace réel.
Après clôture de ces points, la conclusion pourra devenir :
```text
READY_WITH_DOCUMENTED_EXCEPTIONS
```
Les exceptions documentées attendues sont le registre ElGamal non validé sur réseau et les travaux Metaplex Token Metadata réservés à `0.4.7`.

View File

@@ -1,8 +1,12 @@
<!-- file: kb-onchain-transport/CHANGELOG.md --> <!-- file: kb-onchain-transport/CHANGELOG.md -->
<!-- version: 4 --> <!-- version: 5 -->
# CHANGELOG — kb-onchain-transport # CHANGELOG — kb-onchain-transport
## 0.1.0-pre.074
- clôture de la tâche documentaire préalable à `0.4.6` après publication du guide transversal RPC/backfill/WebSocket ;
## 0.1.0-pre.073 ## 0.1.0-pre.073
- ajout du guide transversal [`docs/guides/RPC_BACKFILL_AND_WEBSOCKET.md`](../docs/guides/RPC_BACKFILL_AND_WEBSOCKET.md) ; - ajout du guide transversal [`docs/guides/RPC_BACKFILL_AND_WEBSOCKET.md`](../docs/guides/RPC_BACKFILL_AND_WEBSOCKET.md) ;

View File

@@ -1,10 +1,8 @@
<!-- file: kb-onchain-transport/TODO.md --> <!-- file: kb-onchain-transport/TODO.md -->
<!-- version: 3 --> <!-- version: 4 -->
# TODO — kb-onchain-transport # TODO — kb-onchain-transport
## Avant alignement `0.4.6`
## Série `0.13.x` ## Série `0.13.x`
- [ ] WebSocket - étendre le support Helius selon les contrats retenus. - [ ] WebSocket - étendre le support Helius selon les contrats retenus.

View File

@@ -1,8 +1,12 @@
<!-- file: kb-pipeline/CHANGELOG.md --> <!-- file: kb-pipeline/CHANGELOG.md -->
<!-- version: 4 --> <!-- version: 5 -->
# CHANGELOG — kb-pipeline # CHANGELOG — kb-pipeline
## 0.1.0-pre.074
- suppression du blocant daudit générique après production de [`V0_4_6_ALIGNMENT_AUDIT.md`](../docs/audits/V0_4_6_ALIGNMENT_AUDIT.md), aucun écart pipeline concret supplémentaire nayant été démontré ;
## 0.1.0-pre.073 ## 0.1.0-pre.073
- ajout du guide transversal [`docs/guides/REPLAY_CORE_EXTRACTION_AND_MATERIALIZATION.md`](../docs/guides/REPLAY_CORE_EXTRACTION_AND_MATERIALIZATION.md) ; - ajout du guide transversal [`docs/guides/REPLAY_CORE_EXTRACTION_AND_MATERIALIZATION.md`](../docs/guides/REPLAY_CORE_EXTRACTION_AND_MATERIALIZATION.md) ;

View File

@@ -1,12 +1,8 @@
<!-- file: kb-pipeline/TODO.md --> <!-- file: kb-pipeline/TODO.md -->
<!-- version: 3 --> <!-- version: 4 -->
# TODO — kb-pipeline # TODO — kb-pipeline
## Bloquants avant alignement `0.4.6`
- [ ] Audit - traiter les écarts pipeline réellement démontrés par `V0_4_6_ALIGNMENT_AUDIT.md`.
## Entre `0.4.6` et `0.4.7` ## Entre `0.4.6` et `0.4.7`
- [ ] Metaplex Token Metadata - intégrer la matérialisation migrée et les étapes restantes au replay bot3. - [ ] Metaplex Token Metadata - intégrer la matérialisation migrée et les étapes restantes au replay bot3.

View File

@@ -1,8 +1,12 @@
<!-- file: kb-store/CHANGELOG.md --> <!-- file: kb-store/CHANGELOG.md -->
<!-- version: 7 --> <!-- version: 8 -->
# CHANGELOG — kb-store # CHANGELOG — kb-store
## 0.1.0-pre.074
- clôture de la tâche documentaire préalable à `0.4.6` après publication du guide PostgreSQL et stockage ;
## 0.1.0-pre.073 ## 0.1.0-pre.073
- ajout du guide transversal [`docs/guides/POSTGRES_STORAGE.md`](../docs/guides/POSTGRES_STORAGE.md) ; - ajout du guide transversal [`docs/guides/POSTGRES_STORAGE.md`](../docs/guides/POSTGRES_STORAGE.md) ;

View File

@@ -1,10 +1,8 @@
<!-- file: kb-store/TODO.md --> <!-- file: kb-store/TODO.md -->
<!-- version: 4 --> <!-- version: 5 -->
# TODO — kb-store # TODO — kb-store
## Avant alignement `0.4.6`
## Versions ultérieures ## Versions ultérieures
- [ ] Administration - définir les outils supplémentaires prévus par le ROADMAP avant leur implémentation. - [ ] Administration - définir les outils supplémentaires prévus par le ROADMAP avant leur implémentation.

View File

@@ -474,7 +474,7 @@ Les sources externes ci-dessous sont des **indices de décodage**, pas des preuv
Sources prioritaires : Sources prioritaires :
| Source | Usage attendu | | Source | Usage attendu |
|---|---| |-------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------|
| `idls/` | Corpus local dIDL téléchargés depuis Solscan ; source de savoir locale à comparer aux sources Git avant promotion métier. | | `idls/` | Corpus local dIDL téléchargés depuis Solscan ; source de savoir locale à comparer aux sources Git avant promotion métier. |
| `https://github.com/sevenlabs-hq/carbon/tree/main/decoders` | Source principale de discriminants, instructions et events multi-protocoles. | | `https://github.com/sevenlabs-hq/carbon/tree/main/decoders` | Source principale de discriminants, instructions et events multi-protocoles. |
| `https://github.com/0xfnzero/solana-streamer` | Source complémentaire pour PumpFun, PumpSwap, Bonk et Raydium CPMM. | | `https://github.com/0xfnzero/solana-streamer` | Source complémentaire pour PumpFun, PumpSwap, Bonk et Raydium CPMM. |
@@ -505,7 +505,7 @@ Le but court terme nest pas encore le live trading. Le but court terme est de
Le workspace contient deux crates principales. Le workspace contient deux crates principales.
| Crate | Rôle | | Crate | Rôle |
|---|---| |---------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `kb_lib` | Bibliothèque métier : configuration, tracing, clients réseau, pool HTTP, manager WS, résolution transactionnelle, décodage DEX, détection métier, persistance SQLite, backfill, metadata, candles, signaux analytiques, validation et diagnostics. | | `kb_lib` | Bibliothèque métier : configuration, tracing, clients réseau, pool HTTP, manager WS, résolution transactionnelle, décodage DEX, détection métier, persistance SQLite, backfill, metadata, candles, signaux analytiques, validation et diagnostics. |
| `kb_demo_app` | Application Tauri V2 de démonstration et dinspection : fenêtres `Demo Ws`, `Demo Ws Manager`, `Demo Http`, `Demo Pipeline`, `Demo Pipeline 2`, `Demo3`, graphiques candles et commandes de backfill/replay. | | `kb_demo_app` | Application Tauri V2 de démonstration et dinspection : fenêtres `Demo Ws`, `Demo Ws Manager`, `Demo Http`, `Demo Pipeline`, `Demo Pipeline 2`, `Demo3`, graphiques candles et commandes de backfill/replay. |
@@ -547,7 +547,7 @@ Le pipeline `0.7.x` couvre déjà les étapes suivantes :
Un corpus local de reprise contient notamment : Un corpus local de reprise contient notamment :
| Indicateur | Valeur observée | | Indicateur | Valeur observée |
|---|---:| |-----------------------|----------------:|
| transactions chain | `2956` | | transactions chain | `2956` |
| decoded events | `7159` | | decoded events | `7159` |
| trade events | `2738` | | trade events | `2738` |
@@ -564,7 +564,7 @@ Cette distribution montre que les swaps sont déjà fortement présents, mais qu
Les surfaces suivantes existent dans le code, dans la matrice ou dans le corpus local. Leur niveau de preuve doit rester explicite. Les surfaces suivantes existent dans le code, dans la matrice ou dans le corpus local. Leur niveau de preuve doit rester explicite.
| Code | Statut de travail | Commentaire | | Code | Statut de travail | Commentaire |
|---|---|---| |-------------------|--------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `pump_fun` | launch surface | Surface de launch / mint initial. À traiter après les DEX effectifs sauf besoin de migration. | | `pump_fun` | launch surface | Surface de launch / mint initial. À traiter après les DEX effectifs sauf besoin de migration. |
| `pump_swap` | DEX effectif | Swaps `buy` / `sell` observés. Non-trade à étendre plus tard. | | `pump_swap` | DEX effectif | Swaps `buy` / `sell` observés. Non-trade à étendre plus tard. |
| `raydium_cpmm` | DEX effectif consolidé partiellement | Swaps et premiers events non-trade prouvés sur corpus antérieur. | | `raydium_cpmm` | DEX effectif consolidé partiellement | Swaps et premiers events non-trade prouvés sur corpus antérieur. |
@@ -585,7 +585,7 @@ Les surfaces suivantes existent dans le code, dans la matrice ou dans le corpus
Aucun `program_id`, DEX ou event ne doit être documenté comme vérifié sans preuve reproductible. Aucun `program_id`, DEX ou event ne doit être documenté comme vérifié sans preuve reproductible.
| Statut | Sens | | Statut | Sens |
|---|---| |----------------------|-------------------------------------------------------------------------------------------------------------|
| `known` | Connu/listé dans le code, une doc, une source externe ou la matrice. | | `known` | Connu/listé dans le code, une doc, une source externe ou la matrice. |
| `observed` | Vu dans une transaction, une instruction, une base locale ou un corpus on-chain. | | `observed` | Vu dans une transaction, une instruction, une base locale ou un corpus on-chain. |
| `decoded` | Un decoder produit un event structuré ou un `instruction_audit` classé. | | `decoded` | Un decoder produit un event structuré ou un `instruction_audit` classé. |
@@ -599,7 +599,7 @@ La tranche `0.7.45` clôt la normalisation séparée de `meteora_dlmm` sur le co
Éléments validés : Éléments validés :
| Famille | Events DLMM couverts | | Famille | Events DLMM couverts |
|---|---| |----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Swaps | `swap`, `swap2`, `swap_exact_out` lorsque présents, avec enrichissement `anchorSwapEvent` pour `Swap` / `Swap2Evt`. | | Swaps | `swap`, `swap2`, `swap_exact_out` lorsque présents, avec enrichissement `anchorSwapEvent` pour `Swap` / `Swap2Evt`. |
| Création / lifecycle | `create_pool`, `lb_pair_create_event`, `initialize_bin_array`, `initialize_position`. | | Création / lifecycle | `create_pool`, `lb_pair_create_event`, `initialize_bin_array`, `initialize_position`. |
| Positions | `position_create_event`, `position_close_event`, `close_position_if_empty`. | | Positions | `position_create_event`, `position_close_event`, `close_position_if_empty`. |
@@ -610,7 +610,7 @@ La tranche `0.7.45` clôt la normalisation séparée de `meteora_dlmm` sur le co
Validation locale finale sur la base DLMM dédiée : Validation locale finale sur la base DLMM dédiée :
| Indicateur | Valeur observée | | Indicateur | Valeur observée |
|---|---:| |-------------------------------|----------------:|
| transactions rejouées | `3027` | | transactions rejouées | `3027` |
| trades matérialisés | `530` | | trades matérialisés | `530` |
| liquidity events matérialisés | `15` | | liquidity events matérialisés | `15` |
@@ -644,7 +644,7 @@ Chaque DEX ou variante de DEX doit avoir sa propre étape de validation. Les fam
### 4.1. Ordre de travail DEX effectifs ### 4.1. Ordre de travail DEX effectifs
| Priorité | Code cible | Rôle | Action prochaine | | Priorité | Code cible | Rôle | Action prochaine |
|---:|---|---|---| |---------:|-------------------|--------------------------------|----------------------------------------------------------------------------------------|
| 1 | `pump_swap` | AMM / swap | Maintenir les invariants swaps et chercher les non-trade prouvés. | | 1 | `pump_swap` | AMM / swap | Maintenir les invariants swaps et chercher les non-trade prouvés. |
| 2 | `raydium_cpmm` | AMM | Garder consolidé ; ne rouvrir que sur nouveaux discriminators/corpus. | | 2 | `raydium_cpmm` | AMM | Garder consolidé ; ne rouvrir que sur nouveaux discriminators/corpus. |
| 3 | `raydium_clmm` | CLMM | Garder consolidé ; ne rouvrir que sur nouveaux discriminators/corpus. | | 3 | `raydium_clmm` | CLMM | Garder consolidé ; ne rouvrir que sur nouveaux discriminators/corpus. |
@@ -739,7 +739,7 @@ Table actuelle :
Champs principaux : Champs principaux :
| Champ conceptuel | Rôle | | Champ conceptuel | Rôle |
|---|---| |--------------------------------|------------------------------------------------------------------------|
| `transaction_id` / `signature` | rattachement transactionnel stable | | `transaction_id` / `signature` | rattachement transactionnel stable |
| `decoder_scope` | périmètre logique du decoder, actuellement `dex_decode.local_pipeline` | | `decoder_scope` | périmètre logique du decoder, actuellement `dex_decode.local_pipeline` |
| `decoder_version` | version logique du decoder | | `decoder_version` | version logique du decoder |

View File

@@ -33,7 +33,7 @@ La suite ajoute d'abord le binaire de fusion SQLite en `0.7.58`, puis `demo4` en
### Prochaines tranches recommandées ### Prochaines tranches recommandées
| Priorité | Tranche | Surface | Objectif | | Priorité | Tranche | Surface | Objectif |
|---:|---|---|---| |---------:|----------|-----------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 | `0.7.58` | `sqlite_db_transaction_merger` | Binaire de fusion de bases SQLite transactionnelles vers `final.db` / `final.next.db`, sans RPC/backfill/décodage pendant le merge, puis replay anti-régression cross-DEX Pump/Raydium/Meteora. | | 1 | `0.7.58` | `sqlite_db_transaction_merger` | Binaire de fusion de bases SQLite transactionnelles vers `final.db` / `final.next.db`, sans RPC/backfill/décodage pendant le merge, puis replay anti-régression cross-DEX Pump/Raydium/Meteora. |
| 2 | `0.7.59` | `demo4_program_surface_discovery` | UI/queries de découverte des contenus non pris en compte depuis la base consolidée : aucun auto-decode métier, aucune auto-materialization, aucune auto-promotion. | | 2 | `0.7.59` | `demo4_program_surface_discovery` | UI/queries de découverte des contenus non pris en compte depuis la base consolidée : aucun auto-decode métier, aucune auto-materialization, aucune auto-promotion. |
| 3 | `0.7.60` | `meteora_damm_v1` | Clôture séparée DAMM v1 : pools, swaps, liquidity, lock, fees/admin, coverage et matérialisation complète. | | 3 | `0.7.60` | `meteora_damm_v1` | Clôture séparée DAMM v1 : pools, swaps, liquidity, lock, fees/admin, coverage et matérialisation complète. |
@@ -60,7 +60,7 @@ Règles de planification :
### Sources upstream obligatoires à vérifier ### Sources upstream obligatoires à vérifier
| Source | Usage | | Source | Usage |
|---|---| |-------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|
| `idls/` | Corpus local dIDL Solscan téléchargés et versionnés dans le workspace ; source locale obligatoire à comparer aux liens Git avant décision de decoder. | | `idls/` | Corpus local dIDL Solscan téléchargés et versionnés dans le workspace ; source locale obligatoire à comparer aux liens Git avant décision de decoder. |
| `https://github.com/sevenlabs-hq/carbon/tree/main/decoders` | Source principale des decoders multi-protocoles. | | `https://github.com/sevenlabs-hq/carbon/tree/main/decoders` | Source principale des decoders multi-protocoles. |
| `https://github.com/0xfnzero/solana-streamer` | Source complémentaire PumpFun/PumpSwap/Bonk/Raydium CPMM. | | `https://github.com/0xfnzero/solana-streamer` | Source complémentaire PumpFun/PumpSwap/Bonk/Raydium CPMM. |
@@ -78,7 +78,7 @@ Règle active après la clôture DLMM : les tranches `0.7.58` et `0.7.59` sont d
Les comptes non-programmes (`platform_config`, token authority, comptes de configuration, comptes de pool, accounts de programme) ne créent pas de version decoder autonome. `SOLSCAN_ACCOUNT_SOURCES` reste un inventaire de découverte, pas une preuve de support local. Les comptes non-programmes (`platform_config`, token authority, comptes de configuration, comptes de pool, accounts de programme) ne créent pas de version decoder autonome. `SOLSCAN_ACCOUNT_SOURCES` reste un inventaire de découverte, pas une preuve de support local.
| Version cible | Decoder / surface | Program id | Famille | Objectif de clôture | | Version cible | Decoder / surface | Program id | Famille | Objectif de clôture |
|---|---|---|---|---| |---------------|-----------------------------------|------------------------------------------------|------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `0.7.53` | `pump_swap` | `pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA` | Pump / AMM | **Clos** : `buy/sell/buy_exact_quote_in` matérialisés seulement depuis sources exactes ; events Anchor audit-only ; tests synthétiques IDL ; SQL global. | | `0.7.53` | `pump_swap` | `pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA` | Pump / AMM | **Clos** : `buy/sell/buy_exact_quote_in` matérialisés seulement depuis sources exactes ; events Anchor audit-only ; tests synthétiques IDL ; SQL global. |
| `0.7.54` | `pump_fun` | `6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P` | Pump / launch-bonding | **Clos** : decoder maximal IDL/local, trades directs `buy/sell/buy_exact_sol_in`, v2/exact via `trade_event`, non-trades matérialisés selon contexte, validations Pump.fun propres. | | `0.7.54` | `pump_fun` | `6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P` | Pump / launch-bonding | **Clos** : decoder maximal IDL/local, trades directs `buy/sell/buy_exact_sol_in`, v2/exact via `trade_event`, non-trades matérialisés selon contexte, validations Pump.fun propres. |
| `0.7.55` | `pump_fees` | `pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ` | Pump / fee | **Clos** : `29` instructions, `20` events Anchor, fee/reward/admin/lifecycle, `get_fees` decoded-only, failed tx audit-only, aucun trade/candle direct. | | `0.7.55` | `pump_fees` | `pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ` | Pump / fee | **Clos** : `29` instructions, `20` events Anchor, fee/reward/admin/lifecycle, `get_fees` decoded-only, failed tx audit-only, aucun trade/candle direct. |
@@ -965,7 +965,7 @@ Réalisé :
Matrice cible initiale : Matrice cible initiale :
| Code cible | Type | Statut `0.7.29` | Objectif immédiat | | Code cible | Type | Statut `0.7.29` | Objectif immédiat |
|---|---:|---|---| |-----------------------|-----------------------:|----------------------------------|-----------------------------------------------------------|
| `pump_fun` | launch + bonding curve | partiel | rattacher mint initial, bonding curve et migration | | `pump_fun` | launch + bonding curve | partiel | rattacher mint initial, bonding curve et migration |
| `pump_swap` | AMM / swap | supporté | conserver trades/candles | | `pump_swap` | AMM / swap | supporté | conserver trades/candles |
| `raydium_cpmm` | AMM | supporté | conserver trades/candles | | `raydium_cpmm` | AMM | supporté | conserver trades/candles |
@@ -1250,7 +1250,7 @@ Fait :
Validation locale finale observée sur la base DLMM dédiée : Validation locale finale observée sur la base DLMM dédiée :
| Indicateur | Valeur | | Indicateur | Valeur |
|---|---:| |-------------------------------|-------:|
| transactions rejouées | `3027` | | transactions rejouées | `3027` |
| trades matérialisés | `530` | | trades matérialisés | `530` |
| liquidity events matérialisés | `15` | | liquidity events matérialisés | `15` |
@@ -1299,7 +1299,7 @@ Events DAMM v1 ajoutés côté decoder :
Discriminants DAMM v1 traités dans cette tranche : Discriminants DAMM v1 traités dans cette tranche :
| Discriminant | Mapping upstream Git | Event local | Statut | | Discriminant | Mapping upstream Git | Event local | Statut |
|---|---|---|---| |--------------------|----------------------------------------------------------|--------------------------------------|---------------------------|
| `07a68aabceabecf4` | `InitializePermissionlessConstantProductPoolWithConfig` | `meteora_damm_v1.create_pool` | observé dans corpus local | | `07a68aabceabecf4` | `InitializePermissionlessConstantProductPoolWithConfig` | `meteora_damm_v1.create_pool` | observé dans corpus local |
| `3095dc823d0b09b2` | `InitializePermissionlessConstantProductPoolWithConfig2` | `meteora_damm_v1.create_pool` | observé dans corpus local | | `3095dc823d0b09b2` | `InitializePermissionlessConstantProductPoolWithConfig2` | `meteora_damm_v1.create_pool` | observé dans corpus local |
| `856d2cb338ee7221` | `RemoveBalanceLiquidity` | `meteora_damm_v1.remove_liquidity` | observé dans corpus local | | `856d2cb338ee7221` | `RemoveBalanceLiquidity` | `meteora_damm_v1.remove_liquidity` | observé dans corpus local |
@@ -1447,7 +1447,7 @@ Décisions actives :
- Après `0.7.62`, le décalage de deux versions est assumé et documenté. - Après `0.7.62`, le décalage de deux versions est assumé et documenté.
| Version cible | Decoder / surface | Program id | Famille | Objectif de clôture | | Version cible | Decoder / surface | Program id | Famille | Objectif de clôture |
|---|---|---|---|---| |---------------|-----------------------------------|------------------------------------------------|------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `0.7.53` | `pump_swap` | `pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA` | Pump / AMM | **Clos** : `buy/sell/buy_exact_quote_in` matérialisés seulement depuis sources exactes ; events Anchor audit-only ; tests synthétiques IDL ; SQL global. | | `0.7.53` | `pump_swap` | `pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA` | Pump / AMM | **Clos** : `buy/sell/buy_exact_quote_in` matérialisés seulement depuis sources exactes ; events Anchor audit-only ; tests synthétiques IDL ; SQL global. |
| `0.7.54` | `pump_fun` | `6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P` | Pump / launch-bonding | **Clos** : decoder maximal IDL/local, trades directs `buy/sell/buy_exact_sol_in`, v2/exact via `trade_event`, non-trades matérialisés selon contexte, validations Pump.fun propres. | | `0.7.54` | `pump_fun` | `6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P` | Pump / launch-bonding | **Clos** : decoder maximal IDL/local, trades directs `buy/sell/buy_exact_sol_in`, v2/exact via `trade_event`, non-trades matérialisés selon contexte, validations Pump.fun propres. |
| `0.7.55` | `pump_fees` | `pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ` | Pump / fee | **Clos** : `29` instructions, `20` events Anchor, fee/reward/admin/lifecycle, `get_fees` decoded-only, failed tx audit-only, aucun trade/candle direct. | | `0.7.55` | `pump_fees` | `pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ` | Pump / fee | **Clos** : `29` instructions, `20` events Anchor, fee/reward/admin/lifecycle, `get_fees` decoded-only, failed tx audit-only, aucun trade/candle direct. |

View File

@@ -55,7 +55,7 @@ Daprès le README, le modèle contient déjà notamment :
Ces tables couvrent déjà les besoins principaux : Ces tables couvrent déjà les besoins principaux :
| Besoin | Couverture actuelle | | Besoin | Couverture actuelle |
|---|---| |------------------------------------------|---------------------------------------------------|
| Stockage brut/audit de tout event décodé | Oui, via `k_sol_dex_decoded_events.payload_json`. | | Stockage brut/audit de tout event décodé | Oui, via `k_sol_dex_decoded_events.payload_json`. |
| Trades/candles | Oui. | | Trades/candles | Oui. |
| Liquidity/lifecycle/fee/reward/admin | Oui, au moins structurellement. | | Liquidity/lifecycle/fee/reward/admin | Oui, au moins structurellement. |

View File

@@ -54,7 +54,7 @@ Cette matrice complète `kb_lib/src/dex_support_matrix.rs`. Elle documente **ce
## Règle de lecture ## Règle de lecture
| Statut | Sens | | Statut | Sens |
|---|---| |----------------------|----------------------------------------------------------------------------------------------------|
| `supported` | Decoder local actif et matérialisation métier possible sur corpus validé. | | `supported` | Decoder local actif et matérialisation métier possible sur corpus validé. |
| `partial` | Decoder partiel ou surface partielle : des events existent, mais la couverture nest pas complète. | | `partial` | Decoder partiel ou surface partielle : des events existent, mais la couverture nest pas complète. |
| `audit-only` | Decoder local spécialisé, mais aucun trade/candle/matérialisation marché. | | `audit-only` | Decoder local spécialisé, mais aucun trade/candle/matérialisation marché. |
@@ -76,7 +76,7 @@ Cette matrice complète `kb_lib/src/dex_support_matrix.rs`. Elle documente **ce
## Matrice prioritaire DEX/version ## Matrice prioritaire DEX/version
| Ordre | DEX/version | État actuel | Fait | Reste à faire | | Ordre | DEX/version | État actuel | Fait | Reste à faire |
|---:|---|---|---|---| |------:|-------------------------------------------------|---------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 | `raydium_cpmm` | `supported / 0.7.50-pre-r2 closure recheck` | Couverture CPMM clôturée : swaps, lifecycle, fees, admin/config, deposit/withdraw, `lp_change_event`, `swap_event` decoded-only, `cpi_event` transport Carbon et `anchor_idl_instruction` Solscan/manual pour `40f4bc78a7e9690a`. | Ne pas promouvoir `anchor_idl_instruction` : c'est de la gestion Anchor IDL, pas un événement AMM métier. | | 1 | `raydium_cpmm` | `supported / 0.7.50-pre-r2 closure recheck` | Couverture CPMM clôturée : swaps, lifecycle, fees, admin/config, deposit/withdraw, `lp_change_event`, `swap_event` decoded-only, `cpi_event` transport Carbon et `anchor_idl_instruction` Solscan/manual pour `40f4bc78a7e9690a`. | Ne pas promouvoir `anchor_idl_instruction` : c'est de la gestion Anchor IDL, pas un événement AMM métier. |
| 2 | `raydium_clmm` | `supported / 0.7.50-pre-r2 closure recheck` | Couverture CLMM complétée : `cpi_event`, `update_dynamic_fee_config`, Program-data events locaux, `create_support_mint_associated` vers `k_sol_token_account_events`, familles sans `unknown`, router/swap Program-data en decoded-only. | Rejouer la base CLMM et confirmer que les seuls résidus sont `decoded_events_only`, transactions failed ou absence prouvée de contexte pool/pair. | | 2 | `raydium_clmm` | `supported / 0.7.50-pre-r2 closure recheck` | Couverture CLMM complétée : `cpi_event`, `update_dynamic_fee_config`, Program-data events locaux, `create_support_mint_associated` vers `k_sol_token_account_events`, familles sans `unknown`, router/swap Program-data en decoded-only. | Rejouer la base CLMM et confirmer que les seuls résidus sont `decoded_events_only`, transactions failed ou absence prouvée de contexte pool/pair. |
| 3 | `raydium_launchpad` | `bootstrap / 0.7.50` | Surface canonique normalisée, 1 entrée programme + 26 discriminants Carbon/IDL listés, fallback audit/mapped decoder, SQL dédié. | Créer DB neuve, backfill par discriminant, replay forcé, promouvoir seulement après corpus local. | | 3 | `raydium_launchpad` | `bootstrap / 0.7.50` | Surface canonique normalisée, 1 entrée programme + 26 discriminants Carbon/IDL listés, fallback audit/mapped decoder, SQL dédié. | Créer DB neuve, backfill par discriminant, replay forcé, promouvoir seulement après corpus local. |
@@ -140,7 +140,7 @@ Un event peut devenir `materialized` uniquement si :
## Annexe — snapshot de `kb_lib/src/dex_support_matrix.rs` (`1FE5`) ## Annexe — snapshot de `kb_lib/src/dex_support_matrix.rs` (`1FE5`)
| Code | Rôle | Surface | Program id status | Observed | Decoded | Materialized | Status | Skip reason | | Code | Rôle | Surface | Program id status | Observed | Decoded | Materialized | Status | Skip reason |
|---|---|---|---|---:|---:|---:|---|---| |-----------------------------|---------------------|---------------------|-----------------------------------------------|---------:|--------:|-------------:|-----------------|------------------------------------------------------------------------------------------------------------|
| `pump_fun` | `launch_surface` | `launch/bonding` | `known` | oui | oui | oui | `0.7.54_closed` | Decoder maximal IDL/local ; v2/exact matérialisés via `trade_event` canonique ; non-trades selon contexte. | | `pump_fun` | `launch_surface` | `launch/bonding` | `known` | oui | oui | oui | `0.7.54_closed` | Decoder maximal IDL/local ; v2/exact matérialisés via `trade_event` canonique ; non-trades selon contexte. |
| `pump_swap` | `dex_effective` | `AMM` | `known` | oui | oui | oui | `supported` | | | `pump_swap` | `dex_effective` | `AMM` | `known` | oui | oui | oui | `supported` | |
| `raydium_cpmm` | `dex_effective` | `AMM` | `known` | oui | oui | oui | `supported` | | | `raydium_cpmm` | `dex_effective` | `AMM` | `known` | oui | oui | oui | `supported` | |
@@ -302,7 +302,7 @@ La clôture `0.7.50-pre-r2` complète les tranches `0.7.48` et `0.7.49` sans rou
## Note `0.7.51` — `raydium_amm_v4` ## Note `0.7.51` — `raydium_amm_v4`
| Champ | Décision `0.7.51` | | Champ | Décision `0.7.51` |
|---|---| |-------------------------------------|---------------------------------------------------------------------------------------------------------------------------------|
| Code local | `raydium_amm_v4` | | Code local | `raydium_amm_v4` |
| Program id canonique | `675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8` | | Program id canonique | `675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8` |
| Statut | `supported / 0.7.51 closed` ; max-decoder local `00..11` validé | | Statut | `supported / 0.7.51 closed` ; max-decoder local `00..11` validé |
@@ -320,34 +320,34 @@ La tranche a été validée sur base SQLite dédiée : tous les discriminants `0
## 0.7.52 — Raydium Stable Swap ## 0.7.52 — Raydium Stable Swap
| decoder_code | program id | status | layout | notes | | decoder_code | program id | status | layout | notes |
|---|---|---|---|---| |-----------------------|------------------------------------------------|--------------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `raydium_stable_swap` | `5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h` | supported / closed | legacy 1 octet | Surface locale `00..0d` couverte ; swaps `swap_base_in/out` matérialisés uniquement depuis deltas vault exacts ; instruction bounds et failed tx restent decoded-only. | | `raydium_stable_swap` | `5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h` | supported / closed | legacy 1 octet | Surface locale `00..0d` couverte ; swaps `swap_base_in/out` matérialisés uniquement depuis deltas vault exacts ; instruction bounds et failed tx restent decoded-only. |
## 0.7.54 — Pump.fun ## 0.7.54 — Pump.fun
| Decoder | Program id | Statut | Source discriminants | Couverture locale initiale | Règles métier | | Decoder | Program id | Statut | Source discriminants | Couverture locale initiale | Règles métier |
|---|---|---:|---|---|---| |------------|-----------------------------------------------|--------------------------:|-------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `pump_fun` | `6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P` | supported / 0.7.54 closed | upstream registry + `idls/pump_fun.6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P.json` + corpus SQLite validé | `40` instructions et `23` events Anchor connus couverts ; `buy/sell/buy_exact_sol_in` matérialisés ; `buy_v2/sell_v2/buy_exact_quote_in_v2` audit/routing ; `trade_event` matérialise les montants exécutés v2/exact | `k_sol_trade_events` uniquement avec montants exacts ; `create/migrate` vers `k_sol_launch_events` ; creator fees vers `k_sol_fee_events` ; cashback/incentives vers `k_sol_reward_events` ; admin/config vers `k_sol_pool_admin_events` ; decoded-only/audit-only avec skip reason sinon | | `pump_fun` | `6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P` | supported / 0.7.54 closed | upstream registry + `idls/pump_fun.6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P.json` + corpus SQLite validé | `40` instructions et `23` events Anchor connus couverts ; `buy/sell/buy_exact_sol_in` matérialisés ; `buy_v2/sell_v2/buy_exact_quote_in_v2` audit/routing ; `trade_event` matérialise les montants exécutés v2/exact | `k_sol_trade_events` uniquement avec montants exacts ; `create/migrate` vers `k_sol_launch_events` ; creator fees vers `k_sol_fee_events` ; cashback/incentives vers `k_sol_reward_events` ; admin/config vers `k_sol_pool_admin_events` ; decoded-only/audit-only avec skip reason sinon |
## 0.7.53 — PumpSwap ## 0.7.53 — PumpSwap
| Decoder | Program id | Statut | Source discriminants | Couverture locale | Règles métier | | Decoder | Program id | Statut | Source discriminants | Couverture locale | Règles métier |
|---|---|---:|---|---|---| |-------------|-----------------------------------------------|--------------------------:|-------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `pump_swap` | `pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA` | supported / 0.7.53 closed | upstream registry + `idls/pump_swap.pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA.json` + corpus Demo3/replay | instructions : `buy`, `sell`, `buy_exact_quote_in`, `deposit`, `withdraw`, `create_pool`, `create_config`, `update_fee_config`, creator-fee, cashback, token incentives, volume accumulator, admin/config ; events Anchor autonomes audit-only | `buy_exact_quote_in` trade uniquement avec `pump_swap_anchor_buy_event`; aucun non-swap en trade/candle ; failed tx decoded-only ; `buy_event`/`sell_event` Program-data audit-only ; `transfer_creator_fees_to_pump_v2` et `update_buyback_config` confirmés par Solscan IDL ; `set_reserved_fee_recipient` conservé sur preuve log locale | | `pump_swap` | `pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA` | supported / 0.7.53 closed | upstream registry + `idls/pump_swap.pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA.json` + corpus Demo3/replay | instructions : `buy`, `sell`, `buy_exact_quote_in`, `deposit`, `withdraw`, `create_pool`, `create_config`, `update_fee_config`, creator-fee, cashback, token incentives, volume accumulator, admin/config ; events Anchor autonomes audit-only | `buy_exact_quote_in` trade uniquement avec `pump_swap_anchor_buy_event`; aucun non-swap en trade/candle ; failed tx decoded-only ; `buy_event`/`sell_event` Program-data audit-only ; `transfer_creator_fees_to_pump_v2` et `update_buyback_config` confirmés par Solscan IDL ; `set_reserved_fee_recipient` conservé sur preuve log locale |
## 0.7.55 — Pump Fees ## 0.7.55 — Pump Fees
| Decoder | Program id | Statut | Source discriminants | Couverture locale | Règles métier | | Decoder | Program id | Statut | Source discriminants | Couverture locale | Règles métier |
|---|---|---:|---|---|---| |-------------|-----------------------------------------------|----------------------------:|-------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `pump_fees` | `pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ` | supported / `0.7.55 closed` | `idls/pump_fees.pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ.json` + Carbon partiel + Solscan discriminators | `29` instructions et `20` events Anchor couverts ; tests synthétiques pour les Anchor events IDL non observés ; replay final propre ; watchlist `pump_fees` vide | Aucun trade/candle direct ; `get_fees` decoded-only ; social claim vers reward ; donation/buyback vers fee ; config/authority/tier/admin vers admin/lifecycle ; failed tx audit-only ; deux events Solscan hors IDL conservés non observés. | | `pump_fees` | `pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ` | supported / `0.7.55 closed` | `idls/pump_fees.pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ.json` + Carbon partiel + Solscan discriminators | `29` instructions et `20` events Anchor couverts ; tests synthétiques pour les Anchor events IDL non observés ; replay final propre ; watchlist `pump_fees` vide | Aucun trade/candle direct ; `get_fees` decoded-only ; social claim vers reward ; donation/buyback vers fee ; config/authority/tier/admin vers admin/lifecycle ; failed tx audit-only ; deux events Solscan hors IDL conservés non observés. |
## 0.7.56 — Meteora DBC clôturé ## 0.7.56 — Meteora DBC clôturé
| Decoder | Program id | Statut | Source locale | Couverture | Décision métier | | Decoder | Program id | Statut | Source locale | Couverture | Décision métier |
|---|---|---|---|---|---| |---------------|-----------------------------------------------|-----------------------------|---------------------------------------------------------------------|---------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|
| `meteora_dbc` | `dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN` | `supported / closed 0.7.56` | `idls/meteora_dbc.dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN.json` | `28` instructions IDL + `23` events Anchor IDL, tests synthétiques et validation SQL dédiée | `swap`/`swap2` seuls vers trade/candle direct ; lifecycle/admin/fee selon contexte ; fees parent+legs ; failed tx audit-only. | | `meteora_dbc` | `dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN` | `supported / closed 0.7.56` | `idls/meteora_dbc.dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN.json` | `28` instructions IDL + `23` events Anchor IDL, tests synthétiques et validation SQL dédiée | `swap`/`swap2` seuls vers trade/candle direct ; lifecycle/admin/fee selon contexte ; fees parent+legs ; failed tx audit-only. |
Validation finale : `446` tests, clippy OK, `480 replayed`, `264 trades`, `1 liquidity`, `122 lifecycle`, `1056 candles`, `89` parents fee DBC, `96` fee amount legs, invariants SQL propres. Validation finale : `446` tests, clippy OK, `480 replayed`, `264 trades`, `1 liquidity`, `122 lifecycle`, `1056 candles`, `89` parents fee DBC, `96` fee amount legs, invariants SQL propres.
@@ -355,7 +355,7 @@ Validation finale : `446` tests, clippy OK, `480 replayed`, `264 trades`, `1 liq
## 0.7.57 — Meteora DLMM clôturé ## 0.7.57 — Meteora DLMM clôturé
| Decoder | Program id | Statut | Source locale | Couverture finale | Décision métier | | Decoder | Program id | Statut | Source locale | Couverture finale | Décision métier |
|---|---|---|---|---|---| |----------------|-----------------------------------------------|-----------------------------|----------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `meteora_dlmm` | `LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo` | `supported / closed 0.7.57` | `idls/meteora_dlmm.LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo.json` | `76` instructions IDL, `30` events Anchor, `12` accounts, `initialize_preset_parameter_v2` ajouté depuis corpus local | Les 6 swaps instructionnels produisent seuls les trades/candles ; Anchor `swap_event/swap2_evt` = lifecycle `swap_log`; liquidity/bin/position/lifecycle/admin/orderbook/fee/reward matérialisés selon cible ; failed tx audit-only. | | `meteora_dlmm` | `LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo` | `supported / closed 0.7.57` | `idls/meteora_dlmm.LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo.json` | `76` instructions IDL, `30` events Anchor, `12` accounts, `initialize_preset_parameter_v2` ajouté depuis corpus local | Les 6 swaps instructionnels produisent seuls les trades/candles ; Anchor `swap_event/swap2_evt` = lifecycle `swap_log`; liquidity/bin/position/lifecycle/admin/orderbook/fee/reward matérialisés selon cible ; failed tx audit-only. |
Validation finale : `460` tests, clippy OK, `769 replayed`, `106 trades`, `664 liquidity`, `1107 lifecycle`, `424 candles`, `8062` instruction observations, catalogue `169/218/218`. Checks SQL bloquants propres. Validation finale : `460` tests, clippy OK, `769 replayed`, `106 trades`, `664 liquidity`, `1107 lifecycle`, `424 candles`, `8062` instruction observations, catalogue `169/218/218`. Checks SQL bloquants propres.

View File

@@ -7,7 +7,7 @@ Cette matrice complète `docs/DEX_DECODER_MATRIX.md` avec une lecture par famill
## Règles de statut ## Règles de statut
| Statut | Sens | | Statut | Sens |
|---|---| |----------------------------------|----------------------------------------------------------------------------------|
| `decoded` | Un decoder local produit un event spécialisé ou un event audit-only classé. | | `decoded` | Un decoder local produit un event spécialisé ou un event audit-only classé. |
| `materialized` | L'event alimente une table métier existante validée par corpus. | | `materialized` | L'event alimente une table métier existante validée par corpus. |
| `audit-only` | L'event reste dans `k_sol_dex_decoded_events` et ne produit jamais trade/candle. | | `audit-only` | L'event reste dans `k_sol_dex_decoded_events` et ne produit jamais trade/candle. |
@@ -19,7 +19,7 @@ Cette matrice complète `docs/DEX_DECODER_MATRIX.md` avec une lecture par famill
Sources inventoriées : Carbon `carbon-raydium-cpmm-decoder`, fnzero `solana-streamer` / `sol-parser-sdk` IDL `raydium_cpmm.json`. Sources inventoriées : Carbon `carbon-raydium-cpmm-decoder`, fnzero `solana-streamer` / `sol-parser-sdk` IDL `raydium_cpmm.json`.
| Famille | Entrées Raydium CPMM | Statut `0.7.48` | Cible DB | Justification / règle | | Famille | Entrées Raydium CPMM | Statut `0.7.48` | Cible DB | Justification / règle |
|---|---|---|---|---| |--------------------------|-----------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|
| `swap` | `swap_base_input`, `swap_base_output`, `swap_event` | `materialized` pour `swap_base_*`; `swap_event` audit-only | `k_sol_trade_events` seulement pour `swap_base_*`; `k_sol_dex_decoded_events_only` pour `swap_event` | `swap_event` est décodé mais ne produit jamais trade/candle afin d'éviter les doublons. | | `swap` | `swap_base_input`, `swap_base_output`, `swap_event` | `materialized` pour `swap_base_*`; `swap_event` audit-only | `k_sol_trade_events` seulement pour `swap_base_*`; `k_sol_dex_decoded_events_only` pour `swap_event` | `swap_event` est décodé mais ne produit jamais trade/candle afin d'éviter les doublons. |
| `pool_create` | `initialize`, `initialize_with_permission` | `materialized` | `k_sol_pool_lifecycle_events` | `initialize_with_permission` est lifecycle-only et ne crée plus d'admin row. | | `pool_create` | `initialize`, `initialize_with_permission` | `materialized` | `k_sol_pool_lifecycle_events` | `initialize_with_permission` est lifecycle-only et ne crée plus d'admin row. |
| `add_liquidity` | `deposit`, `lp_change_event(changeType=0)` | `materialized` | `k_sol_liquidity_events` | `deposit` et `lp_change_event(changeType=0)` matérialisent liquidity, sans trade/candle. | | `add_liquidity` | `deposit`, `lp_change_event(changeType=0)` | `materialized` | `k_sol_liquidity_events` | `deposit` et `lp_change_event(changeType=0)` matérialisent liquidity, sans trade/candle. |
@@ -79,7 +79,7 @@ Sources inventoriées : Carbon `raydium-clmm-decoder`, fnzero `sol-parser-sdk`,
État final validé : `45` entrées listées, `33` instructions locales observées/décodées, `25` entrées matérialisées, `1186` trades, `raydium_clmm.instruction_audit = 0`, fallback `upstream_git.instruction_match` localement couvert = `0`. État final validé : `45` entrées listées, `33` instructions locales observées/décodées, `25` entrées matérialisées, `1186` trades, `raydium_clmm.instruction_audit = 0`, fallback `upstream_git.instruction_match` localement couvert = `0`.
| Famille | Entrées Raydium CLMM | Statut `0.7.49` | Cible DB | Justification / règle | | Famille | Entrées Raydium CLMM | Statut `0.7.49` | Cible DB | Justification / règle |
|---|---|---|---|---| |----------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------|----------------------------------------------------------------|-----------------------------------------------------------------------------------|
| `swap` | `swap`, `swap_v2` | `materialized` | `k_sol_trade_events` | Seuls ces swaps produisent trades/candles lorsque les montants sont exploitables. | | `swap` | `swap`, `swap_v2` | `materialized` | `k_sol_trade_events` | Seuls ces swaps produisent trades/candles lorsque les montants sont exploitables. |
| `swap audit` | `swap_event`, `swap_router_base_in` | `observed/audit` ou `upstream_git_unverified` selon corpus | `k_sol_dex_decoded_events_only` | Pas de double trade/candle. | | `swap audit` | `swap_event`, `swap_router_base_in` | `observed/audit` ou `upstream_git_unverified` selon corpus | `k_sol_dex_decoded_events_only` | Pas de double trade/candle. |
| `pool_create` | `create_pool`, `create_customizable_pool` | `decoded`; `create_pool` matérialisé quand prouvé | `k_sol_pool_lifecycle_events` | Création de pool = lifecycle, pas admin. | | `pool_create` | `create_pool`, `create_customizable_pool` | `decoded`; `create_pool` matérialisé quand prouvé | `k_sol_pool_lifecycle_events` | Création de pool = lifecycle, pas admin. |
@@ -105,7 +105,7 @@ Sources inventoriées : Carbon `raydium-launchpad-decoder`, Solscan Program IDL
État de départ préparé : `1` entrée programme et `26` entrées discriminées listées depuis Carbon/IDL. Toutes les entrées Launchpad sont gardées `decoded_events_only` en bootstrap, même si leur famille inférée est `swap`, `pool_create`, `fee`, `admin_config`, `launch` ou `migration`. La matérialisation métier est volontairement différée jusqu'au corpus local. État de départ préparé : `1` entrée programme et `26` entrées discriminées listées depuis Carbon/IDL. Toutes les entrées Launchpad sont gardées `decoded_events_only` en bootstrap, même si leur famille inférée est `swap`, `pool_create`, `fee`, `admin_config`, `launch` ou `migration`. La matérialisation métier est volontairement différée jusqu'au corpus local.
| Famille | Entrées Raydium Launchpad | Statut `0.7.50` bootstrap | Cible DB initiale | Justification / règle | | Famille | Entrées Raydium Launchpad | Statut `0.7.50` bootstrap | Cible DB initiale | Justification / règle |
|---|---|---|---|---| |--------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------|---------------------------------|------------------------------------------------------------------------------------------------------------------|
| `swap` | `buy_exact_in`, `buy_exact_out`, `sell_exact_in`, `sell_exact_out`, `trade_event` | `upstream_git_mapped_unverified` puis `decoded/audit-only` si observé | `k_sol_dex_decoded_events_only` | Aucun trade/candle avant preuve locale de montants, sens et absence de doublon avec la surface DEX de migration. | | `swap` | `buy_exact_in`, `buy_exact_out`, `sell_exact_in`, `sell_exact_out`, `trade_event` | `upstream_git_mapped_unverified` puis `decoded/audit-only` si observé | `k_sol_dex_decoded_events_only` | Aucun trade/candle avant preuve locale de montants, sens et absence de doublon avec la surface DEX de migration. |
| `pool_create` | `initialize`, `initialize_v2`, `initialize_with_token_2022`, `pool_create_event` | `upstream_git_mapped_unverified` | `decoded_events_only` | Lifecycle launch/pool non promu tant que le compte pool/mint/quote n'est pas validé localement. | | `pool_create` | `initialize`, `initialize_v2`, `initialize_with_token_2022`, `pool_create_event` | `upstream_git_mapped_unverified` | `decoded_events_only` | Lifecycle launch/pool non promu tant que le compte pool/mint/quote n'est pas validé localement. |
| `add_liquidity` | `-` direct confirmé | `not_applicable` | `-` | Peut apparaître via DEX de destination ou SPL side effects, pas comme instruction Launchpad directe prouvée. | | `add_liquidity` | `-` direct confirmé | `not_applicable` | `-` | Peut apparaître via DEX de destination ou SPL side effects, pas comme instruction Launchpad directe prouvée. |
@@ -179,7 +179,7 @@ Sources inventoriées : Carbon `raydium-amm-v4-decoder`, Pinax `src/raydium/amm`
Validation locale finale : tous les discriminants AMM v4 officiels `00..11` sont observés ; `instruction_audit`, fallback upstream, decoded sans coverage, observations 8 octets, non-swap trade, failed tx trade, gaps inexpliqués et multi-target materialization sont vides. Validation locale finale : tous les discriminants AMM v4 officiels `00..11` sont observés ; `instruction_audit`, fallback upstream, decoded sans coverage, observations 8 octets, non-swap trade, failed tx trade, gaps inexpliqués et multi-target materialization sont vides.
| Famille | Entrées AMM v4 | Statut `0.7.51-final` | Cible DB | Règle | | Famille | Entrées AMM v4 | Statut `0.7.51-final` | Cible DB | Règle |
|---|---|---|---|---| |--------------------------|------------------------------------------------------------------------|----------------------------------------|---------------------------------|---------------------------------------------------------------------------------------------|
| `swap` | `swap_base_in`, `swap_base_out`, `swap_base_in_v2`, `swap_base_out_v2` | observed/materialized partiel expliqué | `k_sol_trade_events` | Trade/candle seulement si tx successful + montants vault fiables ; sinon `skipTradeReason`. | | `swap` | `swap_base_in`, `swap_base_out`, `swap_base_in_v2`, `swap_base_out_v2` | observed/materialized partiel expliqué | `k_sol_trade_events` | Trade/candle seulement si tx successful + montants vault fiables ; sinon `skipTradeReason`. |
| `pool_create` | `initialize`, `initialize2_pool` | observed/materialized | `k_sol_pool_lifecycle_events` | Alimente lifecycle et catalogue seulement quand les mints/pool sont prouvés. | | `pool_create` | `initialize`, `initialize2_pool` | observed/materialized | `k_sol_pool_lifecycle_events` | Alimente lifecycle et catalogue seulement quand les mints/pool sont prouvés. |
| `pool_create` deprecated | `pre_initialize` | observed/materialized audit minimal | `k_sol_pool_lifecycle_events` | Lifecycle deprecated/partial ; ne crée pas de pair exploitable sans mints. | | `pool_create` deprecated | `pre_initialize` | observed/materialized audit minimal | `k_sol_pool_lifecycle_events` | Lifecycle deprecated/partial ; ne crée pas de pair exploitable sans mints. |
@@ -197,7 +197,7 @@ Validation locale finale : tous les discriminants AMM v4 officiels `00..11` sont
Status: **closed on local corpus**. Status: **closed on local corpus**.
| entry | discriminator | family | expected target | local event kind | status | | entry | discriminator | family | expected target | local event kind | status |
|---|---:|---|---|---|---| |-----------------------|-------------------:|--------------------|---------------------------------------------|-------------------------------------------|-------------------------------------------------------|
| `initialize` | `00` | `pool_create` | `k_sol_pool_lifecycle_events` | `raydium_stable_swap.initialize` | observed/materialized when context complete | | `initialize` | `00` | `pool_create` | `k_sol_pool_lifecycle_events` | `raydium_stable_swap.initialize` | observed/materialized when context complete |
| `init_model_data` | `01` | `model_setup` | decoded-only | `raydium_stable_swap.init_model_data` | observed decoded-only / explained | | `init_model_data` | `01` | `model_setup` | decoded-only | `raydium_stable_swap.init_model_data` | observed decoded-only / explained |
| `update_model_data` | `02` | `admin_config` | `k_sol_pool_admin_events` | `raydium_stable_swap.update_model_data` | observed/materialized | | `update_model_data` | `02` | `admin_config` | `k_sol_pool_admin_events` | `raydium_stable_swap.update_model_data` | observed/materialized |
@@ -226,7 +226,7 @@ Source locale prioritaire : `idls/pump_fun.6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5u
Replay final rapporté : `1679 replayed`, `89 trades`, `10 lifecycle`, `348 candle upserts`, catalogue `52 tokens / 50 pools / 50 pairs`. Replay final rapporté : `1679 replayed`, `89 trades`, `10 lifecycle`, `348 candle upserts`, catalogue `52 tokens / 50 pools / 50 pairs`.
| Entry / groupe | Discriminator | Family | Expected DB target | Local event kind cible | Status final | | Entry / groupe | Discriminator | Family | Expected DB target | Local event kind cible | Status final |
|---|---:|---|---|---|---| |--------------------------------------------------------------------|-------------------------------------------------------------:|----------------|-------------------------------------------|------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------|
| `create` / `create_v2` / `create_event` | `181ec828051c0777` / `d6904cec5f8b31b4` / `1b72a94ddeeb6376` | `launch` | `k_sol_launch_events` ou decoded-only | `pump_fun.create*` | couvert ; launch matérialisé quand mint/bonding/creator sont fiables | | `create` / `create_v2` / `create_event` | `181ec828051c0777` / `d6904cec5f8b31b4` / `1b72a94ddeeb6376` | `launch` | `k_sol_launch_events` ou decoded-only | `pump_fun.create*` | couvert ; launch matérialisé quand mint/bonding/creator sont fiables |
| `migrate` / `migrate_v2` / migration events | `9beae792ec9ea21e` / `bbcb121fceedfe29` / voir IDL | `migration` | `k_sol_launch_events` ou decoded-only | `pump_fun.migrate*` | couvert ; migration matérialisée quand contexte fiable | | `migrate` / `migrate_v2` / migration events | `9beae792ec9ea21e` / `bbcb121fceedfe29` / voir IDL | `migration` | `k_sol_launch_events` ou decoded-only | `pump_fun.migrate*` | couvert ; migration matérialisée quand contexte fiable |
| `buy` / `sell` | `66063d1201daebea` / `33e685a4017f83ad` | `swap` | `k_sol_trade_events` | `pump_fun.buy` / `pump_fun.sell` | matérialisés directement avec montants fiables : `17` buy, `25` sell | | `buy` / `sell` | `66063d1201daebea` / `33e685a4017f83ad` | `swap` | `k_sol_trade_events` | `pump_fun.buy` / `pump_fun.sell` | matérialisés directement avec montants fiables : `17` buy, `25` sell |
@@ -252,7 +252,7 @@ Replay final rapporté : `1679 replayed`, `89 trades`, `10 lifecycle`, `348 cand
Program id unique : `pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA`. Program id unique : `pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA`.
| Entry | Discriminator | Family | Expected DB target | Local event kind | Status | | Entry | Discriminator | Family | Expected DB target | Local event kind | Status |
|---|---:|---|---|---|---| |------------------------------------|----------------------------------------:|----------------------------|--------------------------------------------------------------------------------------------|----------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `buy` | `66063d1201daebea` | `swap` | `k_sol_trade_events` | `pump_swap.buy` | local specialized decoder ; materialize only from exact transfer/vault deltas | | `buy` | `66063d1201daebea` | `swap` | `k_sol_trade_events` | `pump_swap.buy` | local specialized decoder ; materialize only from exact transfer/vault deltas |
| `sell` | `33e685a4017f83ad` | `swap` | `k_sol_trade_events` | `pump_swap.sell` | local specialized decoder ; materialize only from exact transfer/vault deltas | | `sell` | `33e685a4017f83ad` | `swap` | `k_sol_trade_events` | `pump_swap.sell` | local specialized decoder ; materialize only from exact transfer/vault deltas |
| `buy_exact_quote_in` | `c62e1552b4d9e870` | `swap` | `k_sol_trade_events` only when exact Anchor `BuyEvent` is present ; otherwise decoded-only | `pump_swap.buy_exact_quote_in` | local specialized decoder ; `amountSource=pump_swap_anchor_buy_event` materializes trades ; `instruction_bounds_only` rows keep explicit `skipTradeReason` | | `buy_exact_quote_in` | `c62e1552b4d9e870` | `swap` | `k_sol_trade_events` only when exact Anchor `BuyEvent` is present ; otherwise decoded-only | `pump_swap.buy_exact_quote_in` | local specialized decoder ; `amountSource=pump_swap_anchor_buy_event` materializes trades ; `instruction_bounds_only` rows keep explicit `skipTradeReason` |
@@ -286,7 +286,7 @@ Program id unique : `pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA`.
## 0.7.55 — Pump Fees ## 0.7.55 — Pump Fees
| Entry group | Discriminants | Famille | Target attendu | Local event kind | Notes | | Entry group | Discriminants | Famille | Target attendu | Local event kind | Notes |
|---|---:|---|---|---|---| |-----------------------------------|----------------------------:|--------------------------|------------------------------------------------------------|---------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------|
| `get_fees` | `e7257e55cf5b3f34` | audit | decoded-only | `pump_fees.get_fees` | Calcul/preview de fees ; ne pas matérialiser comme fee payé sans transfert réalisé. | | `get_fees` | `e7257e55cf5b3f34` | audit | decoded-only | `pump_fees.get_fees` | Calcul/preview de fees ; ne pas matérialiser comme fee payé sans transfert réalisé. |
| social fee claim/create | IDL locale | reward / lifecycle | `k_sol_reward_events` ou `k_sol_pool_lifecycle_events` | `pump_fees.claim_social_fee_pda*`, `pump_fees.social_fee_pda_*` | Claim matérialisable seulement avec montant/acteur/mint fiables et transaction OK. | | social fee claim/create | IDL locale | reward / lifecycle | `k_sol_reward_events` ou `k_sol_pool_lifecycle_events` | `pump_fees.claim_social_fee_pda*`, `pump_fees.social_fee_pda_*` | Claim matérialisable seulement avec montant/acteur/mint fiables et transaction OK. |
| donation fee PDA | IDL locale | fee / lifecycle | `k_sol_fee_events` ou `k_sol_pool_lifecycle_events` | `pump_fees.*donation_fee_pda*` | Crank avec montant fiable vers fee ; création de PDA vers lifecycle. | | donation fee PDA | IDL locale | fee / lifecycle | `k_sol_fee_events` ou `k_sol_pool_lifecycle_events` | `pump_fees.*donation_fee_pda*` | Crank avec montant fiable vers fee ; création de PDA vers lifecycle. |
@@ -298,7 +298,7 @@ Program id unique : `pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA`.
Programme : `pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ`. Source locale prioritaire : `idls/pump_fees.pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ.json`. Programme : `pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ`. Source locale prioritaire : `idls/pump_fees.pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ.json`.
| Famille | Entrées | Target | Statut | Notes | | Famille | Entrées | Target | Statut | Notes |
|---|---|---|---|---| |-----------------------------------|-------------------------------------------------------------------------------------------------------|----------------------------------------|----------------------|-----------------------------------------------------------------------------------------|
| fee calculation | `get_fees` / `e7257e55cf5b3f34` | `k_sol_dex_decoded_events_only` | decoded-only validé | Calcul/preview ; ne représente pas une fee payée. | | fee calculation | `get_fees` / `e7257e55cf5b3f34` | `k_sol_dex_decoded_events_only` | decoded-only validé | Calcul/preview ; ne représente pas une fee payée. |
| reward/social fee | `claim_social_fee_pda`, `claim_social_fee_pda_v2`, `social_fee_pda_claimed` | `k_sol_reward_events` | matérialisé si tx OK | Écarts expliqués par failed tx. | | reward/social fee | `claim_social_fee_pda`, `claim_social_fee_pda_v2`, `social_fee_pda_claimed` | `k_sol_reward_events` | matérialisé si tx OK | Écarts expliqués par failed tx. |
| donation fee | `create_donation_fee_pda`, `crank_donation_fee_pda`, events associés | lifecycle / `k_sol_fee_events` | matérialisé si tx OK | Création PDA vers lifecycle ; crank vers fee. | | donation fee | `create_donation_fee_pda`, `crank_donation_fee_pda`, events associés | lifecycle / `k_sol_fee_events` | matérialisé si tx OK | Création PDA vers lifecycle ; crank vers fee. |
@@ -316,7 +316,7 @@ Invariants propres : fallback `pump_fees` vide, decoded sans coverage vide, succ
Programme : `dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN`. Source locale prioritaire : `idls/meteora_dbc.dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN.json`. Programme : `dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN`. Source locale prioritaire : `idls/meteora_dbc.dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN.json`.
| Groupe | Entrées | Famille | Cible DB | Local event kind | Décision finale | | Groupe | Entrées | Famille | Cible DB | Local event kind | Décision finale |
|---|---|---|---|---|---| |--------------------------------|---------------------------------------------------------------------------------------------------------------------------|-----------------------|-------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|
| swaps | `swap`, `swap2` | swap | `k_sol_trade_events` + candles | `meteora_dbc.swap`, `meteora_dbc.swap2` | Matérialisés seulement avec montants et mints base/quote fiables ; `swap2` validé via transferts CPI/amount inference. | | swaps | `swap`, `swap2` | swap | `k_sol_trade_events` + candles | `meteora_dbc.swap`, `meteora_dbc.swap2` | Matérialisés seulement avec montants et mints base/quote fiables ; `swap2` validé via transferts CPI/amount inference. |
| virtual pool init | `initialize_virtual_pool_with_spl_token`, `initialize_virtual_pool_with_token2022`, `EvtInitializePool` | pool_create | `k_sol_pool_lifecycle_events` + catalog si contexte complet | `meteora_dbc.initialize_virtual_pool_with_*`, `meteora_dbc.evt_initialize_pool_event` | Lifecycle/catalog prudent ; failed tx audit-only. | | virtual pool init | `initialize_virtual_pool_with_spl_token`, `initialize_virtual_pool_with_token2022`, `EvtInitializePool` | pool_create | `k_sol_pool_lifecycle_events` + catalog si contexte complet | `meteora_dbc.initialize_virtual_pool_with_*`, `meteora_dbc.evt_initialize_pool_event` | Lifecycle/catalog prudent ; failed tx audit-only. |
| migration / lockers | `migrate_meteora_damm*`, `migration_damm_v2*`, `create_locker`, `EvtCurveComplete` | migration / lifecycle | `k_sol_pool_lifecycle_events` | `meteora_dbc.migrate_*`, `meteora_dbc.migration_*`, `meteora_dbc.create_locker` | Lifecycle, pas liquidity artificielle pour LP claim/lock ; metadata-only decoded-only si contexte insuffisant. | | migration / lockers | `migrate_meteora_damm*`, `migration_damm_v2*`, `create_locker`, `EvtCurveComplete` | migration / lifecycle | `k_sol_pool_lifecycle_events` | `meteora_dbc.migrate_*`, `meteora_dbc.migration_*`, `meteora_dbc.create_locker` | Lifecycle, pas liquidity artificielle pour LP claim/lock ; metadata-only decoded-only si contexte insuffisant. |
@@ -333,7 +333,7 @@ Programme : `LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo`. Source locale : `idls
Validation finale : `460` tests, clippy OK, `769` replayed, `106` trades, `664` liquidity, `1107` lifecycle, `424` candle upserts, `8062` instruction observations. Les checks decoded sans coverage, successful non-materialized, failed tx materialized, multi-target, non-swap trade/candle, fee scalar sans leg, orphan fee legs et coverage duplicates sont vides. Validation finale : `460` tests, clippy OK, `769` replayed, `106` trades, `664` liquidity, `1107` lifecycle, `424` candle upserts, `8062` instruction observations. Les checks decoded sans coverage, successful non-materialized, failed tx materialized, multi-target, non-swap trade/candle, fee scalar sans leg, orphan fee legs et coverage duplicates sont vides.
| Famille | Entrées DLMM | Statut `0.7.57` | Cible DB | Justification / règle | | Famille | Entrées DLMM | Statut `0.7.57` | Cible DB | Justification / règle |
|---|---|---|---|---| |------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------|------------------------------------------------|---------------------------------------------------------------------------------------------------------------|
| `swap` | `swap`, `swap2`, `swap_exact_out`, `swap_exact_out2`, `swap_with_price_impact`, `swap_with_price_impact2` | `materialized` | `k_sol_trade_events` + candles | Seules ces instructions produisent trade/candle direct quand montants/mints/pool sont fiables. | | `swap` | `swap`, `swap2`, `swap_exact_out`, `swap_exact_out2`, `swap_with_price_impact`, `swap_with_price_impact2` | `materialized` | `k_sol_trade_events` + candles | Seules ces instructions produisent trade/candle direct quand montants/mints/pool sont fiables. |
| `swap_log` | `swap_event`, `swap2_evt` | `materialized` | `k_sol_pool_lifecycle_events` | Logs Anchor informatifs matérialisés sans double-count trade/candle. | | `swap_log` | `swap_event`, `swap2_evt` | `materialized` | `k_sol_pool_lifecycle_events` | Logs Anchor informatifs matérialisés sans double-count trade/candle. |
| `pool_create` | `create_pool`, `lb_pair_create_event`, `initialize_*_lb_pair*`, `initialize_permission_lb_pair` | `materialized` si observé, sinon `upstream_git_mapped_unverified` | `k_sol_pool_lifecycle_events` | Pool lifecycle ; pas de trade direct. | | `pool_create` | `create_pool`, `lb_pair_create_event`, `initialize_*_lb_pair*`, `initialize_permission_lb_pair` | `materialized` si observé, sinon `upstream_git_mapped_unverified` | `k_sol_pool_lifecycle_events` | Pool lifecycle ; pas de trade direct. |

View File

@@ -49,7 +49,7 @@ Implemented in this delta:
The local upstream registry now lists one program entry plus the following 26 discriminator entries. The local upstream registry now lists one program entry plus the following 26 discriminator entries.
| Entry kind | Entry name | Discriminator | Initial family | Initial DB target | | Entry kind | Entry name | Discriminator | Initial family | Initial DB target |
|---|---:|---:|---|---| |-------------|--------------------------------:|-------------------:|------------------------------|---------------------|
| instruction | `buy_exact_in` | `faea0d7bd59c13ec` | swap | decoded_events_only | | instruction | `buy_exact_in` | `faea0d7bd59c13ec` | swap | decoded_events_only |
| instruction | `buy_exact_out` | `18d3742869039938` | swap | decoded_events_only | | instruction | `buy_exact_out` | `18d3742869039938` | swap | decoded_events_only |
| instruction | `claim_creator_fee` | `1a618acb84ab8dfc` | fee | decoded_events_only | | instruction | `claim_creator_fee` | `1a618acb84ab8dfc` | fee | decoded_events_only |
@@ -86,7 +86,7 @@ Notes:
## Family audit matrix ## Family audit matrix
| Family | Launchpad status in `0.7.50` final | Decision | | Family | Launchpad status in `0.7.50` final | Decision |
|---|---|---| |--------------------------|---------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------|
| swap | `trade_event` materialized as trades/candles; buy/sell instructions materialized as launch breadcrumbs. | No duplicate trades from instruction breadcrumbs. | | swap | `trade_event` materialized as trades/candles; buy/sell instructions materialized as launch breadcrumbs. | No duplicate trades from instruction breadcrumbs. |
| pool_create | `initialize`, `initialize_v2`, `initialize_with_token_2022`, `pool_create_event`. | Pool lifecycle/catalogue materialized when transaction succeeded. | | pool_create | `initialize`, `initialize_v2`, `initialize_with_token_2022`, `pool_create_event`. | Pool lifecycle/catalogue materialized when transaction succeeded. |
| add_liquidity | No direct Launchpad entry confirmed. | Non-applicable unless local corpus proves direct Launchpad liquidity instruction. | | add_liquidity | No direct Launchpad entry confirmed. | Non-applicable unless local corpus proves direct Launchpad liquidity instruction. |

View File

@@ -5,7 +5,7 @@
This file records the manual Solscan account inventory added during the `0.7.50` Raydium Launchpad closure. It is a source catalogue, not a support guarantee. Entries with `solscan_program_idl` can be used as IDL candidates; entries with `no_idl` require source/corpus work before decoder promotion. This file records the manual Solscan account inventory added during the `0.7.50` Raydium Launchpad closure. It is a source catalogue, not a support guarantee. Entries with `solscan_program_idl` can be used as IDL candidates; entries with `no_idl` require source/corpus work before decoder promotion.
| Label | Account id | IDL status | Source | | Label | Account id | IDL status | Source |
|---|---|---|---| |---------------------------------------------------|------------------------------------------------|-----------------------|------------------------------------------------------------------------------------|
| `1Dex Program` | `DEXYosS6oEGvk8uCDayvwEZz4qEyDJRf9nFgYCaqPMTm` | `no_idl` | https://solscan.io/account/DEXYosS6oEGvk8uCDayvwEZz4qEyDJRf9nFgYCaqPMTm | | `1Dex Program` | `DEXYosS6oEGvk8uCDayvwEZz4qEyDJRf9nFgYCaqPMTm` | `no_idl` | https://solscan.io/account/DEXYosS6oEGvk8uCDayvwEZz4qEyDJRf9nFgYCaqPMTm |
| `AlphaQ` | `ALPHAQmeA7bjrVuccPsYPiCvsi428SNwte66Srvs4pHA` | `no_idl` | https://solscan.io/account/ALPHAQmeA7bjrVuccPsYPiCvsi428SNwte66Srvs4pHA | | `AlphaQ` | `ALPHAQmeA7bjrVuccPsYPiCvsi428SNwte66Srvs4pHA` | `no_idl` | https://solscan.io/account/ALPHAQmeA7bjrVuccPsYPiCvsi428SNwte66Srvs4pHA |
| `Aldrin AMM` | `AMM55ShdkoGRB5jVYPjWziwk8m5MpwyDgsMWHaMSQWH6` | `no_idl` | https://solscan.io/account/AMM55ShdkoGRB5jVYPjWziwk8m5MpwyDgsMWHaMSQWH6 | | `Aldrin AMM` | `AMM55ShdkoGRB5jVYPjWziwk8m5MpwyDgsMWHaMSQWH6` | `no_idl` | https://solscan.io/account/AMM55ShdkoGRB5jVYPjWziwk8m5MpwyDgsMWHaMSQWH6 |

View File

@@ -53,7 +53,7 @@ No successful Stable Swap swap remains without trade or skip reason.
## Invariants ## Invariants
| invariant | status | | invariant | status |
|---|---| |---------------------------------------------------------------|-------------------------------|
| residual local `instruction_audit` | empty | | residual local `instruction_audit` | empty |
| residual `upstream_git.instruction_match` for covered entries | empty | | residual `upstream_git.instruction_match` for covered entries | empty |
| decoded without coverage | empty | | decoded without coverage | empty |

View File

@@ -39,7 +39,7 @@ allowlisted recovery on DBC = empty by design
## Cross-base fee recovery checks ## Cross-base fee recovery checks
| Base | Result | | Base | Result |
|---|---| |---------------------|--------------------------------------------------------------------------------------------|
| `meteora_dbc` | stable, no regression, 89/96 fee parent/legs. | | `meteora_dbc` | stable, no regression, 89/96 fee parent/legs. |
| `raydium_launchpad` | allowlisted CPI recovery enriched all observed claim/collect fee parents in tested corpus. | | `raydium_launchpad` | allowlisted CPI recovery enriched all observed claim/collect fee parents in tested corpus. |
| `raydium_cpmm` | creator fee recovered; fund/protocol fee explicit no-transfer in tested corpus. | | `raydium_cpmm` | creator fee recovered; fund/protocol fee explicit no-transfer in tested corpus. |

View File

@@ -37,7 +37,7 @@ catalog = 169 tokens / 218 pools / 218 pairs
## Final SQL gates ## Final SQL gates
| Gate | Result | | Gate | Result |
|---|---:| |----------------------------------------------------------|-----------------:|
| Upstream fallback for local DLMM coverage | empty | | Upstream fallback for local DLMM coverage | empty |
| Local `instruction_audit` observed | `0` | | Local `instruction_audit` observed | `0` |
| Decoded DLMM without coverage | empty | | Decoded DLMM without coverage | empty |

View File

@@ -78,7 +78,7 @@ Décision : ne pas les corriger dans `0.7.53`. Ils seront repris dans les tranch
La file `upstream_git.instruction_match` indique les prochaines surfaces à prioriser. Au moment de la clôture : La file `upstream_git.instruction_match` indique les prochaines surfaces à prioriser. Au moment de la clôture :
| Priorité | Surface | Indice principal | Décision | | Priorité | Surface | Indice principal | Décision |
|---:|---|---|---| |---------:|----------------------------------------------|---------------------------------------------|--------------------------------------------------------------------|
| 1 | `pump_fees` | `get_fees` très fréquent | Prochaine tranche recommandée ; aucun trade/candle direct attendu. | | 1 | `pump_fees` | `get_fees` très fréquent | Prochaine tranche recommandée ; aucun trade/candle direct attendu. |
| 2 | `pump_fun` | creator fees, migrate, set/admin creator | Tranche launch/bonding séparée. | | 2 | `pump_fun` | creator fees, migrate, set/admin creator | Tranche launch/bonding séparée. |
| 3 | `jupiter_swap` | `route_v2`, `create_token_account`, `route` | Agrégateur/router ; éviter double-count DEX effectifs. | | 3 | `jupiter_swap` | `route_v2`, `create_token_account`, `route` | Agrégateur/router ; éviter double-count DEX effectifs. |
@@ -113,7 +113,7 @@ Constats :
Table locale : Table locale :
| Fichier local | Name IDL | Address IDL | Taille | SHA-256 | | Fichier local | Name IDL | Address IDL | Taille | SHA-256 |
|---|---|---|---:|---| |---------------------------------------------------------------------------|-----------------------------|------------------------------------------------|-------:|--------------------------------------------------------------------|
| `idls/raydium_clmm.CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK.json` | `raydium_clmm` | `CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK` | 86240 | `d3f265adc9e4d7b1a28641444800a60bcdeb921ef136855fe8dea4532afa18bd` | | `idls/raydium_clmm.CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK.json` | `raydium_clmm` | `CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK` | 86240 | `d3f265adc9e4d7b1a28641444800a60bcdeb921ef136855fe8dea4532afa18bd` |
| `idls/raydium_cpmm.CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C.json` | `raydium_cp_swap` | `CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C` | 32066 | `5b709dfe7b0df67c9e29655307ae877244d3bb8022056ee01c754f0e36264d9c` | | `idls/raydium_cpmm.CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C.json` | `raydium_cp_swap` | `CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C` | 32066 | `5b709dfe7b0df67c9e29655307ae877244d3bb8022056ee01c754f0e36264d9c` |
| `idls/raydium_launchlab.LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj.json` | `raydium_launchpad` | `LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj` | 68052 | `c1465a10f38912413f55f04a68536c989992add1b3d48cba86dca97212a482da` | | `idls/raydium_launchlab.LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj.json` | `raydium_launchpad` | `LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj` | 68052 | `c1465a10f38912413f55f04a68536c989992add1b3d48cba86dca97212a482da` |

View File

@@ -44,7 +44,7 @@ k_sol_fee_event_amounts
## Sources de montant acceptées ## Sources de montant acceptées
| `amount_source` | Usage | | `amount_source` | Usage |
|---|---| |----------------------------------|--------------------------------------------------------------------------------|
| `parent_fee_event_amount` | Leg généré automatiquement depuis un parent scalaire déjà fiable. | | `parent_fee_event_amount` | Leg généré automatiquement depuis un parent scalaire déjà fiable. |
| `fee_event_amounts` | Source explicite reconstruite par un matérialisateur spécialisé. | | `fee_event_amounts` | Source explicite reconstruite par un matérialisateur spécialisé. |
| `inner_spl_transfer` | CPI SPL vérifié dans un matérialisateur spécialisé. | | `inner_spl_transfer` | CPI SPL vérifié dans un matérialisateur spécialisé. |
@@ -58,7 +58,7 @@ La recovery `allowlisted_inner_spl_transfer` n'est pas une règle globale. Elle
Résultats de validation croisée en `0.7.56` : Résultats de validation croisée en `0.7.56` :
| Base / surface | Effet observé | | Base / surface | Effet observé |
|---|---| |---------------------|-----------------------------------------------------------------------------------------------------------------------------|
| `meteora_dbc` | Aucun usage de l'allowlist générique ; chemins spécialisés DBC conservés. | | `meteora_dbc` | Aucun usage de l'allowlist générique ; chemins spécialisés DBC conservés. |
| `raydium_launchpad` | `212` parents enrichis en legs : `claim_creator_fee`, `claim_platform_fee`, `claim_platform_fee_from_vault`, `collect_fee`. | | `raydium_launchpad` | `212` parents enrichis en legs : `claim_creator_fee`, `claim_platform_fee`, `claim_platform_fee_from_vault`, `collect_fee`. |
| `raydium_cpmm` | `collect_creator_fee` enrichi ; `collect_fund_fee` / `collect_protocol_fee` explicités sans transfert exploitable. | | `raydium_cpmm` | `collect_creator_fee` enrichi ; `collect_fund_fee` / `collect_protocol_fee` explicités sans transfert exploitable. |

View File

@@ -55,7 +55,7 @@ Les events Anchor sont reconnus depuis `Program data:` et depuis le transport An
### Trades ### Trades
| Source locale | Matérialisation | Règle | | Source locale | Matérialisation | Règle |
|---|---|---| |----------------------------------|----------------------|-------------------------------------------------------------------------------------------------------|
| `pump_fun.buy` | `k_sol_trade_events` | directe si montants fiables | | `pump_fun.buy` | `k_sol_trade_events` | directe si montants fiables |
| `pump_fun.sell` | `k_sol_trade_events` | directe si montants fiables | | `pump_fun.sell` | `k_sol_trade_events` | directe si montants fiables |
| `pump_fun.buy_exact_sol_in` | `k_sol_trade_events` | directe ; les logs `Program data` tronqués sont exploités quand les montants exacts sont extractibles | | `pump_fun.buy_exact_sol_in` | `k_sol_trade_events` | directe ; les logs `Program data` tronqués sont exploités quand les montants exacts sont extractibles |

View File

@@ -27,7 +27,7 @@ Les sources Git/IDL/Solscan sont des indices. La fermeture métier exige corpus
Le decoder local `kb_lib/src/dex/pump_swap.rs` ne se limite plus à `buy`/`sell`. Il reconnaît maintenant les discriminants dinstruction suivants et produit un event spécialisé `pump_swap.<entry_name>`. Le decoder local `kb_lib/src/dex/pump_swap.rs` ne se limite plus à `buy`/`sell`. Il reconnaît maintenant les discriminants dinstruction suivants et produit un event spécialisé `pump_swap.<entry_name>`.
| Entry | Kind | Discriminator | Target attendu | Matérialisation | | Entry | Kind | Discriminator | Target attendu | Matérialisation |
|---|---|---:|---|---| |------------------------------------|-------------|-------------------:|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `admin_set_coin_creator` | instruction | `f228759149606968` | admin/config | decoded specialized non-trade | | `admin_set_coin_creator` | instruction | `f228759149606968` | admin/config | decoded specialized non-trade |
| `admin_update_token_incentives` | instruction | `d10b7357d5177ccc` | reward/admin | decoded specialized non-trade | | `admin_update_token_incentives` | instruction | `d10b7357d5177ccc` | reward/admin | decoded specialized non-trade |
| `buy` | instruction | `66063d1201daebea` | trade | trade/candle seulement depuis montants exacts | | `buy` | instruction | `66063d1201daebea` | trade | trade/candle seulement depuis montants exacts |
@@ -62,7 +62,7 @@ Le decoder local `kb_lib/src/dex/pump_swap.rs` ne se limite plus à `buy`/`sell`
Ces events sont listés dans le registre upstream. Ils doivent apparaître avec un statut explicite dans la coverage DB après sync/replay. Ils ne doivent pas créer de doublons trade/candle tant que linstruction locale spécialisée couvre déjà le DEX effectif. Ces events sont listés dans le registre upstream. Ils doivent apparaître avec un statut explicite dans la coverage DB après sync/replay. Ils ne doivent pas créer de doublons trade/candle tant que linstruction locale spécialisée couvre déjà le DEX effectif.
| Event | Discriminator | Statut `0.7.53` | | Event | Discriminator | Statut `0.7.53` |
|---|---:|---| |----------------------------------------|-------------------:|---------------------------------------------------------------|
| `admin_set_coin_creator_event` | `2ddc5d181961ac68` | upstream listed ; decoded-only/status explicite après replay | | `admin_set_coin_creator_event` | `2ddc5d181961ac68` | upstream listed ; decoded-only/status explicite après replay |
| `admin_update_token_incentives_event` | `93fa6c78f71d43de` | upstream listed ; decoded-only/status explicite après replay | | `admin_update_token_incentives_event` | `93fa6c78f71d43de` | upstream listed ; decoded-only/status explicite après replay |
| `buy_event` | `67f4521f2cf57777` | upstream listed ; audit/decoded-only to avoid duplicate trade | | `buy_event` | `67f4521f2cf57777` | upstream listed ; audit/decoded-only to avoid duplicate trade |

View File

@@ -59,7 +59,7 @@ catalog = 61 tokens / 65 pools / 65 pairs
## Coverage finale par discriminant ## Coverage finale par discriminant
| Discriminant | Entrée | Famille | Local event kind | Cible DB | Observed | Materialized | Trade | | Discriminant | Entrée | Famille | Local event kind | Cible DB | Observed | Materialized | Trade |
|---|---|---|---|---|---:|---:|---:| |--------------|-------------------------|--------------------|----------------------------------------|---------------------------------|---------:|-------------:|------:|
| `00` | `initialize` | `pool_create` | `raydium_amm_v4.initialize` | `k_sol_pool_lifecycle_events` | 4 | 4 | 0 | | `00` | `initialize` | `pool_create` | `raydium_amm_v4.initialize` | `k_sol_pool_lifecycle_events` | 4 | 4 | 0 |
| `01` | `initialize2` | `pool_create` | `raydium_amm_v4.initialize2_pool` | `k_sol_pool_lifecycle_events` | 8 | 8 | 0 | | `01` | `initialize2` | `pool_create` | `raydium_amm_v4.initialize2_pool` | `k_sol_pool_lifecycle_events` | 8 | 8 | 0 |
| `02` | `monitor_step` | `order_place` | `raydium_amm_v4.monitor_step` | `k_sol_orderbook_events` | 20 | 20 | 0 | | `02` | `monitor_step` | `order_place` | `raydium_amm_v4.monitor_step` | `k_sol_orderbook_events` | 20 | 20 | 0 |
@@ -84,7 +84,7 @@ Toutes les entrées ont `proof_status=upstream_git_local_corpus_materialized`, s
## Matérialisation métier finale ## Matérialisation métier finale
| Event kind | Decoded | Trade | Liquidity | Lifecycle | Fee | Admin | Orderbook | | Event kind | Decoded | Trade | Liquidity | Lifecycle | Fee | Admin | Orderbook |
|---|---:|---:|---:|---:|---:|---:|---:| |----------------------------------------|--------:|------:|----------:|----------:|----:|------:|----------:|
| `raydium_amm_v4.admin_cancel_orders` | 22 | 0 | 0 | 0 | 0 | 0 | 22 | | `raydium_amm_v4.admin_cancel_orders` | 22 | 0 | 0 | 0 | 0 | 0 | 22 |
| `raydium_amm_v4.create_config_account` | 50 | 0 | 0 | 0 | 0 | 50 | 0 | | `raydium_amm_v4.create_config_account` | 50 | 0 | 0 | 0 | 0 | 50 | 0 |
| `raydium_amm_v4.deposit` | 10 | 0 | 5 | 0 | 0 | 0 | 0 | | `raydium_amm_v4.deposit` | 10 | 0 | 5 | 0 | 0 | 0 | 0 |

View File

@@ -70,7 +70,7 @@ settle_limit_order
Les matérialisations sont limitées aux transactions réussies et aux familles déjà supportées par le modèle DB : Les matérialisations sont limitées aux transactions réussies et aux familles déjà supportées par le modèle DB :
| Famille | Table | Règle | | Famille | Table | Règle |
|---|---|---| |-----------------------|--------------------------------|-----------------------------------------------------------------------------------------------|
| Swaps | `k_sol_trade_events` + candles | Uniquement `raydium_clmm.swap` / `raydium_clmm.swap_v2` quand les montants sont exploitables. | | Swaps | `k_sol_trade_events` + candles | Uniquement `raydium_clmm.swap` / `raydium_clmm.swap_v2` quand les montants sont exploitables. |
| Liquidity / positions | `k_sol_liquidity_events` | Positions/liquidity prouvées par corpus, sans trade/candle. | | Liquidity / positions | `k_sol_liquidity_events` | Positions/liquidity prouvées par corpus, sans trade/candle. |
| Fees | `k_sol_fee_events` | Fees prouvées par corpus, sans trade/candle. | | Fees | `k_sol_fee_events` | Fees prouvées par corpus, sans trade/candle. |

View File

@@ -45,7 +45,7 @@ The 11 event entries are listed as upstream facts and stay `upstream_git_unverif
## Instruction coverage matrix ## Instruction coverage matrix
| Entry | Discriminator | Family | Local event kind | Expected target | Status | | Entry | Discriminator | Family | Local event kind | Expected target | Status |
|---|---|---|---|---|---| |--------------------------------|--------------------|------------------|-----------------------------------------------|---------------------------------|------------------------------------------------------------------------|
| close_limit_order | `4c7c800fd55725fa` | order_cancel | `raydium_clmm.close_limit_order` | `k_sol_orderbook_events` | decoded/materializable | | close_limit_order | `4c7c800fd55725fa` | order_cancel | `raydium_clmm.close_limit_order` | `k_sol_orderbook_events` | decoded/materializable |
| open_limit_order | `9d20dab7471d1293` | order_place | `raydium_clmm.open_limit_order` | `k_sol_orderbook_events` | decoded/materializable | | open_limit_order | `9d20dab7471d1293` | order_place | `raydium_clmm.open_limit_order` | `k_sol_orderbook_events` | decoded/materializable |
| increase_limit_order | `b19059ecfaba7d63` | order_place | `raydium_clmm.increase_limit_order` | `k_sol_orderbook_events` | decoded/materializable | | increase_limit_order | `b19059ecfaba7d63` | order_place | `raydium_clmm.increase_limit_order` | `k_sol_orderbook_events` | decoded/materializable |
@@ -85,7 +85,7 @@ The 11 event entries are listed as upstream facts and stay `upstream_git_unverif
These entries remain listed, but no local corpus row has observed them as direct CLMM decoded events in the current replay corpus: These entries remain listed, but no local corpus row has observed them as direct CLMM decoded events in the current replay corpus:
| Event entry | Discriminator | Family | Expected target | Status | | Event entry | Discriminator | Family | Expected target | Status |
|---|---|---|---|---| |--------------------------------|--------------------|------------------|---------------------------------|------------------------------------------|
| collect_personal_fee_event | `a6ae69c051a15369` | fee | `k_sol_fee_events` | upstream listed, local corpus unobserved | | collect_personal_fee_event | `a6ae69c051a15369` | fee | `k_sol_fee_events` | upstream listed, local corpus unobserved |
| collect_protocol_fee_event | `ce57114f2d29d53d` | fee | `k_sol_fee_events` | upstream listed, local corpus unobserved | | collect_protocol_fee_event | `ce57114f2d29d53d` | fee | `k_sol_fee_events` | upstream listed, local corpus unobserved |
| config_change_event | `f7bd07776a705f97` | admin_config | `k_sol_pool_admin_events` | upstream listed, local corpus unobserved | | config_change_event | `f7bd07776a705f97` | admin_config | `k_sol_pool_admin_events` | upstream listed, local corpus unobserved |

View File

@@ -24,7 +24,7 @@ Règle retenue : Git/IDL/Solscan sont des indices de recherche. La preuve métie
## Entrées CPMM inventoriées ## Entrées CPMM inventoriées
| Kind | Entrée | Discriminant | État final `0.7.48` | | Kind | Entrée | Discriminant | État final `0.7.48` |
|---|---|---|---| |-------------|------------------------------|--------------------|-------------------------------------------------|
| instruction | `close_permission_pda` | `9c5420764587467b` | connu upstream, non observé localement | | instruction | `close_permission_pda` | `9c5420764587467b` | connu upstream, non observé localement |
| instruction | `collect_creator_fee` | `1416567bc61cdb84` | décodé + matérialisé fee | | instruction | `collect_creator_fee` | `1416567bc61cdb84` | décodé + matérialisé fee |
| instruction | `collect_fund_fee` | `a78a4e95dfc2067e` | décodé + matérialisé fee | | instruction | `collect_fund_fee` | `a78a4e95dfc2067e` | décodé + matérialisé fee |
@@ -61,7 +61,7 @@ Le fallback `upstream_git.instruction_match` ne doit plus apparaître pour les i
Rejeu local validé après backfills ciblés Solscan + Demo Pipeline 2 : Rejeu local validé après backfills ciblés Solscan + Demo Pipeline 2 :
| Event kind | Decoded | Table métier | Materialized | Trade count | Statut | | Event kind | Decoded | Table métier | Materialized | Trade count | Statut |
|---|---:|---|---:|---:|---| |-------------------------------------------|--------:|---------------------------------|-------------:|------------:|-----------------------------------------------------|
| `raydium_cpmm.collect_creator_fee` | 4 | `k_sol_fee_events` | 4 | 0 | fee materialized | | `raydium_cpmm.collect_creator_fee` | 4 | `k_sol_fee_events` | 4 | 0 | fee materialized |
| `raydium_cpmm.collect_fund_fee` | 7 | `k_sol_fee_events` | 7 | 0 | fee materialized | | `raydium_cpmm.collect_fund_fee` | 7 | `k_sol_fee_events` | 7 | 0 | fee materialized |
| `raydium_cpmm.collect_protocol_fee` | 15 | `k_sol_fee_events` | 15 | 0 | fee materialized | | `raydium_cpmm.collect_protocol_fee` | 15 | `k_sol_fee_events` | 15 | 0 | fee materialized |

View File

@@ -49,7 +49,7 @@ Implemented in this delta:
The local upstream registry now lists one program entry plus the following 26 discriminator entries. The local upstream registry now lists one program entry plus the following 26 discriminator entries.
| Entry kind | Entry name | Discriminator | Initial family | Initial DB target | | Entry kind | Entry name | Discriminator | Initial family | Initial DB target |
|---|---:|---:|---|---| |-------------|--------------------------------:|-------------------:|------------------------------|---------------------|
| instruction | `buy_exact_in` | `faea0d7bd59c13ec` | swap | decoded_events_only | | instruction | `buy_exact_in` | `faea0d7bd59c13ec` | swap | decoded_events_only |
| instruction | `buy_exact_out` | `18d3742869039938` | swap | decoded_events_only | | instruction | `buy_exact_out` | `18d3742869039938` | swap | decoded_events_only |
| instruction | `claim_creator_fee` | `1a618acb84ab8dfc` | fee | decoded_events_only | | instruction | `claim_creator_fee` | `1a618acb84ab8dfc` | fee | decoded_events_only |
@@ -86,7 +86,7 @@ Notes:
## Family audit matrix ## Family audit matrix
| Family | Launchpad status in `0.7.50` final | Decision | | Family | Launchpad status in `0.7.50` final | Decision |
|---|---|---| |--------------------------|---------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------|
| swap | `trade_event` materialized as trades/candles; buy/sell instructions materialized as launch breadcrumbs. | No duplicate trades from instruction breadcrumbs. | | swap | `trade_event` materialized as trades/candles; buy/sell instructions materialized as launch breadcrumbs. | No duplicate trades from instruction breadcrumbs. |
| pool_create | `initialize`, `initialize_v2`, `initialize_with_token_2022`, `pool_create_event`. | Pool lifecycle/catalogue materialized when transaction succeeded. | | pool_create | `initialize`, `initialize_v2`, `initialize_with_token_2022`, `pool_create_event`. | Pool lifecycle/catalogue materialized when transaction succeeded. |
| add_liquidity | No direct Launchpad entry confirmed. | Non-applicable unless local corpus proves direct Launchpad liquidity instruction. | | add_liquidity | No direct Launchpad entry confirmed. | Non-applicable unless local corpus proves direct Launchpad liquidity instruction. |

View File

@@ -17,7 +17,7 @@ Conséquence : `raydium_pool_v4` reste une source d'audit/comparaison pour `rayd
## Comparaison synthétique ## Comparaison synthétique
| Source | Nom / rôle constaté | Indices structurants | Décision locale | | Source | Nom / rôle constaté | Indices structurants | Décision locale |
|---|---|---|---| |-----------------------------|-----------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------|
| `idl/raydium_amm_v4.json` | `raydium_amm` | Instructions AMM v4 legacy : `initialize`, `initialize2`, `deposit`, `withdraw`, `swapBaseIn`, `swapBaseOut`, `monitorStep`, `setParams`. | Source principale pour `raydium_amm_v4`. | | `idl/raydium_amm_v4.json` | `raydium_amm` | Instructions AMM v4 legacy : `initialize`, `initialize2`, `deposit`, `withdraw`, `swapBaseIn`, `swapBaseOut`, `monitorStep`, `setParams`. | Source principale pour `raydium_amm_v4`. |
| `idls/raydium_amm_v4.json` | `raydium_amm` | Variante parallèle à comparer ligne à ligne avec `idl/`. | Source principale complémentaire. | | `idls/raydium_amm_v4.json` | `raydium_amm` | Variante parallèle à comparer ligne à ligne avec `idl/`. | Source principale complémentaire. |
| `idl/raydium_pool_v4.json` | `Raydium Liquidity Pool V4` | Entrées orientées stratégie/pool wrapper : `initializeStrategy`, comptes `strategyState`, `strategyAuthority`, `lendingProgramId`; contient aussi des noms comme `swapBaseIn`. | Audit uniquement. Ne pas promouvoir. | | `idl/raydium_pool_v4.json` | `Raydium Liquidity Pool V4` | Entrées orientées stratégie/pool wrapper : `initializeStrategy`, comptes `strategyState`, `strategyAuthority`, `lendingProgramId`; contient aussi des noms comme `swapBaseIn`. | Audit uniquement. Ne pas promouvoir. |

View File

@@ -36,7 +36,7 @@ Implemented and locally validated:
## Instruction surface ## Instruction surface
| entry | discriminator | family | final target | local event kind | final status | | entry | discriminator | family | final target | local event kind | final status |
|---|---:|---|---|---|---| |-----------------------|-------------------:|--------------------|---------------------------------------------|-------------------------------------------|---------------------------------------------------------------|
| `initialize` | `00` | `pool_create` | `k_sol_pool_lifecycle_events` | `raydium_stable_swap.initialize` | observed/materialized when context complete | | `initialize` | `00` | `pool_create` | `k_sol_pool_lifecycle_events` | `raydium_stable_swap.initialize` | observed/materialized when context complete |
| `init_model_data` | `01` | `model_setup` | decoded-only | `raydium_stable_swap.init_model_data` | observed decoded-only / explained | | `init_model_data` | `01` | `model_setup` | decoded-only | `raydium_stable_swap.init_model_data` | observed decoded-only / explained |
| `update_model_data` | `02` | `admin_config` | `k_sol_pool_admin_events` | `raydium_stable_swap.update_model_data` | observed/materialized | | `update_model_data` | `02` | `admin_config` | `k_sol_pool_admin_events` | `raydium_stable_swap.update_model_data` | observed/materialized |
@@ -128,7 +128,7 @@ catalog=40 tokens / 59 pools / 59 pairs
Stable Swap swap closure: Stable Swap swap closure:
| event kind | amount source | tx status | decoded | trades | | event kind | amount source | tx status | decoded | trades |
|---|---|---|---:|---:| |-------------------------------------|---------------------------------------|-----------|--------:|-------:|
| `raydium_stable_swap.swap_base_in` | `stable_swap_instruction_bounds_only` | failed | 27 | 0 | | `raydium_stable_swap.swap_base_in` | `stable_swap_instruction_bounds_only` | failed | 27 | 0 |
| `raydium_stable_swap.swap_base_in` | `stable_swap_vault_balance_delta` | success | 171 | 171 | | `raydium_stable_swap.swap_base_in` | `stable_swap_vault_balance_delta` | success | 171 | 171 |
| `raydium_stable_swap.swap_base_out` | `stable_swap_instruction_bounds_only` | failed | 2 | 0 | | `raydium_stable_swap.swap_base_out` | `stable_swap_instruction_bounds_only` | failed | 2 | 0 |

View File

@@ -0,0 +1,22 @@
<!-- file: olddocs/archivekbot3/001.README.md -->
<!-- version: 1 -->
# Archive documentaire de khadhroony-bot3
Ce répertoire conserve les documents bot3 remplacés, temporaires ou liés à une phase historique terminée.
## Statut
Les documents archivés :
- ne sont plus normatifs ;
- ne doivent pas être utilisés seuls pour décrire létat actuel du workspace ;
- restent disponibles pour la traçabilité des décisions et de la migration ;
- conservent autant que possible leur nom et leur contenu dorigine.
## Arborescence
- `docs/` : audits, plans et rapports bot3 remplacés ;
- `prompts/` : prompts utilisés pendant la migration architecturale.
La documentation active reste sous `docs/`. Le point dentrée normatif reste `RULES.md`.