214 lines
5.8 KiB
Markdown
214 lines
5.8 KiB
Markdown
<!-- file: deltas/0.1.2/pre.006.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta 0.1.2-pre.006
|
|
|
|
## Base requise
|
|
|
|
Livraison précédente validée :
|
|
|
|
```text
|
|
0.1.2-pre.005-fix.001
|
|
```
|
|
|
|
La base porte :
|
|
|
|
```text
|
|
workspace.package.version = "0.1.2-pre.5.fix.1"
|
|
Cargo.toml header version = 37
|
|
```
|
|
|
|
## Validation de la base
|
|
|
|
La validation utilisateur de `pre.005-fix.001` est propre :
|
|
|
|
```text
|
|
cargo fmt --all OK
|
|
cargo check --workspace OK
|
|
cargo clippy --workspace --all-targets OK
|
|
cargo test --workspace OK
|
|
cargo test -p ksp-logging-lib --test overhead -- --ignored --nocapture OK
|
|
```
|
|
|
|
Le stress test concurrent ne produit plus le flux TRACE parasite corrigé par `pre.005-fix.001`.
|
|
|
|
Le probe diagnostic d'overhead a passé son garde-fou sur 200000 itérations :
|
|
|
|
```text
|
|
baseline = 19.658553 ms
|
|
reload = 28.807958 ms
|
|
```
|
|
|
|
Ces nombres restent des observations diagnostiques et non un benchmark contractuel.
|
|
|
|
## Objet de pre.006
|
|
|
|
`pre.006` est la prerelease finale prévue de `0.1.2`.
|
|
|
|
Elle :
|
|
|
|
- ajoute une validation des spans async sur un executor Tokio réel ;
|
|
- garde Tokio hors des dépendances runtime de `ksp-logging-lib` ;
|
|
- consolide la documentation de la crate ;
|
|
- ferme les TODO de prerelease ;
|
|
- prépare le prompt final de `0.1.3 — ksp-config-lib` ;
|
|
- prépare les validations finales précédant `rel.001`.
|
|
|
|
## Tokio uniquement pour les tests
|
|
|
|
Version actuelle vérifiée le 2026-08-14 :
|
|
|
|
```text
|
|
tokio 1.53.1
|
|
```
|
|
|
|
Le workspace centralise une contrainte de génération :
|
|
|
|
```toml
|
|
tokio = { version = "^1.53", default-features = false, features = ["rt", "rt-multi-thread", "macros"] }
|
|
```
|
|
|
|
`ksp-logging-lib` le consomme uniquement comme dev-dependency :
|
|
|
|
```toml
|
|
[dev-dependencies]
|
|
tokio.workspace = true
|
|
```
|
|
|
|
Aucun source de production de Logging n'importe Tokio. L'API `instrument(span, future)` reste fondée sur `std::future::Future` et reste indépendante de l'executor choisi par le consumer.
|
|
|
|
## Tests Tokio réels
|
|
|
|
Nouveau fichier :
|
|
|
|
```text
|
|
crates/ksp-logging-lib/tests/tokio_span.rs
|
|
```
|
|
|
|
### Current-thread
|
|
|
|
Le premier test utilise :
|
|
|
|
```text
|
|
#[tokio::test(flavor = "current_thread")]
|
|
```
|
|
|
|
Il instrumente une future contenant plusieurs `tokio::task::yield_now().await` et utilise un subscriber de test associé au span pour compter les `enter`/`exit`.
|
|
|
|
Le test exige plusieurs ré-entrées du span après suspension et un nombre final d'entrées/sorties identique.
|
|
|
|
### Multi-thread
|
|
|
|
Le second test utilise :
|
|
|
|
```text
|
|
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
|
```
|
|
|
|
Deux futures instrumentées sont lancées avec `tokio::spawn`, effectuent des suspensions répétées puis doivent terminer normalement. Le test vérifie également l'équilibre des `enter`/`exit`.
|
|
|
|
Ce test démontre l'utilisation correcte de la surface KSP sous un runtime Tokio multi-thread ; il ne prétend pas imposer ni mesurer une migration déterministe d'une même future entre worker threads.
|
|
|
|
## Documentation finale
|
|
|
|
Mises à jour :
|
|
|
|
- `crates/ksp-logging-lib/README.md` : indépendance de l'executor en production et statut test-only de Tokio ;
|
|
- `crates/ksp-logging-lib/USAGE.md` : exemple async et frontière executor ;
|
|
- `crates/ksp-logging-lib/TODO.md` : seules restent les validations finales et la future livraison stable ;
|
|
- `docs/plans/004-V0_1_2_LOGGING_FOUNDATION_PLAN.md` : statut validé de `pre.005-fix.001`, contenu `pre.006`, validations finales et absence de question architecturale bloquante ;
|
|
- `prompts/000-README.md` : ajout du prompt Config ;
|
|
- `prompts/003-V0_1_3_START_PROMPT.md` : prompt final pour ouvrir `0.1.3` après `v0.1.2`.
|
|
|
|
`ROADMAP.md` reste volontairement inchangé : `0.1.2` demeure en cours tant que `rel.001` et le tag `v0.1.2` ne sont pas validés.
|
|
|
|
Aucun changelog général n'existe actuellement dans le dépôt ; `pre.006` n'en crée pas artificiellement un.
|
|
|
|
## Version technique
|
|
|
|
La prerelease devient :
|
|
|
|
```text
|
|
workspace.package.version = "0.1.2-pre.6"
|
|
```
|
|
|
|
L'en-tête du manifest racine devient :
|
|
|
|
```text
|
|
# version: 38
|
|
```
|
|
|
|
Le manifest de `ksp-logging-lib` devient :
|
|
|
|
```text
|
|
# version: 4
|
|
```
|
|
|
|
## Fichiers du delta
|
|
|
|
```text
|
|
Cargo.toml
|
|
crates/ksp-logging-lib/Cargo.toml
|
|
crates/ksp-logging-lib/README.md
|
|
crates/ksp-logging-lib/TODO.md
|
|
crates/ksp-logging-lib/USAGE.md
|
|
crates/ksp-logging-lib/tests/tokio_span.rs
|
|
docs/plans/004-V0_1_2_LOGGING_FOUNDATION_PLAN.md
|
|
prompts/000-README.md
|
|
prompts/003-V0_1_3_START_PROMPT.md
|
|
deltas/0.1.2/pre.006.md
|
|
```
|
|
|
|
## Validations finales à exécuter
|
|
|
|
```bash
|
|
cargo fmt --all
|
|
cargo check --workspace
|
|
cargo build -p ksp-logging-lib
|
|
cargo clippy --workspace --all-targets
|
|
cargo test --workspace
|
|
cargo test -p ksp-logging-lib --test overhead -- --ignored --nocapture
|
|
cargo tree -p ksp-logging-lib
|
|
cargo tree -p ksp-logging-lib -d
|
|
cargo tree -p ksp-logging-lib -e features
|
|
cargo tree -p ksp-logging-lib -e normal
|
|
cargo tree -p ksp-logging-lib -e dev
|
|
```
|
|
|
|
Contrôles attendus en particulier :
|
|
|
|
- les deux tests de `tests/tokio_span.rs` passent ;
|
|
- `cargo build -p ksp-logging-lib` reste un build normal sans Tokio comme dépendance runtime ;
|
|
- le graphe `-e normal` n'inclut pas Tokio ;
|
|
- Tokio est visible uniquement via l'usage dev attendu ;
|
|
- aucune seconde version évitable n'apparaît ;
|
|
- l'audit ownership continue à interdire les contournements de la façade tracing.
|
|
|
|
Aucune validation Cargo n'est déclarée réussie dans ce delta avant exécution dans l'environnement de développement.
|
|
|
|
## Suite après validation
|
|
|
|
Si `pre.006` est propre, la prochaine livraison est :
|
|
|
|
```text
|
|
0.1.2-rel.001
|
|
```
|
|
|
|
Elle publiera :
|
|
|
|
```text
|
|
workspace.package.version = "0.1.2"
|
|
```
|
|
|
|
puis, après validation utilisateur, le commit final recevra :
|
|
|
|
```text
|
|
v0.1.2
|
|
```
|
|
|
|
La session fonctionnelle suivante pourra alors démarrer avec :
|
|
|
|
```text
|
|
prompts/003-V0_1_3_START_PROMPT.md
|
|
```
|