271 lines
8.3 KiB
Markdown
271 lines
8.3 KiB
Markdown
<!-- file: deltas/0.3.12/pre.001.md -->
|
||
<!-- version: 1 -->
|
||
|
||
# Delta 0.3.12-pre.001 — audit Yellowstone, hydration HTTP et continuité Worker
|
||
|
||
## Base
|
||
|
||
```text
|
||
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 :
|
||
|
||
```text
|
||
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
|
||
|
||
```text
|
||
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
|
||
|
||
```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), 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 :
|
||
|
||
```text
|
||
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 <= 15–20 minutes
|
||
```
|
||
|
||
## Décisions fermées
|
||
|
||
### Edge et injection
|
||
|
||
```text
|
||
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
|
||
|
||
```text
|
||
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
|
||
|
||
```text
|
||
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é
|
||
|
||
```text
|
||
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
|
||
|
||
```text
|
||
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 :
|
||
|
||
```text
|
||
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` :
|
||
|
||
```text
|
||
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é
|
||
|
||
```text
|
||
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 15–20 minutes sera encore scindée avant exécution.
|
||
|
||
## Fichiers ajoutés
|
||
|
||
```text
|
||
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
|
||
|
||
```text
|
||
Cargo.toml
|
||
```
|
||
|
||
Versions :
|
||
|
||
```text
|
||
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
|
||
|
||
```text
|
||
aucun
|
||
```
|
||
|
||
## Validation après modification
|
||
|
||
Audits statiques réellement exécutés sur le delta complet :
|
||
|
||
```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), 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 :
|
||
|
||
```text
|
||
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 :
|
||
|
||
```bash
|
||
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
|
||
|
||
```text
|
||
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
|
||
```
|