v0.2.8-pre.005-fix.002
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
<!-- file: docs/plans/015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md -->
|
||||
<!-- version: 14 -->
|
||||
<!-- version: 15 -->
|
||||
|
||||
# Plan `0.2.8` — Helius LaserStream WebSocket
|
||||
|
||||
> **Statut : `pre.004` et ses deux fixes sont validés. Le premier checkpoint de `0.2.8-pre.005` a révélé quatre erreurs de type dans les canaris JSON et une visibilité `pub(crate)` injustifiée pour des helpers utilisés uniquement par le module/tests. `0.2.8-pre.005-fix.001` est préparé pour corriger ces deux points et durcir l'audit des accès `super::PrivateItem` / `crate::VisibleItem`.**
|
||||
> **Statut : `pre.004` et ses deux fixes sont validés. `pre.005-fix.001` corrige les erreurs de type et la visibilité test/private, mais son checkpoint reste non fermable à cause de neuf warnings `dead_code` sur des helpers wire strictement privés qui n'ont pas encore de consommateur de production. `0.2.8-pre.005-fix.002` les borne à `#[cfg(test)]` jusqu'à leur consommation réelle par l'actor en `pre.006`, sans `allow(dead_code)` ni élargissement de visibilité.**
|
||||
|
||||
## 1. Objet, base et état courant
|
||||
|
||||
@@ -31,10 +31,11 @@ pre.004 Config V2 Helius validé
|
||||
pre.004-fix.001 redaction segmentaire + couverture Devnet Helius validées
|
||||
pre.004-fix.002 provenance composée validée
|
||||
pre.005 contrat typed transactionSubscribe/unsubscribe ; fix requis après checkpoint
|
||||
pre.005-fix.001 correction types de canaris + visibilité/tests/règles préparée
|
||||
pre.005-fix.001 correction types de canaris + visibilité/tests/règles appliquée
|
||||
pre.005-fix.002 suppression warnings dead_code via cfg(test) des helpers wire préparée
|
||||
|
||||
workspace.package.version courant = 0.2.8-pre.5.fix.1
|
||||
commit attendu = v0.2.8-pre.005-fix.001
|
||||
workspace.package.version courant = 0.2.8-pre.5.fix.2
|
||||
commit attendu = v0.2.8-pre.005-fix.002
|
||||
aucun tag prerelease
|
||||
```
|
||||
|
||||
@@ -60,7 +61,8 @@ pre.004 DONE — Config V2 helius_laserstream + schema/fixtures + mapping Confi
|
||||
fix.002 DONE — provenance composée `DocumentLiteral` + `EnvironmentProcess` corrigée
|
||||
pre.005 FIX REQUIRED — transactionSubscribe request typed + filters/options/tokenAccounts + transactionUnsubscribe
|
||||
+ bounds 50k + maxSupportedTransactionVersion conditionnel ; live handle différé à pre.006
|
||||
fix.001 PREPARED — assertions Vec<Value>/Value corrigées + helpers test-only privés + audit super/crate durci
|
||||
fix.001 APPLIED — assertions Vec<Value>/Value corrigées + helpers test-only privés + audit super/crate durci
|
||||
fix.002 PREPARED — helpers wire non consommés en production bornés à #[cfg(test)] ; zéro allow/dead-code compensatoire
|
||||
pre.006 transactionNotification + actor integration + reconnect/resubscribe/unsubscribe races
|
||||
+ late notifications + backpressure ciblée
|
||||
pre.007 heartbeat Helius WebSocket/idle + timers + interaction reconnect/control frames/shutdown
|
||||
@@ -1013,3 +1015,12 @@ cargo test -p ksp-onchain-transport-lib FAIL — mêmes 4 erreurs de type
|
||||
Le correctif ne change ni le contrat Helius public ni le wire. Il applique la règle de visibilité KSP : un helper utilisé seulement par son module et son sous-module de tests reste strictement privé ; le test l'appelle via `super::Item`. Les éléments `pub` et `pub(crate)` restent réexportés et consommés via `crate::Item`. Les helpers transaction wire de `pre.005` ne deviendront `pub(crate)` qu'en `pre.006` si l'actor les consomme réellement.
|
||||
|
||||
Le script `audit_rust_export_completeness.py` est étendu pour détecter dans les `unit_tests/` séparés les accès non qualifiés aux items privés du parent et les accès non canoniques aux items visibles.
|
||||
|
||||
### Checkpoint `pre.005-fix.001` et correctif `pre.005-fix.002`
|
||||
|
||||
Le checkpoint opérateur après `fix.001` confirme que les erreurs `Vec<Value>`/`Value` sont corrigées et que les tests Transport passent (`322` unit, `39` public API, `27` release completeness, `4` doctests). Il révèle toutefois neuf warnings `dead_code` pendant `cargo check`, `clippy` et la compilation des tests : deux sérialiseurs privés, cinq helpers de contrôle subscribe/unsubscribe et le helper d'insertion de listes.
|
||||
|
||||
Ces éléments ne sont pas encore consommés par un chemin de production en `pre.005`; leur seul consommateur légitime est le sous-module `unit_tests` rattaché au module propriétaire. `fix.002` applique donc `RUST-API-008` : ils restent strictement privés et sont placés sous `#[cfg(test)]`. Le contrat public typed et ses validations restent compilés en production. Aucune visibilité n'est élargie, aucun `#[allow(dead_code)]` n'est ajouté et le wire préparé reste couvert par les mêmes canaris.
|
||||
|
||||
Leur promotion éventuelle en code de production est différée à `pre.006`, exactement au moment où l'actor WebSocket les consommera réellement ; si cette promotion exige `pub(crate)`, elle suivra alors la façade crate-root et les appels `crate::Item`.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/rules/RULES_RUST.md -->
|
||||
<!-- version: 9 -->
|
||||
<!-- version: 10 -->
|
||||
|
||||
# Règles Rust générales
|
||||
|
||||
@@ -49,6 +49,7 @@ Les règles `RUST-*` s'appliquent à tous les fichiers Rust de KSP : crates, sou
|
||||
- **RUST-API-005** — Les chemins internes de modules ne constituent jamais une API stable.
|
||||
- **RUST-API-006** — Si deux éléments crate-wide auraient le même nom au crate-root, ils sont renommés dans leurs modules propriétaires avec des noms canoniques non ambigus ; un alias de réexport n'est pas utilisé pour masquer la collision.
|
||||
- **RUST-API-007** — La visibilité d'un item n'est jamais élargie uniquement pour permettre son test. Un helper utilisé seulement par son module et ses `unit_tests/` reste privé et les tests y accèdent via `super::Item`; il ne devient `pub(crate)` que lorsqu'un autre module de production le consomme réellement, auquel cas `RUST-API-004` et `RUST-IMPORT-009` s'appliquent.
|
||||
- **RUST-API-008** — Un helper strictement privé dont aucun chemin de production ne dépend encore et qui n'existe que pour un `unit_tests/` de préparation est compilé sous `#[cfg(test)]` jusqu'à sa première consommation de production réelle. Il ne reste pas mort dans le build normal et n'est pas conservé au moyen d'un `#[allow(dead_code)]` compensatoire.
|
||||
|
||||
## Formatage, blocs et ordre
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!-- file: docs/validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md -->
|
||||
<!-- version: 14 -->
|
||||
<!-- version: 15 -->
|
||||
|
||||
# Validation `0.2.8` — Helius LaserStream WebSocket
|
||||
|
||||
> **Statut : `pre.004` + ses fixes sont validés. Le checkpoint `pre.005` échoue uniquement sur quatre comparaisons de canaris `Vec<Value>`/`Value` et révèle cinq réexports `pub(crate)` test-only inutilisés. `pre.005-fix.001` corrige les canaris, rétablit les visibilités privées et durcit l'audit `super::`/`crate::`.**
|
||||
> **Statut : `pre.004` + ses fixes sont validés. `pre.005-fix.001` corrige les erreurs de type et les chemins de visibilité, mais son checkpoint émet encore neuf warnings `dead_code` sur des helpers wire privés non consommés en production. `pre.005-fix.002` les compile uniquement sous `#[cfg(test)]` jusqu'à `pre.006`, sans modifier le contrat public Helius.**
|
||||
|
||||
## 1. Références
|
||||
|
||||
@@ -22,6 +22,7 @@ pre.004 redaction/devnet fix deltas/0.2.8/pre.004-fix.001.md
|
||||
pre.004 provenance fix deltas/0.2.8/pre.004-fix.002.md
|
||||
pre.005 deltas/0.2.8/pre.005.md
|
||||
pre.005 visibility/test fix deltas/0.2.8/pre.005-fix.001.md
|
||||
pre.005 dead-code fix deltas/0.2.8/pre.005-fix.002.md
|
||||
validation standard WS docs/validation/010-V0_2_7_ONCHAIN_WEBSOCKET.md
|
||||
HTTP compliance docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md
|
||||
KSP-TRANSPORT-007 docs/validation/005-V0_2_3_KSP_TRANSPORT_007_RETRO_AUDIT.md
|
||||
@@ -487,4 +488,36 @@ Critères du fix :
|
||||
[ ] tests Transport/workspace verts
|
||||
```
|
||||
|
||||
Verdict courant : **`pre.005` FIX REQUIRED ; `pre.005-fix.001` PREPARED.**
|
||||
Verdict après ce checkpoint : **`pre.005` FIX REQUIRED ; `pre.005-fix.001` APPLIED mais gate warningful.**
|
||||
|
||||
## 15. Gate `pre.005-fix.001` et `pre.005-fix.002`
|
||||
|
||||
Checkpoint opérateur reçu après `pre.005-fix.001` :
|
||||
|
||||
```text
|
||||
[x] cargo fmt --all
|
||||
[x] python3 scripts/audit_rust_workspace_rules.py = clean
|
||||
[!] cargo check --workspace — compile, mais 9 warnings dead_code dans ws_helius_transactions.rs
|
||||
[!] cargo clippy --workspace --all-targets — compile, mêmes 9 warnings
|
||||
[x] cargo test -p ksp-onchain-transport-lib — 322 unit + 39 public + 27 completeness + 4 doctests
|
||||
[ ] cargo test --workspace — non utilisé comme preuve de fermeture tant que le build reste warningful
|
||||
```
|
||||
|
||||
Les neuf warnings portent exclusivement sur des helpers privés de préparation wire non encore consommés par un chemin de production : `to_json_value` (filtre/options), params/method/result subscribe/unsubscribe et `insert_account_list`.
|
||||
|
||||
Critères `pre.005-fix.002` :
|
||||
|
||||
```text
|
||||
[ ] helpers wire test-only restent strictement privés
|
||||
[ ] helpers wire test-only sont sous #[cfg(test)]
|
||||
[ ] aucun #[allow(dead_code)] compensatoire
|
||||
[ ] aucun pub(crate) test-only
|
||||
[ ] tests privés continuent via super::Item
|
||||
[ ] API publique continue via crate::Item
|
||||
[ ] cargo check sans warning pre.005
|
||||
[ ] cargo clippy sans warning pre.005
|
||||
[ ] tests Transport/workspace verts
|
||||
```
|
||||
|
||||
Verdict courant : **`pre.005` FIX REQUIRED ; `pre.005-fix.001` APPLIED ; `pre.005-fix.002` PREPARED.**
|
||||
|
||||
|
||||
Reference in New Issue
Block a user