Files
khadhroony-solana-project/deltas/0.3.9/pre.002-fix.001.md

115 lines
3.4 KiB
Markdown

<!-- file: deltas/0.3.9/pre.002-fix.001.md -->
<!-- version: 1 -->
# Delta `0.3.9-pre.002-fix.001` — conformité crate-root de `ksp-worker-api`
## Base requise
```text
0.3.9-pre.002
workspace.package.version = 0.3.9-pre.2
```
Le gate opérateur de `pre.002` est vert : format et audits propres, `cargo check --workspace` PASS, Clippy workspace `--all-targets --all-features -- -D warnings` PASS, `cargo test -p ksp-worker-api` PASS avec 17 tests, et les deux `cargo tree` ciblés confirment la frontière Core-only.
## Défaut corrigé
La nouvelle crate respectait les réexports crate-root dans ses signatures inter-types, mais les modules propriétaires implémentaient encore les types partagés par nom local nu, par exemple :
```rust
impl WorkerId {
```
`RUST-IMPORT-009` impose qu'un élément `pub` ou `pub(crate)` partagé soit appelé via `crate::Item`, y compris depuis son module de déclaration lorsque le contrat est crate-wide. La forme canonique est donc :
```rust
impl crate::WorkerId {
```
Le même défaut existait pour les autres targets d'`impl` de `identity.rs`, `lifecycle.rs`, `snapshot.rs` et `stop.rs`.
## Corrections Rust
Les targets sont normalisées sans modifier la surface ni le comportement :
```text
identity.rs
WorkerId
Debug for WorkerId
WorkerKindCode
Debug for WorkerKindCode
lifecycle.rs
WorkerState
WorkerHealth
WorkerActivity
WorkerLifecycle
Debug for WorkerLifecycle
snapshot.rs
WorkerSnapshotSequence
WorkerSnapshot
Debug for WorkerSnapshot
stop.rs
WorkerStopToken
Default for WorkerStopToken
Debug for WorkerStopToken
```
Le helper `exhausted_snapshot_sequence()` construit aussi explicitement `crate::WorkerSnapshotSequence(u64::MAX)`.
Une troisième canarie `dependency_boundary` vérifie les références crate-root attendues dans les quatre modules propriétaires afin d'éviter une régression locale lors de `pre.003`.
## Version
Ce correctif modifie du code Rust :
```text
workspace.package.version = 0.3.9-pre.2.fix.1
```
Le header du `Cargo.toml` racine passe de `477` à `478`.
## Hors scope
Aucun changement de lifecycle, identity bounds, snapshot shape, stop semantics, ErrorCode, dépendance, feature ou API publique. Aucun travail `pre.003` n'est anticipé.
L'auditeur Python global n'est pas étendu dans ce fix : une généralisation immédiate ferait remonter la dette historique de crates antérieures et élargirait artificiellement cette correction locale. La canarie Worker ferme le défaut nouveau sans masquer cette distinction.
## Fichiers modifiés
```text
Cargo.toml
crates/ksp-worker-api/src/identity.rs
crates/ksp-worker-api/src/lifecycle.rs
crates/ksp-worker-api/src/snapshot.rs
crates/ksp-worker-api/src/stop.rs
crates/ksp-worker-api/tests/dependency_boundary.rs
docs/plans/030-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT_PLAN.md
docs/validation/026-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT.md
```
## Fichier ajouté
```text
deltas/0.3.9/pre.002-fix.001.md
```
## Fichiers supprimés
Aucun.
## Gate opérateur demandé
```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
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test -p ksp-worker-api
cargo tree -p ksp-worker-api --edges normal
cargo tree -p ksp-worker-api -e features
```