Files
khadhroony-solana-project/deltas/0.3.15/pre.009-fix.002.md

6.9 KiB

Delta 0.3.15-pre.009-fix.002

Base requise

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 :

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 :

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 :

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

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

crates/ksp-worker-raw-transaction-ingest-lib/src/constants.rs
deltas/0.3.15/pre.009-fix.002.md

Fichiers modifiés

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

aucun

Validations exécutées dans l'environnement d'assemblage

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 :

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

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 :

RAW transaction ingest live source reached terminal failure

Elle doit désormais contenir :

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

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

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