211 lines
6.4 KiB
Markdown
211 lines
6.4 KiB
Markdown
<!-- 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
|
|
```
|