v0.3.9-pre.002

This commit is contained in:
2026-09-04 14:21:05 +02:00
parent 5c797827f7
commit 7d0710a1e6
17 changed files with 1235 additions and 22 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/030-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT_PLAN.md -->
<!-- version: 3 -->
<!-- version: 4 -->
# Plan v0.3.9 — Worker API générique + audit RAW Transaction
@@ -544,9 +544,22 @@ Laudit de `docs/rules/VERSION_WORKFLOW.md` a mis en évidence que `VER-ID-009
### `pre.002` — crate + contrats Worker API décidés
**Statut : pvu.**
**Statut : réalisé.**
Budget cible : **15-20 min**. Créer le noyau `ksp-worker-api` selon les contrats décidés, avec les tests unitaires, public API et dependency boundary prévus.
Budget cible : **15-20 min**. Le noyau `ksp-worker-api` est matérialisé selon les contrats décidés, avec tests unitaires, public API et dependency boundary.
Surface effectivement ouverte :
```text
WorkerId / WorkerKindCode
WorkerState / WorkerHealth / WorkerActivity / WorkerLifecycle
WorkerStopToken
WorkerSnapshotSequence / WorkerSnapshot / WorkerSnapshotFuture / WorkerSnapshotSource
4 ErrorCode worker_api
reexports Error / ErrorCode / ErrorContext / Result
```
La crate dépend uniquement de `ksp-core-lib`, ne possède aucune feature/dev/build dependency et n'ouvre ni runtime, ni Job, ni Transport/Store/Config, ni contrat Solana. Le snapshot commun reste fixe et sans payload métier. Les preuves adversariales, object-safety, implémentation externe et latest-value multi-listener restent volontairement dans `pre.003`.
### `pre.003` — hardening, races, object-safety, impl externe et freeze

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/026-V0_3_9_WORKER_API_RAW_TRANSACTION_AUDIT.md -->
<!-- version: 2 -->
<!-- version: 3 -->
# Validation v0.3.9 — Worker API + audit RAW Transaction
@@ -38,6 +38,20 @@ Cette matrice suit les preuves de `0.3.9` sans remplacer les deltas. `pre.001` f
Le ZIP ne contient pas `.git`; lexistence du tag nest pas inspectée directement. Le `rel.001` stable décrit lopération `tag v0.3.8` et le prompt autorise larchive stable explicitement fournie comme base.
### Gate opérateur avant `pre.002`
Létat `0.3.9-pre.1.fix.2` a ensuite été validé par lopérateur avant ouverture de `pre.002` :
- [X] `cargo clean` exécuté.
- [X] `cargo fmt --all` exécuté.
- [X] audits Rust complets propres.
- [X] audit Markdown propre : 320 tables / 730 fichiers.
- [X] `cargo check --workspace` PASS.
- [X] `cargo clippy --workspace --all-targets --all-features -- -D warnings` PASS.
- [X] `cargo test --workspace --all-targets --all-features` PASS ; seuls les smokes opt-in explicitement `ignored` restent non exécutés.
- [X] les cinq Desks produisent chacun leurs bundles `deb` et `rpm` avec la version `0.3.9-pre.1.fix.2`.
- [X] `cargo tree --duplicates` exécuté jusqu'au retour shell, sans échec de commande signalé.
## 3. Architecture Worker API décidée en `pre.001`
- [X] Job et Worker restent deux lifecycle APIs sémantiquement distinctes.
@@ -66,18 +80,20 @@ Le ZIP ne contient pas `.git`; lexistence du tag nest pas inspectée direc
### `pre.002`
- [ ] `crates/ksp-worker-api` créée dans le workspace.
- [ ] Manifest sans feature/dev/build dependency et avec Core uniquement.
- [ ] `identity.rs`, `error.rs`, `lifecycle.rs`, `snapshot.rs`, `stop.rs`, `lib.rs` matérialisés.
- [ ] Façade crate-root uniquement, aucun `pub mod`.
- [ ] Quatre error codes stables `worker_api` matérialisés.
- [ ] Bounds exacts identity testés.
- [ ] Lifecycle transition matrix exacte testée.
- [ ] Transition invalide conserve létat source.
- [ ] Stop token idempotent/shared testée.
- [ ] Snapshot sequence/exhaustion testée.
- [ ] Public API consumer depuis crate root testée.
- [ ] Dependency firewall initial testée.
Les cases cochées de cette sous-section attestent la matérialisation de la surface et des canaries prévues. L'environnement d'assemblage ne disposant pas de Cargo, leur exécution Rust reste un gate opérateur avant `pre.003`.
- [X] `crates/ksp-worker-api` créée dans le workspace.
- [X] Manifest sans feature/dev/build dependency et avec Core uniquement.
- [X] `identity.rs`, `error.rs`, `lifecycle.rs`, `snapshot.rs`, `stop.rs`, `lib.rs` matérialisés.
- [X] Façade crate-root uniquement, aucun `pub mod`.
- [X] Quatre error codes stables `worker_api` matérialisés.
- [X] Bounds exacts identity testés.
- [X] Lifecycle transition matrix exacte testée.
- [X] Transition invalide conserve létat source.
- [X] Stop token idempotent/shared testée.
- [X] Snapshot sequence/exhaustion testée.
- [X] Public API consumer depuis crate root testée.
- [X] Dependency firewall initial testée.
### `pre.003`
@@ -197,10 +213,10 @@ Aucun item ci-dessous nest déclaré exécuté en `pre.001`.
La livraison initiale `pre.001` avait conservé `workspace.package.version = 0.3.8` en suivant lexception du prompt 028. Cette exception est supplantée par la règle normative `VER-ID-009`.
Après `pre.001-fix.002`, létat courant est :
Après `pre.002`, létat courant est :
```text
workspace.package.version = 0.3.9-pre.1.fix.2
workspace.package.version = 0.3.9-pre.2
```
Ce fix modifie `Cargo.toml` et suit donc `VER-ID-007`/`VER-ID-010`. `0.3.9-pre.2` reste la version Cargo de la future tranche non-fix `pre.002`.
`pre.002` est une nouvelle tranche non-fix et synchronise donc Cargo conformément à `VER-ID-006` et `VER-ID-009`. L'état précédent `0.3.9-pre.1.fix.2` reste documenté dans `pre.001-fix.002`.