Files
khadhroony-solana-project/deltas/0.0.2/pre.001-fix.001.md
2026-08-13 16:09:07 +02:00

95 lines
4.9 KiB
Markdown

<!-- file: deltas/0.0.2/pre.001-fix.001.md -->
<!-- version: 2 -->
# Delta `0.0.2-pre.001-fix.001`
## Base requise
- dépôt KSP initialisé ;
- `0.0.1` commitée ;
- livraison `0.0.2-pre.001` appliquée ;
- prise en compte du `Cargo.toml` racine version 2 et du `.cargo/config.toml` version 1 fournis après la première livraison.
## Type de livraison
`ksp-general-0.0.2-pre.001-fix.001.zip`
## Objectif
Corriger la première proposition `0.0.2-pre.001` sans changer son périmètre : améliorer les contrats de fichiers, le README général, le formatage Rust, la politique MSRV, la documentation des crates, la version Cargo des correctifs et la réflexion sur l'organisation future des tests.
## Fichiers ajoutés
```text
.cargo/config.toml
deltas/0.0.2-pre.001-fix.001.md
```
## Fichiers modifiés
```text
Cargo.toml
README.md
clippy.toml
rustfmt.toml
docs/000-README.md
docs/rules/FILE_CONTRACTS.md
docs/rules/RULES_DOCUMENTATION.md
docs/rules/RULES_GENERAL.md
docs/rules/RULES_RUST.md
docs/rules/VERSION_WORKFLOW.md
```
## Fichiers supprimés
Aucun.
## Corrections et décisions incorporées
- le README racine décrit désormais le projet KSP lui-même et non la seule phase fondatrice ;
- la liste des prédécesseurs et la section d'état/version ont été retirées du README racine ;
- `DOC-ROOT-002` précise que le préfixe `000-` maintient `docs/000-README.md` en tête des listings et arbres lorsque la documentation devient volumineuse ;
- `DOC-CRATE-*` recommande `README.md`, `TODO.md` et particulièrement `USAGE.md` sans les imposer mécaniquement à toute crate ;
- aucun changelog par crate n'est prévu ;
- la structure exacte de `ROADMAP.md` et `CHANGELOG.md` reste à définir avant leur création ;
- `GEN-FILE-004` impose l'incrément de version à chaque enregistrement qui modifie le contenu d'un fichier, y compris lorsqu'une modification est ensuite annulée par une nouvelle modification ;
- `msrv = "1.85.0"` est retiré de `clippy.toml` ; KSP ne déclare actuellement aucun MSRV ;
- `rustfmt.toml` passe à `max_width = 160` et augmente les seuils associés afin que les autres limites explicites ne continuent pas à provoquer des retours proches de 80 caractères ;
- les tests unitaires doivent de préférence être séparés des fichiers de production et pourront être stockés sous `tests/unit/`, mais ils devront être explicitement rattachés au module testé pour conserver l'accès aux éléments privés ;
- la mécanique exacte de rattachement des tests unitaires externes reste à valider avant d'être imposée ;
- la version Cargo de ce correctif devient `0.0.2-pre.1.fix.1` afin que les commandes Cargo permettent d'identifier le correctif compilé ;
- le `Cargo.toml` racine conserve les métadonnées `license`, `authors` et `publish` fournies dans sa version 2 ;
- `.cargo/config.toml` est ajouté avec les chemins de build fournis.
## Validations exécutées
- parsing TOML de `Cargo.toml`, `.cargo/config.toml`, `clippy.toml` et `rustfmt.toml` ;
- validation syntaxique interne du format SemVer retenu pour `0.0.2-pre.1.fix.1` ;
- vérification des chemins et de la structure de l'archive ;
- vérification d'une fin de ligne finale unique pour chaque fichier texte livré ;
- vérification de l'absence de lockfile, cache, secret et sortie de compilation dans l'archive ;
- vérification documentaire du comportement Cargo des tests placés sous `tests/` ;
- vérification documentaire de la configuration `max_width` de rustfmt et du comportement MSRV de Clippy.
## Validations non exécutées
```bash
cargo fmt --all
cargo check --workspace
cargo test --workspace
cargo clippy --workspace --all-targets
```
L'environnement utilisé pour produire cette livraison ne fournit pas `cargo`. Ces commandes doivent être exécutées localement avant validation du correctif.
## Questions ouvertes
1. **Version Cargo et livraisons `ksp-doc-*`** — si `Cargo.toml` doit refléter absolument chaque identifiant de livraison, y compris une livraison strictement documentaire, alors une archive `ksp-doc-*` ne peut plus rester limitée à `docs/` et/ou aux prompts. Le contrat exact doit être tranché avant de généraliser la règle de synchronisation à toutes les livraisons.
2. **Tests unitaires séparés** — valider sur le premier vrai module Rust la mécanique permettant de conserver les fichiers sous `tests/unit/` tout en les compilant comme sous-modules unitaires avec accès au privé.
3. **Largeur rustfmt** — valider en pratique si les seuils `160/140/100/120` donnent le niveau de densité souhaité avant de les considérer définitivement stabilisés.
4. **Métadonnée Cargo `authors`** — elle est conservée parce qu'elle figure dans le `Cargo.toml` fourni, mais sa conservation à long terme reste à décider avant clôture de `0.0.2`.
## Application
Extraire l'archive depuis la racine du dépôt, puis exécuter les validations Cargo disponibles localement avant validation ou commit du correctif.