v0.3.9-pre.003
This commit is contained in:
145
deltas/0.3.9/pre.003.md
Normal file
145
deltas/0.3.9/pre.003.md
Normal file
@@ -0,0 +1,145 @@
|
||||
<!-- file: deltas/0.3.9/pre.003.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.3.9-pre.003` — hardening et freeze fonctionnelle de `ksp-worker-api`
|
||||
|
||||
## Base requise
|
||||
|
||||
```text
|
||||
0.3.9-pre.002-fix.002
|
||||
workspace.package.version = 0.3.9-pre.2.fix.2
|
||||
```
|
||||
|
||||
Le gate opérateur de cette base est fermé : audits Rust/Markdown propres, `cargo check --workspace` PASS, Clippy `--all-targets --all-features -- -D warnings` PASS, `cargo test -p ksp-worker-api` PASS avec 13 tests unitaires, 4 tests dependency-boundary et 2 tests public API, puis les deux `cargo tree` ciblés confirment la frontière `ksp-worker-api -> ksp-core-lib`.
|
||||
|
||||
## Objet
|
||||
|
||||
Fermer le contrat Worker générique avant l'audit RAW Transaction. La production API matérialisée en `pre.002` n'est pas élargie : la tranche ajoute les preuves adversariales, external-consumer et release-completeness prévues par le plan, ainsi que les documents durables d'une bibliothèque fonctionnellement complète.
|
||||
|
||||
## Hardening lifecycle et redaction
|
||||
|
||||
`tests/security_hardening.rs` couvre :
|
||||
|
||||
```text
|
||||
Stopped et Faulted immuables sous tous les mutateurs publics
|
||||
Running -> Faulted puis stop lifecycle rejeté
|
||||
Running -> Stopping -> Faulted puis Stopped rejeté
|
||||
Running -> Stopping -> Stopped puis Faulted rejeté
|
||||
WorkerId hostile redacted dans Debug
|
||||
WorkerLifecycle et WorkerSnapshot sans fuite de l'identité hostile
|
||||
valeur d'identité invalide jamais recopiée dans Error/Debug/context
|
||||
WorkerStopToken Send + Sync, partagé et visible cross-thread
|
||||
stop demandé après terminal sans réanimation du lifecycle
|
||||
Send + Sync des primitives publiques promises
|
||||
```
|
||||
|
||||
Le premier état terminal validement enregistré reste donc autoritaire ; le token de stop transporte seulement une intention coopérative.
|
||||
|
||||
## Source latest-value externe std-only
|
||||
|
||||
`tests/snapshot_source.rs` implémente `WorkerSnapshotSource` depuis le contexte d'un vrai test d'intégration, sans dépendance de test supplémentaire et avec uniquement `std` :
|
||||
|
||||
```text
|
||||
Arc
|
||||
Mutex
|
||||
Waker
|
||||
Future
|
||||
Pin
|
||||
AtomicBool
|
||||
```
|
||||
|
||||
Cette implémentation prouve par compilation l'object-safety via `&dyn WorkerSnapshotSource`, le contrat `Send + Sync` et le future `Send`. Les scénarios couvrent :
|
||||
|
||||
```text
|
||||
deux listeners indépendants enregistrés sur la même séquence
|
||||
listener rapide reçoit sequence 1
|
||||
listener lent saute directement à sequence 2 après coalescing
|
||||
late listener commence par current() puis attend sequence > observed
|
||||
publication terminale réveille le listener
|
||||
snapshot Stopped terminal reste lisible par current()
|
||||
```
|
||||
|
||||
Aucune queue d'événements ni runtime async concret n'entre dans `ksp-worker-api`.
|
||||
|
||||
## Freeze de surface
|
||||
|
||||
`tests/release_completeness.rs` verrouille :
|
||||
|
||||
```text
|
||||
six modules de production exacts : error, identity, lib, lifecycle, snapshot, stop
|
||||
inventaire exact des vingt-et-un reexports crate-root
|
||||
aucun pub mod
|
||||
WorkerSnapshot limité à id/kind/sequence/state/health/activity
|
||||
aucun payload/String libre dans le snapshot commun
|
||||
aucun WorkerHandle générique
|
||||
aucun Job/checkpoint/backfill/RawTransaction/provider/endpoint/slot
|
||||
aucun Config/Interface/Logging/Transport/Store
|
||||
aucun Tokio/Futures crate/serde/Tauri/Solana/provider SDK
|
||||
```
|
||||
|
||||
La dependency-boundary existante reste inchangée et continue d'imposer `ksp-core-lib` comme unique dépendance normale.
|
||||
|
||||
## Documentation durable
|
||||
|
||||
La crate reçoit :
|
||||
|
||||
```text
|
||||
crates/ksp-worker-api/README.md
|
||||
crates/ksp-worker-api/USAGE.md
|
||||
```
|
||||
|
||||
Le README décrit responsabilités, lifecycle, latest-value, stop, restart ownership et firewall. `USAGE.md` reste version-neutral et fournit les exemples de consommation crate-root pour identity, lifecycle, health/activity, stop, snapshot, `WorkerSnapshotSource` et sequence. La réconciliation documentaire finale de `pre.008` pourra uniquement ajuster ces documents aux preuves finales sans les transformer en journal de release.
|
||||
|
||||
## Version
|
||||
|
||||
```text
|
||||
workspace.package.version = 0.3.9-pre.3
|
||||
delivery = 0.3.9-pre.003
|
||||
```
|
||||
|
||||
Le header du `Cargo.toml` racine passe de `479` à `480`.
|
||||
|
||||
## Fichiers modifiés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
docs/plans/030-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT_PLAN.md
|
||||
docs/validation/026-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT.md
|
||||
```
|
||||
|
||||
## Fichiers ajoutés
|
||||
|
||||
```text
|
||||
crates/ksp-worker-api/README.md
|
||||
crates/ksp-worker-api/USAGE.md
|
||||
crates/ksp-worker-api/tests/release_completeness.rs
|
||||
crates/ksp-worker-api/tests/security_hardening.rs
|
||||
crates/ksp-worker-api/tests/snapshot_source.rs
|
||||
deltas/0.3.9/pre.003.md
|
||||
```
|
||||
|
||||
## Audits d'assemblage
|
||||
|
||||
```text
|
||||
General Rust rule audit: clean
|
||||
Rust export completeness audit: 0 candidate(s)
|
||||
KSP workspace Rust rule audit: clean
|
||||
Markdown table audit: clean (320 table(s), 736 file(s))
|
||||
```
|
||||
|
||||
Cargo/rustc/rustfmt ne sont pas disponibles dans l'environnement d'assemblage ; aucun nouveau gate Rust n'est déclaré PASS ici.
|
||||
|
||||
## Gate opérateur demandé
|
||||
|
||||
```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-api
|
||||
cargo tree -p ksp-worker-api --edges normal
|
||||
cargo tree -p ksp-worker-api -e features
|
||||
```
|
||||
|
||||
La freeze fonctionnelle de Worker API devient effective uniquement après fermeture de ce gate. `pre.004` peut alors commencer l'audit RAW standard/KSP sans rouvrir l'API pour des besoins Solana-specific.
|
||||
Reference in New Issue
Block a user