114 lines
5.4 KiB
Markdown
114 lines
5.4 KiB
Markdown
<!-- file: docs/NATIVE_SOLANA_CLOSURE_AUDIT.md -->
|
||
<!-- version: 5 -->
|
||
|
||
# Audit de clôture Solana natif `0.4.1`
|
||
|
||
## Objet
|
||
|
||
Ce document fixe l’état final du jalon `0.4.1` : couverture native, preuves synthétiques, corpus mainnet observés et limites assumées.
|
||
|
||
L’absence de transaction mainnet n’autorise ni à supprimer une surface officielle, ni à prétendre qu’elle a été observée. Elle impose une validation synthétique documentée et une tentative de découverte bornée lorsque la surface est officiellement déclarée.
|
||
|
||
## Surfaces couvertes
|
||
|
||
`kb_decoder_solana_core` couvre 18 surfaces exécutables natives ou assimilées :
|
||
|
||
1. System Program ;
|
||
2. Vote Program ;
|
||
3. Stake Program ;
|
||
4. Config Program ;
|
||
5. Compute Budget Program ;
|
||
6. Address Lookup Table Program ;
|
||
7. ZK ElGamal Proof Program ;
|
||
8. Feature Program ;
|
||
9. ancien ZK Token Proof Program ;
|
||
10. Native Loader ;
|
||
11. BPF Loader v1 ;
|
||
12. BPF Loader v2 ;
|
||
13. BPF Loader Upgradeable ;
|
||
14. Loader v4 ;
|
||
15. Ed25519 precompile ;
|
||
16. secp256k1 precompile ;
|
||
17. secp256r1 precompile ;
|
||
18. Slashing Program.
|
||
|
||
`StakeConfig11111111111111111111111111111111` est volontairement classé comme compte natif historique non exécutable.
|
||
|
||
## Divergence Slashing corrigée
|
||
|
||
Agave `v4.1.1` déclare le programme stateless Slashing sous :
|
||
|
||
```text
|
||
S1ashing11111111111111111111111111111111111
|
||
```
|
||
|
||
La surface a été ajoutée dans `pre.018` : deux instructions exactes, dispatch sans fallback, couverture déclarée et projection de rapport. Aucun corpus public observable n’a été trouvé ; la validation repose donc sur les sources officielles et les fixtures synthétiques.
|
||
|
||
## Invariants automatiques
|
||
|
||
Les tests garantissent que :
|
||
|
||
- chaque entrée de `kb_program_ids::native_program_ids()` possède exactement une surface de décodeur ;
|
||
- chaque surface possède au moins une déclaration de couverture ;
|
||
- aucune déclaration n’utilise le fallback `unclassified_native_instruction` ;
|
||
- chaque déclaration référence une surface réellement déclarée ;
|
||
- les identités programme/surface/entrée sont uniques ;
|
||
- le Slashing Program est dispatché vers son parseur exact ;
|
||
- ZK Token Proof historique passe par le fallback actuel no-op sans prétendre vérifier une preuve.
|
||
|
||
## Corpus et replays validés
|
||
|
||
| Programme | Résultat de clôture |
|
||
|---------------------------|------------------------------------------------------------------------------|
|
||
| System | 817 inputs décodés, 258 sorties, 52 refus attendus sur transactions échouées |
|
||
| Config | 96 inputs décodés, 96 sorties admin |
|
||
| Stake | 448 inputs décodés, 447 sorties, 1 refus attendu |
|
||
| Vote | 600 inputs décodés, 600 sorties |
|
||
| Compute Budget | 2 746 inputs décodés, 1 603 profils transactionnels |
|
||
| Address Lookup Table | 104 inputs décodés, 104 sorties lifecycle |
|
||
| ZK ElGamal | 151 inputs décodés, 139 sorties de contexte |
|
||
| Slashing | zéro corpus public observable, validation synthétique |
|
||
| Feature | zéro corpus observable dans les campagnes adressées, validation synthétique |
|
||
| Loaders rares | zéro corpus observable pour certaines générations, validation synthétique |
|
||
| ZK Token Proof historique | zéro corpus public observable, runtime actuel no-op, validation synthétique |
|
||
|
||
Les campagnes de clôture rapportées ont `unmatched = 0`, `failedInputs = 0`, `unsupported = 0` et ne produisent pas d’erreurs opérationnelles dans les journaux fournis.
|
||
|
||
## Backfills
|
||
|
||
Aucun backfill supplémentaire n’est requis pour clôturer `0.4.1`.
|
||
|
||
Le mode `program_latest` ajouté dans `pre.019` reste disponible pour de futures recherches sans signature d’ancrage. Il ne doit pas être utilisé pour inventer un corpus absent sur des surfaces feature-gated ou historiquement rares.
|
||
|
||
## Matérialisations
|
||
|
||
La clôture instructionnelle est documentée dans `docs/NATIVE_SOLANA_MATERIALIZATION_AUDIT.md`.
|
||
|
||
Aucune projection native stable immédiatement dérivable du graphe core actuel n’est identifiée comme manquante. Les snapshots finaux de comptes et métriques runtime restent différés.
|
||
|
||
## Validations finales
|
||
|
||
Validations utilisateur finales rapportées pour la clôture :
|
||
|
||
```text
|
||
kb_program_ids 5 tests
|
||
kb_decoder_solana_core 114 tests
|
||
kb_materializer_lifecycle 16 tests
|
||
kb_materializer_admin 7 tests
|
||
kb_materializer_compliance_audit 7 tests
|
||
kb_materializer_staking 8 tests
|
||
kb_config 36 tests
|
||
kb_pipeline 45 tests
|
||
kb_store_pg 45 tests avec PostgreSQL réel
|
||
kb_app_demo 78 tests
|
||
cargo clippy --all-targets propre
|
||
```
|
||
|
||
Le démarrage Tauri validé après `pre.021-fix.001` confirme les 53 routes de logging et l’initialisation PostgreSQL. `pre.022` ne modifie pas la configuration Tauri.
|
||
|
||
## Décision
|
||
|
||
`0.4.1` est clôturée.
|
||
|
||
La prochaine session doit utiliser `prompts/022_v0_4_2_executor_solana_core.md` et démarrer `0.4.2` sur l’infrastructure d’exécution et `kb_executor_solana_core`.
|