8.3 KiB
Delta 0.3.12-pre.001 — audit Yellowstone, hydration HTTP et continuité Worker
Base
archive : khadhroony-solana-project-v0.3.11.zip
SHA-256 : a6bb59935650a7f48630d12ef80fbd1a44a84819dd129b085ff7f467369535fc
ZIP bytes : 8125100
ZIP entries : 1950
unzip -t : PASS
workspace members : 21
workspace.package.version base : 0.3.11
stable delta : deltas/0.3.11/rel.001.md
Le ZIP a une racine unique et a été contrôlé sans entrée absolue, path traversal, symlink, .git/, target/, node_modules/, Cargo.lock ou .env.
Préconditions du prompt 031 confirmées :
Worker RawTransaction présent et documenté
aucune source réseau productive Worker stable
Common RAW présente
Transport Yellowstone générique présent
Store facade présente
Backfill indépendant du Worker
Type de livraison
ksp-general-0.3.12-pre.001.zip
Le type general est requis par le bump Cargo.toml de toute prerelease non-fix (VER-ID-009). L'archive d'échange contient uniquement les fichiers ajoutés/modifiés par cette tranche et son delta.
Baseline exécutée avant modification
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
Markdown table audit: clean (340 table(s), 798 file(s))
Objectif
Exécuter le gate pre.001 de prompts/031-V0_3_12_START_PROMPT.md : audit complet de la stable et des règles, inventaire Worker/Transport/Common RAW/Store/Config, fraîcheur Yellowstone/Solana/providers/crates, matrice des signaux, architecture d'injection, hydration/provenance, continuité/frontier, threat model, smokes, graphe Cargo et sizing, sans implémentation réseau productive.
Audit des règles
Aucune contradiction normative active n'a été trouvée dans les règles courantes. Aucun fichier de règles n'est modifié.
Contraintes fermées :
Worker/Job séparés
Config seul propriétaire des endpoints/secrets/composition
Store facade seulement
pas de public enqueue
pas de second moteur Yellowstone
nouvelle prerelease => Cargo 0.3.12-pre.1
tranches <= 15–20 minutes
Décisions fermées
Edge et injection
seul nouvel edge autorisé : Worker -> ksp-onchain-transport-lib
Worker -> Config reste interdit
Worker -> Backfill reste interdit
caller supérieur construit channel/request Yellowstone + pool/role HTTP
RawTransactionIngestYellowstoneSource + RawTransactionIngestRuntimeResources retenus
start stable source-neutral conservé
start_with_runtime_resources(settings, Arc<Store>, resources) retenu
Matrice Yellowstone
Transaction -> candidat hydration
TransactionStatus -> candidat hydration
Block transactions-> candidats hydration
BlockMeta -> continuity/health seulement
Slot -> continuity/health seulement
from_slot -> reconnect/replay Transport, pas checkpoint historique
ReplayInfo -> borne de rétention seulement
RAW/hydration
RAW-direct Yellowstone non prouvé et interdit en P0
get_transaction_observed = hydration P0
Base64 + confirmed/finalized + maxSupportedTransactionVersion=0
processed exclu du chemin hydraté P0
get_block_observed non requis au P0
Provenance
Le modèle Store existant est conservé sans migration. La route multi-hop est représentée par des codes sûrs composites yellowstone_http contenant les identités logiques Yellowstone et le winner HTTP, toutes bornées par RawProvenanceCode. Aucune URL/token/header n'est conservé.
Continuité
Transport high-watermark != Worker processing frontier
processing frontier != blockchain completeness
reconnect != replay != repair
replay attempt != preuve de couverture
continuity gap prouvé par ReplayInfo => fault sûr
aucun Backfill/repair automatique en 0.3.12
frontier run-local, non persistante
Fraîcheur externe du 8 septembre 2026
yellowstone-grpc-proto latest = 12.7.0 (2026-08-29)
workspace = ^12.7 => aucun bump requis
Solana getTransaction fournit blockTime/meta/slot/transaction/version
Solana getBlock reste disponible mais non requis au P0
OrbitFlare documente Devnet gRPC et free Devnet-only
Helius LaserStream documente Yellowstone compatibility et replay provider-specific ~216k slots/~24h
Le changelog Yellowstone du 22 juillet 2026 corrige un défaut from_slot + blocks pouvant reprendre au live head sans rejouer les Blocks. KSP ne considérera donc jamais l'acceptation de from_slot comme une preuve de continuité.
Smokes
Smokes Transport existants :
OrbitFlare Devnet : opt-in, token opérateur
PublicNode Mainnet/Testnet : opt-in, tokens opérateur
Aucun secret live n'est fourni dans l'archive. Aucun smoke Worker n'est exécuté en pre.001 et aucun faux PASS live n'est déclaré.
Graphe Cargo cible
Après pre.002 :
ksp-worker-raw-transaction-ingest-lib
-> ksp-core-lib
-> ksp-logging-lib
-> ksp-onchain-transport-lib
-> ksp-raw-transaction-lib
-> ksp-store-lib default-features=false
-> ksp-worker-api
-> sha2
-> tokio macros,rt,sync,time
Pas d'edge Worker direct vers Config, Backfill, Store backend, Tonic, Reqwest, Yellowstone proto ou SDK provider.
Sizing recalibré
pre.002 Transport resource/source contract
pre.003 Transaction + TransactionStatus adapters
pre.004 HTTP hydration + provenance
pre.005 Block + BlockMeta + Slot
pre.006 source task + supervisor/coalescence
pre.007 processing frontier
pre.008 reconnect/from_slot/ReplayInfo
pre.009 race/retry/backpressure hardening
pre.010 cross-layer completeness/security
pre.011 technical/live gate
pre.012 documentation reconciliation
pre.013 publication preparation
rel.001
Décision : maintenir 0.3.12. Le split frontier/replay évite une tranche de continuité trop large ; toute tranche dépassant réellement 15–20 minutes sera encore scindée avant exécution.
Fichiers ajoutés
docs/plans/033-V0_3_12_YELLOWSTONE_HYDRATION_CONTINUITY_PLAN.md
docs/validation/029-V0_3_12_YELLOWSTONE_HYDRATION_CONTINUITY.md
deltas/0.3.12/pre.001.md
Fichiers modifiés
Cargo.toml
Versions :
Cargo.toml : 518 -> 519
workspace.package.version : 0.3.11 -> 0.3.12-pre.1
Le bump Cargo est requis par VER-ID-009 pour une prerelease non-fix, même si la tranche ne modifie aucun Rust.
Fichiers supprimés
aucun
Validation après modification
Audits statiques réellement exécutés sur le delta complet :
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
Markdown table audit: clean (340 table(s), 801 file(s))
Résultat : PASS.
Validations non exécutées localement
cargo n'est pas installé dans l'environnement d'assemblage. Ne sont donc pas déclarés PASS localement :
cargo fmt --all -- --check
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace --all-targets --all-features
cargo tree --duplicates
Le journal opérateur fourni avec la stable montre un gate Cargo complet vert sur 0.3.11; cette preuve reste distincte du delta 0.3.12-pre.001.
Gate opérateur demandé
Après application :
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
cargo tree -p ksp-worker-raw-transaction-ingest-lib --edges normal
cargo tree -p ksp-worker-raw-transaction-ingest-lib -e features
Questions reportées
RAW-direct Yellowstone après preuve byte-exact
retry Worker borné spécifique au null getTransaction
multi-source redundancy/failover
hot listener reconfiguration complète
repair automatique 0.3.14
checkpoint durable inter-process
provider-specific capabilities permanentes