173 lines
5.0 KiB
Markdown
173 lines
5.0 KiB
Markdown
<!-- file: deltas/0.3.14/pre.007-fix.001.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta `0.3.14-pre.007-fix.001` — correction `large_enum_variant`
|
|
|
|
## Base requise
|
|
|
|
```text
|
|
0.3.14-pre.007
|
|
workspace.package.version = 0.3.14-pre.7
|
|
deltas/0.3.14/pre.007.md présent
|
|
```
|
|
|
|
## Objectif
|
|
|
|
Corriger strictement la tranche `pre.007` après le gate opérateur, sans modifier sa responsabilité fonctionnelle :
|
|
|
|
```text
|
|
faire passer Clippy -D warnings sans allow/expect
|
|
conserver exactement la distinction Available/Missing de l'hydration known-reference
|
|
conserver le registre global d'hydration unique
|
|
ne pas avancer la réconciliation prévue en pre.008
|
|
```
|
|
|
|
## Défaut observé
|
|
|
|
Le gate opérateur sur `0.3.14-pre.7` a produit :
|
|
|
|
```text
|
|
cargo fmt --all : PASS
|
|
cargo fmt --all -- --check : PASS
|
|
audit Rust workspace rules : PASS
|
|
audit Markdown tables : PASS
|
|
cargo check --workspace : PASS
|
|
cargo clippy --workspace --all-targets --all-features -- -D warnings : FAIL
|
|
cargo test -p ksp-worker-raw-transaction-ingest-lib --all-targets --all-features : PASS
|
|
```
|
|
|
|
Clippy refuse `RawTransactionIngestKnownReferenceHydrationResolution` avec `clippy::large_enum_variant` :
|
|
|
|
```text
|
|
Available(RawTransactionIngress) : au moins 488 octets
|
|
Missing { ... } : au moins 105 octets
|
|
```
|
|
|
|
Les `133` unit tests Worker ainsi que les suites d'intégration exécutées passent ; le défaut est donc un défaut de représentation mémoire détecté par le gate strict, pas un échec fonctionnel observé.
|
|
|
|
## Cause
|
|
|
|
`pre.007` transporte directement `RawTransactionIngress` dans la variante `Available` de l'enum privé de résolution known-reference.
|
|
|
|
`RawTransactionIngress` est nettement plus volumineux que la variante `Missing`, ce qui force chaque valeur de l'enum à avoir la taille de la variante la plus grande et déclenche le lint `large_enum_variant` sous `-D warnings`.
|
|
|
|
## Correction
|
|
|
|
La variante disponible devient :
|
|
|
|
```text
|
|
Available(Box<RawTransactionIngress>)
|
|
```
|
|
|
|
La valeur est boxée uniquement au moment où `finalize_hydration` fournit un ingress disponible, puis immédiatement déboxée au point de consommation avant admission dans le pipeline commun.
|
|
|
|
Le unit test `pre.007` qui injecte directement cette résolution dans `RawTransactionAdmission` déboxe également la valeur.
|
|
|
|
Aucune variante, disposition, obligation, clé de coalescence, requête HTTP, provenance ou décision de runtime ne change.
|
|
|
|
## Fichiers ajoutés
|
|
|
|
```text
|
|
deltas/0.3.14/pre.007-fix.001.md
|
|
```
|
|
|
|
## Fichiers modifiés
|
|
|
|
```text
|
|
Cargo.toml
|
|
crates/ksp-worker-raw-transaction-ingest-lib/src/runtime_resources.rs
|
|
crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/runtime_resources.rs
|
|
```
|
|
|
|
## Fichiers supprimés
|
|
|
|
```text
|
|
aucun
|
|
```
|
|
|
|
## Version Cargo
|
|
|
|
Le fix modifie du code Rust ; conformément à `VER-ID-007` et `VER-ID-010` :
|
|
|
|
```text
|
|
header Cargo.toml : 574 -> 575
|
|
workspace.package.version : 0.3.14-pre.7 -> 0.3.14-pre.7.fix.1
|
|
```
|
|
|
|
Versions de fichiers :
|
|
|
|
```text
|
|
src/runtime_resources.rs : 33 -> 34
|
|
unit_tests/runtime_resources.rs : 27 -> 28
|
|
```
|
|
|
|
## Frontières préservées
|
|
|
|
```text
|
|
aucune nouvelle tâche
|
|
aucun nouveau scheduler
|
|
aucun nouveau registre d'hydration
|
|
aucun nouveau retry Worker
|
|
aucune nouvelle requête HTTP
|
|
aucune nouvelle dépendance
|
|
aucune nouvelle feature
|
|
aucun accès Config depuis Worker
|
|
aucun accès Job Backfill depuis Worker
|
|
aucun backend Store physique depuis Worker
|
|
aucune extension de surface publique
|
|
aucune intégration anticipée du gap ledger/supervisor de pre.008
|
|
```
|
|
|
|
## Validations exécutées
|
|
|
|
Dans le sandbox de préparation :
|
|
|
|
```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
|
|
scan des usages de RawTransactionIngestKnownReferenceHydrationResolution
|
|
comparaison exacte pre.007 -> pre.007-fix.001
|
|
contrôle du contenu de l'archive delta
|
|
unzip -t de l'archive delta
|
|
```
|
|
|
|
## Validations non exécutées
|
|
|
|
Le sandbox de préparation ne fournit pas le toolchain Cargo/Rust. Les gates suivants restent à exécuter côté opérateur :
|
|
|
|
```text
|
|
cargo fmt --all
|
|
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 --all-targets --all-features
|
|
```
|
|
|
|
## Décisions prises
|
|
|
|
```text
|
|
fix strict de pre.007
|
|
indirection uniquement sur la grosse variante Available
|
|
aucun allow/expect Clippy
|
|
aucune modification fonctionnelle de l'hydration known-reference
|
|
pre.008 reste la première tranche autorisée à intégrer la réconciliation au supervisor/gap ledger
|
|
```
|
|
|
|
## Questions ouvertes
|
|
|
|
```text
|
|
aucune pour ce fix
|
|
```
|
|
|
|
## Gate opérateur après application
|
|
|
|
```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 --all-targets --all-features
|
|
```
|