# Delta `0.3.13-rel.001` — publication stable ## Base requise Base directe attendue : ```text 0.3.13-pre.015 workspace.package.version = 0.3.13-pre.15 ``` Les couloirs de fermeture précédents sont fermés : - `pre.013` : gate technique déterministe complet, graphes Cargo et qualification explicite des smokes live ; - smokes keyless post-`pre.013` : Solana HTTP Devnet `1/1 PASS` et WebSocket Devnet `1/1 PASS` ; - `pre.014` : réconciliation documentaire finale de l'architecture, du plan et de la validation ; - `pre.015` : préparation minimale de publication avec `CHANGELOG.md`, `ROADMAP.md` et `prompts/033-V0_3_14_START_PROMPT.md`. Le gate opérateur reçu avant `pre.015`, exécuté le **10 septembre 2026 à 23:15** sur `0.3.13-pre.014`, est propre pour rustfmt, audits Rust/Markdown, `cargo check --workspace` et Clippy strict. L'environnement d'assemblage de `pre.015` ne possède pas Cargo/Rustc. Le gate Cargo de l'état exact `0.3.13-pre.015` reste donc un **prérequis d'application** de ce delta et ne doit pas être déclaré PASS sans exécution opérateur réelle : ```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 cargo check --workspace ``` Si ce gate révèle un défaut, ne pas appliquer `rel.001` : ouvrir la prerelease/fix appropriée selon la responsabilité concernée. ## Objet Publier mécaniquement la version stable : ```text 0.3.13 ``` Conformément à `VER-LIFECYCLE-012`, cette tranche ne corrige ni code, ni test, ni documentation durable, ni architecture, ni configuration, ni dépendance, ni prompt. Tout défaut nouveau renvoie vers une prerelease appropriée ; `rel.001` n'est pas une tranche de rattrapage. ## Modification ### `Cargo.toml` Le header est incrémenté parce que le fichier est réellement modifié : ```text 564 -> 565 ``` La version workspace devient : ```text 0.3.13-pre.15 -> 0.3.13 ``` Aucune autre ligne du `Cargo.toml` racine n'est modifiée. ## Fichiers ajoutés ```text deltas/0.3.13/rel.001.md ``` ## Fichiers modifiés ```text Cargo.toml ``` ## Fichiers supprimés ```text aucun ``` ## Surfaces explicitement inchangées ```text CHANGELOG.md ROADMAP.md README.md RULES.md prompts/033-V0_3_14_START_PROMPT.md crates/** docs/** config/** ``` La surface préparée en `pre.015` reste byte-identique hors mécanique Cargo et ajout du présent delta. ## Surface stable publiée `0.3.13` stabilise la convergence live multi-source de `ksp-worker-raw-transaction-ingest-lib` : - composition caller-owned de `1` à `32` sources logiques d'un même réseau, avec identités dupliquées rejetées avant spawn ; - cinq familles live productives : Yellowstone, Standard Logs, Standard Block, Helius Transaction et HTTP Block Polling ; - Standard Logs et Helius Transaction convergent avec Yellowstone vers l'hydration globale `getTransaction observed` ; - Standard Block et HTTP Block Polling utilisent le RAW-direct uniquement pour Legacy/V0/V1 qualifiés, avec `maxSupportedTransactionVersion = 1` ; - coalescence cross-source de `(network, signature, commitment)` avant hydration et sérialisation bornée de l'acquisition canonique `(network, signature)` ; - observations/provenances distinctes conservées pour un contenu canonique identique ; divergence convertie en `content_conflict` terminal, sans majorité, overwrite ou `first-provider-wins` ; - backpressure, quotas et fairness source-neutral bornés entre sources reference-bearing, hydration et persistence ; - snapshots/health agrégés sans exposition du matériau provider ; reconnexion transitoire `Degraded`, source `Failed` `Unhealthy`, retour à `Healthy` lorsque toutes les sources attendues redeviennent actives ; - une faute source reste terminale en `0.3.13` faute de preuve d'équivalence de coverage ; le repair/failover non terminal appartient à `0.3.14` ; - shutdown stop/fault/drain/abort+join durci contre leaders d'hydration abandonnés, Store lent, counters et publications tardives ; - aucune dépendance Worker vers Config, Job Backfill ou backend Store physique, aucun client réseau/SDK provider parallèle et aucun second actor Transport. Le gate technique déterministe de la release a exécuté `cargo test --workspace --all-targets --all-features` avec : ```text 1 850 PASS 0 échec 15 ignored opt-in/operator-only ``` Les smokes keyless Solana HTTP Devnet et WebSocket Devnet passent `1/1` chacun. Les preuves Yellowstone provider-gated, Helius `transactionSubscribe` live, `blockSubscribe` provider dédié, HTTP Block Polling Worker end-to-end et Worker multi-source -> Store end-to-end restent explicitement `NON EXÉCUTÉ` faute de gate provisionné ; aucune fixture ou compilation d'un test ignored ne les requalifie en PASS. Le Job Backfill historique paramétré et le Worker Ingest continu restent deux producteurs indépendants du même Store. `0.3.13` n'introduit ni campagne historique automatique, ni checkpoint durable Worker, ni preuve de blockchain completeness. ## Suite préparée La session suivante part exclusivement de la base stable : ```text v0.3.13 ``` et exécute : ```text prompts/033-V0_3_14_START_PROMPT.md ``` pour ouvrir : ```text 0.3.14 — gap repair / hardening multi-source du Worker RawTransaction ``` `0.3.14-pre.001` doit commencer par lecture, audit interne/externe, brainstorming, sizing et planification avant toute implémentation de repair. Il doit distinguer reconnect, replay attempt, coverage prouvée, repair et unresolved gap ; le Worker ne doit toujours pas devenir un moteur de campagne historique ni dépendre de `ksp-job-backfill-lib`. ## Validations d'assemblage Sur l'état candidat `rel.001`, avant packaging : ```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 / 855 files 5/5 tests unitaires du validateur Markdown : PASS 489 définitions de règles / 489 identifiants uniques / 0 doublon diff exact pre.015 -> rel.001 : Cargo.toml modifié + rel.001.md ajouté, 0 autre changement Cargo.toml : exactement 2 lignes différentes, header 564 -> 565 et version 0.3.13-pre.15 -> 0.3.13 ``` Les contrôles `unzip -t`, archive safety et inventaire minimal du ZIP sont exécutés après packaging avant livraison. Aucun PASS Cargo post-bump stable n'est revendiqué localement faute de toolchain. ## Gate demandé après application La tranche est purement mécanique. Après application sur un `pre.015` dont le gate préalable est vert : ```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.13 cargo check --workspace cargo clippy --workspace --all-targets --all-features -- -D warnings cargo test -p ksp-worker-raw-transaction-ingest-lib cargo test -p ksp-onchain-transport-lib cargo tree -p ksp-worker-raw-transaction-ingest-lib --edges normal cargo tree -p ksp-worker-raw-transaction-ingest-lib -e features ``` Après gate propre : ```text commit : v0.3.13-rel.001 tag : v0.3.13 ``` Aucun tag de prerelease ou `rel.001` n'est requis.