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/plans/016-V0_2_9_YELLOWSTONE_GRPC_PLAN.md -->
<!-- version: 23 -->
<!-- version: 24 -->
# Plan `0.2.9` — moteur Yellowstone gRPC + standard Solana + PublicNode
**Statut courant : `0.2.9-pre.011` est fermée par gate opérateur complet sans warning. `0.2.9-pre.012` est la tranche active de fermeture technique : réaudit upstream final, smoke PublicNode Mainnet opt-in, compliance finale, graphes Cargo, README/USAGE, règles de tableaux Markdown et prompt autonome `0.2.10 — OrbitFlare Yellowstone gRPC`. Les journaux détaillés restent dans `deltas/0.2.9/`; ce plan conserve létat courant et les décisions.**
**Statut courant : `0.2.9-pre.012` a passé son gate déterministe local sans warning ; le smoke PublicNode live et les graphes Cargo finaux n'ont pas été exécutés dans le log opérateur fourni. `pre.012-fix.001` introduit une règle durable de séparation des dernières prereleases et recalibre la fermeture : `pre.013` technique/live, `pre.014` réconciliation documentaire, `pre.015` préparation de publication minimale, puis `rel.001`.**
## 1. Objet et autorité de la release
@@ -604,25 +604,32 @@ Aucun secret provider n'est versionné.
Les preuves détaillées restent dans les fichiers `deltas/0.2.9/*.md`. Le plan ne duplique plus leurs journaux complets.
| Tranche | Objet | État consolidé |
|-------------------|----------------------------------------------------------|----------------------|
| `pre.001` + fixes | audit upstream, licence, providers, architecture, sizing | **CLOSED** |
| `pre.002` + fixes | dépendances, settings/errors, channel minimal | **CLOSED** |
| `pre.003` + fix | TLS, metadata, fixture locale, 7 unary | **CLOSED** |
| `pre.004` + fix | Subscribe foundation/common | **CLOSED** |
| `pre.005` + fix | Accounts + Slots | **CLOSED** |
| `pre.006` | namespace privé HTTP explicite | **CLOSED** |
| `pre.007` | Transactions + transaction_status | **CLOSED** |
| `pre.008` + fix | Blocks + block_meta + entry | **CLOSED** |
| `pre.009` + fix | bidi, Ping/Pong, backpressure, half-close, shutdown | **CLOSED** |
| `pre.010` + fix | reconnect, from_slot, ReplayInfo, gaps/duplicates | **CLOSED** |
| `pre.011` | Config V3 + protocol/provider + PublicNode Mainnet | **CLOSED** |
| `pre.012` | live/compliance/docs/graph/prompt suivant | **ACTIVE CANDIDATE** |
| Tranche | Objet | État consolidé |
|-------------------|----------------------------------------------------------|----------------------------|
| `pre.001` + fixes | audit upstream, licence, providers, architecture, sizing | **CLOSED** |
| `pre.002` + fixes | dépendances, settings/errors, channel minimal | **CLOSED** |
| `pre.003` + fix | TLS, metadata, fixture locale, 7 unary | **CLOSED** |
| `pre.004` + fix | Subscribe foundation/common | **CLOSED** |
| `pre.005` + fix | Accounts + Slots | **CLOSED** |
| `pre.006` | namespace privé HTTP explicite | **CLOSED** |
| `pre.007` | Transactions + transaction_status | **CLOSED** |
| `pre.008` + fix | Blocks + block_meta + entry | **CLOSED** |
| `pre.009` + fix | bidi, Ping/Pong, backpressure, half-close, shutdown | **CLOSED** |
| `pre.010` + fix | reconnect, from_slot, ReplayInfo, gaps/duplicates | **CLOSED** |
| `pre.011` | Config V3 + protocol/provider + PublicNode Mainnet | **CLOSED** |
| `pre.012` | réaudit + smoke ajouté + docs préparatoires | **LOCAL GATE PASS** |
| `pre.012-fix.001` | règles de séparation de fermeture + recalibrage | **ACTIVE DOCUMENTARY FIX** |
| `pre.013` | gate technique/live PublicNode + graphes finaux | **PLANNED** |
| `pre.014` | réconciliation documentaire finale | **PLANNED** |
| `pre.015` | prompt + CHANGELOG + ROADMAP | **PLANNED** |
Gate opérateur de fermeture `pre.011` :
Gate opérateur déterministe de `pre.012` reçu le 2026-08-24 :
```text
fmt/audit/check/clippy PASS sans warning
fmt/audit Rust PASS sans warning
Markdown tables PASS, 87 tableaux / 252 fichiers
cargo check PASS
cargo clippy PASS sans warning
Config unit 113/113
Config public API 15/15
Config ownership 5/5
@@ -632,35 +639,71 @@ Transport completeness 43/43
Transport doctests 4/4
workspace dependencies 3/3
cargo test --workspace PASS
PublicNode live smoke NOT RUN, test ignored
cargo tree final NOT PROVIDED / NOT RUN in supplied log
```
## 13. Forecast restant
`pre.012` reste historiquement une tranche mixte créée avant l'adoption de la nouvelle règle. Son fix ne réécrit pas cette histoire : le prompt `0.2.10` déjà présent est désormais considéré comme un brouillon à finaliser seulement en `pre.015`, et les README/USAGE préparés seront réconciliés en `pre.014`.
### `pre.012` — fermeture technique et live
## 13. Forecast restant recalibré
Cible active :
### `pre.013` — gate technique/live final
Payload autorisé :
```text
workspace.package.version = 0.2.9-pre.12
réaudit upstream final
réaudit PublicNode Testnet sans endpoint inventé
smoke PublicNode Mainnet opt-in, programmatique et sans credential
compliance HTTP 52 current + 14 historical
compliance Standard WS 18/18
Helius WebSocket non régressé
cargo tree direct + duplicates final
README/USAGE Transport synchronisés
règles Markdown sur les tableaux reformulées et auditées mécaniquement
validation 012 fermée si les gates opérateur sont verts
prompt 0.2.10 OrbitFlare autonome
workspace final vert
workspace.package.version = 0.2.9-pre.13
exécution du smoke PublicNode Mainnet déjà versionné
cargo tree Transport direct
cargo tree Transport --duplicates
cargo tree --duplicates
constat factuel de tout incident réseau/provider/TLS
aucune réconciliation README/USAGE
aucune finalisation prompt/CHANGELOG/ROADMAP
```
La candidate ajoute un smoke live **ignoré par défaut** ; elle ne modifie pas le runtime Yellowstone déjà fermé. Le smoke Mainnet utilise uniquement la façade provider-neutral KSP, `GetVersion` et `GetSlot`, avec TLS et sans metadata d'authentification.
Commande live centrale :
Le Testnet reste `EXTERNAL BLOCK / NOT GUESSED` tant que PublicNode n'expose pas l'endpoint exact dans une source autoritative.
```bash
cargo test -p ksp-onchain-transport-lib --test yellowstone_publicnode_smoke -- --ignored --nocapture
```
Si le gate opérateur révèle une anomalie réelle, un `pre.012-fix.001` est créé. Si la fermeture nécessite une nouvelle frontière fonctionnelle plutôt qu'un fix, une `pre.013+` est ouverte ; le numéro n'est pas une deadline.
Un échec local du smoke est corrigé dans `pre.013-fix.NNN`. Un incident externe est documenté comme tel. Un fix de `pre.013` ne contient pas de correction documentaire de clôture.
### `pre.014` — réconciliation documentaire finale
Payload :
```text
workspace.package.version = 0.2.9-pre.14
plan 016 réconcilié avec le gate technique/live réel
validation 012 fermée avec uniquement des preuves exécutées
README/USAGE Transport relus et corrigés
références durables liées à 0.2.9 réconciliées si nécessaire
audit Markdown final des documents touchés
aucune modification fonctionnelle/runtime
aucune finalisation CHANGELOG/ROADMAP/prompt suivant
```
Si une correction de code ou de smoke apparaît ici, `pre.014` ne l'absorbe pas : une nouvelle tranche technique est ouverte, puis la réconciliation documentaire est rejouée.
### `pre.015` — préparation de publication minimale
Payload fonctionnel strict :
```text
workspace.package.version = 0.2.9-pre.15
prompt 0.2.10 OrbitFlare finalisé
CHANGELOG.md synchronisé pour 0.2.9
ROADMAP.md état global 0.2.9 / suite synchronisé
delta pre.015
```
Aucun README, USAGE, plan, validation, règle, code, test, schema ou config n'est modifié dans cette tranche. Si l'un de ces fichiers nécessite encore une correction, la tranche de publication est décalée après une nouvelle prerelease dédiée.
### `rel.001` — publication stable
`rel.001` ne sert qu'à la mécanique de publication stable : version Cargo finale `0.2.9`, delta de release, commit final et tag `v0.2.9` après gate. Aucun rattrapage technique ou documentaire n'y est mélangé.
## 14. Critères de split
@@ -670,7 +713,8 @@ Scinder avant dette silencieuse si :
2. PublicNode exige une divergence provider-specific significative ;
3. le replay nécessite un sous-système de fork/equivocation plus large que la foundation ;
4. une tranche dépasse nettement le budget nominal sans frontière claire ;
5. le gate final montre une dette dépendance/licence ou une non-régression qui ne peut pas être corrigée proprement dans la tranche.
5. le gate technique/live montre une dette dépendance/licence ou une non-régression qui ne peut pas être corrigée proprement dans son couloir ;
6. une correction appartenant à un couloir déjà franchi est découverte pendant un couloir ultérieur.
Le noyau à préserver reste :
@@ -678,37 +722,29 @@ Le noyau à préserver reste :
moteur Yellowstone + façade Solana standard + Config provider-neutral + première intégration PublicNode minimale
```
## 15. Gates opérateur
## 15. Gates opérateur restants
Gate `pre.012` :
Gate `pre.013` :
```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
```
Graphes finaux :
```bash
cargo tree -p ksp-onchain-transport-lib
cargo tree -p ksp-onchain-transport-lib --duplicates
cargo tree --duplicates
```
Smoke live opt-in Mainnet :
```bash
cargo test -p ksp-onchain-transport-lib --test yellowstone_publicnode_smoke -- --ignored --nocapture
```
Le smoke n'est jamais déclaré réussi avant exécution. Un incident externe PublicNode/TLS/réseau est consigné comme tel et ne doit pas être maquillé en PASS local. Le Testnet n'est pas exécuté tant que son endpoint exact n'est pas confirmé par une source PublicNode autoritative.
Gate `pre.014` :
```bash
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.2.9
cargo test --workspace
```
Gate `pre.015` : audit documentaire ciblé sur `prompts/`, `CHANGELOG.md` et `ROADMAP.md`, plus les validations minimales imposées par le changement de version Cargo. Aucun smoke n'est rejoué dans cette tranche en l'absence de changement technique.
## 16. Conditions de clôture `0.2.9`
@@ -724,15 +760,15 @@ bounds/backpressure/shutdown verts
reconnect/replay documentés sans lossless implicite
Config V3 backward V1/V2
provider/protocol distincts
PublicNode Mainnet validé
Testnet validé si endpoint exact confirmé, sinon report factuel documenté
PublicNode Mainnet live exécuté avec résultat consigné
Testnet reporté factuellement si endpoint exact non confirmé
HTTP 52+14 non régressé
Standard WS 18/18 non régressé
Helius WS non régressé
cargo graphs finaux inspectés
README/USAGE finaux synchronisés
validation 012 fermée
prompt release suivante prêt
README/USAGE finaux réconciliés en pre.014
validation 012 fermée en pre.014
prompt/CHANGELOG/ROADMAP seuls finalisés en pre.015
workspace final vert
```