3.0 KiB
Delta 0.3.9-pre.002-fix.002 — constructeur privé de WorkerSnapshotSequence
Base requise
0.3.9-pre.002-fix.001
workspace.package.version = 0.3.9-pre.2.fix.1
Le gate opérateur de pre.002-fix.001 confirme les audits Rust/Markdown et cargo check --workspace, mais Clippy --all-targets --all-features -- -D warnings et cargo test -p ksp-worker-api échouent sur E0423 dans snapshot.rs. Les deux cargo tree ciblés restent conformes à la frontière Core-only.
Cause exacte
WorkerSnapshotSequence est un tuple struct public dont le champ u64 reste volontairement privé. Le type est réexporté au crate-root, mais ce re-export ne rend pas le constructeur tuple visible :
return crate::WorkerSnapshotSequence(u64::MAX);
échoue donc lors de la compilation des targets de test.
Le défaut ne remet pas en cause RUST-IMPORT-009 pour les targets d'impl : impl crate::WorkerSnapshotSequence reste la forme correcte. Il faut seulement confiner l'accès au champ privé dans le module propriétaire.
Correctif
L'impl propriétaire reçoit un constructeur associé privé et uniquement compilé pour les tests :
#[cfg(test)]
const fn exhausted_for_test() -> Self {
return Self(u64::MAX);
}
Le helper privé conserve la référence crate-root au type partagé :
return crate::WorkerSnapshotSequence::exhausted_for_test();
Ainsi :
- aucun champ ne devient
puboupub(crate); - aucun constructeur arbitraire n'entre dans l'API publique ;
- les targets d'
implrestent souscrate::Type; - l'initialisation du champ privé reste confinée dans l'impl situé dans le module propriétaire ;
- le helper d'overflow reste strictement
#[cfg(test)].
La canarie dependency_boundary de pre.002-fix.001 cesse d'exiger le constructeur tuple invalide et une nouvelle canarie vérifie explicitement ce pont privé.
Version
Ce fix modifie du Rust :
workspace.package.version = 0.3.9-pre.2.fix.2
delivery = 0.3.9-pre.002-fix.002
Le header du Cargo.toml racine passe de 478 à 479.
Fichiers modifiés
Cargo.toml
crates/ksp-worker-api/src/snapshot.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é
deltas/0.3.9/pre.002-fix.002.md
Hors scope
Aucun changement de surface publique, lifecycle, stop semantics, snapshot shape, dépendance, feature, runtime ou travail pre.003.
Gate opérateur demandé
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