From a8dd8ae3497a5aaa5beafe97629928edf0e951ca Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Thu, 24 Sep 2026 06:51:16 +0200 Subject: [PATCH] 0.0.3-alpha.2 --- VERSION | 2 +- deltas/0.0.3/alpha.2.md | 123 ++++++++++++++++++ docs/000-README.md | 7 +- .../plans/003-V0_0_3_TEMPLATES_AUDITS_PLAN.md | 23 ++-- docs/templates/001-RUST_CARGO_TOOLING.md | 45 +++++++ history/0.0.3/alpha.2.md | 55 ++++++++ templates/rust-cargo/.cargo/config.toml | 7 + templates/rust-cargo/clippy.toml | 23 ++++ templates/rust-cargo/rustfmt.toml | 23 ++++ 9 files changed, 293 insertions(+), 15 deletions(-) create mode 100644 deltas/0.0.3/alpha.2.md create mode 100644 docs/templates/001-RUST_CARGO_TOOLING.md create mode 100644 history/0.0.3/alpha.2.md create mode 100644 templates/rust-cargo/.cargo/config.toml create mode 100644 templates/rust-cargo/clippy.toml create mode 100644 templates/rust-cargo/rustfmt.toml diff --git a/VERSION b/VERSION index 1cbb940..553d4a6 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.3-alpha.1.fix.1 +0.0.3-alpha.2 diff --git a/deltas/0.0.3/alpha.2.md b/deltas/0.0.3/alpha.2.md new file mode 100644 index 0000000..646c57f --- /dev/null +++ b/deltas/0.0.3/alpha.2.md @@ -0,0 +1,123 @@ + + + +# Delta 0.0.3-alpha.2 — outillage Rust/Cargo partagé + +## Baseline et version + +Baseline : `0.0.3-alpha.1.fix.1` avec `history/0.0.3/alpha.1.fix.1.md` appliqué et committé. Ce delta MUST NOT être appliqué avant ce commit. + +Version avant application : + +```text +0.0.3-alpha.1.fix.1 +``` + +Version après application : + +```text +0.0.3-alpha.2 +``` + +## Objet + +Matérialiser trois configurations Rust/Cargo directement issues des pratiques éprouvées dans KSP et Games, avec des instructions explicites d'adaptation. L'opérateur a précisé après le gate de `alpha.1.fix.1` que la sortie Cargo est généralement déportée vers `../builds//target/` et que Rustfmt/Clippy constituent des conventions de départ qu'il réutilise avec des adaptations mineures. + +Le `clippy.toml` livré conserve les réglages communs utiles aux deux corpus, sans copier leurs listes d'identifiants propres ni leurs entrées vides. Les niveaux des lints appartiendront aux templates `Cargo.toml` de `alpha.3`, conformément au profil `510`. + +## Scope + +REPLACE : + +```text +VERSION +docs/000-README.md +docs/plans/003-V0_0_3_TEMPLATES_AUDITS_PLAN.md +``` + +ADD : + +```text +templates/rust-cargo/rustfmt.toml +templates/rust-cargo/clippy.toml +templates/rust-cargo/.cargo/config.toml +docs/templates/001-RUST_CARGO_TOOLING.md +deltas/0.0.3/alpha.2.md +``` + +DELETE : aucun. + +Les fichiers complets sont livrés dans l'archive delta. Aucun history `alpha.2`, manifest de suppression, crate PGR ou script d'audit nouveau n'y est inclus. + +## Validation opérateur + +Depuis la racine du dépôt après application du delta : + +```bash +test "$(cat VERSION)" = '0.0.3-alpha.2' +git cat-file -e HEAD:history/0.0.3/alpha.1.fix.1.md +test ! -e history/0.0.3/alpha.2.md + +python3 -B - <<'PY' +from pathlib import Path +import tomllib + +root = Path('templates/rust-cargo') +rustfmt = tomllib.loads((root / 'rustfmt.toml').read_text(encoding='utf-8')) +clippy = tomllib.loads((root / 'clippy.toml').read_text(encoding='utf-8')) +cargo = tomllib.loads((root / '.cargo/config.toml').read_text(encoding='utf-8')) +assert rustfmt['edition'] == '2024' +assert rustfmt['max_width'] == 160 +assert clippy['allow-unwrap-in-tests'] is True +assert clippy['allowed-idents-below-min-chars'] == ['id'] +assert cargo['build']['target-dir'] == '../builds/project-name/target' +assert cargo['build']['build-dir'] == cargo['build']['target-dir'] +for path in (root / 'rustfmt.toml', root / 'clippy.toml', root / '.cargo/config.toml'): + lines = path.read_text(encoding='utf-8').splitlines() + assert lines[0] == f'# file: {path.as_posix()}', path + assert lines[1] == '# version: 1', path +print('Rust/Cargo template TOML audit: clean (3 file(s))') +PY + +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'', path + assert re.fullmatch(r'', lines[1]), path +print(f'Markdown header audit: clean ({len(files)} file(s))') +PY + +git diff --check +git add VERSION docs/000-README.md docs/plans/003-V0_0_3_TEMPLATES_AUDITS_PLAN.md \ + docs/templates/001-RUST_CARGO_TOOLING.md deltas/0.0.3/alpha.2.md \ + templates/rust-cargo/rustfmt.toml templates/rust-cargo/clippy.toml \ + templates/rust-cargo/.cargo/config.toml +git diff --cached --check +git status --short +``` + +Scope attendu avant ajout du history : les trois `REPLACE` et les cinq `ADD` énumérés ci-dessus, sans modification des deltas ou histories précédents. + +Revue opérateur : confirmer que la convention de sortie Cargo vers un dossier frère est expliquée avec son chemin relatif réel, que `project-name` est à remplacer avant copie et que les lints de niveau Cargo et les manifests restent bien au scope de `alpha.3`. La gate de cette tranche reste documentaire/TOML : PGR ne contient aucun workspace Rust à compiler. + +## Transition + +### PASS + +Produire séparément `history/0.0.3/alpha.2.md` avec les sorties réellement observées, l'appliquer et committer avant de préparer `alpha.3` consacré aux manifests Cargo. + +### FAIL + +Enregistrer la défaillance réelle puis corriger ces seuls templates ou instructions dans `alpha.2.fix.1`, sauf besoin de REPLAN justifié. diff --git a/docs/000-README.md b/docs/000-README.md index 13d007a..a208071 100644 --- a/docs/000-README.md +++ b/docs/000-README.md @@ -1,5 +1,5 @@ - + # Documentation PGR @@ -11,8 +11,9 @@ Ce fichier est l'index d'entrée de la documentation structurée de Project Gove - [`architecture/`](architecture/) — état architectural courant de PGR et profils applicables ; - [`plans/`](plans/) — plans vivants des releases en cours, puis références historiques après fermeture ; - [`rules/`](rules/) — règles normatives détaillées, organisées progressivement par scope ; +- [`templates/`](templates/) — choix et instructions d'adaptation des premiers templates techniques ; - [`validation/`](validation/) — matrices de validation et contrats de preuve. -D'autres collections telles que `ideas/`, `studies/`, `reference/`, `formats/` ou `templates/` ne sont créées que lorsqu'un premier artefact réel les justifie. +D'autres collections telles que `ideas/`, `studies/`, `reference/` ou `formats/` ne sont créées que lorsqu'un premier artefact réel les justifie. -Les répertoires workflow de racine (`deltas/`, `history/`, `handoffs/`, `manifests/`, `prompts/`, `scripts/`) restent séparés de `docs/` parce qu'ils portent le processus de développement et de livraison lui-même. +Les templates techniques copiables sous `templates/` restent séparés des instructions documentaires sous `docs/templates/`. Les répertoires workflow de racine (`deltas/`, `history/`, `handoffs/`, `manifests/`, `prompts/`, `scripts/`) restent séparés de `docs/` parce qu'ils portent le processus de développement et de livraison lui-même. diff --git a/docs/plans/003-V0_0_3_TEMPLATES_AUDITS_PLAN.md b/docs/plans/003-V0_0_3_TEMPLATES_AUDITS_PLAN.md index 83f9d96..6db73aa 100644 --- a/docs/plans/003-V0_0_3_TEMPLATES_AUDITS_PLAN.md +++ b/docs/plans/003-V0_0_3_TEMPLATES_AUDITS_PLAN.md @@ -1,11 +1,11 @@ - + # Plan 0.0.3 — templates initiaux et audits réutilisables ## Statut et sources -Plan de cadrage créé dans `0.0.3-alpha.1` et corrigé dans `0.0.3-alpha.1.fix.1` après sa validation mécanique. Les tranches suivantes sont une prévision, non un état validé. Aucun template ni audit nouveau n'est encore matérialisé. +Plan de cadrage créé dans `0.0.3-alpha.1` et corrigé dans `0.0.3-alpha.1.fix.1` après sa validation mécanique. `alpha.2` intègre la convention opérateur sur les fichiers d'outillage Rust et matérialise les premiers templates. Les tranches suivantes sont une prévision, non un état validé. La source autoritaire est l'archive Gitea fournie `pgr-v0.0.2.zip`, issue selon l'opérateur du tag `v0.0.2`. Son SHA-256 vérifié localement est : @@ -54,7 +54,7 @@ KSP `0.3.16` et Games `0.3.5` possèdent chacun un workspace Cargo virtuel avec Les `22` crates KSP héritent des lints workspace par `[lints] workspace = true`. Parmi `23` crates Games, `22` utilisent ce même héritage ; l'entrée Android déclare des lints locaux pour ajuster `unsafe_code` à sa frontière FFI. La capacité d'exception locale est donc réelle et doit être expliquée sans rendre l'exception Android générale. -Les deux `rustfmt.toml` ont un contenu technique identique et seulement un numéro de révision de fichier différent. Les deux `clippy.toml` partagent leurs seuils principaux et divergent sur les identifiants courts autorisés et quelques entrées vides. Ces seuils et listes sont des préférences de projet à examiner : leur répétition ne prouve pas qu'ils soient de bons défauts universels. Les deux `.cargo/config.toml` déplacent les artefacts de build vers des chemins propres au projet ; Games ajoute des flags Web. Ce fichier est un candidat conditionnel, pas un chemin à copier tel quel. +Les deux `rustfmt.toml` ont un contenu technique identique et seulement un numéro de révision de fichier différent. Les deux `clippy.toml` partagent leurs seuils principaux et divergent sur les identifiants courts autorisés et quelques entrées vides. L'opérateur confirme qu'il réutilise ces conventions comme baseline de départ, telles quelles ou avec de petites adaptations. Les deux `.cargo/config.toml` déplacent les artefacts de build vers `../builds//target/` ; Games ajoute des flags Web propres à sa cible. La configuration générique de déplacement est donc retenue avec un nom de projet à remplacer. ## Sélection des templates @@ -63,13 +63,14 @@ Les deux `rustfmt.toml` ont un contenu technique identique et seulement un numé Le besoin concret n'est pas limité à `rustfmt.toml`. La première famille doit couvrir quatre responsabilités distinctes : 1. `rustfmt.toml` : options communes dont la valeur est justifiée ; alignement de `edition` avec le projet destinataire ; ne pas reprendre mécaniquement chaque préférence des deux sources ; -2. configuration Clippy : niveaux de lint Rust/Clippy dans les sections Cargo `[workspace.lints.rust]` et `[workspace.lints.clippy]`, plus un `clippy.toml` minimal seulement pour les paramètres Clippy qui apportent une valeur vérifiée et ne sont pas des seuils arbitraires ; -3. `Cargo.toml` workspace : sections `[workspace]`, `[workspace.package]`, `[workspace.dependencies]` et `[workspace.lints.*]` avec les responsabilités et champs de décision explicités ; `VERSION` doit correspondre à `workspace.package.version` seulement pour une unité de release commune ; -4. `Cargo.toml` d'une crate membre ordinaire : identité locale, héritage explicite des métadonnées communes et des lints, et dépendances/features limitées aux besoins de la crate. Une adaptation locale des lints doit être documentée comme exception ciblée ; elle ne devient pas un deuxième jeu de valeurs globales. +2. configuration Clippy : niveaux de lint Rust/Clippy dans les sections Cargo `[workspace.lints.rust]` et `[workspace.lints.clippy]`, plus `clippy.toml` pour les seuils et réglages conservés dans le profil de départ éprouvé ; chaque projet peut adapter ces choix ; +3. `.cargo/config.toml` : `target-dir` et `build-dir` vers un dossier frère `../builds//target/`, après remplacement explicite du nom ; les flags Web et les autres particularités restent locaux ; +4. `Cargo.toml` workspace : sections `[workspace]`, `[workspace.package]`, `[workspace.dependencies]` et `[workspace.lints.*]` avec les responsabilités et champs de décision explicités ; `VERSION` doit correspondre à `workspace.package.version` seulement pour une unité de release commune ; +5. `Cargo.toml` d'une crate membre ordinaire : identité locale, héritage explicite des métadonnées communes et des lints, et dépendances/features limitées aux besoins de la crate. Une adaptation locale des lints doit être documentée comme exception ciblée ; elle ne devient pas un deuxième jeu de valeurs globales. Ces fichiers ou extraits doivent être copiables et compréhensibles sans figer le nom de projet, la version, les dépendances, le layout de toutes les crates, la publication, la toolchain ni le minimum de plateforme. Lorsqu'un champ obligatoire ne peut pas avoir de valeur générique sûre, des instructions Markdown guident son remplacement avant l'usage ; un fichier TOML présenté comme prêt à l'emploi doit être valide. Les crates bibliothèque et application peuvent partager un tronc commun, leurs différences réelles restant documentées sans créer des dizaines de variantes. -Pour la validation, comparer les templates au profil `510`, parser les manifests avec Cargo ou un parseur TOML, et exercer sur un workspace d'essai les héritages et le cas d'une exception locale si l'environnement le permet. Tester `rustfmt` et Clippy seulement pour les réglages réellement livrés ; une compilation de KSP/Games n'est pas une gate de PGR. +Pour la validation, comparer les templates au profil `510`, parser les configs/manifests avec un parseur TOML et exercer sur un workspace d'essai les héritages et le cas d'une exception locale quand les toolchains sont disponibles. Tester `rustfmt` et Clippy pour les réglages réellement livrés dans un projet Rust concerné ; une compilation de KSP/Games n'est pas une gate de PGR. ### Candidat conditionnel : template de prompt manuel de nouvelle session @@ -77,7 +78,7 @@ Les prompts `002` et `003` montrent un besoin récurrent de transmission de la b ### Différés -Les fichiers Maven/Gradle complets, wrappers, Android `local.properties` ou signing, règles `.gitignore` universelles, versions de dépendances et chemins `.cargo/config.toml` ne sont pas copiés par anticipation. Games fournit un exemple Android concret, mais sa matrice AGP/Gradle/JDK, son build natif et ses chemins restent propres à ce projet. Les wrappers restent soumis aux outils officiels et à la décision du projet ; un `local.properties` entièrement régénéré ne justifie pas d'exemple. +Les fichiers Maven/Gradle complets, wrappers, Android `local.properties` ou signing, règles `.gitignore` universelles et versions de dépendances ne sont pas copiés par anticipation. Games fournit un exemple Android concret, mais sa matrice AGP/Gradle/JDK, son build natif et ses flags Cargo Web restent propres à ce projet. Les wrappers restent soumis aux outils officiels et à la décision du projet ; un `local.properties` entièrement régénéré ne justifie pas d'exemple. Les spécifications complètes de skeleton restent réservées à `0.0.4` ; Rust/JNI, Web/WASM, Tauri et les autres profils différés n'entrent pas dans cette release par simple proximité technologique. @@ -101,9 +102,9 @@ Enregistrer l'audit de la stable, confronter le prompt au dépôt réel, invento Après le history et le commit de `alpha.1`, documenter la comparaison réelle de KSP/Games, élargir les templates Rust à Cargo et Clippy et redimensionner les tranches. Aucun template ou audit nouveau dans ce fix. -### alpha.2 — formatage et configuration Clippy +### alpha.2 — outillage Rust/Cargo partagé -Créer le template `rustfmt.toml` et documenter les réglages Clippy retenus : les niveaux de lint appartiennent aux manifests Cargo ; un `clippy.toml` est livré uniquement si ses paramètres distincts sont justifiés après revue des deux corpus. Valider syntaxe et comportement des seules options sélectionnées. +Créer les templates `rustfmt.toml`, `clippy.toml` et `.cargo/config.toml` à partir du noyau éprouvé dans KSP et Games. Documenter les responsabilités distinctes : formatage, paramètres Clippy, sortie Cargo hors du dépôt. Le nom du projet, l'édition Rust et les seuils ajustables sont explicités au point de copie ; vérifier syntaxe et chemins relatifs. Les niveaux de lint dans `Cargo.toml` restent à la tranche suivante, qui les reliera au profil Clippy retenu. ### alpha.3 — manifests Cargo workspace et crate membre @@ -131,6 +132,6 @@ Promouvoir la RC validée, produire le history de clôture pré-tag, committer e ## Points de décision et validation -Le plan doit être revu si les templates Cargo/Clippy exigent des choix de projet incompatibles avec un modèle minimal, si l'audit de headers ne peut rester fiable et monotâche, si le template de workflow duplique le plan, ou si un autre examen des corpus révèle des contraintes nouvelles. Un REPLAN explicite indique `CONTINUE`, `SPLIT`, `CONTINUE-NEXT-SESSION` ou `ABANDON` ; la durée d'une conversation ne crée pas une nouvelle version. +Le plan doit être revu si les manifests Cargo exigent des choix de projet incompatibles avec un modèle minimal, si l'audit de headers ne peut rester fiable et monotâche, si le template de workflow duplique le plan, ou si un autre examen des corpus révèle des contraintes nouvelles. Un REPLAN explicite indique `CONTINUE`, `SPLIT`, `CONTINUE-NEXT-SESSION` ou `ABANDON` ; la durée d'une conversation ne crée pas une nouvelle version. La validation `alpha.1` a porté sur l'identité de `VERSION`, la portée du delta, les headers et audits Markdown, l'absence de changement historique rétroactif et le contrôle Git du dépôt de l'opérateur. Ses résultats observés sont conservés dans `history/0.0.3/alpha.1.md`. Le fix documentaire décrit ci-dessus possède sa propre gate et son propre history : le PASS de `alpha.1` ne vaut pas validation anticipée de `alpha.1.fix.1`. diff --git a/docs/templates/001-RUST_CARGO_TOOLING.md b/docs/templates/001-RUST_CARGO_TOOLING.md new file mode 100644 index 0000000..64b3ff0 --- /dev/null +++ b/docs/templates/001-RUST_CARGO_TOOLING.md @@ -0,0 +1,45 @@ + + + +# Templates d'outillage Rust/Cargo + +## Rôle et sélection + +Ces trois fichiers fournissent une baseline de configuration issue des conventions réellement utilisées dans KSP et Games. Ils s'appliquent à un projet Rust/Cargo qui choisit ce profil d'outillage ; ils ne créent pas une dépendance vers PGR après copie. + +- [`rustfmt.toml`](../../templates/rust-cargo/rustfmt.toml) — formatage canonique, avec notamment largeur `160` et édition `2024` dans l'exemple ; +- [`clippy.toml`](../../templates/rust-cargo/clippy.toml) — paramètres de lints (seuils, exceptions de tests, identifiants courts) issus du noyau partagé des deux projets ; +- [`.cargo/config.toml`](../../templates/rust-cargo/.cargo/config.toml) — emplacements des artefacts Cargo hors de la racine source. + +Les niveaux `deny`, `allow`, `warn` et `forbid` des lints Rust/Clippy appartiennent au `Cargo.toml` du workspace, selon [`510-RUST_CARGO.md`](../rules/510-RUST_CARGO.md). `clippy.toml` règle des paramètres de lints, pas leur niveau. Les modèles de manifests racine et membre, ainsi que l'héritage `[lints] workspace = true`, sont prévus dans la tranche suivante. + +## Copier et adapter + +Copier ces fichiers aux chemins suivants dans le projet destinataire : + +```text +rustfmt.toml +clippy.toml +.cargo/config.toml +``` + +Adapter le header `# file:` de chacun à son nouveau chemin relatif. Comme il s'agit de nouveaux fichiers locaux, leur révision interne commence à `1` si le projet suit cette convention. Vérifier les choix avant de les utiliser : + +1. `rustfmt.toml` : aligner `edition` sur l'édition déclarée dans le manifeste du projet. La largeur et les autres options constituent la convention de départ de KSP/Games et peuvent être ajustées pour le projet ; +2. `clippy.toml` : revoir les seuils au regard des types et API du projet ; adapter `allowed-idents-below-min-chars` à ses abréviations réelles. Les exceptions `allow-*-in-tests` sont une décision explicite du profil retenu ; elles ne relâchent pas les lints de production ; +3. `.cargo/config.toml` : remplacer `project-name` par un identifiant propre au projet pour éviter la collision de deux workspaces sous `../builds/`. Depuis une configuration placée dans `/.cargo/`, Cargo résout ici les chemins relatifs par rapport à `/` : la sortie se trouve donc sous le dossier frère `/builds//target/` ; +4. conserver les deux entrées `target-dir` et `build-dir` lorsque cette politique est choisie. Elles ciblent volontairement le même dossier, même si Cargo utilise actuellement `target-dir` comme valeur par défaut de `build-dir` ; +5. ajouter séparément les flags de cible, chemins particuliers ou ajustements Clippy nécessaires à un projet. Les flags Web présents dans Games ne sont pas un défaut de tous les projets Rust. + +Le chemin de sortie sous `builds/` est externe au dépôt source ; il ne doit pas être inclus dans les archives du projet. Si l'environnement impose un autre emplacement, ajuster la configuration du projet au lieu de copier un chemin machine depuis KSP ou Games. + +## Validation dans un projet Rust + +Après adaptation, les contrôles utiles dépendent du code et des manifests effectivement présents : + +```bash +cargo fmt --all -- --check +cargo clippy --workspace --all-targets --all-features -- -D warnings +``` + +Vérifier l'emplacement effectif des artefacts sur un build ou un check pertinent. La validation de PGR lui-même peut vérifier la syntaxe TOML et la cohérence des chemins sans demander de compiler un workspace Rust absent de son dépôt. diff --git a/history/0.0.3/alpha.2.md b/history/0.0.3/alpha.2.md new file mode 100644 index 0000000..de2a950 --- /dev/null +++ b/history/0.0.3/alpha.2.md @@ -0,0 +1,55 @@ + + + +# History 0.0.3-alpha.2 — outillage Rust/Cargo partagé + +## Statut + +PASS + +La gate documentaire et TOML de `alpha.2` a été exécutée par l'opérateur avec succès. Une demande ultérieure complète le cadrage des audits Rust à partir des scripts KSP et Games ; elle concerne les tranches suivantes et ne modifie pas rétroactivement le résultat des templates de cette tranche. + +## Baseline et version + +La présence de `history/0.0.3/alpha.1.fix.1.md` dans `HEAD` a été vérifiée par `git cat-file -e`. Version contrôlée après application : + +```text +0.0.3-alpha.2 +``` + +## Validation opérateur observée + +Les commandes fournies depuis `~/Projects/pgr` le `2026-09-23` à `22:29:19` confirment la version, la baseline committée et l'absence du history courant. Le contrôle TOML de `rustfmt.toml`, `clippy.toml` et `.cargo/config.toml` affiche : + +```text +Rust/Cargo template TOML audit: clean (3 file(s)) +``` + +Les audits documentaires affichent : + +```text +Markdown table audit: clean (2 table(s), 80 file(s)) +Markdown link audit: clean (55 local link(s), 80 file(s)) +Markdown header audit: clean (80 file(s)) +``` + +`git diff --check` et `git diff --cached --check` n'ont émis aucun diagnostic. Après `git add`, le scope observé est : + +```text +M VERSION +A deltas/0.0.3/alpha.2.md +M docs/000-README.md +M docs/plans/003-V0_0_3_TEMPLATES_AUDITS_PLAN.md +A docs/templates/001-RUST_CARGO_TOOLING.md +A templates/rust-cargo/.cargo/config.toml +A templates/rust-cargo/clippy.toml +A templates/rust-cargo/rustfmt.toml +``` + +Le collage du terminal intercale quelques lignes de la commande `git add` dans la zone de sortie des audits ; chaque commande et son résultat apparaissent ensuite séparément. Aucune erreur n'est signalée par les sorties fournies. + +## Suite + +Le travail approuvé après ce gate demande de comparer les contrôles de format Rust des scripts KSP et Games, de les répartir par propriété monotâche lorsqu'ils doivent être réutilisés, et de distinguer ce que Rustfmt/Clippy possèdent déjà de ce qui exige un audit dédié. Cette revue n'a pas été exécutée par l'opérateur pendant le gate `alpha.2` et ne constitue pas sa preuve PASS. + +Appliquer le présent history et committer `alpha.2` avant tout nouveau delta. Aucun commit ou gate ultérieur n'est déclaré observé ici. diff --git a/templates/rust-cargo/.cargo/config.toml b/templates/rust-cargo/.cargo/config.toml new file mode 100644 index 0000000..60ede7c --- /dev/null +++ b/templates/rust-cargo/.cargo/config.toml @@ -0,0 +1,7 @@ +# file: templates/rust-cargo/.cargo/config.toml +# version: 1 + +# Replace project-name with a unique name before using this configuration. +[build] +target-dir = "../builds/project-name/target" +build-dir = "../builds/project-name/target" diff --git a/templates/rust-cargo/clippy.toml b/templates/rust-cargo/clippy.toml new file mode 100644 index 0000000..11f444e --- /dev/null +++ b/templates/rust-cargo/clippy.toml @@ -0,0 +1,23 @@ +# file: templates/rust-cargo/clippy.toml +# version: 1 + +# Baseline shared by the KSP and Games projects; adapt thresholds per project. +too-many-arguments-threshold = 16 +type-complexity-threshold = 250 +single-char-binding-names-threshold = 3 +trivial-copy-size-limit = 16 +pass-by-value-size-limit = 256 +stack-size-threshold = 512000 +vec-box-size-threshold = 4096 +max-fn-params-bools = 2 +max-include-file-size = 1048576 +cognitive-complexity-threshold = 25 +too-large-for-stack = 2048 +enum-variant-size-threshold = 200 +large-error-threshold = 128 +avoid-breaking-exported-api = true +allow-unwrap-in-tests = true +allow-expect-in-tests = true +allow-useless-vec-in-tests = true +disallowed-names = ["foo", "bar", "baz", "tmp"] +allowed-idents-below-min-chars = ["id"] diff --git a/templates/rust-cargo/rustfmt.toml b/templates/rust-cargo/rustfmt.toml new file mode 100644 index 0000000..7ae628c --- /dev/null +++ b/templates/rust-cargo/rustfmt.toml @@ -0,0 +1,23 @@ +# file: templates/rust-cargo/rustfmt.toml +# version: 1 + +edition = "2024" +newline_style = "Unix" +use_small_heuristics = "Default" +hard_tabs = false +tab_spaces = 4 +max_width = 160 +chain_width = 140 +fn_call_width = 140 +attr_fn_like_width = 140 +struct_lit_width = 100 +struct_variant_width = 100 +array_width = 140 +single_line_if_else_max_width = 120 +single_line_let_else_max_width = 120 +reorder_imports = true +reorder_modules = true +match_block_trailing_comma = true +use_field_init_shorthand = true +use_try_shorthand = false +force_explicit_abi = true