This commit is contained in:
2026-08-13 16:09:07 +02:00
parent 5f6c2ef45e
commit 199550bc82
25 changed files with 1233 additions and 1 deletions

View File

@@ -0,0 +1,144 @@
<!-- file: deltas/0.0.2/pre.001-fix.003.md -->
<!-- version: 1 -->
# Delta `0.0.2-pre.001-fix.003`
## Base requise
- dépôt KSP initialisé et `0.0.1` commitée ;
- `0.0.2-pre.001` appliquée ;
- correctifs `fix.001` et `fix.002` appliqués dans l'arbre de travail.
## Type de livraison
`ksp-general-0.0.2-pre.001-fix.003.zip`
## Objectifs
- valider définitivement la convention séparant tests unitaires et tests d'intégration ;
- retirer le code temporaire utilisé pour l'expérience de tests ;
- réorganiser les deltas sous `deltas/<X.Y.Z>/` ;
- généraliser la convention documentaire `000-`, `001-`, `002-` lorsqu'un ordre explicite est utile, sans l'appliquer à la racine du dépôt ;
- introduire `rel.NNN` comme marqueur de livraison d'une release finale, sans transformer ce marqueur en suffixe Cargo de la version finale.
## Version Cargo
Cette livraison supprime/modifie des sources Rust temporaires et modifie le `Cargo.toml` racine. Elle constitue donc un correctif technique :
```text
0.0.2-pre.1.fix.3
```
## Fichiers ajoutés
```text
deltas/0.0.2/pre.001.md
deltas/0.0.2/pre.001-fix.001.md
deltas/0.0.2/pre.001-fix.002.md
deltas/0.0.2/pre.001-fix.003.md
```
Les trois premiers fichiers sont les deltas historiques existants relocalisés sous la version cible `0.0.2`. Leur corps historique est conservé ; leur en-tête `file:` et leur version de fichier sont mis à jour pour refléter la relocalisation.
## Fichiers modifiés
```text
Cargo.toml
crates/ksp-core-lib/src/lib.rs
docs/000-README.md
docs/rules/FILE_CONTRACTS.md
docs/rules/RULES_DOCUMENTATION.md
docs/rules/RULES_RUST.md
docs/rules/VERSION_WORKFLOW.md
```
## Fichiers à supprimer
```text
crates/ksp-core-lib/src/test_layout_probe.rs
crates/ksp-core-lib/tests/public_api.rs
crates/ksp-core-lib/tests/unit/test_layout_probe.rs
deltas/0.0.2-pre.001.md
deltas/0.0.2-pre.001-fix.001.md
deltas/0.0.2-pre.001-fix.002.md
```
Les répertoires devenus vides sous `crates/ksp-core-lib/tests/` peuvent également être supprimés localement ; Git ne versionne pas les répertoires vides.
## Décisions validées
### Tests unitaires
L'expérience `fix.002` est concluante : le fichier de test unitaire séparé a été exécuté dans la cible `unittests` de `src/lib.rs`, a accédé à une fonction privée du module parent et n'a pas été découvert comme cible d'intégration autonome.
La convention KSP devient donc :
- `unit_tests/` à la racine de la crate pour les sources de tests unitaires séparées ;
- arborescence miroir de `src/` autant que possible ;
- rattachement explicite sous `#[cfg(test)]` au module testé ;
- usage de `unit_tests/` au maximum ;
- tests dans le module de production seulement en dernier recours justifié ;
- `tests/` réservé aux vrais tests d'intégration Cargo ;
- l'API publique pertinente doit être testée par intégration lorsque techniquement possible.
### Deltas
L'arbre canonique devient :
```text
deltas/
└── <X.Y.Z>/
├── pre.001.md
├── pre.001-fix.001.md
├── pre.002.md
└── rel.001.md
```
### Releases
Le marqueur `rel.NNN` appartient à l'identifiant de livraison et au nom du delta/archive. La version Cargo d'une release finale reste `X.Y.Z` sans `-rel.N`, afin de rester une version finale SemVer.
### Priorité documentaire
- `000-README.md` reste toujours le point d'entrée prioritaire d'un répertoire documentaire ordonné ;
- `001-`, `002-`, etc. peuvent exprimer un ordre de lecture/priorité lorsque cela apporte une valeur réelle ;
- tous les fichiers ne sont pas préfixés mécaniquement ;
- aucun préfixe numérique de ce type n'est appliqué aux fichiers situés à la racine du dépôt.
## Validations exécutées par le user sur `fix.002`
```bash
cargo fmt --all
cargo test --workspace
cargo test -p ksp-core-lib
cargo clippy --workspace --all-targets
```
Résultats communiqués :
- test unitaire séparé : `1 passed` ;
- test d'intégration public : `1 passed` ;
- doc-tests : succès, aucun test ;
- Clippy : terminé avec seulement les warnings attendus du probe temporaire (`dead_code` sur la fonction privée de production et `missing_docs` sur la crate de test d'intégration).
Ces warnings ne justifient aucun `allow` global et disparaissent avec le retrait du probe temporaire.
## Validations à exécuter après application de ce correctif
```bash
cargo fmt --all
cargo check --workspace
cargo test --workspace
cargo clippy --workspace --all-targets
```
Le résultat attendu après suppression du probe est un workspace minimal sans test temporaire et sans warning lié à cette expérience.
## Questions restant ouvertes
- structure exacte de `ROADMAP.md` ;
- structure exacte et cadence de `CHANGELOG.md` ;
- nomenclature formelle des environnements supportés par les applications de démonstration ;
- règle détaillée à appliquer si une livraison `rel.NNN` doit être corrigée avant son commit final.
Ces questions ne remettent pas en cause le squelette `0.0.2` ; elles doivent être closes pendant la planification fondatrice avant le prompt final ouvrant `0.1.x`.