115 lines
3.4 KiB
Markdown
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
|
|
```
|