v0.3.13-pre.003-fix.001

This commit is contained in:
2026-09-10 13:12:25 +02:00
parent f7ed053e8e
commit 13c3dac554
3 changed files with 219 additions and 7 deletions

View File

@@ -0,0 +1,210 @@
<!-- file: deltas/0.3.13/pre.003-fix.001.md -->
<!-- version: 1 -->
# 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
```