0.0.5-alpha.8
This commit is contained in:
248
deltas/0.0.5/alpha.8.md
Normal file
248
deltas/0.0.5/alpha.8.md
Normal file
@@ -0,0 +1,248 @@
|
||||
<!-- file: deltas/0.0.5/alpha.8.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.0.5-alpha.8 — formatage Rust structurel et audits monotâches
|
||||
|
||||
## Baseline et version
|
||||
|
||||
Baseline attendue : commit opérateur complet de `0.0.5-alpha.7.fix.1`, réalisé après application de `history/0.0.5/alpha.7.fix.1.md` avec statut `PASS`.
|
||||
|
||||
Version après application :
|
||||
|
||||
```text
|
||||
0.0.5-alpha.8
|
||||
```
|
||||
|
||||
## Mission
|
||||
|
||||
Fermer le chantier de réconciliation du formatage Rust structurel sans importer les anciens `audit_rust_general_rules.py` composites de KSP/Games.
|
||||
|
||||
La tranche attribue chaque propriété à un owner identifiable : Rustfmt lorsqu'il sait réellement réécrire la forme, audits PGR monotâches lorsqu'une structure stable n'est pas possédée par l'outil officiel, et revue humaine lorsque l'ordre peut être métier/protocolaire.
|
||||
|
||||
## Scope
|
||||
|
||||
REPLACE :
|
||||
|
||||
```text
|
||||
VERSION
|
||||
docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
|
||||
docs/rules/510-RUST_CARGO.md
|
||||
docs/skeletons/002-RUST_CARGO_WORKSPACE.md
|
||||
docs/studies/001-KSP_GAMES_RECONCILIATION.md
|
||||
docs/validation/001-VALIDATION_MATRIX.md
|
||||
docs/validation/002-RUST_STYLE_AUDITS.md
|
||||
tests/test_rust_audits.py
|
||||
```
|
||||
|
||||
ADD :
|
||||
|
||||
```text
|
||||
deltas/0.0.5/alpha.8.md
|
||||
scripts/audit_rust_item_spacing.py
|
||||
scripts/audit_rust_module_order.py
|
||||
scripts/audit_rust_reexport_blocks.py
|
||||
scripts/audit_rust_trait_import_blocks.py
|
||||
```
|
||||
|
||||
DELETE : aucun.
|
||||
|
||||
## Décisions de formatage
|
||||
|
||||
Pour une nouvelle baseline Rust contrôlée sélectionnant le profil strict :
|
||||
|
||||
- les lignes vides consécutives et les lignes vides dans fonctions/méthodes/`struct`/`enum` sont interdites ;
|
||||
- deux items Rust distincts voisins d'un même scope sont séparés par exactement une ligne vide lorsque rien d'intermédiaire ne possède lui-même l'espacement ;
|
||||
- les blocs compacts `const` restent sous un owner séparé et ne sont pas interprétés par l'audit d'espacement général ;
|
||||
- les modules de production précèdent les modules de tests et chaque groupe est alphabétique lorsque cet ordre est sans sémantique ;
|
||||
- les `use` non exportés autorisés par le profil strict restent dans un bloc module-level compact avant les déclarations métier ;
|
||||
- les `pub use` précèdent les `pub(crate) use`, sans ligne vide interne et avec exactement une ligne vide entre les deux visibilités lorsqu'elles coexistent ;
|
||||
- Rustfmt reste l'owner du tri intra-bloc des `use`, réexports et modules qu'il sait réécrire ; les audits PGR ne créent pas un tri concurrent.
|
||||
|
||||
PGR conserve comme fortes conventions de lisibilité le rapprochement d'un `struct` et de ses `impl`, ainsi que la préférence des éléments visibles avant les helpers privés lorsque cela clarifie le fichier. Aucun audit lexical n'impose cependant un ordre global `enum → struct → impl → fn` ou un tri visible/privé susceptible d'écraser une organisation métier.
|
||||
|
||||
## Audits ajoutés
|
||||
|
||||
Quatre contrôles read-only monotâches sont extraits :
|
||||
|
||||
```text
|
||||
audit_rust_item_spacing.py
|
||||
séparation exacte des items distincts voisins
|
||||
|
||||
audit_rust_module_order.py
|
||||
ordre production/tests et ordre alphabétique des modules
|
||||
|
||||
audit_rust_trait_import_blocks.py
|
||||
placement/contiguïté des use non exportés
|
||||
|
||||
audit_rust_reexport_blocks.py
|
||||
ordre de visibilité et espacement des blocs de réexports
|
||||
```
|
||||
|
||||
Ils utilisent `_rust_audit_common.py` pour la sélection et le masquage lexical. Ils ne tentent pas de remplacer un parser Rust ni de déterminer la nature sémantique d'un import.
|
||||
|
||||
Les audits déjà existants gardent leurs responsabilités :
|
||||
|
||||
```text
|
||||
audit_rust_blank_lines.py
|
||||
blancs consécutifs / blancs dans certains corps
|
||||
|
||||
audit_rust_const_blocks.py
|
||||
consts sélectionnées : visibilité, ordre, espacement
|
||||
|
||||
audit_rust_export_completeness.py
|
||||
façade crate-root et chemins canoniques
|
||||
```
|
||||
|
||||
## Mesure croisée
|
||||
|
||||
Les quatre nouveaux audits ont été exécutés pendant la préparation sur tous les fichiers Rust sous `crates/` des baselines autoritaires :
|
||||
|
||||
```text
|
||||
KSP 0.3.16 603 file(s) item/module/trait-import/reexport: clean
|
||||
Games 0.3.5 87 file(s) item/module/trait-import/reexport: clean
|
||||
```
|
||||
|
||||
`audit_rust_blank_lines.py` est également propre sur ces `603` et `87` fichiers.
|
||||
|
||||
En revanche, `audit_rust_const_blocks.py` exécuté aveuglément sur l'ensemble produit `18` signaux KSP et `0` Games. Certains signaux correspondent à des tables/schémas à ordre intentionnel. Il reste donc un audit à sélection explicite par fichier et ne devient pas une gate globale.
|
||||
|
||||
Ces mesures servent à qualifier la réutilisabilité des règles PGR ; elles ne constituent pas une validation opérateur de KSP/Games.
|
||||
|
||||
## Horizon documenté sans engagement
|
||||
|
||||
La revue d'horizon du plan conserve `0.1.0` comme seule prochaine release engagée, mais mémorise trois candidats sans numéro ni engagement :
|
||||
|
||||
1. profils techniques composables par langage/framework/target/plateforme et préoccupation transverse, notamment observability/logging ;
|
||||
2. profil documentaire/spécification, avec `saselang-bible` comme corpus pilote possible ;
|
||||
3. audit de généricité de PGR pour des projets hors développement logiciel.
|
||||
|
||||
Ces candidats ne deviennent ni `Study`, ni `ROADMAP`, ni release plan tant qu'une décision explicite ne les promeut pas.
|
||||
|
||||
## Hors scope
|
||||
|
||||
Cette tranche ne :
|
||||
|
||||
- crée pas de parser Rust général ;
|
||||
- réimporte pas `audit_rust_general_rules.py` ;
|
||||
- impose pas un ordre alphabétique à une séquence sémantique ;
|
||||
- crée pas d'audit dédié `static/type` uniquement pour la symétrie ;
|
||||
- modifie pas les contrats de suffixes/packaging/tracing fermés par `alpha.7.fix.1` ;
|
||||
- commence pas le skeleton Tauri réservé à `alpha.9` ;
|
||||
- transforme pas les candidats d'horizon en versions promises.
|
||||
|
||||
## Validation opérateur
|
||||
|
||||
Après application du history `PASS` de `alpha.7.fix.1`, commit/push de cette tranche, puis application du présent delta :
|
||||
|
||||
```bash
|
||||
test "$(cat VERSION)" = '0.0.5-alpha.8'
|
||||
test -f history/0.0.5/alpha.7.fix.1.md
|
||||
test -f deltas/0.0.5/alpha.8.md
|
||||
test -f scripts/audit_rust_item_spacing.py
|
||||
test -f scripts/audit_rust_module_order.py
|
||||
test -f scripts/audit_rust_reexport_blocks.py
|
||||
test -f scripts/audit_rust_trait_import_blocks.py
|
||||
test ! -e scripts/audit_rust_general_rules.py
|
||||
test ! -e history/0.0.5/alpha.8.md
|
||||
|
||||
grep -A2 '^## Statut$' history/0.0.5/alpha.7.fix.1.md | grep -Fx 'PASS'
|
||||
grep -Fx '<!-- version: 7 -->' docs/rules/510-RUST_CARGO.md
|
||||
grep -Fx '<!-- version: 5 -->' docs/skeletons/002-RUST_CARGO_WORKSPACE.md
|
||||
grep -Fx '<!-- version: 10 -->' docs/studies/001-KSP_GAMES_RECONCILIATION.md
|
||||
grep -Fx '<!-- version: 12 -->' docs/validation/001-VALIDATION_MATRIX.md
|
||||
grep -Fx '<!-- version: 2 -->' docs/validation/002-RUST_STYLE_AUDITS.md
|
||||
grep -Fx '<!-- version: 11 -->' docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
|
||||
grep -Fx '# version: 2' tests/test_rust_audits.py
|
||||
grep -Fx '# version: 1' scripts/audit_rust_item_spacing.py
|
||||
grep -Fx '# version: 1' scripts/audit_rust_module_order.py
|
||||
grep -Fx '# version: 1' scripts/audit_rust_reexport_blocks.py
|
||||
grep -Fx '# version: 1' scripts/audit_rust_trait_import_blocks.py
|
||||
|
||||
python3 -B -m unittest discover -s tests -p 'test_rust_audits.py' -v
|
||||
python3 -B -m unittest discover -s tests -v
|
||||
|
||||
python3 -B scripts/audit_markdown_headers.py \
|
||||
README.md RULES.md ROADMAP.md CHANGELOG.md docs deltas history prompts
|
||||
python3 -B scripts/audit_markdown_tables.py \
|
||||
README.md RULES.md ROADMAP.md CHANGELOG.md docs deltas history prompts
|
||||
python3 -B scripts/audit_markdown_links.py \
|
||||
README.md RULES.md ROADMAP.md CHANGELOG.md docs deltas history prompts
|
||||
|
||||
python3 -B - <<'PY'
|
||||
from pathlib import Path
|
||||
import re
|
||||
|
||||
history = Path("history/0.0.5/alpha.7.fix.1.md").read_text(encoding="utf-8")
|
||||
assert re.search(r"## Statut\s+PASS\s", history)
|
||||
|
||||
rules = Path("docs/rules/510-RUST_CARGO.md").read_text(encoding="utf-8")
|
||||
for phrase in (
|
||||
"Le profil structurel strict fait partie du défaut des nouvelles baselines Rust contrôlées.",
|
||||
"audit_rust_item_spacing.py",
|
||||
"audit_rust_module_order.py",
|
||||
"audit_rust_trait_import_blocks.py",
|
||||
"audit_rust_reexport_blocks.py",
|
||||
"PGR n'impose toutefois pas un ordre global automatique `enum → struct → impl → fn`",
|
||||
):
|
||||
assert phrase in rules, phrase
|
||||
|
||||
validation = Path("docs/validation/002-RUST_STYLE_AUDITS.md").read_text(encoding="utf-8")
|
||||
for phrase in (
|
||||
"603` fichiers KSP `0.3.16`",
|
||||
"87` fichiers Games `0.3.5`",
|
||||
"18` signaux KSP",
|
||||
"0` Games",
|
||||
"Rustfmt reste l'owner de l'ordre intra-bloc",
|
||||
):
|
||||
assert phrase in validation, phrase
|
||||
|
||||
plan = Path("docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md").read_text(encoding="utf-8")
|
||||
for phrase in (
|
||||
"quatre extractions monotâches complètent le profil",
|
||||
"maturation de profils techniques composables",
|
||||
"`saselang-bible` comme corpus pilote possible",
|
||||
"audit du noyau PGR hors développement logiciel",
|
||||
"### alpha.9 — décision de skeleton Tauri pour projets contrôlés",
|
||||
):
|
||||
assert phrase in plan, phrase
|
||||
|
||||
print("0.0.5 alpha.8 Rust structure audit: clean (owners split, four monotask audits, semantic order protected, horizon candidates recorded)")
|
||||
PY
|
||||
|
||||
git diff --check
|
||||
|
||||
git add VERSION \
|
||||
docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md \
|
||||
docs/rules/510-RUST_CARGO.md \
|
||||
docs/skeletons/002-RUST_CARGO_WORKSPACE.md \
|
||||
docs/studies/001-KSP_GAMES_RECONCILIATION.md \
|
||||
docs/validation/001-VALIDATION_MATRIX.md \
|
||||
docs/validation/002-RUST_STYLE_AUDITS.md \
|
||||
scripts/audit_rust_item_spacing.py \
|
||||
scripts/audit_rust_module_order.py \
|
||||
scripts/audit_rust_reexport_blocks.py \
|
||||
scripts/audit_rust_trait_import_blocks.py \
|
||||
tests/test_rust_audits.py \
|
||||
deltas/0.0.5/alpha.8.md
|
||||
|
||||
git diff --cached --check
|
||||
git status --short
|
||||
```
|
||||
|
||||
La sortie Git attendue avant ajout du history est exactement :
|
||||
|
||||
```text
|
||||
M VERSION
|
||||
A deltas/0.0.5/alpha.8.md
|
||||
M docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
|
||||
M docs/rules/510-RUST_CARGO.md
|
||||
M docs/skeletons/002-RUST_CARGO_WORKSPACE.md
|
||||
M docs/studies/001-KSP_GAMES_RECONCILIATION.md
|
||||
M docs/validation/001-VALIDATION_MATRIX.md
|
||||
M docs/validation/002-RUST_STYLE_AUDITS.md
|
||||
A scripts/audit_rust_item_spacing.py
|
||||
A scripts/audit_rust_module_order.py
|
||||
A scripts/audit_rust_reexport_blocks.py
|
||||
A scripts/audit_rust_trait_import_blocks.py
|
||||
M tests/test_rust_audits.py
|
||||
```
|
||||
Reference in New Issue
Block a user