112 lines
4.1 KiB
Markdown
112 lines
4.1 KiB
Markdown
<!-- file: deltas/0.3.15/pre.014.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta v0.3.15-pre.014 — convergence inter-provider diagnostiquable
|
|
|
|
## Base
|
|
|
|
```text
|
|
ksp-general-0.3.15-pre.013.zip
|
|
SHA-256: 4d463230f45a55f68994443f138afd246b6ec34bea21357c2cedfe5d8fe1c5c6
|
|
```
|
|
|
|
Le gate opérateur de `pre.013` est propre et le live ne reproduit plus le `grpc_backpressure_overflow` fermé par cette tranche. Yellowstone devient néanmoins terminal `content_conflict` une fois pendant l'exécution parallèle avec HTTP Block Polling.
|
|
|
|
Le diagnostic de `pre.012-fix.004` prouve que le conflit ne porte ni sur le slot, ni sur `block_time`, ni sur les octets/instructions de transaction, ni sur la version, ni sur `transactionIndex`. Seul `meta.logMessages` diffère. La version déjà canonique provient de `solana_mainnet_public`; la version entrante est hydratée par `publicnode_solana_mainnet_rpc` après trigger Yellowstone, toutes deux en `confirmed`.
|
|
|
|
## Diagnostic ajouté
|
|
|
|
Chaque `getBlock` réussi des voies Yellowstone Block Hydration et HTTP Block Polling émet désormais un diagnostic DEBUG sûr :
|
|
|
|
```text
|
|
domain=raw_transaction_ingest.block_identity
|
|
source_kind
|
|
network
|
|
slot
|
|
provider
|
|
endpoint_id
|
|
commitment
|
|
parent_slot
|
|
block_height
|
|
block_identity_fingerprint
|
|
```
|
|
|
|
`block_identity_fingerprint` est un SHA-256 domain-separated calculé à partir de `blockhash`, `previousBlockhash`, `parentSlot` et `blockHeight`. Les blockhash bruts ne sont jamais journalisés.
|
|
|
|
Lors d'un `content_conflict`, Store complète son masque existant avec :
|
|
|
|
```text
|
|
stored_slot
|
|
incoming_slot
|
|
log_messages_diagnostic_available
|
|
stored_log_messages_state
|
|
incoming_log_messages_state
|
|
stored_log_messages_count
|
|
incoming_log_messages_count
|
|
log_messages_first_mismatch_index
|
|
stored_log_messages_first_kind
|
|
incoming_log_messages_first_kind
|
|
stored_log_messages_first_length
|
|
incoming_log_messages_first_length
|
|
stored_log_messages_prefix_of_incoming
|
|
incoming_log_messages_prefix_of_stored
|
|
stored_log_messages_has_truncation_marker
|
|
incoming_log_messages_has_truncation_marker
|
|
```
|
|
|
|
Les types de ligne sont réduits à une taxonomie statique ; aucun texte arbitraire de log n'est recopié.
|
|
|
|
## Frontières
|
|
|
|
Aucun changement de :
|
|
|
|
```text
|
|
RawTransaction canonical identity
|
|
égalité / content_hash
|
|
politique fail-closed content_conflict
|
|
Store schema
|
|
Transport gRPC / HTTP
|
|
Config
|
|
Desk
|
|
Backfill
|
|
public Worker API
|
|
public Store API
|
|
```
|
|
|
|
`logMessages` reste partie intégrante du payload canonique tant que la cause de la divergence n'est pas prouvée.
|
|
|
|
## Canaris
|
|
|
|
```text
|
|
v0_3_15_pre_014_log_messages_conflict_diagnostic_distinguishes_prefix_truncation_and_line_kind_without_text
|
|
v0_3_15_pre_014_log_messages_conflict_diagnostic_detects_strict_prefix_without_exposing_line_material
|
|
v0_3_15_pre_014_content_conflict_diagnostic_exposes_only_block_slot_and_bounded_log_shape
|
|
v0_3_15_pre_014_cross_provider_block_identity_diagnostic_is_safe_and_covers_both_get_block_routes
|
|
v0_3_15_pre_014_cross_provider_convergence_diagnostic_adds_no_public_worker_surface
|
|
```
|
|
|
|
## Version
|
|
|
|
```text
|
|
workspace.package.version : 0.3.15-pre.14
|
|
root Cargo header counter : 628
|
|
```
|
|
|
|
## Validation attendue
|
|
|
|
```text
|
|
cargo fmt --all
|
|
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/0.3.15
|
|
cargo check --workspace
|
|
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
|
cargo test -p ksp-store-postgres-lib --all-targets --all-features
|
|
cargo test -p ksp-worker-raw-transaction-ingest-lib --all-targets --all-features
|
|
cargo test -p ksp-app-raw-transaction-ingest-desk --all-targets --all-features
|
|
cargo test --workspace --all-targets --all-features
|
|
(cd crates/ksp-app-raw-transaction-ingest-desk && cargo tauri dev)
|
|
```
|
|
|
|
Live : Yellowstone + HTTP Block Polling en `confirmed` jusqu'à reproduction d'un conflit. Au slot annoncé par Store, comparer les deux `block_identity_fingerprint`, puis lire la forme bornée de `logMessages`. Si nécessaire, répéter ensuite la même expérience en `finalized` comme diagnostic de finalité, sans changer le défaut produit par défaut.
|