v0.2.9-pre.012-fix.001

This commit is contained in:
2026-08-24 20:56:04 +02:00
parent 813a45385a
commit 5b30bb9948
5 changed files with 260 additions and 139 deletions

View File

@@ -1,9 +1,9 @@
<!-- file: docs/validation/012-V0_2_9_YELLOWSTONE_GRPC.md -->
<!-- version: 25 -->
<!-- version: 26 -->
# Validation `0.2.9` — Yellowstone gRPC standard + PublicNode
**Statut courant : `pre.011` est fermée par gate opérateur complet sans warning. `pre.012` est la candidate de fermeture technique : réaudit upstream, smoke PublicNode Mainnet opt-in, graphes Cargo finaux, documentation, audit des tableaux Markdown et prompt `0.2.10 — OrbitFlare Yellowstone gRPC`. Les logs historiques détaillés restent dans `deltas/0.2.9/`.**
**Statut courant : le gate déterministe de `pre.012` est vert sans warning ; le smoke PublicNode live et les graphes Cargo finaux ne figurent pas comme exécutés dans le log opérateur fourni. `pre.012-fix.001` ajoute la règle durable de séparation de fermeture et déplace les gates restants vers `pre.013` technique/live, `pre.014` réconciliation documentaire et `pre.015` publication minimale.**
## 1. Autorités et baseline courante
@@ -348,75 +348,111 @@ Les détails de commandes, warnings corrigés et fichiers exacts restent dans le
Cette table remplace les anciens appendices numérotés successivement `19.x`, `20`, `21`, etc. qui rendaient le document ambigu.
## 12. Gate opérateur `pre.012`
## 12. Verdict opérateur `pre.012`
### 12.1 Preuves source déjà matérialisées
### 12.1 Gate déterministe reçu
| Exigence | État candidate |
|----------------------------------------------|----------------------|
| réaudit `master` Yellowstone | **PASS SOURCE** |
| service `Geyser` et wire N2 inchangés | **PASS SOURCE** |
| licence proto Apache-2.0 toujours déclarée | **PASS SOURCE** |
| PublicNode Mainnet endpoint officiel | **PASS SOURCE** |
| PublicNode Testnet hostname exact | **EXTERNAL BLOCK** |
| smoke Mainnet programmatique sans credential | **ADDED, NOT RUN** |
| README/USAGE Yellowstone + Config V3 | **SOURCE OK** |
| règles tableaux Markdown | **ADDED** |
| audit mécanique tableaux | **ADDED** |
| prompt `0.2.10` OrbitFlare | **ADDED** |
| graphes Cargo finaux | **PENDING OPERATOR** |
| workspace final | **PENDING OPERATOR** |
| Exigence | Résultat opérateur |
|----------------------------------------------|--------------------------------------|
| `cargo fmt --all` | **PASS** |
| audit Rust workspace | **PASS, 0 candidate export** |
| audit Markdown | **PASS, 87 tableaux / 252 fichiers** |
| `cargo check --workspace` | **PASS** |
| `cargo clippy --workspace --all-targets` | **PASS sans warning** |
| Config unit | **113/113 PASS** |
| Config public API | **15/15 PASS** |
| Config ownership | **5/5 PASS** |
| Transport unit | **383/383 PASS** |
| Transport public API | **49/49 PASS** |
| Transport release completeness | **43/43 PASS** |
| Transport doctests | **4/4 PASS** |
| workspace dependencies | **3/3 PASS** |
| `cargo test --workspace` | **PASS** |
| smoke Mainnet programmatique sans credential | **NOT RUN, ignored** |
| graphes Cargo finaux | **NOT PROVIDED / NOT RUN** |
Le réaudit `master` distingue explicitement le plugin courant du dernier tag GitHub indexé : `master` déclare `yellowstone-grpc-geyser 15.1.2`, `yellowstone-grpc-client 13.3.0`, `yellowstone-grpc-proto 12.6.0` et Agave `4.2.0`, alors que la page des releases indexée expose encore `v14.2.2+solana.4.1.0` comme dernière release publiée. Aucun numéro n'est fusionné artificiellement.
Le test `yellowstone_publicnode_smoke` compile et apparaît correctement comme `ignored` dans les tests Transport et workspace, mais cela ne constitue pas une exécution live. Aucune preuve de `cargo tree` final n'est présente dans le log fourni.
### 12.2 Commandes requises
### 12.2 Effet de `pre.012-fix.001`
Le fix ne change ni runtime, ni schema, ni Config, ni smoke. Il corrige le workflow de fermeture afin que les responsabilités restantes ne soient plus mélangées :
```text
pre.013 technique/live : smoke PublicNode + graphes Cargo finaux
pre.014 réconciliation documentaire : plan/validation/README/USAGE/références
pre.015 publication minimale : prompt suivant + CHANGELOG + ROADMAP
rel.001 mécanique stable uniquement
```
Le contenu prompt/README/USAGE déjà préparé en `pre.012` n'est pas supprimé rétroactivement. Le prompt reste un brouillon jusqu'à `pre.015` ; README/USAGE seront réconciliés définitivement en `pre.014`.
## 13. Gate `pre.013` — technique/live
Commandes minimales :
```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
cargo test --workspace
cargo tree -p ksp-onchain-transport-lib
cargo tree -p ksp-onchain-transport-lib --duplicates
cargo tree --duplicates
```
Smoke live séparé :
```bash
cargo test -p ksp-onchain-transport-lib --test yellowstone_publicnode_smoke -- --ignored --nocapture
```
Une commande non exécutée n'est jamais déclarée réussie. Le smoke peut révéler un incident externe ; ce résultat doit être consigné sans transformer un échec réseau/provider en défaut local fictif.
## 13. Compliance finale et verdict stable
### 13.1 Inventaires à préserver
Verdicts attendus :
```text
HTTP current typed 52/52
HTTP historical 14/14 Deprecated/Removed
Standard WebSocket 9 familles / 18 opérations
Helius LaserStream WebSocket 7 familles standard + transaction + slotsUpdates
Yellowstone unary 7/7
Yellowstone Subscribe standard N2 + 9 updates
Config Transport V1/V2/V3 backward-readable
smoke Mainnet réellement exécuté
GetVersion + GetSlot via TLS sans credential ou incident externe précisément classifié
graphes Cargo inspectés
aucun changement README/USAGE/prompt/CHANGELOG/ROADMAP
```
### 13.2 Documentation et règles
Un défaut local découvert dans ce gate reste dans `pre.013-fix.NNN`. Un incident externe n'est jamais maquillé en PASS local.
Le format des tableaux Markdown devient normatif dans `RULES_DOCUMENTATION.md` : aucun pipe littéral ou échappé dans une cellule, colonnes alignées sur le contenu le plus large, une seule marge d'espace autour du contenu maximal, et séparateurs dimensionnés exactement. Le canari `scripts/audit_markdown_tables.py` vérifie mécaniquement les fichiers Markdown modifiés hors blocs de code.
## 14. Gate `pre.014` — réconciliation documentaire
Le nettoyage `pre.012` a également normalisé les neuf documents modifiables qui présentaient encore des écarts connus. Le scan de préparation sur les documents KSP, crates et deltas `0.2.9` est vert sur 87 tableaux dans 116 fichiers. Les seuls écarts trouvés par un scan de tout le repository appartiennent à d'anciens deltas `0.1.4` immuables ; ils ne sont pas réécrits uniquement pour du formatage.
Cette tranche ferme les documents durables après le gate technique réel :
### 13.3 Verdict stable
```text
plan 016
validation 012
README/USAGE Transport
documents de référence 0.2.9 réellement concernés
audit Markdown des documents touchés
```
`0.2.9` peut devenir stable lorsque le gate opérateur `pre.012` confirme tous les points locaux suivants :
Elle n'introduit aucun nouveau runtime/smoke et ne finalise pas `CHANGELOG.md`, `ROADMAP.md` ni le prompt suivant.
Le verdict de la validation 012 devient définitif dans cette tranche, sur la base exclusive des preuves réellement exécutées en `pre.013` et des gates antérieurs.
## 15. Gate `pre.015` — préparation de publication
Payload fonctionnel autorisé :
```text
prompts/015-V0_2_10_START_PROMPT.md
CHANGELOG.md
ROADMAP.md
```
Seuls les fichiers mécaniques de version et de traçabilité (`Cargo.toml`, delta `pre.015`) peuvent s'ajouter à ce payload. Aucun README, USAGE, plan, validation, règle, code, test, schema ou config ne doit être corrigé dans `pre.015`.
Si un tel défaut est découvert, une nouvelle prerelease dédiée est ouverte puis la préparation de publication est rejouée sous un nouveau numéro.
## 16. Verdict stable attendu avant `rel.001`
`0.2.9` peut passer à `rel.001` seulement après la séquence suivante :
```text
pre.013 technique/live fermé
pre.014 réconciliation documentaire fermée
pre.015 prompt/CHANGELOG/ROADMAP fermé
```
Et si tous les invariants suivants sont vrais :
```text
standard vs extension explicitement classifié
@@ -427,14 +463,13 @@ resource/backpressure/lifecycle verts
reconnect/replay sans promesse lossless
Config V3 backward V1/V2
provider/protocol distincts
PublicNode Mainnet smoke exécuté avec résultat consigné
PublicNode Mainnet live exécuté avec résultat consigné
Testnet jamais inventé
HTTP/WS/Helius non régressés
dependency firewall vert
cargo graphs inspectés
README/USAGE finaux
prompt 0.2.10 prêt
README/USAGE réconciliés avant la dernière pre
validation 012 fermée avant la dernière pre
prompt/CHANGELOG/ROADMAP seuls dans la dernière pre
workspace final vert
```
Le bloc Testnet n'est pas un faux FAIL local : l'existence du service est confirmée, mais l'endpoint exact reste indisponible dans la source officielle consultée. Il est donc fermé comme limite externe documentée, sans profil ni smoke inventé.