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

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 pub ou pub(crate) ;
  • aucun constructeur arbitraire n'entre dans l'API publique ;
  • les targets d'impl restent sous crate::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