# Delta `0.2.9-pre.013-fix.001` — smoke PublicNode streaming + Testnet ## 1. Base ```text livraison : 0.2.9-pre.013 Cargo : 0.2.9-pre.13 ``` Le gate déterministe opérateur de `pre.013` est vert jusqu'au smoke live : ```text cargo fmt --all PASS Rust workspace audit clean / 0 export candidate Markdown table audit clean, 87 tableaux / 254 fichiers cargo check --workspace PASS cargo clippy --workspace --all-targets PASS sans warning Transport unit 383/383 Transport public API 49/49 Transport release completeness 43/43 Transport doctests 4/4 workspace dependency canary 3/3 ``` Le smoke initial atteint le service PublicNode Mainnet mais `GetVersion` retourne `PERMISSION_DENIED`. ## 2. Correction du diagnostic Cette réponse ne suffit pas à conclure qu'un `x-token` PublicNode est requis. La surface Yellowstone upstream permet à un opérateur de désactiver les méthodes unary indépendamment du streaming `Subscribe`. PublicNode expose son service comme gateway Yellowstone gRPC public et aucune procédure d'authentification n'est retenue comme contrat KSP tant qu'elle n'est pas établie par une source provider suffisamment forte. Conséquence : ```text aucun x-token inventé aucun secret PublicNode ajouté à Config aucune variable d'environnement d'authentification ajoutée smoke recentré sur Subscribe, fonctionnalité centrale de 0.2.9 ``` ## 3. Endpoint Testnet acquis L'opérateur a confirmé le host/port Yellowstone gRPC Testnet : ```text solana-testnet-yellowstone-grpc.publicnode.com:443 ``` KSP utilise l'URI TLS : ```text https://solana-testnet-yellowstone-grpc.publicnode.com:443 ``` ## 4. Config V3 `config/std.transport.json` conserve le profil Mainnet PublicNode sans metadata d'authentification et ajoute : ```text profile_id = publicnode_testnet provider = publicnode cluster = testnet protocol = solana_yellowstone url = https://solana-testnet-yellowstone-grpc.publicnode.com:443 metadata = none ``` Comme pour le profil Mainnet, les axes HTTP/WS du profil restent des transports Solana standards distincts du provider gRPC. Le canari Config existant couvre désormais les deux profils PublicNode et impose explicitement : ```text metadata gRPC vide provider/cluster/URL exacts validation Transport verte Debug sans URL endpoint ``` ## 5. Smoke Transport pur Le smoke opt-in ne teste plus les méthodes unary provider-dépendantes `GetVersion` / `GetSlot`. Il ouvre maintenant la surface standard réellement visée par la release : ```text TLS Subscribe bidirectionnel filtre slots standard réception d'un YellowstoneSubscribeUpdate::Slot slot > 0 close borné ``` Deux cas live sont présents : ```text PublicNode Mainnet Yellowstone Subscribe sans metadata d'authentification PublicNode Testnet Yellowstone Subscribe sans metadata d'authentification ``` Le test reste dans `ksp-onchain-transport-lib`, construit ses settings programmatiquement et ne dépend ni de Config ni d'un secret opérateur. ## 6. Signal de version Le correctif modifie une config runtime et un test Rust : ```text workspace.package.version = 0.2.9-pre.13.fix.1 commit attendu = v0.2.9-pre.013-fix.001 ``` ## 7. Gate opérateur ### 7.1 Déterministe ```bash cargo fmt --all 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/0.2.9 cargo check --workspace cargo clippy --workspace --all-targets cargo test -p ksp-config-lib cargo test -p ksp-onchain-transport-lib cargo test -p ksp-core-lib --test workspace_dependencies ``` Attendus minima : ```text Config unit 113 Config public API 15 Config ownership 5 Transport unit 383 Transport public API 49 Transport release completeness 43 Transport doctests 4 workspace dependencies 3 ``` ### 7.2 Smoke live ```bash cargo test -p ksp-onchain-transport-lib --test yellowstone_publicnode_smoke -- --ignored --nocapture ``` Attendu : ```text 2 passed 0 failed 0 ignored ``` Aucun token ou secret ne doit être nécessaire pour ce smoke. Si `Subscribe` retourne à son tour `PERMISSION_DENIED`, l'hypothèse d'une authentification provider redevient ouverte et doit alors être établie avant tout nouveau correctif Config. ### 7.3 Graphes et workspace ```bash cargo tree -p ksp-onchain-transport-lib cargo tree -p ksp-onchain-transport-lib --duplicates cargo tree --duplicates cargo test --workspace ``` ## 8. Frontières Ce fix reste strictement dans le couloir technique/live de `pre.013` : ```text aucun README/USAGE modifié aucun plan/validation modifié aucun CHANGELOG/ROADMAP modifié aucun prompt modifié aucun provider-specific engine ajouté aucun secret committé ``` La prochaine tranche reste `0.2.9-pre.014` de réconciliation documentaire, uniquement après fermeture verte de ce fix.