# Delta `0.2.9-pre.005` — Yellowstone standard Accounts + Slots ## Base et signal de version Base autoritaire : ```text 0.2.9-pre.4.fix.1 ``` Signal technique de cette tranche : ```text workspace.package.version = 0.2.9-pre.5 commit attendu = v0.2.9-pre.005 aucun tag prerelease ``` Le gate opérateur de `pre.004-fix.001` est vert sans les warnings `dead_code` précédents ; `pre.004` est donc fermée. ## Périmètre réalisé Cette tranche complète **uniquement Accounts + Slots** du contrat Yellowstone `Subscribe` standard actuel. Accounts request : ```text account[] owner[] filters[] : memcmp bytes/base58/base64 datasize token_account_state lamports eq/ne/lt/gt nonempty_txn_signature? cuckoo_accounts_filter? ``` Slots request : ```text filter_by_commitment? interslot_updates? ``` Updates KSP : ```text Account : filters/created_at + account info + slot + is_startup Slot : filters/created_at + slot + parent? + status + dead_error? ``` Les sept statuts Slot actuels sont couverts : processed, confirmed, finalized, first-shred-received, completed, created-bank et dead. ## Cuckoo standard Le Cuckoo account filter est traité comme capacité du standard Yellowstone courant, pas comme extension provider. KSP expose son propre DTO avec données, dimensions, fingerprint bits, seed et algorithme ; l'algorithme courant matérialisé est SipHash. Aucun type upstream n'est réexporté. ## Validation et sécurité Bornes KSP provider-neutral ajoutées sur : ```text account/owner selectors account predicates memcmp binary/text Cuckoo payload/dimensions/fingerprint account-data update update filter names/count timestamp nanos transaction signature fixe 64 octets dead_error ``` Les pubkeys/owners de wire doivent faire exactement 32 octets et les signatures 64 octets. Un enum Slot inconnu, un oneof ou champ obligatoire absent et les payloads hors bornes deviennent des erreurs KSP déterministes ; aucun payload provider arbitraire n'est recopié dans les diagnostics. Les Debug KSP n'exposent pas les sélecteurs, données memcmp/Cuckoo/account-data ni le texte `dead_error`. ## Frontière runtime Le stream bidi reste hors tranche. Les conversions protobuf request et les décodeurs Account/Slot restent donc compilés seulement pour les tests jusqu'à `pre.008`, où ils acquerront leur premier consommateur runtime. Cela évite les warnings `dead_code` sans dupliquer l'implémentation. ## Explicitement hors `pre.005` ```text Transactions + transaction_status Blocks + block_meta + entry Ping/Pong lifecycle et mutation bidi backpressure/shutdown stream reconnect/resubscribe/replay Config V3 PublicNode provider integration SubscribeDeshred ``` ## Dépendances Aucune dépendance ni feature Cargo n'est ajoutée ou modifiée. Les graphes inspectés en `pre.003` restent applicables. ## Validation attendue ```bash cargo fmt --all python3 scripts/audit_rust_workspace_rules.py cargo check --workspace cargo clippy --workspace --all-targets cargo test -p ksp-onchain-transport-lib cargo test -p ksp-core-lib --test workspace_dependencies cargo test --workspace ``` Aucun `cargo tree` supplémentaire n'est requis pour cette tranche si le manifest reste inchangé. ## Suite ```text pre.006 Transactions + transaction_status pre.007 Blocks + block_meta + entry pre.008 stream bidi + mutation + Ping/Pong + half-close + backpressure + shutdown ```