0.3.15-pre.010-fix.001

This commit is contained in:
2026-09-15 05:53:36 +02:00
parent 9fd51c5a41
commit e919945d1e
20 changed files with 1013 additions and 28 deletions

View File

@@ -0,0 +1,113 @@
<!-- file: deltas/0.3.15/pre.010-fix.001.md -->
<!-- version: 1 -->
# Delta `0.3.15-pre.010-fix.001`
## Base
```text
base archive : ksp-general-0.3.15-pre.010.zip
base SHA-256 : c7365dad72c306c4781e351c7b4f1111ebcdce0ed34946b158f332d6b1523fa5
base version : 0.3.15-pre.10
```
## Objectif
Corriger le faux positif du canari Desktop Security introduit par `pre.010` sans modifier le contrat de monitoring, le runtime, l'acquisition ni l'IPC.
Le test `pre_010_monitoring_projection_is_source_neutral_payload_free_and_javascript_exact` interdisait la sous-chaîne générique `raw_transaction` dans l'ensemble du fichier `route_monitoring.rs`. Cette chaîne est légitime dans le nom de crate `ksp_worker_raw_transaction_ingest_lib` et dans les chemins d'export TypeScript de l'application ; sa présence ne prouve aucune exposition de payload RAW.
Le correctif borne le scan RAW à la déclaration de `RawIngestRouteMonitoringDto`, c'est-à-dire à la surface effectivement sérialisable vers le frontend. Dans cette surface, les marqueurs suivants restent interdits :
```text
raw_transaction
signature
payload
canonical_bytes
wire_bytes
transaction_bytes
```
Les interdictions physiques/secrets restent en parallèle appliquées à l'ensemble de `route_monitoring.rs` :
```text
endpoint_url
connection_uri
api_key
source_key
worker_id
x-token
```
Aucune structure DTO, aucun getter Worker, aucun événement Tauri, aucune commande IPC et aucune logique runtime n'est modifié.
## Version
```text
workspace.package.version : 0.3.15-pre.10.fix.1
root Cargo header counter : 619
```
Le bump est requis car le correctif modifie un test Rust participant au code/build de validation de la prerelease.
## Fichiers ajoutés
```text
deltas/0.3.15/pre.010-fix.001.md
```
## Fichiers modifiés
```text
Cargo.toml
crates/ksp-app-raw-transaction-ingest-desk/tests/desktop_security.rs
docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md
```
## Fichiers supprimés
Aucun.
## Validations exécutées dans l'environnement d'assemblage
```text
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.15
```
Des canaris statiques complémentaires vérifient que :
```text
workspace.package.version vaut 0.3.15-pre.10.fix.1
le scan interdit encore les marqueurs endpoint/secret/handle
le scan RAW est borné à la déclaration sérialisable RawIngestRouteMonitoringDto
la chaîne raw_transaction reste interdite dans cette surface DTO mais n'est plus confondue avec les noms de crate/bindings
aucun fichier runtime de pre.010 n'est modifié par ce fix
```
## Validations non exécutées dans l'environnement d'assemblage
Cargo/rustfmt ne sont pas disponibles dans cet environnement ; les gates suivants ne sont donc pas déclarés PASS ici :
```bash
cargo fmt --all
cargo fmt --all -- --check
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test -p ksp-app-raw-transaction-ingest-desk --all-targets --all-features
cargo test -p ksp-worker-raw-transaction-ingest-lib --all-targets --all-features
cargo test --workspace --all-targets --all-features
(cd crates/ksp-app-raw-transaction-ingest-desk && cargo tauri dev)
```
Aucun `npm run build` manuel n'est requis ; le frontend reste géré par le workflow Tauri/Vite du projet.
## Décisions
- Conserver le contrat monitoring `pre.010` inchangé : le gate n'a détecté aucune fuite DTO/runtime, seulement un scan textuel trop large.
- Borner le scan RAW à la déclaration DTO sérialisable et conserver un scan fichier complet séparé pour les marqueurs physiques/secrets.
- Ne pas toucher README, USAGE, plan, Worker ni runtime dans ce correctif ciblé.
## Questions ouvertes
Aucune pour ce correctif. La poursuite fonctionnelle reste `pre.011` après validation opérateur de `pre.010-fix.001`.

153
deltas/0.3.15/pre.010.md Normal file
View File

@@ -0,0 +1,153 @@
<!-- file: deltas/0.3.15/pre.010.md -->
<!-- version: 1 -->
# Delta `0.3.15-pre.010`
## Base
```text
base archive : ksp-general-0.3.15-pre.009-fix.003.zip
base SHA-256 : 7882f39d8ac213712f81b4dbef1681e4b63064e1ebdf0b8515e343cf3d2094ef
base version : 0.3.15-pre.9.fix.3
```
Le gate opérateur de la base confirme les audits Rust/Markdown, `cargo check --workspace`, Clippy strict, les tests Worker Raw Transaction Ingest, `workspace_logging`, le workspace all-targets/all-features et le lancement Tauri. Le correctif `pre.009-fix.003` supprime le fault synthétique `source.admission_closed` observé lors du Stop coopératif des routes Mainnet Yellowstone et HTTP Block Polling.
## Objectif
Matérialiser l'observabilité runtime prévue pour la Desk sans modifier l'acquisition : relayer les snapshots latest-value de chaque Worker indépendant vers un contrat IPC sûr couvrant lifecycle, health, activity, admission/persistence, backpressure, reconnect/replay, continuité, gaps et repair.
## Projection latest-value sûre
Le nouveau module `route_monitoring` consomme exclusivement `RawTransactionIngestSnapshotSource` et `RawTransactionIngestSnapshot`. Il construit deux DTO frontend-safe :
```text
RawIngestRouteMonitoringDto
RawIngestRouteGapDto
```
La projection comprend notamment :
```text
lifecycle / terminal / fault code stable
health / activity
admission queue / persistence concurrency
admitted / canonicalized / persisted
entity / observation outcomes
store/source failures
backpressure waits
hydration pending / processing frontier
continuity policy / frontier / open-gap state / future coverage
source active/reconnecting/failed
reconnect / replay-attempt / replay-retention-gap counters
gap details bornés
repair totals par mécanisme
```
Aucune URL, credential, provider physique, source key, `WorkerId`, handle, URI Store, signature ou payload `RawTransaction` n'est projeté.
Les séquences, compteurs et slots issus de `u64` traversent IPC sous forme de texte décimal afin d'éviter toute perte de précision JavaScript. Les cardinalités bornées issues de `usize` sont converties en `u32` avec échec fermé lorsqu'elles ne sont pas représentables.
## Relais Tauri et resynchronisation
Chaque Start conserve le monitor terminal/cleanup existant et ajoute un monitor latest-value indépendant :
```text
Worker handle
-> RawTransactionIngestSnapshotSource clone
-> projection sûre
-> event Tauri ksp-raw-ingest-route-status
```
Le monitor d'observabilité ne possède ni Store ni lifecycle. Une erreur d'émission UI n'arrête pas le Worker et ne modifie pas le cleanup terminal.
La commande :
```text
get_route_monitoring
```
retourne les latest values des routes actives ainsi que les derniers terminaux sûrs retenus dans la session runtime same-network. Un nouveau Start de la même identité remplace son ancien terminal ; une nouvelle session réseau repart sans terminaux hérités.
Cette commande permet une resynchronisation explicite même si le frontend a manqué un événement intermédiaire.
## Extension minimale du snapshot Worker
Le snapshot concret portait déjà les cinq informations de continuité nécessaires au mapping UI mais ne les exposait pas par getters publics. `pre.010` ouvre uniquement :
```text
continuity_policy_observed()
continuity_frontier_slot()
continuity_has_open_gaps()
failed_source_losses_reconciled()
future_target_coverage()
```
Aucun nouveau type Worker, aucune logique de retry/reconnect/replay/repair, aucune persistence et aucune dépendance ne sont ajoutés.
## Frontend
La tranche fournit le contrat backend/event/resync mais ne finalise pas encore l'affichage détaillé de supervision. La consommation UI des métriques, le refresh dédié et le tracing TypeScript associé restent `pre.011`.
## Version
```text
workspace.package.version : 0.3.15-pre.10
root Cargo header counter : 618
```
## Validation d'assemblage
L'environnement d'assemblage ne fournit ni Cargo ni rustfmt ; aucun résultat Cargo local n'est donc revendiqué.
Le gate opérateur attendu est :
```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/0.3.15
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test -p ksp-app-raw-transaction-ingest-desk --all-targets --all-features
cargo test -p ksp-worker-raw-transaction-ingest-lib --all-targets --all-features
cargo test --workspace --all-targets --all-features
(cd crates/ksp-app-raw-transaction-ingest-desk && cargo tauri dev)
```
Aucun script npm applicatif n'est exécuté directement par l'opérateur.
## Inventaire exact du delta
Le delta contient `3` ajouts, `16` modifications et aucune suppression, soit `19` entrées.
Ajouts :
```text
crates/ksp-app-raw-transaction-ingest-desk/src/route_monitoring.rs
crates/ksp-app-raw-transaction-ingest-desk/unit_tests/route_monitoring.rs
deltas/0.3.15/pre.010.md
```
Modifications :
```text
Cargo.toml
crates/ksp-app-raw-transaction-ingest-desk/README.md
crates/ksp-app-raw-transaction-ingest-desk/USAGE.md
crates/ksp-app-raw-transaction-ingest-desk/src/app_state.rs
crates/ksp-app-raw-transaction-ingest-desk/src/lib.rs
crates/ksp-app-raw-transaction-ingest-desk/src/route_runtime.rs
crates/ksp-app-raw-transaction-ingest-desk/src/tauri.rs
crates/ksp-app-raw-transaction-ingest-desk/tests/dependency_boundary.rs
crates/ksp-app-raw-transaction-ingest-desk/tests/desktop_contract.rs
crates/ksp-app-raw-transaction-ingest-desk/tests/desktop_security.rs
crates/ksp-app-raw-transaction-ingest-desk/tests/release_completeness.rs
crates/ksp-app-raw-transaction-ingest-desk/unit_tests/route_runtime.rs
crates/ksp-worker-raw-transaction-ingest-lib/src/snapshot.rs
crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/snapshot.rs
docs/plans/036-V0_3_15_RAW_TRANSACTION_INGEST_DESK_PLAN.md
docs/validation/032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md
```
Suppressions : aucune.