# Delta 0.3.13-pre.003-fix.001 — correction des tests Worker après généralisation source-neutral ## Base requise ```text delivery précédente : 0.3.13-pre.003 Cargo base : 0.3.13-pre.3 delta base : deltas/0.3.13/pre.003.md archive delta base : ksp-general-0.3.13-pre.003.zip SHA-256 delta base : 669b875410799b8a2c5806cddad81740bdd4dd78e36c68f6b268a6b0257f18f4 ``` Le gate opérateur de `pre.003` confirme que le formatage, les audits et `cargo check --workspace` sont propres, mais que les cibles de tests Worker ne compilent plus après la généralisation source-neutral de `runtime_resources`. `cargo clippy --workspace --all-targets --all-features -- -D warnings` et `cargo test -p ksp-worker-raw-transaction-ingest-lib` échouent sur sept diagnostics provenant du même fichier de tests. ## Objectif Corriger uniquement les tests devenus obsolètes par rapport au contrat production de `pre.003`, sans rouvrir l'API ni modifier la logique runtime : ```text aucun code production modifié aucune API publique ajoutée ou supprimée aucune dépendance modifiée aucune logique réseau/hydration/admission modifiée aucun avancement vers blockSubscribe pre.004 ``` ## Version ```text livraison : 0.3.13-pre.003-fix.001 workspace.package.version : 0.3.13-pre.3.fix.1 archive : ksp-general-0.3.13-pre.003-fix.001.zip ``` Conformément aux règles de versionnement KSP, le fix modifie un fichier `.rs`; le `workspace.package.version` est donc synchronisé avec l'identifiant SemVer technique du correctif. ## Diagnostic opérateur Les sept diagnostics se répartissent en trois causes. ### Ancien extracteur mono-Yellowstone supprimé Le test `v0_3_13_pre_002_multi_source_activation_fails_closed_until_supervisor_tranche` appelait encore : ```text RawTransactionIngestRuntimeResources::into_yellowstone_source ``` Cette méthode a été supprimée en `pre.003` lorsque l'aggregate a été rendu source-neutral. La barrière correspondante est désormais : ```text RawTransactionIngestRuntimeResources::validate_single_source_activation ``` Le test utilise donc le contrat actuel et continue de vérifier exactement l'erreur : ```text runtime_resources.multi_source_activation_pending ``` Les deux erreurs d'inférence `E0282` étaient secondaires à l'absence de l'ancienne méthode et disparaissent avec cette correction. ### Contexte d'hydration manquant Deux tests appelaient encore l'ancienne signature de : ```text build_hydration_provenance ``` `pre.003` a ajouté en premier argument le contexte source-neutral : ```text &RawTransactionIngestHydrationContext ``` Les tests construisent maintenant ce contexte via : ```text source.hydration_context() ``` puis le transmettent à `build_hydration_provenance`. Aucun contrat production n'est élargi pour les tests. ### Accesseurs volontairement absents de RawTransactionMaterial Le nouveau test Standard Logs tentait d'appeler : ```text ingress.material.slot() ingress.material.signature() ``` `RawTransactionMaterial` garde ces champs privés et ne fournit volontairement pas ces accesseurs. Le test ne doit pas provoquer l'ajout d'une API uniquement pour introspection. Les deux assertions sont donc supprimées à ce niveau. La même preuve reste effectuée après passage dans l'admission centrale et canonicalisation, via : ```text acquisition.transaction().slot() == 42 acquisition.transaction().reference().signature().as_bytes() == [0; 64] ``` Cela vérifie en plus le chemin réellement consommé par le Worker. ## Fichiers modifiés ```text Cargo.toml crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/runtime_resources.rs ``` ## Fichiers ajoutés ```text deltas/0.3.13/pre.003-fix.001.md ``` ## Fichiers supprimés ```text aucun ``` ## Versions de fichiers incrémentées ```text Cargo.toml : 542 -> 543 worker unit_tests/runtime_resources.rs : 13 -> 14 ``` ## Validation opérateur de la base pre.003 Le log fourni confirme avant fix : ```text cargo fmt --all : exécuté cargo fmt --all -- --check : PASS / silencieux General Rust rule audit : clean Rust export completeness audit : 0 candidate(s) KSP workspace Rust rule audit : clean Markdown table audit : clean (340 tables, 831 files) cargo check --workspace : PASS cargo clippy --workspace --all-targets --all-features -- -D warnings : FAIL sur compilation des tests Worker cargo test -p ksp-worker-raw-transaction-ingest-lib : FAIL sur les mêmes 7 diagnostics ``` Diagnostics observés : ```text E0599 : into_yellowstone_source supprimé E0282 : 2 erreurs d'inférence secondaires E0061 : 2 appels build_hydration_provenance sans hydration context E0599 : RawTransactionMaterial::slot absent E0599 : RawTransactionMaterial::signature absent ``` ## Validations dans l'environnement d'assemblage Le toolchain Rust n'est pas disponible dans l'environnement d'assemblage. Les validations statiques KSP exécutables localement et le contrôle exhaustif du delta sont réalisés avant packaging. Les commandes Cargo ne sont pas déclarées PASS localement : ```bash cargo fmt --all -- --check cargo check --workspace cargo clippy --workspace --all-targets --all-features -- -D warnings cargo test -p ksp-worker-raw-transaction-ingest-lib ``` ## Résultats statiques finaux de l'assemblage ```text General Rust rule audit: clean Rust export completeness audit: 0 candidate(s) KSP workspace Rust rule audit: clean Markdown table audit: clean (340 tables, 832 files) Normative rule definitions: 489 Unique normative IDs: 489 Duplicates: 0 ``` ## Gate opérateur avant pre.004 ```bash cargo fmt --all cargo fmt --all -- --check 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 cargo check --workspace cargo clippy --workspace --all-targets --all-features -- -D warnings cargo test -p ksp-worker-raw-transaction-ingest-lib ``` `pre.004` ne doit démarrer qu'après retour vert de ce gate. ## Décisions - Le fix conserve l'encapsulation de `RawTransactionMaterial`; aucun getter n'est ajouté pour satisfaire un test. - Le fix conserve l'aggregate source-neutral introduit en `pre.003`; l'ancien extracteur mono-Yellowstone n'est pas restauré. - Le fix conserve le contexte d'hydration source-neutral et adapte les tests à sa signature actuelle. - Aucun changement fonctionnel de `pre.003` n'est introduit. ## Questions ouvertes ```text aucune ```