Files
khadhroony-solana-project/deltas/0.3.14/pre.001.md
2026-09-11 19:37:36 +02:00

219 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- file: deltas/0.3.14/pre.001.md -->
<!-- version: 5 -->
# Delta `0.3.14-pre.001` — audit / brainstorming / sizing gap repair
## Base requise
```text
v0.3.13
workspace.package.version = 0.3.13
deltas/0.3.13/rel.001.md présent
```
Archive opérateur auditée :
```text
khadhroony-solana-project-v0.3.13.zip
SHA-256 253fa7ef5e0a6b2721da66fc3ea8dc7695d991d3a00bcc7d34396d9a32b65245
```
L'archive ne contient pas `.git`; l'identité interne stable est contrôlée mais l'objet du tag Git ne peut pas être comparé localement.
## Objet
Exécuter le gate `pre.001` imposé par `prompts/033-V0_3_14_START_PROMPT.md` avant tout codage de repair :
```text
lecture complète des règles et du handoff 0.3.13
audit archive/base stable
audit Worker/Transport/frontier/replay/continuity
audit externe courant Solana/Yellowstone/providers
matrice des cinq familles live
modèle gap/range/coverage run-local
sémantique repaired/unresolved
health candidate
threat model
smokes accessibles
Cargo/features cible
sizing et décision maintien/rescission
plan 035 + validation 031
```
Aucun moteur de repair, failover/degraded runtime, modification Transport/Config ou adapter EARLY n'est implémenté.
## Décisions
```text
reconnect != replay_attempt != replay_covered != repaired
replay accepté ne prouve pas la coverage
transaction-only source ne prouve pas l'absence d'événements manquants
repair final qualifié au niveau slot/range
skipped seulement après discovery slots réussie
getBlock null sur slot produit reste unresolved
getTransaction null n'est pas une preuve d'inexistence
Common RAW/admission/ksp-store-lib restent le chemin unique
retry/reconnect restent Transport-owned
required/redundant est une relation de coverage dynamique, pas un flag provider
processing frontier != continuity frontier
pool HTTP d'hydration != capability de scan : getTransaction seul est garanti pour Yellowstone/Logs/Helius
les façades WS doivent exposer une observation latest-value de leur snapshot avant le repair ; aucun nouveau socket/actor
range gap inclusif pour ne pas perdre la fin d'un slot déjà partiellement observé ; aucun slot dérivé d'un timestamp
TargetCoverage = réunion conservative des scopes configurés ; source perdue non respawnée par Worker
FullLedgerTransactions et ExactSourceScope sont distingués ; aucune équivalence cross-family implicite
getBlocksWithLimit ne ferme une plage que si la fenêtre cible est explicitement prouvée complète
scan full-block interdit s'il élargirait silencieusement un run uniquement filtré
EARLY hors scope 0.3.14
aucune nouvelle dépendance
Config inchangé en pre.001 ; modification future seulement sur besoin démontré
0.3.14 maintenue sans rescission sous le scope des cinq familles existantes
```
Forecast recalibré : `pre.002 -> pre.016`, avec une tranche WS continuity dédiée, replay Yellowstone et coverage redondante séparés, puis HTTP/hydration/reconciliation/health/fairness/observability/races/gates/docs/publication. Cette extension remplace le forecast initial `pre.002 -> pre.014` afin de respecter les slices 1520 minutes.
Bornes cibles à matérialiser dans les tranches techniques :
```text
MAX_OPEN_REPAIR_GAPS = 64
MAX_REPAIR_RANGE_SLOTS = 4096
MAX_REPAIR_DISCOVERY_WINDOW_SLOTS = 512
MAX_REPAIR_BLOCK_FETCH_IN_FLIGHT = 4
MAX_REPAIR_ACTIVE_GAPS = 1
```
## Audit externe — points structurants
Le proto Yellowstone utilisé expose `from_slot` et `SubscribeReplayInfo/first_available`. `yellowstone-grpc-proto 12.7.0` est courant au moment de l'audit.
Le changelog upstream du 22 juillet 2026 documente un bug corrigé où un replay `blocks` pouvait accepter `from_slot`, ne rejouer aucun block, puis reprendre au head live avec un gap. La preuve KSP ne peut donc pas être « request accepted ».
PublicNode expose actuellement Solana Mainnet/Testnet RPC/WS/Yellowstone et archive data, mais sa profondeur de replay/first_available n'est pas suffisamment documentée pour être revendiquée.
OrbitFlare expose Yellowstone et Devnet gRPC sur ses tiers courants ; un exemple récent utilise `from_slot`, mais la profondeur/first_available de l'endpoint KSP reste à prouver par smoke.
Helius documente LaserStream gRPC avec replay jusqu'à 24 h, mais cette surface est distincte du `transactionSubscribe` WSS stable et n'est pas ajoutée à `0.3.14`.
QuickNode documente un `fromSlot` provider-specific jusqu'à 3000 slots ; cette comparaison confirme qu'une profondeur de replay ne peut pas être généralisée entre providers.
## Fichiers ajoutés
```text
docs/plans/035-V0_3_14_MULTI_SOURCE_GAP_REPAIR_HARDENING_PLAN.md
docs/validation/031-V0_3_14_MULTI_SOURCE_GAP_REPAIR_HARDENING.md
deltas/0.3.14/pre.001.md
```
## Fichiers modifiés
```text
Cargo.toml
```
## Fichiers supprimés
```text
aucun
```
## Version Cargo
```text
header : 565 -> 566
workspace.package.version : 0.3.13 -> 0.3.14-pre.1
```
Aucune dépendance, feature ou autre ligne fonctionnelle du manifest racine n'est changée.
## Surfaces explicitement inchangées
```text
crates/**
config/**
.env.example
README.md
RULES.md
ROADMAP.md
CHANGELOG.md
docs/architecture/**
prompts/**
deltas/0.3.13/**
```
## Validations base exécutées
Localement avant modification :
```text
unzip -t : PASS
archive safety : PASS
workspace/crate inventory : 21/21
General Rust rule audit : clean
Rust export completeness audit : 0 candidate(s)
KSP workspace Rust rule audit : clean
Markdown table audit : clean (340 tables / 855 files)
489 définitions de règles / 489 IDs uniques / 0 doublon
```
Le journal opérateur fourni pour la stable contient :
```text
cargo fmt/check : terminé sans erreur visible
cargo check --workspace : terminé sans erreur visible
cargo clippy --workspace --all-targets --all-features -- -D warnings : terminé sans erreur visible
cargo test --workspace --all-targets --all-features : 1 850 PASS / 0 failed / 15 ignored
cargo tree Worker direct/features : produit
cargo tree --duplicates : produit
```
Cette preuve concerne `0.3.13`, pas le bump `0.3.14-pre.1`.
## Validations post-modification
```text
General Rust rule audit : clean
Rust export completeness audit : 0 candidate(s)
KSP workspace Rust rule audit : clean
Markdown table audit : clean (340 tables / 858 files)
rule definitions : 489 / 489 uniques / 0 doublon
comparaison stable -> worktree : 3 ajouts / 1 modification / 0 suppression
Cargo fmt/check : NON EXÉCUTÉ LOCAL — cargo absent du sandbox
```
Le `scripts/__pycache__` recréé par les audits Python est supprimé avant packaging et ne fait pas partie de la livraison.
Archive de livraison attendue :
```text
ksp-general-0.3.14-pre.001.zip
```
## Archive déchange
Conformément à `VER-ARCHIVE-001`, `VER-ARCHIVE-004` et `VER-ARCHIVE-005`, la livraison est une archive `general` minimale :
```text
ksp-general-0.3.14-pre.001.zip
```
Contenu attendu, exactement quatre fichiers :
```text
Cargo.toml
docs/plans/035-V0_3_14_MULTI_SOURCE_GAP_REPAIR_HARDENING_PLAN.md
docs/validation/031-V0_3_14_MULTI_SOURCE_GAP_REPAIR_HARDENING.md
deltas/0.3.14/pre.001.md
```
Aucun fichier inchangé de la stable, cache, lockfile, secret, sortie de compilation ou artefact daudit nest inclus.
## Gate opérateur 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/0.3.14
cargo check --workspace
```
Si ce gate est propre, `pre.002` peut matérialiser uniquement les contrats gap/range/coverage prévus par le plan `035`.