5.6 KiB
Delta 0.0.3-alpha.3 — audits de style Rust ciblés
Baseline et version
Baseline : 0.0.3-alpha.2, avec history/0.0.3/alpha.2.md appliqué et committé. Ce delta MUST NOT être appliqué tant que ce commit n'existe pas.
Version avant application :
0.0.3-alpha.2
Version après application :
0.0.3-alpha.3
Objet et REPLAN
Après la gate PASS de alpha.2, l'opérateur a signalé les audits Python de style Rust de KSP et Games et demandé leur découpage en scripts plus petits et monotâches. L'examen de leurs audit_rust_general_rules.py montre qu'ils combinent blancs, constantes, ordre de modules, headers, rustdoc et règles de façade. Résultat REPLAN : SPLIT. Les deux contrôles de style apportant une preuve autonome passent à alpha.3 ; les manifests Cargo initialement prévus ici passent à alpha.4, l'audit des headers Markdown à alpha.5 et la décision workflow à alpha.6.
Ajouter un contrôle facultatif d'espacement des lignes vides et un contrôle facultatif des blocs de constantes racine, avec un helper lexical commun sans politique autonome. Le profil 510 possède leurs conventions optionnelles, la documentation de validation explicite leur adoption et leurs limites ; la matrice répertorie leur test ciblé. Rustfmt reste propriétaire du tri interne qu'il effectue déjà ; Clippy garde ses lints. Aucun script KSP/Games complet ni gate Rust obligatoire n'est copié dans PGR.
Scope
REPLACE :
VERSION
docs/plans/003-V0_0_3_TEMPLATES_AUDITS_PLAN.md
docs/rules/510-RUST_CARGO.md
docs/templates/001-RUST_CARGO_TOOLING.md
docs/validation/001-VALIDATION_MATRIX.md
ADD :
docs/validation/002-RUST_STYLE_AUDITS.md
scripts/_rust_audit_common.py
scripts/audit_rust_blank_lines.py
scripts/audit_rust_const_blocks.py
tests/test_rust_audits.py
deltas/0.0.3/alpha.3.md
DELETE : aucun.
Les fichiers complets figurent dans l'archive delta. Aucun history alpha.3, changement rétroactif de delta/history, manifest Cargo, suppression ou modification des corpus de référence n'est inclus.
Limites et prévalidation
Les audits sont read-only, sélectionnent explicitement des fichiers .rs et signalent les violations avec chemin et ligne. La prévalidation hors dépôt PGR a porté sur 300 sources KSP et 59 sources Games : l'audit des blancs est propre sur les deux ; l'audit des constantes est propre sur Games mais affiche 17 signaux KSP lorsqu'il est lancé globalement. Des séquences KSP portent un ordre métier ou de schéma ; l'ordre alphabétique ne leur est pas imposé. La sélection du projet doit donc exclure les fichiers ayant une sémantique d'ordre incompatible. Les scripts ne parsèrent pas intégralement Rust et ne remplacent ni Rustfmt ni Clippy.
Cette prévalidation de corpus n'est pas une validation opérateur de la tranche. Le dépôt PGR ne contient ni crate Rust ni fichiers Rust sujets à un audit produit. Les cas de test Python du delta vérifient les contrats réellement livrés, y compris échecs attendus et statut CLI.
Validation opérateur
Après application sur le commit alpha.2 :
test "$(cat VERSION)" = '0.0.3-alpha.3'
git cat-file -e HEAD:history/0.0.3/alpha.2.md
test -f history/0.0.3/alpha.2.md
test -f deltas/0.0.3/alpha.3.md
test ! -e history/0.0.3/alpha.3.md
grep -Fx '<!-- version: 4 -->' docs/plans/003-V0_0_3_TEMPLATES_AUDITS_PLAN.md
grep -F '### alpha.4 — manifests Cargo workspace et crate membre' docs/plans/003-V0_0_3_TEMPLATES_AUDITS_PLAN.md
grep -F '### alpha.5 — audit de headers Markdown' docs/plans/003-V0_0_3_TEMPLATES_AUDITS_PLAN.md
python3 -B -m unittest discover -s tests -p test_rust_audits.py -v
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
files = [Path(name) for name in ('README.md', 'RULES.md', 'ROADMAP.md', 'CHANGELOG.md')]
for directory in ('docs', 'deltas', 'history', 'prompts'):
files.extend(Path(directory).rglob('*.md'))
files = sorted(set(files))
for path in files:
lines = path.read_text(encoding='utf-8').splitlines()
assert len(lines) >= 2 and lines[0] == f'<!-- file: {path.as_posix()} -->', path
assert re.fullmatch(r'<!-- version: [1-9][0-9]* -->', lines[1]), path
print(f'Markdown header audit: clean ({len(files)} file(s))')
PY
git diff --check
git add VERSION docs/plans/003-V0_0_3_TEMPLATES_AUDITS_PLAN.md \
docs/rules/510-RUST_CARGO.md docs/templates/001-RUST_CARGO_TOOLING.md \
docs/validation/001-VALIDATION_MATRIX.md docs/validation/002-RUST_STYLE_AUDITS.md \
scripts/_rust_audit_common.py scripts/audit_rust_blank_lines.py \
scripts/audit_rust_const_blocks.py tests/test_rust_audits.py \
deltas/0.0.3/alpha.3.md
git diff --cached --check
git status --short
Scope attendu avant ajout du history : cinq REPLACE et six ADD exactement comme ci-dessus. Revue opérateur : vérifier le rôle facultatif des deux scripts, leur dépendance commune, la sélection des fichiers Rust et la priorité de l'ordre sémantique ; confirmer que les manifests Cargo restent prévus en alpha.4.
Transition
PASS
Produire séparément history/0.0.3/alpha.3.md avec les résultats réellement exécutés, l'appliquer et committer cette tranche avant tout delta alpha.4.
FAIL
Consigner le diagnostic dans le history alpha.3, puis corriger ce scope dans alpha.3.fix.1 ou engager un nouveau REPLAN si la séparation des contrôles n'est plus adaptée.