0.0.5-alpha.5

This commit is contained in:
2026-09-25 00:36:24 +02:00
parent defc9ca4b5
commit f03f8640d4
12 changed files with 849 additions and 15 deletions

105
history/0.0.5/alpha.5.md Normal file
View File

@@ -0,0 +1,105 @@
<!-- file: history/0.0.5/alpha.5.md -->
<!-- version: 1 -->
# History 0.0.5-alpha.5 — audit Rust de façade/export completeness
## Statut
FAIL
La gate mécanique de `0.0.5-alpha.5` exécutée le `2026-09-25` est propre, mais la revue fonctionnelle qui suit révèle que le contrat livré est incomplet par rapport à la convention Rust que PGR doit pouvoir porter : l'audit détecte `crate::module::Item`, mais ne détecte pas les références non qualifiées ou autrement non canoniques à un item partagé déjà exposé au crate-root, notamment dans son propre module de déclaration.
Le statut global reste donc `FAIL`. Les résultats mécaniques ne sont pas annulés ; ils prouvent que l'implémentation livrée fonctionne selon son contrat écrit, tandis que la revue révèle que ce contrat est trop faible.
## Baseline et version
La tranche part du commit opérateur de `0.0.5-alpha.4` :
```text
defc9ca 0.0.5-alpha.4
```
Le push vers `origin/master` a réussi avant l'application de `alpha.5`.
La version contrôlée après application du delta est :
```text
0.0.5-alpha.5
```
`history/0.0.5/alpha.4.md`, `deltas/0.0.5/alpha.5.md`, `scripts/audit_rust_export_completeness.py`, `tests/test_rust_export_completeness.py` et `docs/validation/003-RUST_EXPORT_COMPLETENESS.md` sont présents. `history/0.0.5/alpha.5.md` était absent pendant la gate.
## Validation opérateur observée
L'opérateur a fourni les sorties du `2026-09-25` depuis `~/Projects/pgr`, à `00:03:49`–`00:08:36`.
Les contrôles de présence, statut et révision ont réussi. La suite ciblée a exécuté `9` tests, tous réussis :
```text
Ran 9 tests in 0.161s
OK
```
La suite Python globale a exécuté `28` tests, tous réussis :
```text
Ran 28 tests in 0.468s
OK
```
Les audits documentaires affichent :
```text
Markdown header audit: clean (140 file(s))
Markdown table audit: clean (6 table(s), 140 file(s))
Markdown link audit: clean (137 local link(s), 140 file(s))
```
Le contrôle structurel de la tranche affiche :
```text
0.0.5 alpha.5 Rust façade audit: clean (recursive crate discovery, narrow ownership, regression coverage)
```
`git diff --check` et `git diff --cached --check` n'ont produit aucun diagnostic. Le scope Git observé est exactement celui du delta `alpha.5`.
## Défaut fonctionnel découvert après la gate
La convention recherchée est plus stricte que le contrat implémenté : lorsqu'un item `pub` ou `pub(crate)` est partagé et exposé par la façade crate-root, ses références intra-crate doivent utiliser le chemin canonique `crate::Item`, y compris depuis le module propriétaire.
Le script `version: 1` détecte seulement le sous-cas :
```text
crate::module::Item
```
lorsque `crate::Item` existe déjà. Il laisse notamment passer :
```text
Item
self::Item
super::Item
module::Item
```
ainsi que les noms nus dans des signatures, `impl`, constructeurs ou appels situés dans le module de déclaration. Le compilateur et Clippy ne possèdent pas cette convention de style/architecture : une seule consommation correcte par `crate::Item` peut suffire à rendre le réexport utilisé sans révéler les autres accès non canoniques.
Ce manque est dans le scope exact de `alpha.5`; il doit donc être corrigé par `alpha.5.fix.1`, sans commencer Tauri.
## Résultat
`0.0.5-alpha.5` est enregistré `FAIL` malgré une gate mécanique verte, car l'acceptation fonctionnelle de l'audit est incomplète.
## Transition
Appliquer le présent history puis committer/pousser `0.0.5-alpha.5`.
La correction suivante est :
```text
0.0.5-alpha.5.fix.1
```
Elle doit étendre l'audit de façade pour imposer réellement la forme canonique intra-crate `crate::Item` aux items partagés, ajouter les régressions correspondantes et corriger la documentation/mesure de réconciliation. Aucun scope Tauri ne doit être absorbé.