# Delta 0.3.12-pre.001 — audit Yellowstone, hydration HTTP et continuité Worker ## Base ```text archive : khadhroony-solana-project-v0.3.11.zip SHA-256 : a6bb59935650a7f48630d12ef80fbd1a44a84819dd129b085ff7f467369535fc ZIP bytes : 8125100 ZIP entries : 1950 unzip -t : PASS workspace members : 21 workspace.package.version base : 0.3.11 stable delta : deltas/0.3.11/rel.001.md ``` Le ZIP a une racine unique et a été contrôlé sans entrée absolue, path traversal, symlink, `.git/`, `target/`, `node_modules/`, `Cargo.lock` ou `.env`. Préconditions du prompt `031` confirmées : ```text Worker RawTransaction présent et documenté aucune source réseau productive Worker stable Common RAW présente Transport Yellowstone générique présent Store facade présente Backfill indépendant du Worker ``` ## Type de livraison ```text ksp-general-0.3.12-pre.001.zip ``` Le type `general` est requis par le bump `Cargo.toml` de toute prerelease non-fix (`VER-ID-009`). L'archive d'échange contient uniquement les fichiers ajoutés/modifiés par cette tranche et son delta. ## Baseline exécutée avant modification ```text python3 scripts/audit_rust_workspace_rules.py General Rust rule audit: clean Rust export completeness audit: 0 candidate(s) KSP workspace Rust rule audit: clean python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas Markdown table audit: clean (340 table(s), 798 file(s)) ``` ## Objectif Exécuter le gate `pre.001` de `prompts/031-V0_3_12_START_PROMPT.md` : audit complet de la stable et des règles, inventaire Worker/Transport/Common RAW/Store/Config, fraîcheur Yellowstone/Solana/providers/crates, matrice des signaux, architecture d'injection, hydration/provenance, continuité/frontier, threat model, smokes, graphe Cargo et sizing, sans implémentation réseau productive. ## Audit des règles Aucune contradiction normative active n'a été trouvée dans les règles courantes. Aucun fichier de règles n'est modifié. Contraintes fermées : ```text Worker/Job séparés Config seul propriétaire des endpoints/secrets/composition Store facade seulement pas de public enqueue pas de second moteur Yellowstone nouvelle prerelease => Cargo 0.3.12-pre.1 tranches <= 15–20 minutes ``` ## Décisions fermées ### Edge et injection ```text seul nouvel edge autorisé : Worker -> ksp-onchain-transport-lib Worker -> Config reste interdit Worker -> Backfill reste interdit caller supérieur construit channel/request Yellowstone + pool/role HTTP RawTransactionIngestYellowstoneSource + RawTransactionIngestRuntimeResources retenus start stable source-neutral conservé start_with_runtime_resources(settings, Arc, resources) retenu ``` ### Matrice Yellowstone ```text Transaction -> candidat hydration TransactionStatus -> candidat hydration Block transactions-> candidats hydration BlockMeta -> continuity/health seulement Slot -> continuity/health seulement from_slot -> reconnect/replay Transport, pas checkpoint historique ReplayInfo -> borne de rétention seulement ``` ### RAW/hydration ```text RAW-direct Yellowstone non prouvé et interdit en P0 get_transaction_observed = hydration P0 Base64 + confirmed/finalized + maxSupportedTransactionVersion=0 processed exclu du chemin hydraté P0 get_block_observed non requis au P0 ``` ### Provenance Le modèle Store existant est conservé sans migration. La route multi-hop est représentée par des codes sûrs composites `yellowstone_http` contenant les identités logiques Yellowstone et le winner HTTP, toutes bornées par `RawProvenanceCode`. Aucune URL/token/header n'est conservé. ### Continuité ```text Transport high-watermark != Worker processing frontier processing frontier != blockchain completeness reconnect != replay != repair replay attempt != preuve de couverture continuity gap prouvé par ReplayInfo => fault sûr aucun Backfill/repair automatique en 0.3.12 frontier run-local, non persistante ``` ## Fraîcheur externe du 8 septembre 2026 ```text yellowstone-grpc-proto latest = 12.7.0 (2026-08-29) workspace = ^12.7 => aucun bump requis Solana getTransaction fournit blockTime/meta/slot/transaction/version Solana getBlock reste disponible mais non requis au P0 OrbitFlare documente Devnet gRPC et free Devnet-only Helius LaserStream documente Yellowstone compatibility et replay provider-specific ~216k slots/~24h ``` Le changelog Yellowstone du 22 juillet 2026 corrige un défaut `from_slot` + `blocks` pouvant reprendre au live head sans rejouer les Blocks. KSP ne considérera donc jamais l'acceptation de `from_slot` comme une preuve de continuité. ## Smokes Smokes Transport existants : ```text OrbitFlare Devnet : opt-in, token opérateur PublicNode Mainnet/Testnet : opt-in, tokens opérateur ``` Aucun secret live n'est fourni dans l'archive. Aucun smoke Worker n'est exécuté en `pre.001` et aucun faux PASS live n'est déclaré. ## Graphe Cargo cible Après `pre.002` : ```text ksp-worker-raw-transaction-ingest-lib -> ksp-core-lib -> ksp-logging-lib -> ksp-onchain-transport-lib -> ksp-raw-transaction-lib -> ksp-store-lib default-features=false -> ksp-worker-api -> sha2 -> tokio macros,rt,sync,time ``` Pas d'edge Worker direct vers Config, Backfill, Store backend, Tonic, Reqwest, Yellowstone proto ou SDK provider. ## Sizing recalibré ```text pre.002 Transport resource/source contract pre.003 Transaction + TransactionStatus adapters pre.004 HTTP hydration + provenance pre.005 Block + BlockMeta + Slot pre.006 source task + supervisor/coalescence pre.007 processing frontier pre.008 reconnect/from_slot/ReplayInfo pre.009 race/retry/backpressure hardening pre.010 cross-layer completeness/security pre.011 technical/live gate pre.012 documentation reconciliation pre.013 publication preparation rel.001 ``` Décision : maintenir `0.3.12`. Le split frontier/replay évite une tranche de continuité trop large ; toute tranche dépassant réellement 15–20 minutes sera encore scindée avant exécution. ## Fichiers ajoutés ```text docs/plans/033-V0_3_12_YELLOWSTONE_HYDRATION_CONTINUITY_PLAN.md docs/validation/029-V0_3_12_YELLOWSTONE_HYDRATION_CONTINUITY.md deltas/0.3.12/pre.001.md ``` ## Fichiers modifiés ```text Cargo.toml ``` Versions : ```text Cargo.toml : 518 -> 519 workspace.package.version : 0.3.11 -> 0.3.12-pre.1 ``` Le bump Cargo est requis par `VER-ID-009` pour une prerelease non-fix, même si la tranche ne modifie aucun Rust. ## Fichiers supprimés ```text aucun ``` ## Validation après modification Audits statiques réellement exécutés sur le delta complet : ```text python3 scripts/audit_rust_workspace_rules.py General Rust rule audit: clean Rust export completeness audit: 0 candidate(s) KSP workspace Rust rule audit: clean python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas Markdown table audit: clean (340 table(s), 801 file(s)) ``` Résultat : PASS. ## Validations non exécutées localement `cargo` n'est pas installé dans l'environnement d'assemblage. Ne sont donc pas déclarés PASS localement : ```text cargo fmt --all -- --check cargo check --workspace cargo clippy --workspace --all-targets --all-features -- -D warnings cargo test --workspace --all-targets --all-features cargo tree --duplicates ``` Le journal opérateur fourni avec la stable montre un gate Cargo complet vert sur `0.3.11`; cette preuve reste distincte du delta `0.3.12-pre.001`. ## Gate opérateur demandé Après application : ```bash cargo fmt --all -- --check python3 scripts/audit_rust_workspace_rules.py python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas cargo check --workspace cargo clippy --workspace --all-targets --all-features -- -D warnings cargo test -p ksp-worker-raw-transaction-ingest-lib cargo tree -p ksp-worker-raw-transaction-ingest-lib --edges normal cargo tree -p ksp-worker-raw-transaction-ingest-lib -e features ``` ## Questions reportées ```text RAW-direct Yellowstone après preuve byte-exact retry Worker borné spécifique au null getTransaction multi-source redundancy/failover hot listener reconfiguration complète repair automatique 0.3.14 checkpoint durable inter-process provider-specific capabilities permanentes ```