v0.2.10-pre.003
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
# file: Cargo.toml
|
||||
# version: 264
|
||||
# version: 265
|
||||
|
||||
[workspace]
|
||||
resolver = "3"
|
||||
members = ["crates/ksp-app-config-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-wallet-lib"]
|
||||
|
||||
[workspace.package]
|
||||
version = "0.2.10-pre.2.fix.1"
|
||||
version = "0.2.10-pre.3"
|
||||
edition = "2024"
|
||||
license = "MIT"
|
||||
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
||||
|
||||
252
deltas/0.2.10/pre.003.md
Normal file
252
deltas/0.2.10/pre.003.md
Normal file
@@ -0,0 +1,252 @@
|
||||
<!-- 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é.
|
||||
Reference in New Issue
Block a user