145 lines
5.0 KiB
Markdown
145 lines
5.0 KiB
Markdown
<!-- 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`.
|