# 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`.