125 lines
6.2 KiB
Markdown
125 lines
6.2 KiB
Markdown
<!-- file: deltas/0.3.6/pre.009-fix.001.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# 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 :
|
|
|
|
```text
|
|
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 :
|
|
|
|
```text
|
|
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
|
|
|
|
```text
|
|
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é
|
|
|
|
```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/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.
|