v0.3.12-pre.002
This commit is contained in:
261
deltas/0.3.12/pre.002.md
Normal file
261
deltas/0.3.12/pre.002.md
Normal file
@@ -0,0 +1,261 @@
|
||||
<!-- file: deltas/0.3.12/pre.002.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.3.12-pre.002` — edge Transport + contrats runtime/source Yellowstone
|
||||
|
||||
## Base requise
|
||||
|
||||
```text
|
||||
0.3.12-pre.001
|
||||
workspace.package.version = 0.3.12-pre.1
|
||||
```
|
||||
|
||||
Le gate opérateur communiqué pour `pre.001` est vert sur :
|
||||
|
||||
```text
|
||||
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` :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
workspace.package.version = 0.3.12-pre.2
|
||||
```
|
||||
|
||||
## Graphe Worker normal attendu
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
YellowstoneGrpcChannel
|
||||
YellowstoneSubscribeRequest
|
||||
HttpTransportPool
|
||||
HttpRoleName d'hydration
|
||||
```
|
||||
|
||||
`RawTransactionIngestYellowstoneSource::new(...)` valide sans I/O :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
RawTransactionIngestWorker::start_with_runtime_resources(
|
||||
settings,
|
||||
Arc<Store>,
|
||||
RawTransactionIngestRuntimeResources,
|
||||
)
|
||||
```
|
||||
|
||||
La méthode conserve :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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é
|
||||
|
||||
```bash
|
||||
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 :
|
||||
|
||||
```text
|
||||
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.
|
||||
Reference in New Issue
Block a user