7.3 KiB
Delta 0.3.12-pre.002 — edge Transport + contrats runtime/source Yellowstone
Base requise
0.3.12-pre.001
workspace.package.version = 0.3.12-pre.1
Le gate opérateur communiqué pour pre.001 est vert sur :
cargo fmt --all
Rust rule audit
Markdown table audit
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
Le journal ne contient pas de cargo test ni de cargo tree ; ces commandes ne sont pas inventées comme PASS.
Objectif
Ouvrir uniquement le nouvel edge de production décidé en pre.001 :
ksp-worker-raw-transaction-ingest-lib -> ksp-onchain-transport-lib
et matérialiser les contrats Worker-owned nécessaires à la future source Yellowstone + hydration HTTP, sans ouvrir de stream ni exécuter de requête réseau.
Version
Cette tranche est une prerelease non-fix :
workspace.package.version = 0.3.12-pre.2
Graphe Worker normal attendu
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
Toujours interdits directement au Worker :
ksp-config-lib
ksp-job-api
ksp-job-backfill-lib
ksp-store-api
ksp-store-postgres-lib
reqwest
tokio-tungstenite
tonic
yellowstone-grpc-proto
SDK provider
Nouveau contrat RawTransactionIngestYellowstoneSource
Le type public à champs privés possède :
YellowstoneGrpcChannel
YellowstoneSubscribeRequest
HttpTransportPool
HttpRoleName d'hydration
RawTransactionIngestYellowstoneSource::new(...) valide sans I/O :
request Yellowstone valide
au moins une famille transactions / transactions_status / blocks
commitment explicite confirmed ou finalized
présence d'une route HTTP configurée compatible get_transaction
cohérence cluster entre Yellowstone et toutes les routes HTTP compatibles
Les erreurs de composition sont projetées sur worker_raw_transaction_ingest.runtime_invalid avec uniquement une condition stable et sûre.
Nouveau contrat RawTransactionIngestRuntimeResources
RawTransactionIngestRuntimeResources::new(yellowstone_source) possède exactement cette première famille runtime.
Aucune collection multi-source, enum provider, closure source, callback public, enqueue, send, getter de client interne ou backend n'est exposé.
La ressource valide également la cohérence entre le réseau du source composé et RawTransactionIngestSettings.network avant le démarrage.
Nouveau start de composition
Ajout :
RawTransactionIngestWorker::start_with_runtime_resources(
settings,
Arc<Store>,
RawTransactionIngestRuntimeResources,
)
La méthode conserve :
runtime Tokio caller-owned
validation réseau Store/settings
validation réseau Worker/source
handle/snapshot/shutdown existants
En pre.002, les ressources sont volontairement validées mais ne sont pas activées avant délégation au runtime source-neutral existant. Cela ferme l'API de composition sans anticiper pre.006.
Absence volontaire de comportement live
Les canaris interdisent dans cette tranche :
open_standard_subscribe
next_update
get_transaction_observed
get_block_observed
source task spawn spécifique
nouveau JoinSet
HTTP hydration
persistence issue du réseau
pre.003 reste donc libre d'introduire uniquement les adapters déterministes Transaction/TransactionStatus, tandis que l'activation productive de la source reste réservée à pre.006.
Sécurité et redaction
Le Debug des ressources expose uniquement des métadonnées sûres :
logical Yellowstone endpoint name
provider
network
filter counts
commitment
presence from_slot
hydration role
HTTP endpoint count
Il n'expose ni URL, token, header, filter name ni client interne.
Tests déterministes ajoutés :
acceptation confirmed + transaction + get_transaction
rejet processed
rejet commitment implicite
rejet absence de famille ingestion-bearing
rejet rôle HTTP non compatible
rejet mismatch Yellowstone/HTTP cluster
rejet mismatch Worker/source network
Debug redaction
public API/root contract
manifest/dependency firewall
Transport confiné à runtime_resources.rs
absence de live I/O en pre.002
Décisions prises
un seul nouvel edge productif Worker -> Onchain Transport
composition fournie par l'appelant, sans dépendance Worker -> Config
ressources Transport encapsulées par des types Worker-owned à champs privés
commitment de la future hydration limité à confirmed/finalized dès la composition
aucune activation réseau avant la tranche productive prévue
Questions ouvertes
Aucune question ouverte n'est bloquante pour pre.002. Les choix volontairement reportés restent ceux du plan actif : forme exacte du signal privé Transaction/TransactionStatus en pre.003, provenance Yellowstone + hydration en pre.004, puis continuité/replay dans les tranches dédiées.
Fichiers ajoutés
crates/ksp-worker-raw-transaction-ingest-lib/src/runtime_resources.rs
crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/runtime_resources.rs
deltas/0.3.12/pre.002.md
Fichiers modifiés
Cargo.toml
crates/ksp-worker-raw-transaction-ingest-lib/Cargo.toml
crates/ksp-worker-raw-transaction-ingest-lib/src/lib.rs
crates/ksp-worker-raw-transaction-ingest-lib/src/runtime.rs
crates/ksp-worker-raw-transaction-ingest-lib/tests/dependency_boundary.rs
crates/ksp-worker-raw-transaction-ingest-lib/tests/hardening.rs
crates/ksp-worker-raw-transaction-ingest-lib/tests/public_api.rs
crates/ksp-worker-raw-transaction-ingest-lib/tests/release_completeness.rs
docs/validation/029-V0_3_12_YELLOWSTONE_HYDRATION_CONTINUITY.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
Markdown table audit: clean (340 table(s), 802 file(s))
cargo, rustc et rustfmt ne sont pas installés dans l'environnement d'assemblage. Aucun gate Cargo local n'est déclaré PASS.
Gate opérateur demandé
cargo fmt --all
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
cargo tree --duplicates
Non-claims
Cette tranche ne revendique pas :
session Yellowstone ouverte
signal Transaction/TransactionStatus produit
hydration HTTP exécutée
provenance composite assemblée
coalescence d'hydration
frontier/replay/repair
smoke live Worker
réconciliation documentaire finale README/USAGE/architecture
Suite
Après gate opérateur vert, pre.003 adapte uniquement YellowstoneTransactionUpdate et YellowstoneTransactionStatusUpdate vers le signal Worker privé prévu par le plan, sans HTTP ni persistence réseau.