v0.3.11-pre.003
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/032-V0_3_11_RAW_TRANSACTION_INGEST_WORKER_FOUNDATION_PLAN.md -->
|
||||
<!-- version: 2 -->
|
||||
<!-- version: 3 -->
|
||||
|
||||
# Plan v0.3.11 — fondation runtime du Worker RawTransaction ingest
|
||||
|
||||
@@ -699,12 +699,14 @@ Budget cible : **10–15 min**. Vérifier la stable, corriger les deux divergenc
|
||||
|
||||
Budget cible : **10–15 min**. Créer la crate minimale, l'ajouter au workspace, installer uniquement les edges décidés et les tests de manifest/dependency boundary. Pas de runtime comportemental.
|
||||
|
||||
État après matérialisation : **implémenté, gate opérateur requis**. Le manifest porte exactement les sept edges décidés (`core`, `logging`, common RAW, façade Store sans backend par défaut, Worker API, `sha2`, Tokio `macros/rt/sync/time`) ; la crate-root reste sans API ni comportement runtime et un test externe verrouille le firewall.
|
||||
État après matérialisation : **implémenté et gate opérateur validé**. Le manifest porte exactement les sept edges décidés (`core`, `logging`, common RAW, façade Store sans backend par défaut, Worker API, `sha2`, Tokio `macros/rt/sync/time`) ; la crate-root reste sans API ni comportement runtime et un test externe verrouille le firewall. Le gate communiqué le 8 septembre 2026 est vert sur `fmt`, audits, `check`, Clippy strict, tests de crate et les deux arbres Cargo.
|
||||
|
||||
### `pre.003` — identity + settings foundation
|
||||
|
||||
Budget cible : **10–15 min**. Kind code, settings, defaults/bounds, validation network/worker identity et erreurs correspondantes. Aucun spawn.
|
||||
|
||||
État après matérialisation : **implémenté, gate opérateur requis**. Le kind stable vaut `raw_transaction_ingest`; les settings portent uniquement `network`, `worker_id`, queue, concurrence de persistence et drain timeout. Les identités restent validées par leurs types propriétaires, tandis que les trois bornes techniques sont verrouillées par un code d'erreur Worker stable et des tests unitaires/externes. Aucun `start`, spawn, channel, supervisor ou appel Store n'est introduit.
|
||||
|
||||
### `pre.004` — start/handle/lifecycle/terminal
|
||||
|
||||
Budget cible : **15–20 min**. Start sur runtime caller-owned, handle public, stop idempotent, lifecycle générique, terminal future sans JoinHandle public. Harness runtime minimal.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/028-V0_3_11_RAW_TRANSACTION_INGEST_WORKER_FOUNDATION.md -->
|
||||
<!-- version: 4 -->
|
||||
<!-- version: 6 -->
|
||||
|
||||
# Validation v0.3.11 — fondation runtime du Worker RawTransaction ingest
|
||||
|
||||
@@ -509,7 +509,7 @@ Rust export completeness audit: 0 candidate(s)
|
||||
KSP workspace Rust rule audit: clean
|
||||
|
||||
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas
|
||||
Markdown table audit: clean (340 table(s), 776 file(s))
|
||||
Markdown table audit: clean (340 table(s), 777 file(s))
|
||||
|
||||
contrôle TOML/statique : workspace 0.3.11-pre.2, 21 membres, Worker présent, 7 dépendances exactes, Store default-features=false, Tokio macros/rt/sync/time
|
||||
comparaison byte-à-byte avec pre.001 : 4 fichiers ajoutés, 3 modifiés, 0 supprimé
|
||||
@@ -532,3 +532,105 @@ cargo tree -p ksp-worker-raw-transaction-ingest-lib -e features
|
||||
|
||||
Critère de passage : le firewall exact reste vert et aucun backend Store, Job, Config, Transport/provider ou runtime comportemental prématuré n'apparaît.
|
||||
|
||||
## 14. Fermeture opérateur `pre.002` et matérialisation `pre.003`
|
||||
|
||||
### 14.1 Fermeture opérateur de `pre.002`
|
||||
|
||||
Le journal opérateur communiqué le 8 septembre 2026 ferme intégralement le gate demandé sur `0.3.11-pre.2` :
|
||||
|
||||
```text
|
||||
cargo fmt --all : terminé sans erreur
|
||||
python3 scripts/audit_rust_workspace_rules.py : clean, export completeness 0
|
||||
python3 scripts/audit_markdown_tables.py ... : clean (340 tables, 776 files)
|
||||
cargo check --workspace : terminé sans erreur
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings : terminé sans erreur
|
||||
cargo test -p ksp-worker-raw-transaction-ingest-lib : 3 tests externes PASS, 0 échec
|
||||
cargo tree -p ksp-worker-raw-transaction-ingest-lib --edges normal : firewall attendu
|
||||
cargo tree -p ksp-worker-raw-transaction-ingest-lib -e features : Tokio limité à macros/rt/sync/time
|
||||
```
|
||||
|
||||
Les arbres confirment notamment `ksp-store-lib` sans backend PostgreSQL transitif et l'absence de Config, Job/Backfill, Transport, provider SDK, `futures-util`, `reqwest`, `tonic` ou Yellowstone dans la crate Worker. `pre.003` peut donc être ouverte.
|
||||
|
||||
### 14.2 Scope matérialisé dans `pre.003`
|
||||
|
||||
La tranche ajoute uniquement :
|
||||
|
||||
```text
|
||||
RAW_TRANSACTION_INGEST_WORKER_KIND_CODE = "raw_transaction_ingest"
|
||||
RawTransactionIngestSettings
|
||||
ERROR_CODE_RAW_TRANSACTION_INGEST_SETTINGS_INVALID
|
||||
constantes defaults/min/max pour queue, persistence concurrency et drain timeout
|
||||
```
|
||||
|
||||
Le settings reste source-neutral et ne contient que :
|
||||
|
||||
```text
|
||||
network: RawNetworkId
|
||||
worker_id: WorkerId
|
||||
admission_queue_capacity: usize
|
||||
persistence_concurrency: usize
|
||||
shutdown_drain_timeout: Duration
|
||||
```
|
||||
|
||||
Les valeurs V1 sont exactement :
|
||||
|
||||
```text
|
||||
queue : 1..=65_536, default 256
|
||||
persistence concurrency : 1..=64, default 8
|
||||
drain : 100 ms..=30 s, default 5 s
|
||||
```
|
||||
|
||||
`RawNetworkId` reste construit/validé par `ksp-store-lib` et `WorkerId`/`WorkerKindCode` par `ksp-worker-api`. La crate concrète ne duplique pas leurs validateurs et n'introduit donc aucun nouveau format d'identité. Son erreur propre `worker_raw_transaction_ingest.settings_invalid` couvre seulement les bornes techniques qu'elle possède.
|
||||
|
||||
### 14.3 Sécurité de diagnostic
|
||||
|
||||
`Debug` de `RawTransactionIngestSettings` peut rendre le network sûr mais délègue l'identité Worker au `Debug` redacted de `WorkerId`. Le texte réel de `worker_id` n'est donc pas rendu. Les erreurs de bornes ajoutent uniquement le nom statique du champ invalide et aucune valeur caller-supplied.
|
||||
|
||||
### 14.4 Frontière runtime conservée
|
||||
|
||||
La tranche n'introduit aucun :
|
||||
|
||||
```text
|
||||
RawTransactionIngestWorker
|
||||
start/spawn
|
||||
JoinHandle/JoinSet
|
||||
mpsc/watch
|
||||
supervisor
|
||||
Store write
|
||||
canonicalisation RAW
|
||||
source live
|
||||
Transport
|
||||
```
|
||||
|
||||
Ces responsabilités restent respectivement dans `pre.004+`.
|
||||
|
||||
### 14.5 Preuves locales d'assemblage `pre.003`
|
||||
|
||||
Exécuté dans l'environnement d'assemblage après correction des écarts de forme détectés au premier passage :
|
||||
|
||||
```text
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
General Rust rule audit: clean
|
||||
Rust export completeness audit: 0 candidate(s)
|
||||
KSP workspace Rust rule audit: clean
|
||||
|
||||
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas
|
||||
Markdown table audit: clean (340 table(s), 776 file(s))
|
||||
```
|
||||
|
||||
L'environnement d'assemblage ne fournit ni `cargo`, ni `rustc`, ni `rustfmt`. Aucun gate Cargo `pre.003` n'est déclaré PASS localement.
|
||||
|
||||
### 14.6 Gate opérateur demandé pour `pre.003`
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
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
|
||||
cargo tree -p ksp-worker-raw-transaction-ingest-lib --edges normal
|
||||
cargo tree -p ksp-worker-raw-transaction-ingest-lib -e features
|
||||
```
|
||||
|
||||
Critère de passage : defaults/bornes/erreurs/identités sont verts, le dependency firewall reste inchangé et aucun comportement runtime de `pre.004` n'apparaît.
|
||||
|
||||
Reference in New Issue
Block a user