264 lines
8.5 KiB
Markdown
264 lines
8.5 KiB
Markdown
<!-- file: deltas/0.3.10/pre.001.md -->
|
||
<!-- version: 1 -->
|
||
|
||
# Delta 0.3.10-pre.001 — audit/sizing RAW Transaction + Worker ingest
|
||
|
||
## Base
|
||
|
||
```text
|
||
archive : khadhroony-solana-project-v0.3.9.zip
|
||
SHA-256 : 41ef2589a11410aabfb329d387f0008e116006da60ada0802e5f72bc30d3466f
|
||
ZIP bytes : 7859118
|
||
ZIP entries : 1855
|
||
unzip -t : PASS
|
||
workspace members : 19
|
||
workspace.package.version base : 0.3.9
|
||
```
|
||
|
||
Le ZIP a été contrôlé sans path traversal/entrée absolue, symlink, `.git/`, `target/`, `node_modules/`, `Cargo.lock`, `.env` ou fichier de clé privée détecté.
|
||
|
||
## Type de livraison
|
||
|
||
```text
|
||
ksp-general-0.3.10-pre.001.zip
|
||
```
|
||
|
||
Le type `general` est obligatoire parce que `Cargo.toml` racine est synchronisé vers `0.3.10-pre.1` par `VER-ID-009`. L’archive d’échange ne doit contenir que les fichiers ajoutés/modifiés et le delta, conformément à `VER-ARCHIVE-004`.
|
||
|
||
## 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 (332 table(s), 750 file(s))
|
||
```
|
||
|
||
`cargo` n’est pas installé dans l’environnement d’assemblage. Aucun gate Cargo local n’est déclaré PASS. Le journal opérateur stable `0.3.9` reste une preuve externe distincte.
|
||
|
||
## Objectif
|
||
|
||
Exécuter le gate d’ouverture `0.3.10-pre.001` demandé par le prompt `029` : vérifier intégralement la base `v0.3.9`, auditer l’extraction RAW commune et les capabilities live, réévaluer `TR-B..TR-F`, fixer les frontières Common/Worker/Transport/Config/Store, puis dimensionner les tranches suivantes sans commencer l’implémentation lourde.
|
||
|
||
## Mission exécutée
|
||
|
||
`pre.001` reste une tranche de planification, conformément au prompt `029` :
|
||
|
||
```text
|
||
lecture règles/architecture obligatoires
|
||
inventaire workspace/manifests/features
|
||
extraction RAW commune auditée
|
||
capability matrix Worker implementation-ready
|
||
TR-B..TR-F réévalués
|
||
fraîcheur Solana/Yellowstone/providers revalidée
|
||
runtime/source supervision décidés
|
||
continuité/gap repair décidés
|
||
snapshot concret décidé
|
||
Config/secrets boundary décidée
|
||
threat model et preuves définis
|
||
dependency graph cible fixé
|
||
prereleases redimensionnées
|
||
```
|
||
|
||
Aucune implémentation lourde des deux nouvelles crates n’est commencée.
|
||
|
||
## Décisions principales
|
||
|
||
### Common RAW
|
||
|
||
```text
|
||
crate : ksp-raw-transaction-lib
|
||
RAW format : ksp.solana.raw_transaction v1 inchangé
|
||
common deps : ksp-core-lib + ksp-store-lib(default-features=false) + serde_json + sha2
|
||
aucun Transport/Config/Job/Worker/runtime/backend
|
||
RawObservationKey reste producer-owned
|
||
Backfill conserve son observation key/job_id/scope_fingerprint/origin
|
||
```
|
||
|
||
Golden confirmé :
|
||
|
||
```text
|
||
byte_len = 112
|
||
sha256 = 220792d2b15d262fda242cb220774ee9ddeffebf04dcfadabcf8ef76a9b1a7c3
|
||
```
|
||
|
||
Toute source full doit prouver une parité byte-for-byte avec RAW v1 avant persistence directe ; sinon elle reste discovery + hydration.
|
||
|
||
### Worker concret
|
||
|
||
```text
|
||
crate : ksp-worker-raw-transaction-ingest-lib
|
||
caller-owned Tokio runtime
|
||
Worker-owned source/supervisor tasks
|
||
bounded channels uniquement
|
||
multi-source simultané
|
||
Store idempotence comme vérité de convergence
|
||
observations distinctes conservées
|
||
content conflict terminal
|
||
repair borné au run frontier
|
||
reconnect != replay
|
||
aucun paramètre historique métier au start
|
||
```
|
||
|
||
### Transport gaps
|
||
|
||
```text
|
||
TR-B confirmé : get_block_observed
|
||
TR-C confirmé/scindé : common material + adapters Worker + Transport change only if DTO lacks fidelity
|
||
TR-D confirmé : provenance durable full-material + source runtime snapshot
|
||
TR-E confirmé : reuse from_slot/replay info, aucun second Yellowstone client
|
||
TR-F réservé : EARLY seulement si protocole/accès/rôle RAW prouvés
|
||
```
|
||
|
||
### Config
|
||
|
||
```text
|
||
aucun edge Worker -> Config
|
||
std.transport V3 actuel réutilisé
|
||
pas de nouveau document métier Worker imposé en 0.3.10
|
||
adaptation Config seulement si un manque Transport concret l’exige
|
||
secrets restent Config-owned et redacted
|
||
```
|
||
|
||
## Fraîcheur externe
|
||
|
||
Vérifié le 5 septembre 2026 :
|
||
|
||
```text
|
||
yellowstone-grpc-proto latest = 12.7.0 (2026-08-29)
|
||
workspace stable = ^12.7 -> aucun bump initial
|
||
Yellowstone block from_slot replay a reçu un fix upstream en juillet 2026 -> smoke block replay obligatoire
|
||
Helius transactionSubscribe courant ; Helius blockSubscribe explicitement non supporté
|
||
Helius LaserStream replay 24 h documenté
|
||
PublicNode Yellowstone Mainnet/Testnet visible ; replay depth non prouvée
|
||
OrbitFlare gRPC Devnet disponible Free/Developer
|
||
QuickNode gRPC Scale+ ; port 443/x-token ; port 10000 sunset 2026-10-01
|
||
Alchemy replay docs contradictoires 6000 vs 432000 slots -> aucune constante KSP
|
||
Jito ShredStream shutdown annoncé pour 2026-09-05 -> SUNSET, non retenu TR-F
|
||
```
|
||
|
||
## Plan recalibré
|
||
|
||
```text
|
||
pre.002 common RAW foundation
|
||
pre.003 Backfill migration
|
||
pre.004 observed block + HTTP block material
|
||
pre.005 WS/Helius full parity
|
||
pre.006 Yellowstone parity
|
||
pre.007 Worker runtime foundation
|
||
pre.008 Yellowstone live/replay
|
||
pre.009 WS/HTTP live
|
||
pre.010 multi-source persistence/hardening
|
||
pre.011 gap repair
|
||
pre.012 Config/profiles + smokes accessibles
|
||
pre.013 EARLY si prouvé, sinon consolidation
|
||
pre.014 gate technique/live final
|
||
pre.015 réconciliation documentaire
|
||
pre.016 préparation publication
|
||
rel.001 stable
|
||
```
|
||
|
||
## Fichiers ajoutés
|
||
|
||
```text
|
||
docs/plans/031-V0_3_10_RAW_TRANSACTION_INGEST_PLAN.md
|
||
docs/validation/027-V0_3_10_RAW_TRANSACTION_INGEST.md
|
||
deltas/0.3.10/pre.001.md
|
||
```
|
||
|
||
## Fichiers modifiés
|
||
|
||
```text
|
||
Cargo.toml
|
||
```
|
||
|
||
`Cargo.toml` :
|
||
|
||
```text
|
||
file version 489 -> 490
|
||
workspace.package.version 0.3.9 -> 0.3.10-pre.1
|
||
```
|
||
|
||
Ce bump est requis par `VER-ID-009` pour toute prerelease non-fix, même lorsque la tranche est documentaire.
|
||
|
||
## Fichiers supprimés
|
||
|
||
```text
|
||
aucun
|
||
```
|
||
|
||
## Validation après modification
|
||
|
||
Audits statiques réellement exécutés après matérialisation de `pre.001` :
|
||
|
||
```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 (339 table(s), 753 file(s))
|
||
```
|
||
|
||
Le premier passage Markdown post-modification a détecté 32 erreurs d’alignement uniquement dans les nouvelles tables. Elles ont été corrigées selon la règle KSP, puis le gate complet ci-dessus a été relancé jusqu’à PASS.
|
||
|
||
La comparaison byte-à-byte contre le contenu du ZIP stable, après suppression du cache Python d’audit, donne exactement :
|
||
|
||
```text
|
||
ajoutés :
|
||
deltas/0.3.10/pre.001.md
|
||
docs/plans/031-V0_3_10_RAW_TRANSACTION_INGEST_PLAN.md
|
||
docs/validation/027-V0_3_10_RAW_TRANSACTION_INGEST.md
|
||
modifié :
|
||
Cargo.toml
|
||
supprimé :
|
||
aucun
|
||
```
|
||
|
||
Les commandes Cargo/Tauri ne sont pas exécutables dans l’environnement d’assemblage courant (`cargo` absent). Elles restent donc explicitement `NON EXÉCUTÉES LOCALEMENT` pour ce delta ; aucune preuve opérateur antérieure n’est transformée en PASS local.
|
||
|
||
## Validations non exécutées localement
|
||
|
||
```text
|
||
cargo fmt --all
|
||
cargo check --workspace
|
||
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
||
cargo test --workspace --all-targets --all-features
|
||
cargo tree --duplicates
|
||
builds Tauri
|
||
smokes live opt-in
|
||
```
|
||
|
||
Motif : toolchain Cargo absent du sandbox d’assemblage et aucune credential/provider live n’est injectée. Les preuves stables fournies par l’opérateur sont conservées comme contexte externe distinct ; elles ne remplacent pas les gates futurs de `0.3.10`.
|
||
|
||
## Questions ouvertes
|
||
|
||
Aucune question de boundary ne bloque `pre.002`. Restent volontairement à résoudre par preuve pendant les tranches prévues :
|
||
|
||
```text
|
||
parité byte-for-byte RAW v1 des sources WS/Helius/Yellowstone full
|
||
profondeur replay réellement observable par provider au moment du smoke
|
||
nécessité éventuelle d’un profil/rôle Transport supplémentaire pour un smoke accessible
|
||
admission d’une source EARLY seulement si protocole, accès et rôle RAW sont effectivement prouvés
|
||
```
|
||
|
||
Ces points ne doivent pas être anticipés par des constantes, des claims lossless ou une RAW v2.
|
||
|
||
## Non inclus
|
||
|
||
```text
|
||
aucune nouvelle crate créée
|
||
aucun Rust modifié
|
||
aucun Transport/Config/Store code modifié
|
||
aucun kbot3 ouvert ou copié
|
||
aucun Worker live
|
||
aucun RAW v2
|
||
aucun CHANGELOG/ROADMAP modifié
|
||
aucun prompt 0.3.11 créé
|
||
aucun Cargo gate déclaré localement
|
||
```
|