# Delta v0.3.6-pre.009-fix.002 ## Base requise - `0.3.6-pre.9.fix.1` / livraison `pre.009-fix.001`. - Les audits Rust/Markdown du gate opérateur sont propres. - `cargo check --workspace` bloque sur `E0423` dans `crates/ksp-job-backfill-lib/src/request.rs` avant que Clippy/tests puissent valider le fix. - La cause est précise : `BackfillScopeFingerprint` est public et correctement référencé via le crate-root, mais son constructeur de tuple struct n'est pas visible via le réexport parce que son champ `[u8; 32]` reste privé dans `request.rs`. ## Correctif Le fix conserve l'opacité publique du fingerprint et ne réintroduit pas un accès par nom local. `impl crate::BackfillScopeFingerprint` reçoit un constructeur associé strictement privé : ```rust const fn from_bytes(bytes: [u8; 32]) -> Self { return Self(bytes); } ``` La fonction de calcul appelle ensuite : ```rust return crate::BackfillScopeFingerprint::from_bytes(bytes); ``` Ainsi : - les consommateurs et le module propriétaire continuent de référencer le type partagé via `crate::BackfillScopeFingerprint` ; - l'initialisation du champ privé reste confinée dans l'impl situé dans le module propriétaire ; - le champ ne devient ni `pub` ni `pub(crate)` ; - aucun chemin `crate::request::BackfillScopeFingerprint` n'est introduit ; - aucun contrat public, octet de fingerprint, hash, scope, checkpoint, runtime, dépendance ou feature ne change. ## Cargo et versions de fichiers - `workspace.package.version` : `0.3.6-pre.9.fix.1` -> `0.3.6-pre.9.fix.2`. - `Cargo.toml` : version d'en-tête `409` -> `410`. - `crates/ksp-job-backfill-lib/src/request.rs` : `4` -> `5`. - plan 027 : `17` -> `20` (trois révisions réelles pendant la matérialisation du fix). - validation 023 : `17` -> `20` (trois révisions réelles pendant la matérialisation du fix). ## Graphe de dépendances Aucune dépendance ni feature ne change. Aucun `cargo tree` n'est requis pour ce fix, sauf revalidation volontaire après un `cargo clean` séparé. ## Payload Ajout : - `deltas/0.3.6/pre.009-fix.002.md` Modifications : - `Cargo.toml` - `crates/ksp-job-backfill-lib/src/request.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 d'assemblage À exécuter dans l'environnement d'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 ``` L'environnement d'assemblage ne fournit ni Cargo, ni Rustc, ni Rustfmt ; le gate Rust reste donc 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 ``` Résultat attendu : 47 unitaires + 10 canaries d'intégration, sans warning Clippy.