# 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é.