# 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//` ; - 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/ └── / ├── 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`.