Files
pgr/history/0.0.5/alpha.5.md
2026-09-25 00:36:24 +02:00

106 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- 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é.