0.0.2-alpha.3
This commit is contained in:
166
deltas/0.0.2/alpha.3.md
Normal file
166
deltas/0.0.2/alpha.3.md
Normal file
@@ -0,0 +1,166 @@
|
||||
<!-- file: deltas/0.0.2/alpha.3.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.0.2-alpha.3 — premier profil Rust / Cargo
|
||||
|
||||
## Baseline
|
||||
|
||||
Version attendue avant application :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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.toml` comme 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 build` ou `cargo clean` sans besoin correspondant.
|
||||
|
||||
La consolidation ne promeut pas automatiquement les divergences ou conventions trop spécifiques :
|
||||
|
||||
- l'interdiction KSP de tous les imports `use` non-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 `rustfmt` au 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.lock` n'est pas rendue universelle : le profil exige une politique explicite selon le type de produit ;
|
||||
- l'exception `unsafe` Android/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 :
|
||||
|
||||
```text
|
||||
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.toml` et 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 :
|
||||
|
||||
```text
|
||||
VERSION
|
||||
RULES.md
|
||||
docs/rules/000-README.md
|
||||
```
|
||||
|
||||
ADD :
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```bash
|
||||
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 :
|
||||
|
||||
```text
|
||||
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.
|
||||
Reference in New Issue
Block a user