# Delta `0.2.9-pre.002-fix.002` — canari public API sous runtime Tokio ## 1. Déclencheur Le second gate opérateur, après `pre.002-fix.001`, confirme : ```text cargo fmt --all PASS audit_rust_workspace_rules.py PASS / clean cargo check --workspace PASS cargo clippy --workspace --all-targets PASS cargo test -p ksp-onchain-transport-lib unit PASS 346/346 public_api FAIL 41/42 dependency canary Core PASS 3/3 ``` Le seul échec restant est le canari : ```text public_v0_2_9_pre_002_yellowstone_engine_settings_and_lazy_channel_are_available_from_crate_root ``` Il appelle `YellowstoneGrpcChannel::prepare()` depuis un `#[test]` synchrone. Depuis `fix.001`, `prepare()` exige volontairement un runtime Tokio actif avant `tonic::transport::Endpoint::connect_lazy()` ; le canari public API n'avait pas encore été aligné sur cette précondition KSP explicite. ## 2. Correction Le test d'intégration devient : ```text #[tokio::test(flavor = "current_thread")] async fn public_v0_2_9_pre_002_... ``` Aucun code N1 de production n'est modifié. En particulier : ```text YellowstoneGrpcChannel::prepare() inchangé _channel de production conservé aucun cfg(test) ajouté au channel aucune dépendance/feature Cargo ajoutée aucun TLS/metadata/unary anticipé ``` ## 3. Version Le correctif touche le code de test et fait partie du signal technique de la prerelease : ```text workspace.package.version = 0.2.9-pre.2.fix.2 commit attendu = v0.2.9-pre.002-fix.002 ``` ## 4. Validation requise ```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 ``` Les graphes Cargo n'ont pas changé avec `fix.002`; ils ne nécessitent pas une nouvelle inspection structurelle, mais peuvent être relancés si l'opérateur veut conserver une preuve complète du gate final `pre.002`.