# Delta `0.2.10-pre.003` — gate technique/live final OrbitFlare Yellowstone ## 1. Base requise Base directe attendue : ```text livraison : 0.2.10-pre.002-fix.001 Cargo : 0.2.10-pre.2.fix.1 commit : v0.2.10-pre.002-fix.001 ``` Identité de cette tranche : ```text livraison : 0.2.10-pre.003 Cargo : 0.2.10-pre.3 commit : v0.2.10-pre.003 aucun tag prerelease ``` Cette prerelease est exclusivement le couloir **technique/live final** de `0.2.10`. Elle ne porte aucune réconciliation README/USAGE/plan/validation, aucune finalisation CHANGELOG/ROADMAP et aucun prompt `0.2.11`. ## 2. Gate acquis de `pre.002-fix.001` La validation opérateur reçue le 2026-08-25 ferme le défaut d'auth classifié dans `pre.002`. Le gate déterministe est intégralement vert : ```text cargo fmt --all PASS python3 scripts/audit_rust_workspace_rules.py clean / 0 export candidate / clean python3 scripts/audit_markdown_tables.py PASS, 99 tables / 99 files cargo check --workspace PASS cargo clippy --workspace --all-targets PASS cargo test --workspace PASS Config unit 114/114 PASS Config ownership 5/5 PASS Config public API 15/15 PASS Transport unit 383/383 PASS Transport public API 49/49 PASS Transport release completeness 43/43 PASS Transport doctests 4/4 PASS workspace dependency canary 3/3 PASS ``` Le smoke OrbitFlare Devnet authentifié est également vert : ```text endpoint http://devnet.rpc.orbitflare.com:10000 auth License Key ORBIT-* -> secret metadata x-token Subscribe PASS Slot > 0 PASS server Ping PASS close borné PASS résultat 1 passed / 0 failed ``` Cette preuve ferme la branche de divergence heartbeat : OrbitFlare émet le `SubscribeUpdate::Ping` Yellowstone standard et le moteur N1 `0.2.9` possède déjà la réponse automatique déterministe. Aucun heartbeat provider, aucune façade OrbitFlare et aucune modification N1/N2 ne sont nécessaires. ## 3. Responsabilité de `pre.003` `pre.003` ne matérialise aucun nouveau comportement. Elle rejoue et ferme les preuves techniques finales après le fix d'auth : ```text version Cargo prerelease synchronisée workspace complet sans warning invariants Rust/Markdown Config V3 OrbitFlare x-token non régressée Yellowstone N1/N2 non régressés HTTP 52 current + 14 historical non régressés WebSocket standard et Helius non régressés smoke live OrbitFlare Devnet final smokes PublicNode Mainnet/Testnet finaux si credentials opérateur disponibles graphes Cargo Transport et doublons inspectés aucun SDK OrbitFlare runtime aucune dépendance Transport -> Config ``` Le payload de `pre.003` ne change ni code runtime, ni test, ni Config, ni schema, ni dépendance. Le seul changement technique est le signal de version Cargo obligatoire pour une prerelease non-fix. ## 4. Invariants à fermer Les fichiers moteur Yellowstone restent hors modification : ```text crates/ksp-onchain-transport-lib/src/grpc_settings.rs crates/ksp-onchain-transport-lib/src/grpc_channel.rs crates/ksp-onchain-transport-lib/src/grpc_unary.rs crates/ksp-onchain-transport-lib/src/grpc_subscribe.rs crates/ksp-onchain-transport-lib/src/grpc_stream.rs ``` Le gate doit confirmer : ```text N1 gRPC provider-neutral inchangé N2 Yellowstone standard inchangé OrbitFlare composé par endpoint + provider + cluster + x-token Config V3 X-ORBIT-KEY absent du data-plane Yellowstone License Key jamais exposée par Debug/CLI pas de format Config V4 pas de provider proto pas de second raw Tonic client pas de orbitflare-sdk runtime ``` ## 5. Gate déterministe final Après application de `pre.003` : ```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.10 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 cargo test --workspace ``` Seuils minimaux attendus : ```text Config unit 114 Config ownership 5 Config public API 15 Transport unit 383 Transport public API 49 Transport release completeness 43 Transport doctests 4 workspace dependency canary 3 ``` Toute régression imputable à KSP ouvre `pre.003-fix.NNN`. Elle ne doit pas être repoussée dans le couloir documentaire `pre.004`. ## 6. Smoke OrbitFlare Devnet final Saisir la License Key sans l'inscrire dans l'historique : ```bash read -rsp 'OrbitFlare License Key: ' ORBITFLARE_LICENSE_KEY; echo printf '%s\n' "$ORBITFLARE_LICENSE_KEY" \ | cargo test -p ksp-onchain-transport-lib --test yellowstone_orbitflare_smoke -- --ignored --nocapture unset ORBITFLARE_LICENSE_KEY ``` Attendu : ```text orbitflare_devnet_yellowstone_streams_slots_and_emits_standard_server_ping_with_license_x_token ... ok 1 passed 0 failed 0 ignored ``` Le smoke doit encore prouver dans une même session bornée : ```text auth x-token acceptée Subscribe standard ouvert Slot non nul reçu SubscribeUpdate::Ping standard observé fermeture bornée ``` Un incident externe OrbitFlare/réseau démontré comme tel est documenté comme `EXTERNAL BLOCK`. Un échec de mapping, metadata, moteur, protocol ou fermeture imputable à KSP ouvre un fix technique. ## 7. PublicNode et graphes finaux Les smokes PublicNode Mainnet/Testnet restent les canaris provider du standard livré par `0.2.9`. Si les deux credentials opérateur sont disponibles pendant ce gate, les rejouer : ```bash read -rsp 'PublicNode Mainnet Yellowstone x-token: ' PUBLICNODE_MAINNET_TOKEN; echo read -rsp 'PublicNode Testnet Yellowstone x-token: ' PUBLICNODE_TESTNET_TOKEN; echo printf '%s\n%s\n' "$PUBLICNODE_MAINNET_TOKEN" "$PUBLICNODE_TESTNET_TOKEN" \ | cargo test -p ksp-onchain-transport-lib --test yellowstone_publicnode_smoke -- --ignored --nocapture unset PUBLICNODE_MAINNET_TOKEN PUBLICNODE_TESTNET_TOKEN ``` Attendu lorsque rejoué : ```text 2 passed 0 failed 0 ignored ``` Inspecter ensuite : ```bash cargo tree -p ksp-onchain-transport-lib cargo tree -p ksp-onchain-transport-lib --duplicates cargo tree --duplicates ``` Points obligatoires : ```text yellowstone-grpc-proto 12.6.x sur la stack attendue Tonic/Prost KSP-owned sans seconde génération incompatible aucun yellowstone-grpc-client runtime aucun orbitflare-sdk runtime aucune dépendance ksp-onchain-transport-lib -> ksp-config-lib aucun tracing direct Transport aucun nouveau doublon introduit par 0.2.10 ``` Les smokes PublicNode ne deviennent pas un blocker si leurs credentials ne sont simplement pas disponibles au moment du gate : leur non-régression déterministe reste couverte par les suites Transport/Config et le code live n'a pas changé. En revanche, tout échec effectivement observé lors d'un rerun doit être classifié, jamais ignoré. ## 8. Critère de fermeture technique `pre.003` est fermée lorsque : ```text gate déterministe final vert OrbitFlare Devnet Subscribe -> Slot + Ping live PASS graphes Cargo finaux inspectés N1 inchangé N2 inchangé Config V3 x-token cohérente et redacted aucun provider overlay nécessaire aucun heartbeat provider nécessaire aucun SDK OrbitFlare ajouté aucun défaut technique reporté vers pre.004 ``` Une fois ce gate acquis, la prochaine tranche est obligatoirement : ```text 0.2.10-pre.004 — réconciliation documentaire finale ``` Elle portera plan, validation, README/USAGE et références durables. Elle ne doit pas porter de nouveau correctif technique. ## 9. Modifications de cette livraison ```text Cargo.toml # version: 264 -> 265 workspace.package.version: 0.2.10-pre.2.fix.1 -> 0.2.10-pre.3 deltas/0.2.10/pre.003.md ajout du présent gate technique/live final ``` Aucun autre fichier n'est modifié.