6.2 KiB
Delta v0.3.6-pre.009-fix.001
Base requise
0.3.6-pre.9/ livraisonpre.009.- Le gate opérateur de
pre.009confirmecargo check --workspaceet l'exécution intégrale des 47 tests unitaires + 10 canaries d'intégration. - Clippy reste non warning-free avec deux réexports
pub(crate)inutilisés (BackfillRuntimeControl,TerminalClaim) et une canariepublic_apidont le paramètre générique n'est pas effectivement utilisé. - L'inspection de la cause révèle un défaut plus fondamental : plusieurs items
pub/pub(crate)partagés deksp-job-backfill-libsont encore référencés par nom local depuis leur module propriétaire, contrairement àRUST-IMPORT-009; deux helpers runtime n'ont en outre aucune justification de visibilité crate-wide selonRUST-API-007.
Correctif de visibilité et de chemins crate-root
Le correctif ne masque pas les warnings. Il réconcilie toute la crate ksp-job-backfill-lib avec les contrats Rust applicables :
- tout item partagé
puboupub(crate)réexporté à la racine est référencé viacrate::Item, y compris depuis son module de déclaration ; - les implémentations des types partagés utilisent la façade crate-root (
impl crate::Type,impl Trait for crate::Type) ; - aucun chemin
crate::module::Itemn'est conservé pour une surface partagée ; - les unit tests attachés à un module continuent d'utiliser
crate::Itempour les items partagés etsuper::Itempour les items strictement privés.
Cette réconciliation couvre les surfaces déjà présentes de la crate (BackfillCheckpoint, discovery, conversion, persistence, bounded execution) afin de ne pas laisser dans le même composant des violations identiques à celles révélées par pre.009.
Visibilité runtime
BackfillRuntimeControl et TerminalClaim sont utilisés uniquement par runtime.rs et ses unit tests attachés. Ils redeviennent donc privés :
BackfillRuntimeControl pub(crate) -> private
TerminalClaim pub(crate) -> private
Leurs réexports crate-root sont supprimés. Les unit tests de runtime.rs les consomment via super::BackfillRuntimeControl et super::TerminalClaim, conformément à RUST-IMPORT-012 et RUST-API-007.
Les canaries discovery/execution n'élargissent plus artificiellement cette visibilité pour provoquer une annulation. Elles construisent directement :
JobCancellationToken
watch<bool>
crate::BackfillCancellationSignal
puis déclenchent à la fois le token runtime-neutral et le réveil watch privé.
BackfillCancellationSignal et BackfillRuntimePublisher restent pub(crate) car ils sont réellement consommés par d'autres modules de production ; leurs implémentations et usages passent par crate::....
Canary Clippy publique
La canarie pre_009_concrete_runtime_snapshot_and_control_contracts_are_available_from_crate_root conserve son assertion générique sur JobSnapshotSource, mais le type générique est désormais porté par un argument PhantomData<T>. Le paramètre n'est donc plus considéré comme inutilisé par clippy::extra_unused_type_parameters.
Aucun contrat public, état Job, sémantique d'annulation, comportement latest-value, frontier/checkpoint, dépendance ou feature ne change.
Cargo et versions de fichiers
workspace.package.version:0.3.6-pre.9->0.3.6-pre.9.fix.1.Cargo.toml: version d'en-tête408->409.src/checkpoint.rs:1->2.src/conversion.rs:3->4.src/discovery.rs:4->5.src/execution.rs:2->3.src/lib.rs:5->6.src/persistence.rs:2->3.src/request.rs:3->4.src/runtime.rs:2->3.tests/public_api.rs:6->7.unit_tests/discovery.rs:5->6.unit_tests/execution.rs:2->3.unit_tests/runtime.rs:2->3.- plan 027 :
16->17. - validation 023 :
16->17.
Graphe de dépendances
Aucune dépendance ni feature ne change dans ce fix. Les arbres Cargo ont déjà été inspectés au gate de pre.009, puisque cette tranche promouvait Tokio en dépendance normale privée. Ils ne sont donc pas à rejouer pour pre.009-fix.001 sauf si l'opérateur effectue séparément un cargo clean et souhaite revalider le graphe après reconstruction propre.
Payload
Ajout :
deltas/0.3.6/pre.009-fix.001.md
Modifications :
Cargo.tomlcrates/ksp-job-backfill-lib/src/checkpoint.rscrates/ksp-job-backfill-lib/src/conversion.rscrates/ksp-job-backfill-lib/src/discovery.rscrates/ksp-job-backfill-lib/src/execution.rscrates/ksp-job-backfill-lib/src/lib.rscrates/ksp-job-backfill-lib/src/persistence.rscrates/ksp-job-backfill-lib/src/request.rscrates/ksp-job-backfill-lib/src/runtime.rscrates/ksp-job-backfill-lib/tests/public_api.rscrates/ksp-job-backfill-lib/unit_tests/discovery.rscrates/ksp-job-backfill-lib/unit_tests/execution.rscrates/ksp-job-backfill-lib/unit_tests/runtime.rsdocs/plans/027-V0_3_6_JOB_API_BACKFILL_PLAN.mddocs/validation/023-V0_3_6_JOB_API_BACKFILL.md
Aucune suppression.
Validations exécutées à l'assemblage
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/0.3.6
Un contrôle ciblé supplémentaire vérifie dans ksp-job-backfill-lib qu'aucun item réexporté au crate-root n'est encore référencé localement par son nom nu dans son module propriétaire et qu'aucun crate::module::Item ne subsiste pour les surfaces partagées.
L'environnement d'assemblage ne fournit ni Cargo, ni Rustc, ni Rustfmt ; le gate Rust du fix reste donc à exécuter par l'opérateur.
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/0.3.6
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-job-backfill-lib
Attendu : 47 tests unitaires et 10 canaries d'intégration, sans warning Clippy. Aucun cargo tree n'est demandé pour ce fix sans changement de dépendances/features.