6.5 KiB
Delta 0.0.2-alpha.3 — premier profil Rust / Cargo
Baseline
Version attendue avant application :
0.0.2-alpha.2
Le history history/0.0.2/alpha.2.md MUST avoir été appliqué et committé avant ce delta.
Version après application :
0.0.2-alpha.3
Objet
Matérialiser le premier profil technologique réel de PGR : Rust / Cargo.
Cette tranche sert aussi de point de mesure prévu par le plan 0.0.2. Elle doit consolider uniquement les règles Rust/Cargo suffisamment générales pour être réutilisables, sans recopier les particularités métier ou les micro-conventions propres à KSP ou sasedev-games.
Réconciliation des corpus sources
Les deux corpus historiques de référence convergent notamment sur :
- l'utilisation d'un workspace Cargo structuré ;
- la centralisation des métadonnées/lints et des dépendances réellement partagées ;
- l'activation locale des features selon le besoin de la crate ;
- une politique Rust stricte autour de
unsafe,unwrap,expect, retours explicites et Clippy ; - une façade de crate explicite plutôt qu'une exposition accidentelle des modules internes ;
rustfmt.tomlcomme propriétaire du formatage ;- la séparation des tests unitaires et d'intégration ;
- une gate
fmt/ audit applicable /check/clippy, avec tests ciblés par défaut et tests workspace aux gates larges ; - l'absence d'exécution opportuniste de
cargo update,cargo tree,cargo buildoucargo cleansans besoin correspondant.
La consolidation ne promeut pas automatiquement les divergences ou conventions trop spécifiques :
- l'interdiction KSP de tous les imports
usenon-traits n'est pas élevée au profil Rust général ; - les micro-règles KSP de lignes vides/ordre interne ne remplacent pas
rustfmtau niveau PGR ; - aucune dépendance, crate, version de bibliothèque ou règle Solana/games n'est reprise ;
- la politique historique commune d'ignorer
Cargo.lockn'est pas rendue universelle : le profil exige une politique explicite selon le type de produit ; - l'exception
unsafeAndroid/JNI de games reste un exemple de spécialisation FFI locale et non une permission Rust générale ; - le chemin externe des artefacts Cargo n'est pas figé avant les futures règles de skeleton/layout.
Profil créé
Le nouveau propriétaire normatif est :
docs/rules/510-RUST_CARGO.md
Il couvre :
- toolchain et édition ;
- workspace et unités de release ;
- manifests, dépendances et features ;
- politique explicite de
Cargo.lock; - lints communs et safety ;
- API, visibilité et rustdoc ;
- contrôle de flux/erreurs du profil strict ;
rustfmt.toml;.cargo/config.tomlet artefacts générés ;- organisation des tests ;
- commandes de validation Rust/Cargo ;
- stratégie future d'audits Rust monotâches.
Aucun script Rust supplémentaire n'est créé dans cette tranche. PGR ne possède actuellement aucun workspace Rust réel à auditer ; introduire maintenant une copie simplifiée des auditeurs games/KSP créerait une gate sans sujet réel. Le premier audit PGR déjà matérialisé reste l'audit Markdown monotâche introduit lorsque son besoin a été observé.
Scope
REPLACE :
VERSION
RULES.md
docs/rules/000-README.md
ADD :
docs/rules/510-RUST_CARGO.md
deltas/0.0.2/alpha.3.md
DELETE : aucun.
Aucun manifest de suppression n'est nécessaire.
Validation opérateur
test "$(cat VERSION)" = "0.0.2-alpha.3"
test -f docs/rules/510-RUST_CARGO.md
test -f deltas/0.0.2/alpha.3.md
grep -F 'PGR MUST NOT imposer un pin exact de toolchain uniquement parce qu' docs/rules/510-RUST_CARGO.md
grep -F 'le fichier PGR `VERSION` reste la version canonique de l' docs/rules/510-RUST_CARGO.md
grep -F 'Une crate membre SHOULD consommer cette dépendance avec `workspace = true`' docs/rules/510-RUST_CARGO.md
grep -F 'PGR ne généralise pas automatiquement la politique de lockfile' docs/rules/510-RUST_CARGO.md
grep -F 'unsafe_code = "forbid"' docs/rules/510-RUST_CARGO.md
grep -F 'PGR ne généralise pas l'"'"'interdiction KSP plus stricte de tous les `use` non-traits' docs/rules/510-RUST_CARGO.md
grep -F 'cargo clippy --workspace --all-targets --all-features -- -D warnings' docs/rules/510-RUST_CARGO.md
grep -F 'PGR SHOULD préférer plusieurs audits monotâches et lisibles' docs/rules/510-RUST_CARGO.md
grep -F '510-RUST_CARGO.md' RULES.md
grep -F '510-RUST_CARGO.md' docs/rules/000-README.md
python3 -B scripts/audit_markdown_tables.py \
README.md RULES.md ROADMAP.md CHANGELOG.md docs deltas history prompts
git diff --check
git add VERSION RULES.md \
docs/rules/000-README.md \
docs/rules/510-RUST_CARGO.md \
deltas/0.0.2/alpha.3.md
git diff --cached --check
git status --short
La sortie attendue avant ajout du history est :
M RULES.md
M VERSION
A deltas/0.0.2/alpha.3.md
M docs/rules/000-README.md
A docs/rules/510-RUST_CARGO.md
Revue opérateur complémentaire :
- confirmer que le profil distingue bien les règles Rust/Cargo générales des conventions strictement KSP ou games ;
- confirmer que la politique de lockfile reste explicitement project-type-specific et n'est pas généralisée uniquement parce que les deux corpus historiques ignoraient
Cargo.lock; - confirmer que les contraintes FFI/plateforme restent des overrides locaux ;
- confirmer qu'aucune version de crate ou de toolchain historique n'a été recopiée comme pin universel ;
- confirmer qu'aucun audit Rust complexe n'a été ajouté avant d'avoir un sujet réel et une propriété mono-responsabilité à contrôler.
Point de mesure / REPLAN
alpha.3 est le point de mesure explicite prévu par le plan.
Le profil Rust/Cargo tient dans une tranche documentaire autonome sans nécessiter de famille supplémentaire, de script d'audit complexe ou de sous-profil framework/plateforme. Le forecast alpha.4 — Java / Maven / Gradle reste donc raisonnable à ce stade.
Si la validation de cette tranche révèle au contraire une dérive importante du modèle ou plusieurs corrections substantielles, effectuer un REPLAN avant alpha.4 plutôt que poursuivre mécaniquement.
Transition
PASS
Créer et appliquer séparément history/0.0.2/alpha.3.md, committer la tranche, puis préparer 0.0.2-alpha.4 consacré à Java / Maven / Gradle.
FAIL
Rester dans 0.0.2-alpha.3.fix.M tant que le premier profil réel ne respecte pas le modèle alpha.2. Un défaut de dimensionnement significatif peut déclencher un REPLAN avant toute tranche Java.