Files
khadhroony-solana-project/deltas/0.3.6/pre.009-fix.001.md

6.2 KiB

Delta v0.3.6-pre.009-fix.001

Base requise

  • 0.3.6-pre.9 / livraison pre.009.
  • Le gate opérateur de pre.009 confirme cargo check --workspace et 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 canarie public_api dont 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 de ksp-job-backfill-lib sont 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 selon RUST-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é pub ou pub(crate) réexporté à la racine est référencé via crate::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::Item n'est conservé pour une surface partagée ;
  • les unit tests attachés à un module continuent d'utiliser crate::Item pour les items partagés et super::Item pour 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ête 408 -> 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.toml
  • crates/ksp-job-backfill-lib/src/checkpoint.rs
  • crates/ksp-job-backfill-lib/src/conversion.rs
  • crates/ksp-job-backfill-lib/src/discovery.rs
  • crates/ksp-job-backfill-lib/src/execution.rs
  • crates/ksp-job-backfill-lib/src/lib.rs
  • crates/ksp-job-backfill-lib/src/persistence.rs
  • crates/ksp-job-backfill-lib/src/request.rs
  • crates/ksp-job-backfill-lib/src/runtime.rs
  • crates/ksp-job-backfill-lib/tests/public_api.rs
  • crates/ksp-job-backfill-lib/unit_tests/discovery.rs
  • crates/ksp-job-backfill-lib/unit_tests/execution.rs
  • crates/ksp-job-backfill-lib/unit_tests/runtime.rs
  • docs/plans/027-V0_3_6_JOB_API_BACKFILL_PLAN.md
  • docs/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.