Files
khadhroony-solana-project/deltas/0.2.9/pre.012.md
2026-08-24 20:48:30 +02:00

258 lines
9.0 KiB
Markdown

<!-- file: deltas/0.2.9/pre.012.md -->
<!-- version: 1 -->
# Delta `0.2.9-pre.012` — fermeture technique Yellowstone + PublicNode + documentation
## Statut
Candidate de fermeture technique `0.2.9` construite sur `0.2.9-pre.011`, dont le gate opérateur est entièrement vert.
Cette tranche ne change pas la sémantique runtime Yellowstone fermée en `pre.010`. Elle ajoute le smoke live PublicNode Mainnet opt-in, ferme le réaudit documentaire final, synchronise README/USAGE, prépare le prompt `0.2.10 — OrbitFlare Yellowstone gRPC` et rend la mise en forme des tableaux Markdown normative et mécaniquement vérifiable.
## Version technique
```text
workspace.package.version = 0.2.9-pre.12
```
## Base opérateur confirmée
`pre.011` a été validée avec :
```text
cargo fmt --all PASS
scripts/audit_rust_workspace_rules.py PASS, 0 export candidate
cargo check --workspace PASS
cargo clippy --workspace --all-targets PASS sans warning
Config unit 113/113
Config public API 15/15
Config ownership 5/5
Transport unit 383/383
Transport public API 49/49
Transport release completeness 43/43
Transport doctests 4/4
workspace dependencies 3/3
cargo test --workspace PASS
```
## Réaudit Yellowstone final
Le réaudit du 2026-08-24 distingue désormais explicitement les numéros de `master` et les releases GitHub publiées :
```text
latest release GitHub indexée v14.2.2+solana.4.1.0
master yellowstone-grpc-geyser 15.1.2
master yellowstone-grpc-client 13.3.0
master yellowstone-grpc-proto 12.6.0
master Agave Geyser / storage 4.2.0
master Tonic / Prost 0.14.x
```
La surface N2 utilisée par KSP reste matériellement compatible : service `Geyser`, `Subscribe`, sept unary retenus, `SubscribeRequest` courant et neuf variantes `SubscribeUpdate`. `SubscribeDeshred` reste hors scope.
La licence du subtree `yellowstone-grpc-proto` reste déclarée Apache-2.0 dans `LICENSING.md` upstream.
## PublicNode Mainnet
Ajout d'un smoke Transport pur :
```text
crates/ksp-onchain-transport-lib/tests/yellowstone_publicnode_smoke.rs
```
Le smoke :
```text
est ignored par défaut
construit ses settings programmatiquement
n'utilise ni Config ni variable d'environnement
n'utilise aucun credential
cible https://solana-yellowstone-grpc.publicnode.com:443
ouvre le channel TLS Yellowstone standard
appelle GetVersion
appelle GetSlot avec commitment confirmed
```
Il ne crée aucune façade `PublicNodeGrpc*` et réutilise le contrat provider-neutral de `0.2.9`.
## PublicNode Testnet
Le service Testnet gRPC est annoncé par PublicNode, mais l'hostname exact n'est toujours pas disponible dans une source PublicNode suffisamment autoritative et exploitable.
Décision :
```text
aucun hostname déduit
aucun profil Testnet
aucun smoke Testnet
statut documentaire = EXTERNAL BLOCK / NOT GUESSED
```
Cette limite externe ne bloque pas la fondation Mainnet et ne doit pas être transformée en endpoint supposé.
## Règles des tableaux Markdown
`docs/rules/RULES_DOCUMENTATION.md` formalise désormais :
```text
pipe littéral ou échappé interdit dans le contenu d'une cellule
pipe réservé aux séparateurs structurels
largeur de colonne déterminée par le contenu le plus large
tous les séparateurs verticaux alignés
exactement un espace de marge autour du contenu le plus large
cellules plus courtes complétées uniquement pour conserver l'alignement
ligne séparatrice dimensionnée exactement à la colonne
tableau entier réaligné lorsqu'une ligne est touchée
```
Ajout du canari :
```text
scripts/audit_markdown_tables.py
```
Il audite les fichiers ou répertoires Markdown explicitement fournis, ignore les blocs de code fenced et rejette les tables qui ne respectent pas le contrat KSP.
La version de `docs/validation/012-V0_2_9_YELLOWSTONE_GRPC.md` corrigée manuellement par l'opérateur avant le commit `pre.011` a été conservée comme base ; `pre.012` ne réintroduit pas l'ancien format.
## Normalisation documentaire rétroactive modifiable
Le premier audit étendu de la nouvelle règle a révélé 26 écarts historiques dans neuf documents **modifiables** : principalement du padding antérieur au contrat actuel et un tableau HTTP utilisant des pipes échappés dans ses cellules.
Ces documents ont été normalisés sans changer leurs décisions :
```text
docs/formats/KSPWALLET_V1.md
docs/formats/KSPWALLET_V2.md
docs/plans/005-V0_1_3_CONFIG_FOUNDATION_PLAN.md
docs/plans/006-V0_1_4_CONFIG_DESKTOP_PLAN.md
docs/plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md
docs/plans/012-V0_2_5_WALLET_FOUNDATION_PLAN.md
docs/plans/014-V0_2_7_ONCHAIN_WEBSOCKET_PLAN.md
docs/validation/010-V0_2_7_ONCHAIN_WEBSOCKET.md
docs/validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md
```
Dans le plan HTTP `008`, les anciens `\|` utilisés pour exprimer une alternative ont été reformulés avec `/`, conformément à la nouvelle interdiction des pipes internes.
Un scan du repository a encore signalé uniquement onze écarts de padding dans d'anciens deltas `0.1.4`. Ils ne sont **pas** modifiés : les deltas déjà publiés sont immuables. `DOC-TABLE-006` formalise cette priorité ; tous les nouveaux deltas restent soumis au format courant.
## Documentation Transport
`README.md` et `USAGE.md` documentent maintenant la foundation Yellowstone complète :
```text
settings/channel/unary/Subscribe
reconnect/replay prudent
Config V3
PublicNode Mainnet
smoke live opt-in
limite Testnet non inventée
```
## Plan et validation
Le plan `016` et la validation `012` restent structurés par état courant plutôt que par appendices successifs.
Mises à jour principales :
```text
pre.011 fermé par gate opérateur
pre.012 active candidate
récconciliation master vs release GitHub
PublicNode Testnet fermé comme limite externe documentée
smoke Mainnet ajouté mais non déclaré exécuté
cargo tree final explicitement pending operator
workspace final explicitement pending operator
```
## Prompt suivant
Ajout :
```text
prompts/015-V0_2_10_START_PROMPT.md
```
La release suivante active est `0.2.10 — OrbitFlare Yellowstone gRPC`.
Le prompt impose un `pre.001` audit/sizing avant code provider et cible notamment les questions ouvertes suivantes :
```text
IP whitelist vs X_TOKEN vs control-plane X-ORBIT-KEY
endpoints régionaux / Devnet / transport security
support réel des unary/replay/from_slot
heartbeat proactif recommandé par OrbitFlare
réutilisation N1/N2 sans second actor/client
Config V3 et secret ownership
smoke architecture-safe
```
`0.2.11` reste Helius LaserStream gRPC.
## Fichiers ajoutés ou modifiés
```text
Cargo.toml
docs/rules/RULES_DOCUMENTATION.md
scripts/audit_markdown_tables.py
crates/ksp-onchain-transport-lib/tests/yellowstone_publicnode_smoke.rs
crates/ksp-onchain-transport-lib/README.md
crates/ksp-onchain-transport-lib/USAGE.md
docs/formats/KSPWALLET_V1.md
docs/formats/KSPWALLET_V2.md
docs/plans/005-V0_1_3_CONFIG_FOUNDATION_PLAN.md
docs/plans/006-V0_1_4_CONFIG_DESKTOP_PLAN.md
docs/plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md
docs/plans/012-V0_2_5_WALLET_FOUNDATION_PLAN.md
docs/plans/014-V0_2_7_ONCHAIN_WEBSOCKET_PLAN.md
docs/validation/010-V0_2_7_ONCHAIN_WEBSOCKET.md
docs/validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md
docs/plans/016-V0_2_9_YELLOWSTONE_GRPC_PLAN.md
docs/validation/012-V0_2_9_YELLOWSTONE_GRPC.md
prompts/000-README.md
prompts/015-V0_2_10_START_PROMPT.md
deltas/0.2.9/pre.012.md
```
## Gate local disponible dans l'environnement de préparation
Exécuté avant livraison de l'archive :
```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.9
Markdown table audit: clean (87 table(s), 116 file(s))
```
Cargo et Rustfmt ne sont pas disponibles dans l'environnement de préparation ; aucune commande Cargo n'est donc déclarée réussie pour la candidate `pre.012`.
## Gate opérateur requis
```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
```
Si tous les gates locaux sont verts et que le smoke Mainnet est consigné, `0.2.9` peut passer à sa tranche de publication stable. Un défaut découvert dans cette candidate crée `pre.012-fix.001` ; l'historique précédent reste immuable.