Files
khadhroony-solana-project/deltas/0.3.10/pre.006-fix.001.md

167 lines
6.4 KiB
Markdown

<!-- file: deltas/0.3.10/pre.006-fix.001.md -->
<!-- version: 1 -->
# Delta `0.3.10-pre.006-fix.001` — corrections Rust du gate `pre.006` + recalibrage du sizing
## Base requise
```text
0.3.10-pre.006
```
L'archive opérateur `khadhroony-solana-project- v0.3.10-pre.006.zip` est la base autoritaire de ce correctif.
## Objectif
Corriger strictement les défauts Rust révélés par le premier gate opérateur de `pre.006` sans modifier le contrat RAW V1, les goldens, la décision Yellowstone ni les dépendances de production, puis corriger le plan devenu surdimensionné avant toute implémentation lourde du Worker.
Le gate opérateur a révélé trois familles de défauts dans la responsabilité `pre.006` :
```text
clippy::collapsible_if dans la validation V1 du heap size
assert_eq! sur Result<&str, &Error> exigeant à tort PartialEq sur Error
canari Yellowstone utilisant Error::new avec un &str et formatant ErrorCode via Display inexistant
```
## Version
Le correctif modifie du Rust et synchronise donc la version technique Cargo conformément à `VER-ID-007` et `VER-ID-010` :
```text
workspace.package.version = 0.3.10-pre.6.fix.1
```
## Corrections Rust
`ksp-raw-transaction-lib/src/wire.rs` applique la forme Clippy proposée pour la garde `heap_size` V1 sans modifier les bornes ni le résultat fonctionnel.
`unit_tests/wire.rs` conserve exactement les quatre golden Base64 mais compare les succès par pattern matching, sans imposer `PartialEq` au type d'erreur KSP.
`yellowstone_raw_parity.rs` construit désormais l'erreur de projection test-only avec un `ErrorCode` structuré et formate les codes d'erreur explicitement via `domain()` + `code()`. Aucun code d'erreur public de production n'est ajouté.
## Recalibrage du sizing
Le plan initial associait dans `0.3.10` deux moitiés devenues nettement séparables :
```text
common RAW + migration/parités = déjà matérialisées en pre.002 à pre.006
runtime Worker + sources + repair = pas encore commencé
```
Les anciennes tranches `pre.007` à `pre.011` cumulaient plusieurs responsabilités chacune et ne respectaient plus le budget normatif d'environ 15 à 20 minutes. La clôture de toute la mission initiale dans une seule session devenait également incertaine.
Le redécoupage durable retenu est donc :
```text
0.3.10 = common RAW + observed block + qualification HTTP/WS/Helius/Yellowstone
0.3.11 = Worker foundation/runtime + persistence déterministe
0.3.12 = Yellowstone + hydration HTTP + continuity
0.3.13 = WS/Helius/HTTP live + convergence multi-source
0.3.14 = gap repair/hardening + smokes provider accessibles
0.3.15 = Desk d'ingestion
0.3.16 = Backfill multi-source/multi-stratégie
```
La queue de fermeture de `0.3.10` devient :
```text
pre.007 = gate technique final, budget 15-20 min
pre.008 = réconciliation documentaire, budget 10-15 min
pre.009 = préparation de publication, budget 5-10 min
rel.001 = publication stable mécanique
```
Chaque nouvelle release Worker recommencera par sa propre `pre.001` de sizing et devra scinder toute prerelease estimée au-delà du budget.
## Vérification de l'archive
Exécuté sur l'archive autoritaire avant modification :
```text
unzip -t : PASS
racine ZIP unique : PASS
chemins absolus/traversal : 0
symlinks : 0
workspace.package.version base : 0.3.10-pre.6
prompt 029 présent : PASS
règles obligatoires présentes : PASS
```
## Validations exécutées
Après les corrections Rust et le recalibrage documentaire :
```bash
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.10
```
Résultats :
```text
General Rust rule audit : clean
Rust export completeness audit : 0 candidate(s)
KSP workspace Rust rule audit : clean
Markdown table audit : clean
```
Les contrôles structurels ont également vérifié que le delta ne contient aucun chemin d'archive dangereux et que les références durables principales du nouveau découpage sont cohérentes.
## Validations non exécutées dans l'environnement d'assemblage
L'environnement d'assemblage ne fournit ni `cargo`, ni `rustc`, ni `rustfmt`. Les commandes suivantes ne sont donc **pas** déclarées PASS ici :
```bash
cargo fmt --all
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test -p ksp-raw-transaction-lib
cargo test -p ksp-onchain-transport-lib
cargo test -p ksp-job-backfill-lib
cargo tree -p ksp-job-backfill-lib --edges normal
cargo tree -p ksp-job-backfill-lib --edges dev
cargo tree -p ksp-job-backfill-lib -e features
```
Elles constituent le rejeu opérateur requis pour fermer le fix.
## Fichiers ajoutés
```text
deltas/0.3.10/pre.006-fix.001.md
```
## Fichiers modifiés
```text
Cargo.toml
ROADMAP.md
crates/ksp-job-backfill-lib/tests/yellowstone_raw_parity.rs
crates/ksp-raw-transaction-lib/src/wire.rs
crates/ksp-raw-transaction-lib/unit_tests/wire.rs
docs/architecture/004-COMPONENT_INVENTORY.md
docs/architecture/005-DEPENDENCY_GRAPH.md
docs/architecture/009-ACQUISITION_WORKERS_AND_JOBS.md
docs/architecture/010-APPS_SERVICES_SCENARIOS_AND_CONTROL.md
docs/architecture/011-RAW_TRANSACTION_ACQUISITION.md
docs/plans/031-V0_3_10_RAW_TRANSACTION_INGEST_PLAN.md
docs/validation/027-V0_3_10_RAW_TRANSACTION_INGEST.md
```
## Fichiers supprimés
Aucun.
## Décisions prises
- Les goldens Legacy/V0/V1 et le contrat RAW V1 de `pre.006` ne changent pas.
- Le canari Yellowstone reste test-only et n'ajoute aucun nouvel edge productif.
- `0.3.10` est réduit à la common RAW et aux qualifications cross-source déjà matérialisées avant ouverture du runtime Worker.
- Le Worker concret est réparti sur `0.3.11` à `0.3.14` afin de respecter une release concrète par session et des prereleases bornées.
- La Desk et le Backfill multi-source sont décalés respectivement à `0.3.15` et `0.3.16`.
- Les anciens prompts/plans de releases déjà ouvertes restent des traces historiques et ne sont pas réécrits rétroactivement uniquement pour refléter ce recalibrage.
## Questions ouvertes
Aucune question fonctionnelle nouvelle pour ce fix. Le prochain gate est le rejeu Rust opérateur du correctif, puis `pre.007` si ce rejeu est vert.