v0.3.13-pre.001
This commit is contained in:
274
deltas/0.3.13/pre.001.md
Normal file
274
deltas/0.3.13/pre.001.md
Normal file
@@ -0,0 +1,274 @@
|
||||
<!-- file: deltas/0.3.13/pre.001.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.3.13-pre.001 — audit règles et convergence live multi-source
|
||||
|
||||
## Base requise
|
||||
|
||||
```text
|
||||
archive : khadhroony-solana-project-v0.3.12.zip
|
||||
SHA-256 : 85c41eb9f8575ee58edd9863445cbc37b79ef59c4a7cf882679ff24dc8991bf5
|
||||
ZIP bytes : 8260528
|
||||
ZIP entries : 1981
|
||||
workspace.package.version base : 0.3.12
|
||||
stable delta : deltas/0.3.12/rel.001.md
|
||||
prompt : prompts/032-V0_3_13_START_PROMPT.md
|
||||
```
|
||||
|
||||
## Objectif
|
||||
|
||||
Exécuter le gate `pre.001` de `0.3.13` avant tout développement : vérifier l'archive stable et les règles, réauditer les surfaces WS standard/Helius/HTTP actuelles, fermer l'architecture de convergence multi-source, les bornes, la stratégie d'observations multiples, le content conflict, les owners retry/reconnect, les smokes et le sizing.
|
||||
|
||||
Aucune nouvelle source réseau productive n'est implémentée dans cette tranche.
|
||||
|
||||
## Type de livraison
|
||||
|
||||
```text
|
||||
0.3.13-pre.001
|
||||
Cargo : 0.3.13-pre.1
|
||||
archive : ksp-general-0.3.13-pre.001.zip
|
||||
```
|
||||
|
||||
Le type `general` est requis par la synchronisation de `Cargo.toml` pour une prerelease non-fix.
|
||||
|
||||
## Vérification archive
|
||||
|
||||
Contrôlé :
|
||||
|
||||
```text
|
||||
unzip -t : PASS
|
||||
absolute entries : 0
|
||||
parent traversal : 0
|
||||
duplicate ZIP entries : 0
|
||||
symlink entries : 0
|
||||
Cargo.lock : absent
|
||||
rust-toolchain.toml : absent
|
||||
package lockfiles : absents
|
||||
.env : absent
|
||||
crate manifests : 21
|
||||
workspace members : 21
|
||||
crates hors workspace : 0
|
||||
members sans crate : 0
|
||||
workspace edition : 2024
|
||||
```
|
||||
|
||||
## Audit règles
|
||||
|
||||
Les règles actives ont été relues depuis `RULES.md` et les neuf documents de `docs/rules/`.
|
||||
|
||||
Le script Rust stable reste vert, mais un contrôle supplémentaire d'unicité des identifiants normatifs a trouvé :
|
||||
|
||||
```text
|
||||
rule ids : 489
|
||||
unique ids : 488
|
||||
collision : KSP-CONFIG-018 x2
|
||||
```
|
||||
|
||||
La preuve historique `deltas/0.1.3/pre.014.md` attribue explicitement `KSP-CONFIG-018` à la règle d'inventaire `.env.example`. La règle desktop plus récente est donc renumérotée `KSP-CONFIG-019` sans modification de sa sémantique.
|
||||
|
||||
Après correction :
|
||||
|
||||
```text
|
||||
rule ids : 489
|
||||
unique ids : 489
|
||||
duplicates : 0
|
||||
```
|
||||
|
||||
Aucune autre contradiction normative active n'a été identifiée.
|
||||
|
||||
## Audit architecture/dépendances
|
||||
|
||||
Confirmé :
|
||||
|
||||
```text
|
||||
Worker -> Transport autorisé et déjà productif
|
||||
Worker -> Config interdit et absent
|
||||
Worker -> Job Backfill interdit et absent
|
||||
Worker -> backend Store physique interdit et absent
|
||||
Worker -> reqwest/tonic/yellowstone proto direct absent
|
||||
Transport -> Store absent
|
||||
Transport -> Common RAW absent
|
||||
ksp-store-lib reste la façade de persistence Worker
|
||||
Common RAW reste propriétaire de la canonicalisation
|
||||
```
|
||||
|
||||
`solana-keypair` dans `ksp-wallet-lib` est explicitement admis par `DEP-SOL-004` et ne constitue pas une violation.
|
||||
|
||||
## Audit WS / Helius / HTTP courant
|
||||
|
||||
Décisions :
|
||||
|
||||
```text
|
||||
logsSubscribe standard -> signature/slot -> getTransaction observed
|
||||
blockSubscribe standard -> full/base64, maxSupportedTransactionVersion=1
|
||||
Helius transactionSubscribe -> full/base64 -> getTransaction observed
|
||||
Helius LaserStream WSS ne porte pas blockSubscribe
|
||||
HTTP live -> getSlot + getBlocksWithLimit + getBlock observed
|
||||
```
|
||||
|
||||
La documentation Solana courante demande la préparation `maxSupportedTransactionVersion = 1` pour Transaction V1. V1 n'est pas encore actif sur les clusters publics au 10 septembre 2026, donc la voie `blockSubscribe` V1 reste deterministic-test-gated avant d'être déclarée RAW-direct.
|
||||
|
||||
Le pricing Helius courant place `transactionSubscribe` à partir du tier Developer ; ce fait reste une qualification de smoke, jamais une constante métier KSP.
|
||||
|
||||
## Architecture multi-source fermée
|
||||
|
||||
Décisions principales :
|
||||
|
||||
```text
|
||||
sources simultanées, pas de first-provider-wins
|
||||
source identity opaque SHA-256 et provider-neutral
|
||||
1..32 sources runtime
|
||||
collection validée avant tout spawn
|
||||
coordinator global Worker avant hydration
|
||||
coalescence (network, signature, commitment)
|
||||
une hydration HTTP pour les références cross-source identiques
|
||||
pending global <= admission_queue_capacity effective
|
||||
hydratation in-flight <= persistence_concurrency
|
||||
aucune queue Worker provider privée non bornée
|
||||
```
|
||||
|
||||
Observation/persistence :
|
||||
|
||||
```text
|
||||
identité durable = network + signature
|
||||
première observation = persist_raw_transaction_acquisition atomique
|
||||
observations supplémentaires = record_raw_transaction_observation
|
||||
même identité + même contenu = idempotence
|
||||
même identité + contenu divergent = content conflict terminal
|
||||
```
|
||||
|
||||
La capability Store d'observation additionnelle existe déjà ; aucun changement Store API n'est requis.
|
||||
|
||||
## HTTP live polling
|
||||
|
||||
Contrat de plan retenu :
|
||||
|
||||
```text
|
||||
run start = getSlot(commitment)
|
||||
aucun scan avant ce start slot
|
||||
getBlocksWithLimit pour exclure naturellement skipped slots
|
||||
getBlock observed pour chaque bloc listé
|
||||
poll interval : 100 ms..30 s, default 1 s
|
||||
blocks/cycle : 1..1024, default 128
|
||||
timer/cadence : Worker
|
||||
retry/rate-limit HTTP : Transport
|
||||
```
|
||||
|
||||
## Health et continuité
|
||||
|
||||
Le Worker conservera un inventaire de source privé et borné. La surface publique restera source-neutral avec des counts agrégés seulement.
|
||||
|
||||
Politique `0.3.13` conservative : une source configurée qui devient terminalement `Failed` faute le Worker, car l'équivalence de coverage des autres sources n'est pas prouvée. Le failover non-terminal et le repair appartiennent à `0.3.14`.
|
||||
|
||||
## Sizing retenu
|
||||
|
||||
```text
|
||||
pre.002 runtime resources multi-source
|
||||
pre.003 standard logs + hydration
|
||||
pre.004 standard blockSubscribe
|
||||
pre.005 Helius transactionSubscribe
|
||||
pre.006 HTTP live polling
|
||||
pre.007 supervisor/source inventory
|
||||
pre.008 convergence/observations multiples
|
||||
pre.009 conflict/backpressure/fairness
|
||||
pre.010 snapshots/health
|
||||
pre.011 races/shutdown
|
||||
pre.012 completeness/security
|
||||
pre.013 gate technique/live
|
||||
pre.014 réconciliation documentaire
|
||||
pre.015 préparation publication
|
||||
rel.001 stable
|
||||
```
|
||||
|
||||
Décision : `0.3.13` est maintenue ; aucune rescission n'est nécessaire avant `pre.002`.
|
||||
|
||||
## Fichiers ajoutés
|
||||
|
||||
```text
|
||||
docs/plans/034-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE_PLAN.md
|
||||
docs/validation/030-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE.md
|
||||
deltas/0.3.13/pre.001.md
|
||||
```
|
||||
|
||||
## Fichiers modifiés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
docs/rules/RULES_KSP.md
|
||||
```
|
||||
|
||||
## Fichiers supprimés
|
||||
|
||||
```text
|
||||
aucun
|
||||
```
|
||||
|
||||
## Validations exécutées avant modification
|
||||
|
||||
```text
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
PASS : General Rust rule audit clean
|
||||
PASS : Rust export completeness audit 0 candidate
|
||||
PASS : KSP workspace Rust rule audit clean
|
||||
|
||||
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.3.12
|
||||
PASS : Markdown table audit clean (306 tables, 199 files)
|
||||
```
|
||||
|
||||
La preuve Cargo stable fournie par l'opérateur montre également fmt/check/clippy/tests Worker/trees verts sur `0.3.12`; elle reste une preuve de la base et non une exécution locale de cette prerelease.
|
||||
|
||||
## Validations exécutées après modification
|
||||
|
||||
```text
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
PASS : General Rust rule audit clean
|
||||
PASS : Rust export completeness audit 0 candidate
|
||||
PASS : KSP workspace Rust rule audit clean
|
||||
|
||||
supplemental normative rule-id scan
|
||||
PASS : 489 ids, 489 uniques, 0 duplicate
|
||||
|
||||
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas
|
||||
PASS : Markdown table audit clean (340 tables, 828 files)
|
||||
```
|
||||
|
||||
## Validations non exécutées localement
|
||||
|
||||
Le toolchain Cargo/Rustfmt n'est pas installé dans l'environnement d'assemblage :
|
||||
|
||||
```text
|
||||
cargo fmt --all -- --check
|
||||
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
|
||||
```
|
||||
|
||||
Statut : `NON EXÉCUTÉ LOCAL`, jamais PASS.
|
||||
|
||||
## Décisions prises
|
||||
|
||||
```text
|
||||
corriger l'identifiant desktop en KSP-CONFIG-019
|
||||
maintenir la release 0.3.13
|
||||
aucune nouvelle dépendance externe
|
||||
maxSupportedTransactionVersion=1 pour les nouvelles voies concernées
|
||||
convergence/hydration globale Worker-owned
|
||||
observation fanout via capability Store existante
|
||||
source failure terminale conservative jusqu'au coverage/repair 0.3.14
|
||||
```
|
||||
|
||||
## Questions ouvertes
|
||||
|
||||
Reportées explicitement :
|
||||
|
||||
```text
|
||||
coverage équivalent entre sources
|
||||
failover non-terminal
|
||||
repair de gaps multi-source
|
||||
sources EARLY
|
||||
campagnes historiques multi-source
|
||||
composition Desk 0.3.15
|
||||
```
|
||||
Reference in New Issue
Block a user