v0.3.13-pre.010

This commit is contained in:
2026-09-10 21:02:29 +02:00
parent 0f8f38ff52
commit f636169783
16 changed files with 476 additions and 32 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/034-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE_PLAN.md -->
<!-- version: 10 -->
<!-- version: 11 -->
# Plan v0.3.13 — WS standard / Helius / HTTP live + convergence multi-source RawTransaction
@@ -1406,3 +1406,76 @@ cargo test -p ksp-worker-raw-transaction-ingest-lib
```
Aucun `cargo tree` n'est requis pour ce gate : `pre.009` ne modifie ni dépendance ni feature. Les graphes seront réaudités si le graphe change ou à la fermeture technique de `0.3.13`.
## 74. Gate opérateur pre.009-fix.002 reçu
Le 10 septembre 2026, le gate complet communiqué est vert pour toutes les commandes exécutées : fmt, audits Rust, Markdown `340/847`, workspace check, Clippy strict, Transport `389` unit + `52` public-api + `44` release-completeness + `4` doc-tests avec `5` smokes live opt-in ignorés, puis Worker `99` unit + `4` cross-layer + `16` dependency-boundary + `23` hardening + `17` public-api + `4` release-completeness et `0` doc-test.
Aucun `cargo tree` n'était requis ni exécuté pour ce gate.
## 75. Surface snapshot/health pre.010
La projection publique multi-source reste volontairement minimale et source-neutral :
```text
source_total
source_active
source_reconnecting
source_failed
source_state agrégé
source_failure_total
backpressure_wait_total
```
`source_total` est initialisé dès le démarrage depuis la collection de runtime resources validée. Les autres gauges sont recalculées depuis l'inventaire privé borné `source_key -> latest state`; seules les valeurs numériques agrégées atteignent `RawTransactionIngestSnapshot`.
Aucune clé logique, identité provider, endpoint, filtre, URL, credential ou état Transport spécifique n'entre dans le snapshot public.
## 76. Health et activity conservatives pre.010
Pendant `WorkerState::Running`, la health commune suit l'ordre conservateur suivant :
```text
source_failed > 0 -> Unhealthy
sinon source_reconnecting > 0 -> Degraded
sinon source_total > 0 et active < total -> Degraded
sinon -> Healthy
```
Une composition partiellement démarrée, une source fermée/perdue avant terminal ou un reconnect transitoire ne peut donc pas être présentée comme entièrement saine. `Faulted` reste toujours `Unhealthy`; `Stopping`/`Stopped` conservent la dernière health qualifiée.
L'activity générique reste fondée sur du travail concret : queue admission, persistence in-flight, hydration pending, reconnect ou closing. Une source simplement `Active` sans travail en cours ne transforme pas artificiellement `Idle` en `Active`.
## 77. Preuves déterministes pre.010
Les preuves ajoutées couvrent :
```text
source_total disponible dès le snapshot initial d'un run composé
inventaire 2 sources -> comptes Active/Reconnecting exacts
3 sources dont une Reconnecting -> Degraded
retour des 3 sources à Active -> Healthy
une source Failed -> Unhealthy
getters publics source-neutral disponibles depuis crate root
aucune source_key/provider/endpoint/filter dans snapshot
aucune nouvelle dépendance ou backend direct
release-completeness verrouille les nouveaux canaris
```
## 78. Frontière de tranche pre.010
`pre.010` ne change ni la politique de terminalité source, ni les quotas/fairness, ni la convergence persistence. Elle n'ajoute pas de failover, de coverage inference, de vue publique par source ou de scheduler pondéré. Les races stop/fault pendant connect, hydration, polling et persistence restent la tranche `pre.011`.
## 79. Gate opérateur requis avant pre.011
```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 : `pre.010` ne modifie ni dépendance ni feature. Le Transport n'est pas modifié par cette tranche snapshot/health.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/030-V0_3_13_MULTI_SOURCE_LIVE_CONVERGENCE.md -->
<!-- version: 10 -->
<!-- version: 11 -->
# Validation v0.3.13 — WS standard / Helius / HTTP live + convergence multi-source
@@ -1411,3 +1411,77 @@ cargo test -p ksp-worker-raw-transaction-ingest-lib
```
Aucun `cargo tree` n'est requis pour ce gate : `pre.009` ne modifie ni dépendance ni feature. Les graphes seront réaudités si le graphe change ou à la fermeture technique de `0.3.13`.
## 77. Gate complet pre.009-fix.002 reçu
Preuve opérateur du 10 septembre 2026 :
```text
fmt : PASS
audits Rust : clean / export completeness 0
Markdown : clean, 340 tables / 847 files
cargo check --workspace : PASS
clippy strict : PASS
Transport : 389 unit + 52 public-api + 44 release-completeness + 4 doc-tests, 0 échec
smokes Transport live opt-in : 5 ignored comme prévu
Worker : 99 unit + 4 cross-layer + 16 dependency-boundary + 23 hardening + 17 public-api + 4 release-completeness, 0 échec
Worker doc-tests : 0
```
Aucun `cargo tree` n'est revendiqué pour ce gate.
## 78. Surface pre.010 matérialisée
```text
RawTransactionIngestSnapshot::source_total
RawTransactionIngestSnapshot::source_active
RawTransactionIngestSnapshot::source_reconnecting
RawTransactionIngestSnapshot::source_failed
projection privée with_source_counts
inventaire privé -> comptes source-neutral
source_total initialisé depuis RawTransactionIngestRuntimeResources::source_count
health commune conservative
```
Les informations par source restent dans l'inventaire privé; le snapshot public ne contient aucune `source_key` ni information provider/endpoint/filter.
## 79. Invariants health/activity pre.010
```text
Running + source_failed > 0 -> Unhealthy
Running + source_reconnecting > 0 -> Degraded
Running + source_total > 0 + source_active < source_total -> Degraded
Running + toutes sources attendues Active -> Healthy
Faulted -> Unhealthy
Stopping/Stopped -> dernière health qualifiée
```
`WorkerActivity::Active` continue à représenter du travail concret ou un reconnect/closing, pas simplement l'existence d'une source ouverte.
## 80. Non-claims pre.010
```text
pas de snapshot public par source
pas de provider health/tier/endpoint public
pas de failover ou coverage inference
pas de changement des quotas/fairness pre.009
pas de changement de convergence persistence
pas encore de fermeture exhaustive des races/shutdown pre.011
pas de nouvelle dépendance/feature
```
## 81. Validation locale d'assemblage et gate avant pre.011
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
```