4.6 KiB
Delta 0.3.6-pre.006-fix.001 — indirection privée de l’acquisition RAW
Base requise
0.3.6-pre.006 appliquée
workspace.package.version = 0.3.6-pre.6
Le gate opérateur fourni pour pre.006 confirme :
cargo fmt --all PASS
python3 scripts/audit_rust_workspace_rules.py PASS / clean
python3 scripts/audit_markdown_tables.py ... PASS / clean (264 tables / 149 fichiers)
cargo check --workspace PASS
cargo clippy --workspace --all-targets PASS avec warning clippy::large_enum_variant
cargo test -p ksp-job-backfill-lib PASS
unitaires 19 PASS
dependency_boundary 2 PASS
public_api 3 PASS
release_completeness 2 PASS
cargo tree -p ksp-job-backfill-lib --edges normal exécuté
cargo tree -p ksp-job-backfill-lib -e features exécuté
Objectif
Supprimer le warning clippy::large_enum_variant sans masquer le lint et sans changer la forme publique de BackfillHydrationOutcome.
Cause exacte
BackfillHydrationOutcome expose deux variantes :
Available(BackfillRawAcquisition),
Missing(ksp_store_lib::RawTransactionReference),
Le gate mesure au moins environ 560 octets pour Available contre environ 88 octets pour Missing. La différence provient de l’embarquement direct de la transaction RAW et de son observation dans BackfillRawAcquisition.
Correctif
La structure publique BackfillRawAcquisition conserve ses méthodes et reste la charge utile directe de Available, mais ses deux champs privés sont regroupés dans un état privé détenu par une unique Box.
Ainsi :
- l’API publique
Available(BackfillRawAcquisition)ne change pas ; - aucun
Boxn’apparaît dans la signature publique de l’enum ; transaction(),observation()etinto_parts()gardent leurs signatures ;- une seule allocation est introduite par acquisition disponible ;
Missing(reference)reste sans allocation et sans provenance fabriquée ;- aucun
#[allow(clippy::large_enum_variant)]n’est ajouté.
Une canarie unitaire vérifie que BackfillRawAcquisition conserve la taille d’un pointeur, ce qui verrouille l’indirection privée destinée à empêcher la régression de taille.
Version
Le fix modifie du Rust :
workspace.package.version = 0.3.6-pre.6.fix.1
delivery = 0.3.6-pre.006-fix.001
commit = v0.3.6-pre.006-fix.001
Aucun tag prerelease.
Fichiers ajoutés
deltas/0.3.6/pre.006-fix.001.md
Fichiers modifiés
Cargo.toml
crates/ksp-job-backfill-lib/src/conversion.rs
crates/ksp-job-backfill-lib/unit_tests/conversion.rs
docs/plans/027-V0_3_6_JOB_API_BACKFILL_PLAN.md
docs/validation/023-V0_3_6_JOB_API_BACKFILL.md
Versions d’en-tête
Cargo.toml 402 -> 403
crates/ksp-job-backfill-lib/src/conversion.rs 1 -> 2
crates/ksp-job-backfill-lib/unit_tests/conversion.rs 1 -> 2
docs/plans/027-V0_3_6_JOB_API_BACKFILL_PLAN.md 10 -> 11
docs/validation/023-V0_3_6_JOB_API_BACKFILL.md 10 -> 11
Le présent delta commence à version: 1.
Invariants préservés
- identité logique transactionnelle toujours
(RawNetworkId, signature); - provider/endpoint/protocole restent uniquement de la provenance d’acquisition ;
- format RAW v1, canonicalisation JSON, SHA-256 et block time inchangés ;
- chemin observé
getTransactionet paramètres Transport inchangés ; Missingreste structurellement sans provenance ;- aucune persistance Store, checkpoint, concurrence ou snapshot ajoutés ;
- aucune nouvelle dépendance, feature, crate ou API publique ;
- README, USAGE, CHANGELOG, ROADMAP et prompt restent fermés.
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
cargo tree -p ksp-job-backfill-lib --edges normal
cargo tree -p ksp-job-backfill-lib -e features
Résultat attendu : 20 tests unitaires + 7 canaries d’intégration, aucun warning large_enum_variant, et graphe de dépendances inchangé.
Questions ouvertes
Aucune. pre.007 reste interdit tant que le gate de ce fix n’est pas warning-free.