0.3.16-pre.009
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
<!-- file: docs/validation/033-V0_3_16_RAW_RESILIENCE_CONFLICT.md -->
|
||||
<!-- version: 2 -->
|
||||
<!-- version: 3 -->
|
||||
|
||||
# Validation `0.3.16` -> `0.3.18` — résilience RAW et gestion des conflits
|
||||
|
||||
## 1. Objet
|
||||
|
||||
Ce document suit le programme de résilience RAW depuis le gate `0.3.16-pre.001` jusqu'à la fermeture prévue de `0.3.18`.
|
||||
Ce document suit le programme de résilience RAW depuis le gate `0.3.16-pre.001` jusqu'à la fermeture prévue de `0.3.18`. La présente révision réconcilie spécifiquement l'état réellement validé de `0.3.16` avant sa lane de préparation de publication.
|
||||
|
||||
La première tranche ne prétend pas valider une implémentation qui n'existe pas encore. Elle valide le point de départ, les contrats acquis, les décisions d'architecture et la liste des preuves à construire. Le fix documentaire `0.3.16-pre.001-fix.001` répartit ensuite cette matrice sur trois releases stables afin de respecter la contrainte opérationnelle d'une version par session au maximum.
|
||||
|
||||
@@ -412,3 +412,171 @@ Le fix `0.3.16-pre.001-fix.001` ne supprime aucune preuve de la matrice ; il cha
|
||||
Chaque stable possède son propre gate de fermeture. Une preuve non nécessaire au périmètre de la stable courante n'est pas déclarée manquante : elle reste explicitement attendue par la version suivante du programme.
|
||||
|
||||
Les scopes Backfill initialement réservés à `0.3.17` et `0.3.18` sont déplacés après ce programme afin d'éviter une collision de roadmap ; les cibles de planning par défaut deviennent respectivement `0.3.19` et `0.3.20`.
|
||||
|
||||
## 12. Réconciliation finale `0.3.16-pre.009`
|
||||
|
||||
### 12.1 Périmètre réellement acquis par `0.3.16`
|
||||
|
||||
La vertical slice `0.3.16` ferme les éléments suivants :
|
||||
|
||||
```text
|
||||
Store API
|
||||
RawTransactionVariantId / relation / reason code
|
||||
comparateur partagé fail-closed
|
||||
RawTransactionVariantWriteOutcome
|
||||
RawAcquisitionWriteOutcome::transaction_variant()
|
||||
|
||||
PostgreSQL V003
|
||||
ksp_raw_transaction_variants
|
||||
ksp_raw_transaction_canonical_selectors
|
||||
ksp_raw_transaction_observation_variants
|
||||
ksp_raw_transaction_conflicts
|
||||
|
||||
Convergence
|
||||
Exact -> observation/réutilisation de variante
|
||||
CompatibleLessComplete -> variante observée, canonique inchangé
|
||||
CompatibleMoreComplete -> promotion atomique
|
||||
Conflict / Incomparable -> variante durable + conflict case Open, canonique inchangé
|
||||
|
||||
Worker
|
||||
toute acquisition atteint le Store après sérialisation run-local par identité
|
||||
QuarantinedConflict -> succès durable, Running + Degraded
|
||||
identité suivante -> continue à être traitée
|
||||
ERROR_CODE_RAW_CONFLICT legacy -> terminal de compatibilité
|
||||
|
||||
Job Backfill
|
||||
QuarantinedConflict -> BackfillEntityPersistence::Conflict
|
||||
outcome observation -> conservé, y compris AlreadyPresent
|
||||
```
|
||||
|
||||
`content_hash` reste un préfiltre/intégrité et ne remplace jamais la comparaison des bytes lorsque ceux-ci sont disponibles. La seule dominance automatique admise en `0.3.16` reste la troncature `meta.logMessages` strictement prouvée ; les autres différences restent fail-closed.
|
||||
|
||||
### 12.2 Atomicité et rollback validés
|
||||
|
||||
Le hardening `pre.008` verrouille les invariants suivants :
|
||||
|
||||
- la branche de conflit ne modifie ni le sélecteur canonique ni la projection V001 ;
|
||||
- les helpers de promotion et de conflict case restent dans la transaction d'acquisition externe ;
|
||||
- un échec tardif après création de la variante divergente et du conflict case mais avant `COMMIT` annule ces écritures ;
|
||||
- après rollback, selector et projection V001 restent cohérents avec le canonique antérieur ;
|
||||
- deux écritures divergentes concurrentes produisent un canonique et une quarantaine durable, pas une erreur terminale de contenu.
|
||||
|
||||
### 12.3 Gate opérateur `0.3.16-pre.008-fix.001`
|
||||
|
||||
Le 22 septembre 2026, l'opérateur a exécuté :
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
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
|
||||
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
|
||||
```
|
||||
|
||||
Résultats observés :
|
||||
|
||||
```text
|
||||
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), 958 file(s))
|
||||
cargo check --workspace PASS
|
||||
cargo clippy --workspace --all-targets --all-features -D warnings PASS
|
||||
|
||||
ksp-store-api
|
||||
29 unit + 2 dependency + 1 external backend + 9 public API
|
||||
+ 5 release completeness + 5 security hardening PASS
|
||||
|
||||
ksp-store-lib
|
||||
10 unit + 3 dependency + 1 feature mismatch
|
||||
+ 6 hardening completeness + 5 public API PASS
|
||||
|
||||
ksp-store-postgres-lib
|
||||
88 unit + 13 dependency + 16 hardening completeness
|
||||
+ 13 public API + 3 V003 migration + 8 V003 variant PASS
|
||||
foundation/raw-account/raw-transaction live tests ignored in normal gate as designed
|
||||
|
||||
ksp-job-backfill-lib
|
||||
53 unit + 4 dependency + 9 hardening + 1 HTTP block material
|
||||
+ 6 public API + 3 release + 2 WS parity + 1 Yellowstone PASS
|
||||
|
||||
ksp-worker-raw-transaction-ingest-lib
|
||||
163 unit + 12 cross-layer + 21 dependency + 41 hardening
|
||||
+ 22 public API + 18 release completeness PASS
|
||||
```
|
||||
|
||||
Aucun warning Clippy n'est toléré par ce gate.
|
||||
|
||||
### 12.4 Preuve PostgreSQL réelle
|
||||
|
||||
Le live RawTransaction a été exécuté séparément avec une URI dédiée fournie silencieusement sur stdin :
|
||||
|
||||
```bash
|
||||
read -rsp 'PostgreSQL URI: ' KSP_TEST_POSTGRES_URI
|
||||
printf '\n'
|
||||
printf '%s\n' "$KSP_TEST_POSTGRES_URI" \
|
||||
| cargo test -p ksp-store-postgres-lib \
|
||||
--test postgres_raw_transaction_live \
|
||||
-- --ignored --nocapture
|
||||
unset KSP_TEST_POSTGRES_URI
|
||||
```
|
||||
|
||||
Résultat observé :
|
||||
|
||||
```text
|
||||
KSP Store RawTransaction live proof: server major 17
|
||||
test pre_009_real_postgres_raw_transaction_vertical_slice_is_atomic_concurrent_and_recoverable ... ok
|
||||
1 passed; 0 failed
|
||||
```
|
||||
|
||||
Cette preuve couvre notamment la concurrence divergente, la quarantaine durable, la cohérence selector/projection et le rollback tardif ajoutés au hardening `pre.008`.
|
||||
|
||||
### 12.5 Périmètre explicitement reporté
|
||||
|
||||
Ne sont **pas** revendiqués comme acquis par `0.3.16` :
|
||||
|
||||
```text
|
||||
résolution/reopen/historique complet des conflict cases
|
||||
rétention/pins/purge guards propres aux variantes
|
||||
classification Store Transient/Terminal complète
|
||||
retry Store / Blocked / backoff Worker
|
||||
reconnexion WebSocket/Yellowstone configurable étendue
|
||||
inspection/résolution de variantes via ksp-store-lib
|
||||
Store Desk conflits/variantes/résolutions
|
||||
Backfill multi-route/multi-stratégie
|
||||
Backfill Desk multi-route
|
||||
```
|
||||
|
||||
Les six premiers groupes appartiennent à `0.3.17`, Store Desk à `0.3.18`, puis les extensions Backfill sont ciblées par défaut sur `0.3.19`/`0.3.20`.
|
||||
|
||||
### 12.6 État de fermeture avant publication
|
||||
|
||||
```text
|
||||
architecture/sizing CLOSED
|
||||
Store API variantes/comparateur CLOSED
|
||||
migration V003 CLOSED
|
||||
variant ledger + observation mapping CLOSED
|
||||
promotion canonique atomique CLOSED
|
||||
conflit durable minimal CLOSED
|
||||
Worker non terminal sur quarantaine CLOSED
|
||||
régression Backfill CLOSED
|
||||
hardening concurrence/rollback CLOSED
|
||||
PostgreSQL RawTransaction live PASS sur PostgreSQL 17
|
||||
gate technique pre.008-fix.001 PASS
|
||||
réconciliation documentaire pre.009 CURRENT LANE
|
||||
préparation publication pre.010 PENDING
|
||||
rel.001 PENDING
|
||||
```
|
||||
|
||||
La lane `pre.009` ne doit modifier ni `CHANGELOG.md`, ni `ROADMAP.md`, ni le prompt de démarrage `0.3.17`. Ces trois responsabilités appartiennent exclusivement à `pre.010`.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user