# Delta `0.3.16-rel.001` — publication stable ## Base requise Base directe attendue : ```text 0.3.16-pre.010 workspace.package.version = 0.3.16-pre.10 ``` Le gate minimal opérateur de `pre.010`, exécuté le **22 septembre 2026 à 09:09–09:11**, est propre : ```text cargo fmt --all : PASS cargo fmt --all -- --check : PASS General Rust rule audit : clean Rust export completeness audit : 0 candidate(s) KSP workspace Rust rule audit : clean Markdown table audit : clean (352 table(s), 961 file(s)) cargo check --workspace : PASS ``` Les couloirs de fermeture précédents sont fermés : - `pre.008`, corrigée par `pre.008-fix.001` : hardening technique final, concurrence/rollback, non-régressions Store/Backfill/Worker et preuve live PostgreSQL 17 ; - `pre.009` : réconciliation documentaire finale des surfaces `0.3.16` ; - `pre.010` : préparation minimale de publication avec `CHANGELOG.md`, `ROADMAP.md` et `prompts/036-V0_3_17_START_PROMPT.md`. ## Objet Publier mécaniquement la version stable : ```text 0.3.16 ``` 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 650 -> 651 ``` La version workspace devient : ```text 0.3.16-pre.10 -> 0.3.16 ``` Aucune autre ligne du `Cargo.toml` racine n'est modifiée. ## Fichiers ajoutés ```text deltas/0.3.16/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/036-V0_3_17_START_PROMPT.md crates/** docs/** config/** ``` La surface préparée en `pre.010` reste byte-identique hors mécanique Cargo et ajout du présent delta. ## Surface stable publiée `0.3.16` stabilise les fondations RAW multi-variantes et la convergence durable de plusieurs représentations `RawTransaction` pour une même identité `(network, signature)` : - migration PostgreSQL V003 additive avec variantes, sélecteur canonique, lien observation-variante et conflict cases minimaux, tout en conservant V000/V001/V002 inchangés ; - comparateur backend-neutral partagé `Exact / CompatibleLessComplete / CompatibleMoreComplete / Conflict / Incomparable` ; - dominance fail-closed : seule la troncature `logMessages` explicitement prouvée établit aujourd'hui une relation de complétude ; - égalité fondée sur les bytes lorsque disponibles, sans faire de `content_hash` une preuve suffisante ; - décision sérialisée sous verrou de l'identité V001 ; - promotion atomique d'une variante `CompatibleMoreComplete`, avec conservation de l'ancien canonique et cohérence entre projection V001 et sélecteur ; - conservation durable des divergences `Conflict`/`Incomparable`, ouverture/réouverture d'un conflict case et enregistrement de l'observation sans mutation du canonique ; - `QuarantinedConflict` comme succès durable non terminal côté Worker : le Worker reste `Running`, sa health devient `Degraded` et chaque acquisition continue d'atteindre le Store ; - projection Backfill du conflit durable sans perdre l'idempotence réelle de l'observation ; - hardening final des races, du rollback transactionnel et de la cohérence selector/projection ; - preuve live PostgreSQL 17 des scénarios RawTransaction atomiques, concurrents et récupérables. La release ne revendique pas encore la résolution opérateur complète, le journal/participants complets, la rétention/pinning des variantes nécessaires à une résolution, le retry Store/backpressure `Blocked`, la reconnexion Transport configurable ni les vues Store Desk de résolution. Ces responsabilités sont reportées conformément au `ROADMAP.md` et au prompt suivant. ## Suite préparée La session suivante part exclusivement de la base stable : ```text v0.3.16 ``` et exécute : ```text prompts/036-V0_3_17_START_PROMPT.md ``` pour ouvrir : ```text 0.3.17 — résilience opérationnelle et cycle de vie complet des variantes RAW ``` `0.3.17-pre.001` doit commencer par l'audit/sizing des contrats backend-neutral d'inspection/résolution, du cycle de vie revisionné des conflict cases, des races et invariants, de la rétention/pinning, de la classification Store `Transient / Terminal`, du retry Worker et de la reconnexion Transport configurable avant toute implémentation lourde. La trajectoire publiée est : ```text 0.3.17 résilience opérationnelle + cycle de vie complet des variantes 0.3.18 Store Desk inspection / résolution des conflits 0.3.19 Backfill multi-route / multi-stratégie 0.3.20 adaptation correspondante de Backfill Desk ``` ## 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 ``` Les contrôles d'archive et la comparaison byte-exact sont exécutés après packaging avant livraison. Aucun PASS Cargo post-bump stable n'est revendiqué localement faute de toolchain dans l'environnement d'assemblage. ## Gate demandé après application La tranche est purement mécanique. Après application sur un `pre.010` 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.16 cargo check --workspace cargo clippy --workspace --all-targets --all-features -- -D warnings cargo test -p ksp-store-api --all-targets --all-features cargo test -p ksp-store-lib --all-targets --all-features cargo test -p ksp-store-postgres-lib --all-targets --all-features cargo test -p ksp-job-backfill-lib --all-targets --all-features cargo test -p ksp-worker-raw-transaction-ingest-lib --all-targets --all-features ``` Après gate propre : ```text commit : v0.3.16-rel.001 tag : v0.3.16 ``` Aucun tag de prerelease ou `rel.001` n'est requis.