v0.3.6-pre.002
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/027-V0_3_6_JOB_API_BACKFILL_PLAN.md -->
|
||||
<!-- version: 2 -->
|
||||
<!-- version: 3 -->
|
||||
|
||||
# Plan v0.3.6 — Job API et premier backfill RAW
|
||||
|
||||
@@ -392,13 +392,15 @@ Le sizing tabulaire est remplacé par les présentes sous-sections afin que chaq
|
||||
|
||||
### `pre.002` — Identité, lifecycle et annulation Job API
|
||||
|
||||
**Statut : planifié.**
|
||||
**Statut : matérialisé ; audits statiques propres, gate Cargo opérateur à exécuter.**
|
||||
|
||||
Budget cible : **15-20 min**. Entrée : plan 027 corrigé et gate Markdown fiable. Implémenter uniquement identité, transitions et token d'annulation runtime-neutral. Sortie : unitaires API et firewalls verts, sans notification concrète ni backfill.
|
||||
Budget cible : **15-20 min**. Entrée : plan 027 corrigé, gate Markdown fiable et `cargo check --workspace` opérateur vert sur `pre.001-fix.001`. La crate `ksp-job-api` est ajoutée avec `JobId`, `JobKindCode`, `JobCompletion`, `JobState`, `JobLifecycle` et `JobCancellationToken`. Les identités utilisent un alphabet sûr et une borne de 128 octets ; leur valeur est privée et `JobId` est redacted en `Debug`. Le lifecycle possédé n'est pas cloneable, n'autorise que les transitions décidées et conserve les terminaux immuables. Le token partage un `AtomicBool` par `Arc`, rend la première demande observable et reste indépendant de tout runtime.
|
||||
|
||||
La tranche ajoute dix tests unitaires et onze canaries d'intégration réparties entre API publique, dépendances, complétude et sécurité. Les audits Rust/Markdown locaux sont propres ; `cargo`, `rustfmt`, Clippy et les tests Rust ne sont pas disponibles dans l'environnement d'assemblage. La sortie exige donc encore le gate opérateur `cargo fmt`, `cargo check`, Clippy et `cargo test -p ksp-job-api`. Aucune notification, séquence, snapshot, crate Backfill, dépendance Logging/Transport/Store ou surface Worker n'est ouverte.
|
||||
|
||||
### `pre.003` — Notifications latest-value génériques
|
||||
|
||||
**Statut : planifié.**
|
||||
**Statut : planifié ; dépend du gate opérateur de `pre.002`.**
|
||||
|
||||
Budget cible : **15-20 min**. Entrée : transitions Job stables. Implémenter séquences, snapshot source et resynchronisation multi-listeners. Sortie : listener lent, terminal retenu et canary externe API verts.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/023-V0_3_6_JOB_API_BACKFILL.md -->
|
||||
<!-- version: 2 -->
|
||||
<!-- version: 3 -->
|
||||
|
||||
# Validation v0.3.6 — Job API et premier backfill RAW
|
||||
|
||||
@@ -45,6 +45,7 @@ Aucune entrée absolue, traversée, avec séparateur inversé ou lien symbolique
|
||||
- [X] Le résultat historique `240 tables / 153 fichiers` de `pre.001` est identifié comme faux positif pour les nouveaux tableaux non alignés.
|
||||
- [X] Contrats et tailles des trois nouveaux fichiers vérifiés.
|
||||
- [X] Le journal opérateur fourni rapporte `cargo fmt`, audits, `cargo check`, `cargo clippy` et suites Interface ou Program verts sur v0.3.5.
|
||||
- [X] Gate opérateur de `pre.001-fix.001` : 5 tests Python, audit Markdown 264/141, audit Rust et `cargo check --workspace` verts.
|
||||
- [X] L'environnement courant ne fournit pas l'exécutable `cargo` ; aucune validation Rust locale n'est annoncée comme exécutée.
|
||||
- [X] Le workspace compte 14 crates et aucune crate Job au point de départ.
|
||||
|
||||
@@ -60,16 +61,18 @@ Aucune entrée absolue, traversée, avec séparateur inversé ou lien symbolique
|
||||
|
||||
## 5. Contrat `ksp-job-api`
|
||||
|
||||
- [ ] `JobId` borné, validé et opaque.
|
||||
- [ ] `JobKindCode` stable et sans texte humain libre.
|
||||
- [ ] Transitions `Created`, `Running`, `Cancelling`, `Completed`, `Cancelled` et `Failed` contrôlées.
|
||||
- [ ] États terminaux immuables et résultat complet ou partiel explicite.
|
||||
- [ ] `JobCancellationToken` cloneable, idempotent et sans Tokio public.
|
||||
- [X] `JobId` borné à 128 octets, validé, opaque et redacted en `Debug`.
|
||||
- [X] `JobKindCode` stable, borné et limité à l'alphabet sûr KSP.
|
||||
- [X] `JobCompletion` distingue `Complete` et `Partial` sans texte libre.
|
||||
- [X] Transitions `Created`, `Running`, `Cancelling`, `Completed`, `Cancelled` et `Failed` contrôlées.
|
||||
- [X] États terminaux immuables et lifecycle producteur non cloneable.
|
||||
- [X] `JobCancellationToken` cloneable, idempotent, `Send + Sync` et sans Tokio public.
|
||||
- [ ] `JobNotificationSequence` strictement monotone avec overflow traité sans panic.
|
||||
- [ ] `JobNotification<S>` contient un snapshot complet, sûr et borné.
|
||||
- [ ] `JobSnapshotSource` permet lecture courante et attente de changement sans callback producteur.
|
||||
- [ ] Aucun type Transport, Store, Logging, Tokio ou serde dans l'API publique.
|
||||
- [ ] Canaries externes de construction, observation et annulation vertes.
|
||||
- [X] Aucun type Transport, Store, Logging, Tokio, serde, Worker ou Backfill dans l'API publique de `pre.002`.
|
||||
- [X] Canaries externes de construction, lifecycle, annulation, firewalls, complétude et sécurité matérialisées.
|
||||
- [ ] Dix unitaires et onze canaries Rust exécutés avec `cargo test -p ksp-job-api` par l'opérateur.
|
||||
|
||||
## 6. Notifications multi-listeners
|
||||
|
||||
@@ -168,13 +171,13 @@ Aucune entrée absolue, traversée, avec séparateur inversé ou lien symbolique
|
||||
|
||||
## 14. Firewalls et qualité Rust
|
||||
|
||||
- [ ] `ksp-job-api` ne dépend au plus que de Core.
|
||||
- [X] `ksp-job-api` dépend exactement de Core et n'a aucune feature, dev-dependency ou build-dependency.
|
||||
- [ ] `ksp-job-backfill-lib` ne dépend pas de Config, App, Wallet, Program, Interface ou backend Store.
|
||||
- [ ] Aucun retour de dépendance vers Job depuis les couches basses.
|
||||
- [ ] Versions et features des nouvelles dépendances auditées avant ajout.
|
||||
- [ ] `cargo fmt --all -- --check` vert.
|
||||
- [ ] `scripts/audit_rust_workspace_rules.py` vert.
|
||||
- [ ] `scripts/audit_markdown_tables.py` vert.
|
||||
- [X] `scripts/audit_rust_workspace_rules.py` vert sur `pre.002` dans l'environnement d'assemblage.
|
||||
- [X] `scripts/audit_markdown_tables.py` vert sur `pre.002` dans l'environnement d'assemblage.
|
||||
- [X] Contrats de fichiers de `FILE_CONTRACTS.md` vérifiés sur chaque ajout de `pre.001`.
|
||||
- [ ] `cargo check --workspace` vert.
|
||||
- [ ] `cargo clippy --workspace --all-targets --all-features -- -D warnings` vert.
|
||||
|
||||
Reference in New Issue
Block a user