Files
khadhroony-solana-project/deltas/0.2.10/pre.003.md
2026-08-25 15:18:28 +02:00

253 lines
8.2 KiB
Markdown

<!-- file: deltas/0.2.10/pre.003.md -->
<!-- version: 1 -->
# 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é.