Files
khadhroony-solana-project/deltas/0.2.9/pre.013-fix.001.md

183 lines
5.0 KiB
Markdown

<!-- file: deltas/0.2.9/pre.013-fix.001.md -->
<!-- version: 1 -->
# 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.