Files
2026-09-08 23:44:19 +02:00

8.3 KiB
Raw Permalink Blame History

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 <= 1520 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 1520 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