v0.3.13-pre.011

This commit is contained in:
2026-09-10 21:27:18 +02:00
parent f636169783
commit 06319655b0
15 changed files with 778 additions and 69 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/030-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE.md -->
<!-- version: 11 -->
<!-- version: 12 -->
# Validation v0.3.13 — WS standard / Helius / HTTP live + convergence multi-source
@@ -1485,3 +1485,98 @@ cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test -p ksp-worker-raw-transaction-ingest-lib
```
## 82. Gate complet pre.010 reçu
Preuve opérateur du 10 septembre 2026 :
```text
fmt : PASS
audits Rust : clean / export completeness 0
Markdown : clean, 340 tables / 848 files
cargo check --workspace : PASS
clippy strict : PASS
Worker : 100 unit + 4 cross-layer + 17 dependency-boundary + 24 hardening + 18 public-api + 4 release-completeness, 0 échec
Worker doc-tests : 0
```
Le Transport n'était pas modifié par `pre.010` et n'a pas été rejoué. Aucun `cargo tree` n'est revendiqué.
## 83. Durcissement races/shutdown pre.011 matérialisé
La tranche ferme les transitions concurrentes suivantes sans changer les frontières de couche :
```text
stop vs source fault
abort supervisor vs enfants source imbriqués
abort leader hydration vs followers
publication hydration vs arrivée d'un nouveau leader
shutdown deadline vs persistence bloquée
counter exhaustion vs remapping générique source_failed
publication inventaire vs identité/index incohérent
```
`publish_and_remove` notifie les followers sous le mutex de registry avant de retirer la clé. Le retrait rend ensuite seulement la clé disponible à une nouvelle génération de leader. Le `Drop` du leader guard reste le chemin fail-closed pour un leader aborté avant publication normale.
## 84. Agrégation et terminalité vérifiées pre.011
L'inventaire agrégé utilise désormais `checked_add` pour `hydration_pending`, `source_reconnect_total`, `source_replay_attempt_total` et `source_continuity_gap_total`. Aucun clamp par `saturating_add` n'est admis dans cette agrégation.
Un overflow devient `worker_raw_transaction_ingest.counter_exhausted`. Ce code est préservé par le supervisor lorsqu'il provient d'une source, au lieu d'être converti en `worker_raw_transaction_ingest.source_failed`.
Les mises à jour d'inventaire invalides échouent explicitement sur des codes internes stables :
```text
source.inventory_entry_missing
source.inventory_key_mismatch
source.inventory_projection_missing
```
Aucune valeur source/provider n'est recopiée dans l'erreur.
## 85. Preuves unitaires et externes pre.011
Les tests ajoutés prouvent :
```text
stale identity/index inventaire rejetés
counter overflow agrégé détecté
leader hydration aborté -> follower réveillé + registry nettoyée
abort du supervisor source -> enfant imbriqué détruit
stop et fault simultanés -> fault non masquée et sibling rejoint
drain timeout -> persistence abortée/jointe et aucune complétion tardive
terminal counter_exhausted retenu après source completion
```
Les canaris `dependency_boundary`, `hardening`, `public_api` et `release_completeness` verrouillent l'ownership, l'ordre terminal, l'atomicité notification/retrait, l'absence de `unbounded_channel`, l'absence de backend/client direct et l'absence de nouvelle surface publique d'identité source.
## 86. Non-claims pre.011
```text
pas de changement Transport
pas de nouvelle dépendance/feature
pas de retry/failover supplémentaire
pas de politique de réparation historique
pas de changement convergence/fairness
pas de nouvelle surface snapshot publique
pas encore de completeness/security cross-layer exhaustive pre.012
pas encore de gate technique/live pre.013
```
## 87. Validation locale d'assemblage et gate avant pre.012
Le toolchain Cargo/Rustfmt n'est pas disponible dans l'environnement d'assemblage. Les commandes Cargo post-modification restent `NON EXÉCUTÉ LOCAL`.
Gate opérateur demandé :
```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-worker-raw-transaction-ingest-lib
```
Aucun `cargo tree` n'est requis et le Transport n'a pas besoin d'être rejoué pour cette tranche qui ne modifie ni le graphe ni `ksp-onchain-transport-lib`.