# 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 ```