26 KiB
Validation v0.3.12 — Yellowstone + hydration HTTP + continuité de run du Worker RawTransaction
1. Rôle du document
Ce document enregistre les preuves réellement exécutées, les non-claims et les gates progressifs de 0.3.12. Une commande non exécutée n'est jamais déclarée PASS.
pre.001 est un gate de lecture/audit/sizing. Il ne contient aucun code Worker réseau productif.
2. Gate pre.001 — base stable
2.1 Archive contrôlée
archive : khadhroony-solana-project-v0.3.11.zip
SHA-256 : a6bb59935650a7f48630d12ef80fbd1a44a84819dd129b085ff7f467369535fc
bytes : 8125100
entries : 1950
unzip -t : PASS
root unique : PASS
absolute entries : 0
path traversal : 0
symlinks : 0
.git/ : 0
target/ : 0
node_modules/ : 0
Cargo.lock : 0
.env : 0
workspace members : 21
workspace.package.version : 0.3.11
deltas/0.3.11/rel.001.md est présent.
2.2 Préconditions fonctionnelles
Contrôlé dans la stable :
ksp-worker-raw-transaction-ingest-lib présent
README/USAGE présents
aucun edge Worker -> Transport
aucune source réseau productive dans src/
ksp-raw-transaction-lib présent
ksp-onchain-transport-lib présent avec Yellowstone gRPC générique
ksp-store-lib présent
ksp-job-backfill-lib ne dépend pas du Worker
Résultat : PASS.
3. Baseline statique locale avant modification
Exécuté dans l'archive extraite :
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
Résultat : PASS.
Exécuté :
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))
Résultat : PASS.
4. Cargo local dans l'environnement d'assemblage
cargo n'est pas installé dans l'environnement d'assemblage utilisé pour pre.001.
Non exécuté 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
Ces commandes ne sont pas déclarées PASS localement.
5. Preuve opérateur de la stable 0.3.11
Le journal fourni avec la demande d'ouverture montre sur la stable :
cargo clean : exécuté
cargo fmt --all -- --check : sans erreur visible
audit Rust : clean
audit Markdown : clean (340 tables, 798 fichiers)
cargo check --workspace : terminé sans erreur
cargo clippy --workspace --all-targets --all-features -- -D warnings : terminé sans erreur
cargo test --workspace : suites affichées vertes ; tests live opt-in ignorés conformément à leur contrat
cargo tree Worker normal/features : demandé dans le journal opérateur
Cette preuve opérateur concerne l'état stable d'entrée. Elle n'est pas réétiquetée comme exécution locale de 0.3.12-pre.001.
6. Audit humain des règles
Sources lues pour le gate :
RULES.md
ROADMAP.md
CHANGELOG.md
docs/000-README.md
docs/rules/RULES_GENERAL.md
docs/rules/RULES_KSP.md
docs/rules/RULES_RUST.md
docs/rules/RULES_DEPENDENCIES.md
docs/rules/RULES_DOCUMENTATION.md
docs/rules/FILE_CONTRACTS.md
docs/rules/VERSION_WORKFLOW.md
docs/rules/PROMPT_STRUCTURE.md
Résultat : aucune divergence normative active nécessitant une correction de règle en pre.001.
Vérifications clés :
D2 reste STRUCTURAL
nom Worker canonique = ksp-worker-raw-transaction-ingest-lib
Worker/Job restent séparés
Config reste propriétaire de l'environnement et des secrets
Store backend direct reste interdit au Worker
VER-ID-009 impose 0.3.12-pre.1 pour cette prerelease non-fix
7. Sources internes de handoff auditées
Lecture/inventaire réalisés sur :
docs/plans/032-V0_3_11_RAW_TRANSACTION_INGEST_WORKER_FOUNDATION_PLAN.md
docs/validation/028-V0_3_11_RAW_TRANSACTION_INGEST_WORKER_FOUNDATION.md
crates/ksp-worker-raw-transaction-ingest-lib/Cargo.toml
crates/ksp-worker-raw-transaction-ingest-lib/README.md
crates/ksp-worker-raw-transaction-ingest-lib/USAGE.md
crates/ksp-worker-raw-transaction-ingest-lib/src/
crates/ksp-worker-raw-transaction-ingest-lib/tests/
crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/
docs/architecture/009-ACQUISITION_WORKERS_AND_JOBS.md
docs/architecture/011-RAW_TRANSACTION_ACQUISITION.md
docs/plans/031-V0_3_10_RAW_TRANSACTION_INGEST_PLAN.md
docs/validation/027-V0_3_10_RAW_TRANSACTION_INGEST.md
crates/ksp-raw-transaction-lib/README.md
crates/ksp-raw-transaction-lib/USAGE.md
crates/ksp-raw-transaction-lib/src/
crates/ksp-raw-transaction-lib/tests/
crates/ksp-onchain-transport-lib/Cargo.toml
crates/ksp-onchain-transport-lib/README.md
crates/ksp-onchain-transport-lib/USAGE.md
crates/ksp-onchain-transport-lib/src/grpc_*.rs
crates/ksp-onchain-transport-lib/src/rpc_transactions.rs
crates/ksp-onchain-transport-lib/src/rpc_blocks.rs
crates/ksp-onchain-transport-lib/tests/
crates/ksp-store-lib/README.md
crates/ksp-store-lib/USAGE.md
crates/ksp-store-lib/src/
crates/ksp-worker-api/README.md
crates/ksp-worker-api/USAGE.md
crates/ksp-worker-api/src/
crates/ksp-config-lib/README.md
crates/ksp-config-lib/USAGE.md
crates/ksp-config-lib/src/
Le résultat d'inventaire est détaillé dans le plan 033.
8. Preuve Worker stable
Le Worker stable possède exactement huit fichiers de production sous src/ :
admission.rs
error.rs
identity.rs
lib.rs
persistence.rs
runtime.rs
settings.rs
snapshot.rs
Le manifest normal ne contient pas ksp-onchain-transport-lib, ksp-config-lib, ksp-job-backfill-lib, backend physique, Tonic, Reqwest ni Yellowstone proto.
Un scan source grpc|yellowstone|http|ws|transport ne révèle qu'une documentation signalant l'absence de source live ; aucun adapter réseau productif n'est présent.
Résultat : PASS pour la précondition 0.3.11.
9. Preuve Transport actuelle
Contrats existants confirmés :
YellowstoneGrpcChannel::open_standard_subscribe
SolanaYellowstoneGrpcSubscribeSession::next_update
SolanaYellowstoneGrpcSubscribeSession::snapshot
YellowstoneSubscribeRequest::set_from_slot
YellowstoneReplayInfo::first_available
HttpTransportPool::get_transaction_observed
HttpTransportPool::get_block_observed
HttpObservedValue::{value, endpoint_name, provider}
Le snapshot Yellowstone indique explicitement :
continuity_gap_count : seulement gap prouvé par borne ReplayInfo
replay_attempt_count : tentative, pas preuve de couverture
duplicate_update_count : observabilité, duplicates toujours livrés
last_requested_from_slot
last_observed_slot
Résultat : PASS pour la réutilisation du moteur existant.
10. Audit externe de fraîcheur
10.1 Yellowstone versions
Source docs.rs courante :
yellowstone-grpc-proto latest : 12.7.0
publication : 2026-08-29
workspace KSP : ^12.7
Résultat : aucune mise à jour de dépendance nécessaire en pre.001.
10.2 Replay upstream
Le changelog upstream du 22 juillet 2026 documente la correction yellowstone-grpc-geyser 14.2.1 pour un cas où from_slot + blocks était accepté mais aucun Block replay n'était livré avant reprise live.
Impact de validation :
subscribe accepted != replay proven
from_slot sent != replay proven
first_available compatible != replay proven
Cette menace doit posséder un canari KSP et, si un provider live est disponible, un smoke dédié.
10.3 Solana HTTP
La documentation officielle courante confirme que getTransaction à confirmed/finalized, en Base64, fournit les champs nécessaires à la conversion Common RAW déjà qualifiée : blockTime, meta, slot, transaction, version.
Résultat : hydration getTransaction maintenue comme référence P0.
10.4 Providers
OrbitFlare documente encore Devnet gRPC et un free tier Devnet-only. Helius LaserStream documente Yellowstone wire compatibility et un replay provider-specific d'environ 216 000 slots / 24 heures. Ces valeurs ne sont pas transposées dans les constantes KSP.
PublicNode reste operator-only dans KSP ; aucune nouvelle assertion provider n'est ajoutée faute de source primaire indexée suffisamment précise pendant ce gate.
11. Gate de matrice Yellowstone fermé
11.1 Transaction
Preuve interne : YellowstoneTransactionUpdate contient slot, filter names, created_at et YellowstoneTransactionInfo; ce dernier contient signature, transaction, meta, index.
Conclusion : candidat hydration ; RAW-direct non prouvé.
11.2 TransactionStatus
Preuve interne : slot, signature, index, is_vote, error optionnelle.
Conclusion : discovery/hydration seulement.
11.3 Block
Preuve interne : slot, block_time, transactions avec transaction/meta/signature/index, compteurs et metadata block.
Conclusion : chaque transaction peut devenir candidat hydration ; aucun pipeline block RAW parallèle.
11.4 BlockMeta
Conclusion : continuity/health only ; aucune signature donc aucune hydration transaction autonome.
11.5 Slot
Conclusion : continuity/health only ; aucune admission RAW.
11.6 from_slot
Conclusion : mécanisme Transport de replay au reconnect, pas checkpoint historique Worker.
11.7 ReplayInfo
Conclusion : first_available prouve seulement une limite de rétention. Un gap est prouvé quand la demande est antérieure à cette borne ; le cas inverse ne prouve pas que toutes les updates filtrées ont été livrées.
12. Gate architecture d'injection fermé
Décision :
nouvel edge autorisé : Worker -> ksp-onchain-transport-lib
Worker -> Config : interdit
Worker -> Job : interdit
Worker -> backend : interdit
Worker -> Tonic/Reqwest/yellowstone-grpc-proto direct : non retenu
La composition supérieure construit YellowstoneGrpcChannel, YellowstoneSubscribeRequest, HttpTransportPool et HttpRoleName. pre.002 matérialise exactement :
RawTransactionIngestYellowstoneSource::new(...)
RawTransactionIngestRuntimeResources::new(yellowstone_source)
RawTransactionIngestWorker::start_with_runtime_resources(settings, Arc<Store>, resources)
Les champs restent privés. RawTransactionIngestWorker::start(settings, Arc<Store>) reste disponible comme foundation source-neutral. Aucune API publique enqueue n'est ouverte.
13. Gate hydration/provenance fermé
Hydration P0 :
get_transaction_observed
Base64
confirmed/finalized uniquement
maxSupportedTransactionVersion = 0
Provenance : route composite encodée dans les champs RawAcquisitionProvenance existants, avec provider/endpoint réels du winner HTTP et identité sûre Yellowstone, sous MAX_RAW_CODE_BYTES. Aucune migration Store.
Un code composite impossible à représenter est rejeté ; aucune troncature silencieuse.
14. Gate continuité fermé
Décisions :
Transport high-watermark != Worker processing frontier
processing frontier != blockchain completeness
reconnect != replay
replay != repair
continuity gap prouvé => fault Worker sûr
aucun Backfill automatique
aucun checkpoint persistant inter-process
pending hydration peut survivre au reconnect source dans le même run
Le split pre.007/pre.008 évite de coder frontier et replay semantics dans une seule tranche.
15. Threat model à transformer en tests
Canaris obligatoires :
secret/URL/header redaction
remote status/error text not copied
bounded signal/hydration queues
bounded coalescence
no duplicate HTTP in-flight for same key
no double retry storm
stop during connect/reconnect/hydration/replay
no admission after stop frontier
no orphan task after terminal
counter checked arithmetic
stale frontier never labelled complete
continuity gap terminal and safe
16. Smokes live
16.1 Disponibilité démontrée par le dépôt
Présents et ignored :
yellowstone_orbitflare_smoke
yellowstone_publicnode_smoke
Ils exigent des tokens fournis de manière operator-only.
16.2 Disponibilité opérateur pour pre.001
Aucun secret live n'est fourni dans l'archive. Le journal stable montre ces tests comme ignorés par défaut.
Résultat :
Worker live smoke : NON EXÉCUTÉ en pre.001
raison : pipeline productif pas encore implémenté + secret/provider live non fourni au gate
Aucun faux PASS live n'est enregistré.
17. Graphe Cargo cible vérifiable à partir de pre.002
Attendu :
Worker -> core
Worker -> logging
Worker -> onchain-transport
Worker -> raw-transaction
Worker -> store facade default-features=false
Worker -> worker-api
Worker -> sha2
Worker -> tokio
Toujours absent :
Config
Job Backfill
Store backend
Tauri
provider SDK
Tonic direct
Reqwest direct
Yellowstone proto direct
18. Sizing et décision release
Forecast retenu :
pre.001 audit/sizing/plan
pre.002 Transport resource/source contract
pre.003 Transaction + TransactionStatus signal adapters
pre.004 HTTP hydration + provenance composite
pre.005 Block + BlockMeta + Slot adapters
pre.006 productive source task + supervisor/coalescence
pre.007 processing frontier
pre.008 reconnect/from_slot/ReplayInfo
pre.009 races/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 : 0.3.12 reste ouverte et n'est pas rescindée. Toute tranche dépassant réellement 15–20 minutes est scindée avant exécution.
19. Validation après modification de pre.001
Exécuté 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 pour les audits statiques locaux.
Cargo reste NON EXÉCUTÉ localement car l'outil n'est pas installé.
Le gate opérateur demandé après application du delta est :
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
pre.001 n'ajoutant aucun Rust, les tests ciblés Worker restent une preuve de non-régression facultative mais recommandée :
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
20. Non-claims pre.001
pre.001 ne prétend pas avoir :
ajouté l'edge Worker -> Transport dans Cargo
ouvert une session Yellowstone dans le Worker
hydraté une transaction live
persisté un RAW live Yellowstone
prouvé un RAW-direct Yellowstone
prouvé un replay provider complet
implémenté une frontier
implémenté un repair
enrichi les snapshots runtime
exécuté un smoke live Worker
exécuté Cargo dans l'environnement d'assemblage
21. Critère de sortie pre.001
Le gate est fermé si :
base stable prouvée
règles auditées
surfaces internes inventoriées
fraîcheur externe auditée
matrice Yellowstone fermée
injection runtime décidée
hydration/provenance décidées
frontier/replay/repair distingués
threat model défini
smokes classifiés
Cargo graph cible défini
forecast <20 min par tranche
maintien/split décidé
plan + validation + delta créés
audits statiques post-modification verts
22. Gate opérateur reçu pour pre.001
L'opérateur a exécuté après application de pre.001 :
cargo fmt --all : sans erreur visible
audit Rust : clean
Rust export completeness : 0 candidate
KSP workspace Rust rule audit : clean
audit Markdown : clean (340 tables, 801 fichiers)
cargo check --workspace : PASS visible
cargo clippy --workspace --all-targets --all-features -- -D warnings : PASS visible
Aucun cargo test ou cargo tree n'est présent dans ce journal ; ils ne sont donc pas revendiqués pour ce gate.
Résultat : pre.001 est accepté comme base technique de pre.002.
23. Gate pre.002 — edge Transport + contrats runtime/source
La tranche matérialise exactement :
workspace.package.version = 0.3.12-pre.2
Worker -> ksp-onchain-transport-lib
RawTransactionIngestYellowstoneSource
RawTransactionIngestRuntimeResources
RawTransactionIngestWorker::start_with_runtime_resources(...)
Le constructeur RawTransactionIngestYellowstoneSource::new effectue uniquement des validations déterministes sans I/O :
YellowstoneSubscribeRequest::validate
au moins une famille transactions / transactions_status / blocks
commitment explicite confirmed ou finalized
rôle HTTP configuré compatible avec le request kind get_transaction
cluster identique entre Yellowstone et toutes les routes HTTP compatibles
RawTransactionIngestRuntimeResources conserve un seul source Yellowstone à champs privés et vérifie la cohérence avec RawTransactionIngestSettings.network avant le démarrage.
start_with_runtime_resources préserve également le gate Store/settings existant. En pre.002, il ne démarre volontairement encore aucun source live : les ressources sont validées mais ne sont pas activées, puis le démarrage délègue au runtime source-neutral existant. L'activation du stream reste réservée à pre.006 conformément au plan.
24. Canaris déterministes ajoutés en pre.002
Les preuves statiques/unitaires ajoutées couvrent :
manifest Worker exact avec un seul nouvel edge Transport
aucun Config / Job / backend Store / tonic / reqwest / yellowstone-grpc-proto direct
source confirmed + transaction + getTransaction route accepté
processed et commitment implicite rejetés
absence de famille d'ingestion rejetée
rôle HTTP sans get_transaction rejeté
mismatch cluster Yellowstone/HTTP rejeté
mismatch réseau Worker/source rejeté
Debug sans URL, token, filter name ou client inner
API publique des deux resource types disponible depuis crate root
start_with_runtime_resources disponible depuis crate root
aucun enqueue/send/inner/client getter public
aucun open_standard_subscribe / next_update / get_transaction_observed dans la tranche
Transport confiné à runtime_resources.rs dans les sources Worker
Aucun nouveau code Config, Store backend, Backfill ou provider n'est introduit.
25. Validation locale après modification de pre.002
Exécuté 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
L'audit Markdown est rejoué après création du delta final afin d'inclure le nouveau fichier deltas/0.3.12/pre.002.md.
cargo, rustc et rustfmt ne sont pas installés dans cet environnement ; aucun gate Cargo local n'est revendiqué.
Gate opérateur demandé après application du delta :
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
26. Non-claims pre.002
pre.002 ne prétend pas avoir :
ouvert une session Yellowstone
lu une update Transaction/TransactionStatus/Block
émis un signal Worker privé
appelé getTransaction pour hydration
assemblé une provenance composite
persisté une transaction issue du réseau
coalescé des hydrations
modifié la processing frontier
branché from_slot/replay info
exécuté un smoke live Worker
réconcilié README/USAGE/architecture pour la surface finale 0.3.12
La tranche suivante reste pre.003 : adaptation déterministe Transaction + TransactionStatus vers le signal Worker privé, sans HTTP ni persistence réseau.
27. Gate opérateur reçu pour pre.002
L'opérateur a exécuté après application de pre.002 :
cargo fmt --all : sans erreur visible
audit Rust : clean
Rust export completeness : 0 candidate
KSP workspace Rust rule audit : clean
audit Markdown : clean (340 tables, 802 fichiers)
cargo check --workspace : PASS visible
cargo clippy --workspace --all-targets --all-features -- -D warnings : PASS visible
cargo test -p ksp-worker-raw-transaction-ingest-lib : 41 PASS, 0 fail
cargo tree Worker normal : exécuté et inspecté
cargo tree Worker features : exécuté et inspecté
cargo tree --duplicates : exécuté ; inventaire informatif des versions dupliquées, sans gate d'unicité artificiel
Le graphe confirme que le Worker possède directement uniquement l'edge ksp-onchain-transport-lib; reqwest, tonic, tonic-prost et yellowstone-grpc-proto restent transitifs sous Transport.
Résultat : pre.002 est accepté comme base technique de pre.003.
28. Gate pre.003 — signal privé Transaction + TransactionStatus
La tranche matérialise :
workspace.package.version = 0.3.12-pre.3
projection Yellowstone Transaction -> signal Worker privé
projection Yellowstone TransactionStatus -> même signal Worker privé
aucune ouverture de stream
aucune hydration HTTP
aucune persistence réseau
Le signal reste strictement interne à runtime_resources.rs et n'est ni pub, ni pub(crate), ni réexporté au crate-root.
Sa forme source-neutral actuelle est :
network
signature RawTransactionSignature
slot
transaction_index optionnel
source family Transaction | TransactionStatus
safe Yellowstone source route provider + endpoint_id
matched_filter_count
matched_filter_fingerprint SHA-256 déterministe
created_at source-neutral optionnel seconds+nanos
Aucun transaction body, meta Yellowstone, is_vote, remote error ou payload provider n'est conservé dans ce signal.
29. Projection déterministe des filtres et de la route
Les filter names Yellowstone sont consommés uniquement pour produire un fingerprint Worker-owned. Le calcul :
domain = ksp.raw_transaction_ingest.yellowstone.filters.v1\0
tri lexical des noms
suppression des doublons
nombre de noms uniques encodé u64 big-endian
pour chaque nom : longueur u64 big-endian + bytes UTF-8
SHA-256 final
Le signal conserve séparément le nombre de matches reçu afin de ne pas confondre le fingerprint canonique de l'ensemble et la cardinalité de l'enveloppe reçue.
La source valide aussi dès sa construction que :
cluster Yellowstone -> RawNetworkId représentable
provider Yellowstone -> RawProvenanceCode représentable
endpoint logical name Yellowstone -> RawProvenanceCode représentable
Une identité non représentable est rejetée par une condition Worker stable plutôt que tronquée. Cette fermeture prépare la provenance composite de pre.004 sans modifier Store.
30. Canaris déterministes pre.003
Les nouvelles preuves couvrent :
fixture Transaction : signature/slot/index/network/route/timestamp exacts
fixture TransactionStatus : même forme sans payload ni remote error
fingerprint golden exact
fingerprint indépendant de l'ordre et des doublons de filter names
Debug du signal sans filter name, signature brute, payload ou remote error
provider/endpoint Yellowstone non représentables rejetés
adapters réels typés YellowstoneTransactionUpdate / YellowstoneTransactionStatusUpdate présents
TransactionStatus.error non consulté par l'adapter
signal absent de la façade publique
aucun open_standard_subscribe / next_update / get_transaction_observed
aucun backend Store / reqwest / tonic / proto direct ajouté
La tranche ne modifie pas le graphe Cargo du Worker au-delà de celui déjà accepté en pre.002.
31. Validation locale et non-claims pre.003
Exécuté dans l'environnement d'assemblage après les modifications Rust :
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
L'audit Markdown est rejoué après création du delta final.
cargo, rustc et rustfmt ne sont pas disponibles dans l'environnement d'assemblage ; aucun gate Cargo local n'est inventé.
pre.003 ne prétend pas avoir :
ouvert une session Yellowstone
consommé une update depuis un réseau live
appelé getTransaction
créé une RawTransactionMaterial depuis le réseau
assemblé la provenance composite Yellowstone + HTTP
persisté une transaction issue de Yellowstone
coalescé les hydrations
traité Block / BlockMeta / Slot
modifié la processing frontier
branché from_slot / ReplayInfo
exécuté un smoke live Worker
La tranche suivante reste pre.004 : fermeture déterministe signal -> get_transaction_observed -> Common RAW -> ingress avec missing/mismatch et provenance composite, sans Block ni continuité/replay.
32. Correctif pre.003-fix.001 — helpers préparatoires sans dead code
Le gate opérateur de pre.003 a confirmé que cargo check --workspace et les 45 tests Worker passaient, mais cargo clippy --workspace --all-targets --all-features -- -D warnings échouait sur huit warnings dead_code dans runtime_resources.rs.
Les éléments concernés étaient exclusivement les adapters privés préparatoires de pre.003 et leur fingerprint, encore sans consommateur productif avant pre.004 :
RAW_TRANSACTION_INGEST_YELLOWSTONE_FILTER_FINGERPRINT_DOMAIN
RawTransactionIngestSourceFamily
RawTransactionIngestSourceTimestamp
RawTransactionIngestSourceSignal
RawTransactionIngestYellowstoneSignalView
matched_filter_fingerprint
project_yellowstone_signal
impls Transaction / TransactionStatus associés
Le correctif applique directement RUST-API-008 : ces helpers strictement privés restent présents et couverts par les unit tests de pre.003, mais sont compilés sous #[cfg(test)] jusqu'à leur première consommation de production réelle en pre.004. Aucun #[allow(dead_code)] ni #[expect(dead_code)] n'est ajouté.
Le champ privé route de RawTransactionIngestYellowstoneSource reste, lui, productif : sa validation appartient déjà au contrat de construction pre.003. Il est désormais lu par le Debug sûr de la source, qui n'expose que les RawProvenanceCode déjà bornés et validés.
Le correctif ne change ni la surface publique, ni le graphe Cargo, ni le scope fonctionnel de pre.003, et n'active toujours aucun stream Yellowstone, HTTP ou Store réseau.