253 lines
8.2 KiB
Markdown
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é.
|