v0.2.10-pre.002
This commit is contained in:
287
deltas/0.2.10/pre.002.md
Normal file
287
deltas/0.2.10/pre.002.md
Normal file
@@ -0,0 +1,287 @@
|
||||
<!-- file: deltas/0.2.10/pre.002.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.2.10-pre.002` — OrbitFlare Devnet Config + characterization smoke
|
||||
|
||||
## 1. Base et version
|
||||
|
||||
Base de travail :
|
||||
|
||||
```text
|
||||
0.2.10-pre.001
|
||||
```
|
||||
|
||||
Validation opérateur fournie sur cette base le 2026-08-25 :
|
||||
|
||||
```text
|
||||
cargo fmt --all PASS
|
||||
python3 scripts/audit_rust_workspace_rules.py PASS
|
||||
python3 scripts/audit_markdown_tables.py PASS / 97 tables / 233 files
|
||||
cargo check --workspace PASS
|
||||
cargo clippy --workspace --all-targets PASS
|
||||
cargo test --workspace PASS
|
||||
cargo tree -p ksp-onchain-transport-lib fourni
|
||||
cargo tree -p ksp-onchain-transport-lib --duplicates fourni
|
||||
```
|
||||
|
||||
Le graphe confirme notamment :
|
||||
|
||||
```text
|
||||
yellowstone-grpc-proto 12.6.0
|
||||
tonic 0.14.6
|
||||
tonic-prost 0.14.6
|
||||
prost 0.14.4
|
||||
tokio 1.53.1
|
||||
```
|
||||
|
||||
Cette livraison passe à :
|
||||
|
||||
```text
|
||||
workspace.package.version = 0.2.10-pre.2
|
||||
commit attendu = v0.2.10-pre.002
|
||||
aucun tag prerelease
|
||||
```
|
||||
|
||||
## 2. Invariant architectural
|
||||
|
||||
Aucun moteur physique n'est modifié :
|
||||
|
||||
```text
|
||||
src/grpc_settings.rs inchangé
|
||||
src/grpc_channel.rs inchangé
|
||||
src/grpc_unary.rs inchangé
|
||||
src/grpc_subscribe.rs inchangé
|
||||
src/grpc_stream.rs inchangé
|
||||
```
|
||||
|
||||
Le standard Yellowstone N2 reste également inchangé.
|
||||
|
||||
OrbitFlare est matérialisé uniquement par :
|
||||
|
||||
```text
|
||||
Config provider profile
|
||||
provider-neutral Yellowstone smoke
|
||||
provider validation/documentation
|
||||
```
|
||||
|
||||
Aucun SDK OrbitFlare, second client Tonic, proto provider, heartbeat moteur ou metadata secrète n'est ajouté.
|
||||
|
||||
## 3. Profil Config V3 `orbitflare_devnet`
|
||||
|
||||
`config/std.transport.json` ajoute un profil dédié :
|
||||
|
||||
```text
|
||||
profile_id = orbitflare_devnet
|
||||
```
|
||||
|
||||
Il conserve les companions standards déjà utilisés sur Devnet :
|
||||
|
||||
```text
|
||||
HTTP = https://api.devnet.solana.com
|
||||
WS = wss://api.devnet.solana.com
|
||||
```
|
||||
|
||||
et ajoute exactement un endpoint Yellowstone :
|
||||
|
||||
```text
|
||||
name = orbitflare_solana_devnet_yellowstone
|
||||
provider = orbitflare
|
||||
cluster = devnet
|
||||
protocol = solana_yellowstone
|
||||
url = http://devnet.rpc.orbitflare.com:10000
|
||||
metadata = []
|
||||
secret_metadata = []
|
||||
```
|
||||
|
||||
Le format reste V3. `.env.example` n'est pas modifié et aucune API key de compte OrbitFlare n'est reclassifiée comme credential gRPC.
|
||||
|
||||
`ksp-config-lib` ajoute un test déterministe qui prouve :
|
||||
|
||||
```text
|
||||
sélection explicite orbitflare_devnet
|
||||
companions HTTP/WS Devnet préservés
|
||||
provider/cluster/protocol gRPC corrects
|
||||
URL plaintext conservée telle quelle
|
||||
aucune metadata inventée
|
||||
Debug gRPC sans URL provider
|
||||
absence de X-ORBIT-KEY dans Transport settings
|
||||
```
|
||||
|
||||
## 4. Smoke OrbitFlare Devnet
|
||||
|
||||
Nouveau test opt-in :
|
||||
|
||||
```text
|
||||
crates/ksp-onchain-transport-lib/tests/yellowstone_orbitflare_smoke.rs
|
||||
```
|
||||
|
||||
Le test utilise directement les API publiques Yellowstone existantes de Transport, sans dépendre de Config :
|
||||
|
||||
```text
|
||||
endpoint Devnet OrbitFlare sans metadata
|
||||
reconnect max_retries = 0
|
||||
Subscribe slots
|
||||
commitment = confirmed
|
||||
fenêtre de caractérisation = 45 s
|
||||
preuve Slot non nul
|
||||
preuve SubscribeUpdate::Ping serveur
|
||||
close borné
|
||||
```
|
||||
|
||||
Le `Ping` reçu reste traité par le moteur N1 déjà livré en `0.2.9`, qui répond automatiquement sur le même stream. Le test n'ajoute aucune policy heartbeat.
|
||||
|
||||
Commande live :
|
||||
|
||||
```bash
|
||||
cargo test -p ksp-onchain-transport-lib --test yellowstone_orbitflare_smoke -- --ignored --nocapture
|
||||
```
|
||||
|
||||
Interprétation :
|
||||
|
||||
```text
|
||||
Slot + Ping PASS
|
||||
OrbitFlare reste standard ; aucune façade/policy provider heartbeat requise
|
||||
|
||||
connection/auth failure
|
||||
classifier le service/licence réel avant toute metadata
|
||||
|
||||
Slot PASS mais Ping absent
|
||||
qualifier une divergence heartbeat provider avant toute implémentation spécifique
|
||||
```
|
||||
|
||||
## 5. Audit Markdown étendu
|
||||
|
||||
`scripts/audit_markdown_tables.py` passe en version 2 et contrôle désormais aussi l'équivalent structurel de :
|
||||
|
||||
```text
|
||||
\n\s*\n\s*\n
|
||||
```
|
||||
|
||||
c'est-à-dire au moins deux lignes vides consécutives hors fenced code block.
|
||||
|
||||
Le contrôle :
|
||||
|
||||
```text
|
||||
considère une ligne whitespace-only comme vide
|
||||
signale fichier + première ligne + longueur de la séquence
|
||||
n'interprète pas les blancs internes aux ``` / ~~~ fenced blocks
|
||||
ignore les répertoires générés ou tiers en parcours récursif
|
||||
```
|
||||
|
||||
Répertoires récursifs exclus :
|
||||
|
||||
```text
|
||||
.git
|
||||
.idea
|
||||
.venv
|
||||
__pycache__
|
||||
dist
|
||||
node_modules
|
||||
target
|
||||
```
|
||||
|
||||
Cette exclusion rend le résultat déterministe entre une archive Gitea propre et un checkout développeur contenant des `node_modules`. Le nombre de fichiers audités peut donc diminuer par rapport à l'ancien script sans signifier une perte de couverture KSP-owned.
|
||||
|
||||
Une seule séquence de deux lignes vides existait dans le scope KSP actif de l'archive : elle est supprimée dans `crates/ksp-onchain-transport-lib/README.md`.
|
||||
|
||||
`docs/rules/RULES_DOCUMENTATION.md` formalise `DOC-BLANK-001` à `DOC-BLANK-003`, y compris l'immuabilité des anciens deltas publiés.
|
||||
|
||||
## 6. Documents de plan/validation
|
||||
|
||||
Le plan 017 et la validation 013 passent en version 2 pour enregistrer :
|
||||
|
||||
```text
|
||||
pre.001 operator gate fermé
|
||||
profil orbitflare_devnet matérialisé
|
||||
smoke de caractérisation matérialisé
|
||||
N1/N2 inchangés
|
||||
live Devnet encore PENDING
|
||||
```
|
||||
|
||||
Aucun README/USAGE OrbitFlare durable n'est finalisé ici ; cette responsabilité reste réservée au couloir documentaire final.
|
||||
|
||||
## 7. Validation disponible dans l'environnement de génération
|
||||
|
||||
Exécuté sans Cargo :
|
||||
|
||||
```text
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
General Rust rule audit: clean
|
||||
Rust export completeness audit: 0 candidate(s)
|
||||
KSP workspace Rust rule audit: clean
|
||||
|
||||
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.2.10
|
||||
clean / 98 tables / 98 KSP-owned files
|
||||
|
||||
config/std.transport.json
|
||||
JSON parse PASS
|
||||
JSON Schema validation PASS
|
||||
```
|
||||
|
||||
Le nouvel audit Markdown a aussi été caractérisé avec des fixtures temporaires :
|
||||
|
||||
```text
|
||||
deux lignes vides hors fence FAIL attendu
|
||||
plusieurs lignes vides dans fence PASS attendu
|
||||
node_modules récursif ignoré attendu
|
||||
```
|
||||
|
||||
Aucune commande Cargo n'est déclarée exécutée dans l'environnement de génération.
|
||||
|
||||
## 8. Gates opérateur `pre.002`
|
||||
|
||||
Exécuter :
|
||||
|
||||
```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
|
||||
cargo tree -p ksp-onchain-transport-lib
|
||||
cargo tree -p ksp-onchain-transport-lib --duplicates
|
||||
```
|
||||
|
||||
Puis le live dédié :
|
||||
|
||||
```bash
|
||||
cargo test -p ksp-onchain-transport-lib --test yellowstone_orbitflare_smoke -- --ignored --nocapture
|
||||
```
|
||||
|
||||
`pre.002` ne ferme son gate provider que lorsque le résultat live est classifié. Un échec d'auth ou l'absence de `Ping` ne doit jamais être corrigé par modification du moteur N1.
|
||||
|
||||
## 9. Fichiers ajoutés/modifiés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
config/std.transport.json
|
||||
crates/ksp-config-lib/unit_tests/transport.rs
|
||||
crates/ksp-onchain-transport-lib/README.md
|
||||
crates/ksp-onchain-transport-lib/tests/yellowstone_orbitflare_smoke.rs
|
||||
docs/plans/017-V0_2_10_ORBITFLARE_YELLOWSTONE_GRPC_PLAN.md
|
||||
docs/rules/RULES_DOCUMENTATION.md
|
||||
docs/validation/013-V0_2_10_ORBITFLARE_YELLOWSTONE_GRPC.md
|
||||
scripts/audit_markdown_tables.py
|
||||
deltas/0.2.10/pre.002.md
|
||||
```
|
||||
|
||||
## 10. Suite conditionnelle
|
||||
|
||||
Si le live retourne `Slot + Ping PASS` :
|
||||
|
||||
```text
|
||||
pre.003 = gate technique/live final
|
||||
```
|
||||
|
||||
Si une divergence provider réelle est démontrée :
|
||||
|
||||
```text
|
||||
pre.003 = tranche provider-specific minimale au-dessus de N1/N2
|
||||
pre.004 = gate technique/live final
|
||||
```
|
||||
|
||||
Le couloir documentaire final puis la prerelease de publication restent distincts dans les deux cas.
|
||||
Reference in New Issue
Block a user