v0.2.7-rel.001
This commit is contained in:
254
deltas/0.2.7/rel.001.md
Normal file
254
deltas/0.2.7/rel.001.md
Normal file
@@ -0,0 +1,254 @@
|
||||
<!-- file: deltas/0.2.7/rel.001.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.2.7-rel.001` — publication stable WebSocket Solana standard
|
||||
|
||||
## 1. Base requise
|
||||
|
||||
Base directe attendue :
|
||||
|
||||
```text
|
||||
0.2.7-pre.014-fix.001
|
||||
workspace.package.version = 0.2.7-pre.14
|
||||
```
|
||||
|
||||
Le fix `pre.014-fix.001` est strictement documentaire et a uniquement renforcé `prompts/013-V0_2_8_START_PROMPT.md`; il n'a modifié ni runtime, ni Config exécutable, ni dépendance.
|
||||
|
||||
Commit attendu pour cette livraison :
|
||||
|
||||
```text
|
||||
v0.2.7-rel.001
|
||||
```
|
||||
|
||||
Tag stable attendu après validation :
|
||||
|
||||
```text
|
||||
v0.2.7
|
||||
```
|
||||
|
||||
## 2. Objectif
|
||||
|
||||
Publier `0.2.7 — WebSocket Solana standard` sans ajouter de capacité fonctionnelle après la candidate.
|
||||
|
||||
`rel.001` :
|
||||
|
||||
- passe `workspace.package.version` de `0.2.7-pre.14` à `0.2.7` ;
|
||||
- clôt `ROADMAP.md`, le plan `014` et la matrice `validation/010` ;
|
||||
- ajoute l'entrée stable `0.2.7` au `CHANGELOG.md` ;
|
||||
- passe `Standard WS` à `Stable` dans l'inventaire composants ;
|
||||
- synchronise les index/documentation de séquence vers le statut publié ;
|
||||
- conserve `prompts/013-V0_2_8_START_PROMPT.md` version 2 comme contrat actif pour `0.2.8`.
|
||||
|
||||
Aucun fichier Rust, aucune API publique, aucun schema/config runtime, aucune dépendance et aucune feature ne changent dans cette livraison.
|
||||
|
||||
## 3. Preuve candidate finale acquise
|
||||
|
||||
Le checkpoint opérateur fourni le **23 août 2026** après application de `0.2.7-pre.014-fix.001` est vert :
|
||||
|
||||
```text
|
||||
cargo fmt --all OK
|
||||
python3 scripts/audit_rust_workspace_rules.py OK
|
||||
General Rust rule audit clean
|
||||
Rust export completeness audit 0 candidate(s)
|
||||
KSP workspace Rust rule audit clean
|
||||
cargo check --workspace OK
|
||||
cargo clippy --workspace --all-targets OK
|
||||
cargo test -p ksp-onchain-transport-lib OK
|
||||
unit 309 passed
|
||||
public API 36 passed
|
||||
release completeness 24 passed
|
||||
Transport HTTP Devnet smoke 1 ignored par défaut
|
||||
Transport WebSocket Devnet smoke 1 ignored par défaut
|
||||
cargo test --workspace OK
|
||||
```
|
||||
|
||||
Les suites workspace Config/Core/Logging/Wallet/Desks passent également. Les tests live, benchmark ou diagnostic explicitement operator-only restent ignorés par défaut conformément à leur contrat.
|
||||
|
||||
Le smoke WebSocket Devnet avait été exécuté explicitement avec succès à `pre.013` :
|
||||
|
||||
```text
|
||||
WsSession::connect
|
||||
-> slotSubscribe
|
||||
-> slotNotification
|
||||
-> unsubscribe par handle
|
||||
-> close explicite
|
||||
```
|
||||
|
||||
`pre.014` et `pre.014-fix.001` n'ont modifié ni le runtime WebSocket ni le graphe de dépendances ; cette preuve live et l'audit `cargo tree` de `pre.013` restent donc valides.
|
||||
|
||||
## 4. Surface stable publiée
|
||||
|
||||
### HTTP hérité
|
||||
|
||||
```text
|
||||
52/52 méthodes HTTP courantes typées
|
||||
14/14 méthodes historiques Deprecated/Removed conservées
|
||||
KSP-TRANSPORT-007 appliqué à la surface typed
|
||||
write submissions : aucun resend après dispatch ambigu
|
||||
```
|
||||
|
||||
### WebSocket Solana standard
|
||||
|
||||
Les neuf familles publiées sont :
|
||||
|
||||
```text
|
||||
account
|
||||
block
|
||||
logs
|
||||
program
|
||||
root
|
||||
signature
|
||||
slot
|
||||
slotsUpdates
|
||||
vote
|
||||
```
|
||||
|
||||
soit :
|
||||
|
||||
```text
|
||||
9 subscribe + 9 unsubscribe = 18/18 opérations standard
|
||||
```
|
||||
|
||||
Partition issue de l'audit normatif courant :
|
||||
|
||||
```text
|
||||
stable : account, logs, program, root, signature, slot
|
||||
unstable : block, slotsUpdates, vote
|
||||
```
|
||||
|
||||
Contrats stabilisés :
|
||||
|
||||
```text
|
||||
1 endpoint -> 0..N sessions physiques explicites
|
||||
1 session -> 0..N subscriptions logiques typées
|
||||
WsSessionId / WsSubscriptionId locaux et stables
|
||||
remote subscription id interne et remappable
|
||||
actor unique propriétaire du socket
|
||||
pending requests / queues / active subscriptions bornés
|
||||
reconnect fini + backoff borné
|
||||
resubscribe déterministe par local id
|
||||
continuity_gap_count observable, sans promesse lossless
|
||||
backpressure isolé par subscription
|
||||
late ACK/notifications nettoyés sans réactivation
|
||||
signatureSubscribe one-shot après notification terminale
|
||||
WsSession::close().await borné
|
||||
control frames Ping/Pong/Close gérés
|
||||
aucun heartbeat applicatif périodique imposé
|
||||
```
|
||||
|
||||
### Config et frontières
|
||||
|
||||
```text
|
||||
std.transport V2 = HTTP + WebSocket
|
||||
lecture V1 = HTTP-only backward compatible
|
||||
WsProtocolKind extensible ; seul solana_standard est publié en 0.2.7
|
||||
Config -> Transport autorisé
|
||||
Transport -X-> Config/Wallet/Store/Program/tracing direct
|
||||
```
|
||||
|
||||
Les URLs WebSocket et credentials restent redacted dans Debug/logs/snapshots ; les remote subscription IDs et payloads arbitraires ne sont pas projetés comme metadata sûre.
|
||||
|
||||
## 5. Fichiers ajoutés
|
||||
|
||||
```text
|
||||
deltas/0.2.7/rel.001.md
|
||||
```
|
||||
|
||||
## 6. Fichiers modifiés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
ROADMAP.md
|
||||
CHANGELOG.md
|
||||
docs/000-README.md
|
||||
docs/architecture/004-COMPONENT_INVENTORY.md
|
||||
docs/plans/000-README.md
|
||||
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
|
||||
docs/plans/014-V0_2_7_ONCHAIN_WEBSOCKET_PLAN.md
|
||||
docs/validation/000-README.md
|
||||
docs/validation/010-V0_2_7_ONCHAIN_WEBSOCKET.md
|
||||
prompts/000-README.md
|
||||
```
|
||||
|
||||
Volontairement inchangés :
|
||||
|
||||
```text
|
||||
prompts/013-V0_2_8_START_PROMPT.md # version 2 déjà livrée par pre.014-fix.001
|
||||
crates/ksp-onchain-transport-lib/src/**
|
||||
crates/ksp-onchain-transport-lib/README.md
|
||||
crates/ksp-onchain-transport-lib/USAGE.md
|
||||
config/**
|
||||
crates/ksp-app-*/package.json
|
||||
crates/ksp-app-*/tauri.conf.json
|
||||
```
|
||||
|
||||
Les versions applicatives npm/Tauri des Desks restent `0.2.6` : `0.2.7` ne modifie pas ces applications et leur version propre n'est pas utilisée comme signal de la release Transport.
|
||||
|
||||
## 7. Fichiers supprimés
|
||||
|
||||
Aucun.
|
||||
|
||||
## 8. Décisions de clôture
|
||||
|
||||
Aucune nouvelle décision de protocole n'est introduite par `rel.001`. La publication confirme :
|
||||
|
||||
1. le moteur WebSocket standard appartient à `ksp-onchain-transport-lib`, aux côtés du moteur HTTP ;
|
||||
2. les neuf familles ciblées et leurs unsubscribe constituent la surface standard publiée `0.2.7` ;
|
||||
3. les trois familles upstream unstable restent exposées avec leur statut, sans les présenter comme garanties provider ;
|
||||
4. reconnect/resubscribe n'implique aucune garantie de continuité historique ou de backfill ;
|
||||
5. plusieurs sessions physiques explicites sont autorisées, sans scheduler/pool automatique imposé ;
|
||||
6. Config V2 adapte vers les settings WebSocket publics sans dépendance inverse ;
|
||||
7. les extensions provider-specific restent hors `0.2.7` ;
|
||||
8. `0.2.8` ouvre Helius LaserStream WebSocket en réutilisant ce moteur standard, conformément au prompt version 2.
|
||||
|
||||
## 9. Validation finale après application
|
||||
|
||||
Le passage du signal Cargo à la version stable doit être revalidé avant commit/tag :
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets
|
||||
cargo test -p ksp-onchain-transport-lib
|
||||
cargo test --workspace
|
||||
```
|
||||
|
||||
Les graphes Cargo et le smoke live n'ont pas besoin d'être rejoués si l'overlay appliqué est exactement `0.2.7-rel.001`, car cette livraison ne change ni dépendance, ni source Rust, ni Config runtime. En cas de modification additionnelle avant publication, réévaluer les gates concernés.
|
||||
|
||||
Comptages Transport attendus :
|
||||
|
||||
```text
|
||||
unit = 309
|
||||
public API = 36
|
||||
release completeness = 24
|
||||
HTTP Devnet smoke = 1 ignored par défaut
|
||||
WebSocket Devnet smoke = 1 ignored par défaut
|
||||
```
|
||||
|
||||
## 10. Commit et tag stable
|
||||
|
||||
Après succès du gate :
|
||||
|
||||
```text
|
||||
commit : v0.2.7-rel.001
|
||||
tag : v0.2.7
|
||||
```
|
||||
|
||||
Aucun tag intermédiaire de prerelease/fix/rel n'est requis.
|
||||
|
||||
## 11. Suite
|
||||
|
||||
Après création du tag stable `v0.2.7`, ouvrir :
|
||||
|
||||
```text
|
||||
0.2.8-pre.001
|
||||
```
|
||||
|
||||
avec :
|
||||
|
||||
```text
|
||||
prompts/013-V0_2_8_START_PROMPT.md
|
||||
```
|
||||
|
||||
La première tranche est un gate strict de relecture/audit Helius actuel, architecture, threat model, dépendances et sizing. Le forecast `pre.001 -> pre.011` du prompt est une prévision souple que `pre.001` doit recalibrer avant toute implémentation lourde.
|
||||
Reference in New Issue
Block a user