v0.3.14-pre.001
This commit is contained in:
218
deltas/0.3.14/pre.001.md
Normal file
218
deltas/0.3.14/pre.001.md
Normal file
@@ -0,0 +1,218 @@
|
||||
<!-- 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 15–20 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 d’audit n’est 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`.
|
||||
Reference in New Issue
Block a user