185 lines
6.9 KiB
Markdown
185 lines
6.9 KiB
Markdown
<!-- file: deltas/0.3.15/pre.009-fix.002.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta `0.3.15-pre.009-fix.002`
|
|
|
|
## Base requise
|
|
|
|
```text
|
|
base archive : khadhroony-solana-project-v0.3.15-pre.009-fix.001.zip
|
|
base SHA-256 : bab416422dd46270b9992868df93c36e2d0547c9a4bbdb5707f3fd2d68c1ecb0
|
|
base version : 0.3.15-pre.9.fix.1
|
|
base delta : deltas/0.3.15/pre.009-fix.001.md
|
|
```
|
|
|
|
L'archive opérateur de base contient le workspace complet et sert uniquement de référence autoritaire de reconstruction. La livraison de ce correctif reste un delta conforme à `VER-ARCHIVE-004`.
|
|
|
|
## Objectif
|
|
|
|
Fermer les deux régressions statiques révélées par le gate opérateur de `pre.009-fix.001` et obtenir le code interne exact des deux `runtime_invalid` encore observés live sur Yellowstone et HTTP Block Polling, sans transformer artificiellement ces faults en `Stopped`.
|
|
|
|
## Résultat du gate `fix.001` pris en compte
|
|
|
|
Le gate opérateur confirme :
|
|
|
|
```text
|
|
Rust rule audit PASS
|
|
Markdown table audit PASS (318 tables / 209 fichiers)
|
|
cargo check --workspace PASS
|
|
Clippy strict workspace PASS
|
|
Raw Transaction Ingest Desk tests PASS
|
|
Worker tests FAIL : 156 PASS / 1 FAIL
|
|
workspace tests FAIL : canari logging en plus du test Worker
|
|
cargo tauri dev lancé avec succès
|
|
```
|
|
|
|
Deux défauts statiques sont certains :
|
|
|
|
```text
|
|
1. le default Worker est passé à 10 s mais le test exact attend encore 5 s ;
|
|
2. la nouvelle cible tracing KSP est littérale dans runtime_resources.rs alors que le workspace exige src/constants.rs.
|
|
```
|
|
|
|
Le live montre également :
|
|
|
|
```text
|
|
yellowstone-hydrated : productif, puis Stop -> runtime_invalid après ~5 s -> Faulted
|
|
http-block-polling : productif ~48 s, puis Stop -> runtime_invalid quasi immédiat -> Faulted
|
|
standard-logs-hydrated : fault avant Stop sur onchain_transport.timeout après rate-limit/cooldown
|
|
standard-block-direct : fault avant Stop sur onchain_transport.rpc_application_error
|
|
helius-transaction-hydrated : fault avant Stop sur onchain_transport.rpc_application_error
|
|
```
|
|
|
|
Le changement de drain à 10 s reste conservé, mais il n'est plus présenté comme preuve de correction du terminal Yellowstone.
|
|
|
|
## Corrections
|
|
|
|
- le test exact des defaults Worker attend désormais `shutdown_drain_timeout = 10 s`, cohérent avec la constante publique déjà introduite par `fix.001` ;
|
|
- la crate Worker possède désormais `src/constants.rs` avec son `TRACING_TARGET` explicite ;
|
|
- `TRACING_TARGET` est réexporté `pub(crate)` par la crate root et consommé via `crate::TRACING_TARGET`, conformément aux règles KSP d'exports partagés ;
|
|
- la trace `RAW transaction ingest live source reached terminal failure` projette désormais le contexte interne statique `condition` lorsqu'il existe ;
|
|
- `condition` reste borné aux valeurs créées par `runtime_error` et ne transporte aucune URL, credential, signature, payload, identité physique ou texte provider arbitraire ;
|
|
- un test unitaire verrouille cette projection sûre.
|
|
|
|
## Non-claims
|
|
|
|
Ce correctif ne prétend pas encore corriger la cause fonctionnelle des `runtime_invalid` Yellowstone et HTTP Block Polling. Le gate live suivant doit relever la nouvelle valeur `condition` avant toute correction ciblée.
|
|
|
|
Les faults `timeout` et `rpc_application_error` des trois autres routes restent distincts du shutdown et ne sont pas reclassés.
|
|
|
|
## Version
|
|
|
|
```text
|
|
header racine : 615 -> 616
|
|
workspace.package.version : 0.3.15-pre.9.fix.1 -> 0.3.15-pre.9.fix.2
|
|
livraison : 0.3.15-pre.009-fix.002
|
|
```
|
|
|
|
## Fichiers ajoutés
|
|
|
|
```text
|
|
crates/ksp-worker-raw-transaction-ingest-lib/src/constants.rs
|
|
deltas/0.3.15/pre.009-fix.002.md
|
|
```
|
|
|
|
## Fichiers modifiés
|
|
|
|
```text
|
|
Cargo.toml
|
|
crates/ksp-worker-raw-transaction-ingest-lib/src/lib.rs
|
|
crates/ksp-worker-raw-transaction-ingest-lib/src/runtime_resources.rs
|
|
crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/runtime_resources.rs
|
|
crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/settings.rs
|
|
docs/plans/036-V0_3_15_RAW_TRANSACTION_INGEST_DESK_PLAN.md
|
|
docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md
|
|
```
|
|
|
|
## Fichiers supprimés
|
|
|
|
```text
|
|
aucun
|
|
```
|
|
|
|
## Validations exécutées dans l'environnement d'assemblage
|
|
|
|
```text
|
|
python3 scripts/audit_rust_workspace_rules.py
|
|
General Rust rule audit: clean
|
|
Rust export completeness audit: 0 candidate(s)
|
|
KSP workspace Rust rule audit: clean
|
|
|
|
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.3.15
|
|
Markdown table audit: clean (318 tables / 210 fichiers)
|
|
|
|
canari statique cible tracing Worker
|
|
aucun target littéral ksp-* hors constants.rs
|
|
constante attendue présente dans src/constants.rs
|
|
```
|
|
|
|
## Validations non exécutées dans l'environnement d'assemblage
|
|
|
|
`cargo` et `rustfmt` ne sont pas disponibles dans cet environnement. Les commandes suivantes ne sont donc pas déclarées PASS pour `fix.002` :
|
|
|
|
```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
|
|
cargo test -p ksp-core-lib --test workspace_logging
|
|
cargo test --workspace --all-targets --all-features
|
|
cargo tauri dev
|
|
```
|
|
|
|
## Gate opérateur requis
|
|
|
|
```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/0.3.15
|
|
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
|
|
cargo test -p ksp-core-lib --test workspace_logging
|
|
cargo test --workspace --all-targets --all-features
|
|
(cd crates/ksp-app-raw-transaction-ingest-desk && cargo tauri dev)
|
|
```
|
|
|
|
Pour le live Mainnet, tester au minimum `yellowstone-hydrated` puis `http-block-polling`, demander Stop et copier la ligne :
|
|
|
|
```text
|
|
RAW transaction ingest live source reached terminal failure
|
|
```
|
|
|
|
Elle doit désormais contenir :
|
|
|
|
```text
|
|
source_kind
|
|
error_domain
|
|
error_code
|
|
condition
|
|
transport_domain
|
|
transport_code
|
|
```
|
|
|
|
Si les deux routes terminent encore `Faulted`, la valeur `condition` devient l'entrée autoritaire du prochain correctif.
|
|
|
|
## Décisions
|
|
|
|
```text
|
|
conserver shutdown_drain_timeout par défaut à 10 s
|
|
ne pas masquer un runtime_invalid pendant Stop
|
|
posséder toute cible tracing KSP dans src/constants.rs
|
|
projeter seulement le condition code interne statique pour diagnostiquer runtime_invalid
|
|
```
|
|
|
|
## Questions ouvertes
|
|
|
|
```text
|
|
condition exacte du runtime_invalid Yellowstone au Stop
|
|
condition exacte du runtime_invalid HTTP Block Polling au Stop
|
|
qualification provider/capability des rpc_application_error Standard Block et Helius
|
|
stratégie de débit pour Standard Logs face au rate-limit du RPC public
|
|
```
|