From e4f405ea9d68f2eb0286111a61b57d5eeee3f6fa Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Tue, 29 Sep 2026 14:00:25 +0200 Subject: [PATCH] 0.1.4-alpha.3 --- VERSION | 2 +- deltas/0.1.4/alpha.3.md | 202 ++++++++++++++++ docs/000-README.md | 3 +- .../010-V0_1_4_TAURI_REEVALUATION_PLAN.md | 14 +- docs/rules/210-WORKFLOW.md | 4 +- docs/skeletons/000-README.md | 7 +- docs/skeletons/004-TAURI.md | 217 ++++++++++++++++++ history/0.1.4/alpha.3.md | 97 ++++++++ 8 files changed, 538 insertions(+), 8 deletions(-) create mode 100644 deltas/0.1.4/alpha.3.md create mode 100644 docs/skeletons/004-TAURI.md create mode 100644 history/0.1.4/alpha.3.md diff --git a/VERSION b/VERSION index df4fd5b..874cfeb 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.1.4-alpha.2.fix.1 +0.1.4-alpha.3 diff --git a/deltas/0.1.4/alpha.3.md b/deltas/0.1.4/alpha.3.md new file mode 100644 index 0000000..4d26967 --- /dev/null +++ b/deltas/0.1.4/alpha.3.md @@ -0,0 +1,202 @@ + + + +# Delta 0.1.4-alpha.3 — skeleton Tauri contrôlé + +## Précondition + +`0.1.4-alpha.2.fix.1` doit être committée avec son history `PASS` avant application de ce delta. + +Version après application : + +```text +0.1.4-alpha.3 +``` + +## Objet + +Matérialiser le skeleton Tauri 2 autorisé par les gates précédentes, sans créer de template technique universel ni absorber les owners Rust/Web/plateforme. + +La tranche corrige également le contrat de packaging des archives delta/history après l'observation opérateur d'un répertoire englobant `pgr/` dans deux ZIP remis : les entrées doivent désormais être directement relatives à la racine du dépôt. + +## Scope + +ADD : + +```text +deltas/0.1.4/alpha.3.md +docs/skeletons/004-TAURI.md +``` + +REPLACE : + +```text +VERSION +docs/000-README.md +docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md +docs/rules/210-WORKFLOW.md +docs/skeletons/000-README.md +``` + +Aucun template Tauri, contrat de validation Tauri séparé, changement de roadmap ou adoption Games/KSP n'appartient à cette tranche. + +## Skeleton `004-TAURI` + +La nouvelle specification : + +- compose `001-PROJECT_GOVERNANCE_FOUNDATION`, `002-RUST_CARGO_WORKSPACE`, `003-WEB_FRONTEND` et `710-TAURI` ; +- conserve `src-tauri/` comme layout valide pour un projet existant tout en recommandant une crate Cargo directement lisible pour une nouvelle baseline contrôlée ; +- rend obligatoires les décisions de version, frontend, package manager, hooks, `devUrl`, `frontendDist`, capabilities, permissions, plugins, fenêtres, bundles et plateformes ; +- distingue recommandations de baseline et options locales ; +- garde WASM séparé par défaut ; +- définit un ordre d'initialisation ; +- définit une gate initiale séparant preuves Rust, frontend, intégration Tauri, packaging et plateforme ; +- conclut qu'aucun template Tauri technique supplémentaire n'est actuellement justifié. + +## Packaging delta/history + +`docs/rules/210-WORKFLOW.md` passe en révision `9` et rend explicite que : + +```text +archive.delta/history.zip +├── VERSION # si présent dans le delta +├── docs/... +├── deltas/... +└── history/... +``` + +est valide, tandis que : + +```text +archive.zip +└── pgr/ + ├── docs/... + └── history/... +``` + +est invalide pour le handoff canonique `unzip -o -d .`. + +Le générateur doit vérifier la liste des entrées du ZIP avant remise. + +## Gate opérateur + +Après commit/push du history `PASS` de `alpha.2.fix.1`, appliquer ce delta puis exécuter : + +```bash +cat VERSION + +test -f history/0.1.4/alpha.2.fix.1.md +grep -A2 '^## Statut$' history/0.1.4/alpha.2.fix.1.md | grep -Fx 'PASS' +test -f deltas/0.1.4/alpha.3.md +test -f docs/skeletons/004-TAURI.md +test ! -e history/0.1.4/alpha.3.md + +python3 -B -m unittest discover -s tests -v + +python3 -B scripts/audit_text_hygiene.py \ + VERSION README.md RULES.md ROADMAP.md CHANGELOG.md \ + docs deltas history prompts scripts tests templates .gitignore .settings + +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 + +assert Path('VERSION').read_text(encoding='utf-8').strip() == '0.1.4-alpha.3' + +history = Path('history/0.1.4/alpha.2.fix.1.md').read_text(encoding='utf-8') +assert re.search(r'## Statut\s+PASS', history) + +skeleton = Path('docs/skeletons/004-TAURI.md').read_text(encoding='utf-8') +assert skeleton.startswith( + '\n' + '' +) +for phrase in ( + '## Décisions obligatoires avant matérialisation', + '## Baseline organisationnelle recommandée', + '## Capabilities, permissions et commandes', + '## Ordre d\'initialisation', + '## Validation initiale', + '## Templates techniques', + 'Aucun template Tauri technique supplémentaire n\'est requis', + 'ADOPT / KEEP-LOCAL / OVERRIDE / DEFER', +): + assert phrase in skeleton, phrase + +for path, version in ( + ('docs/rules/210-WORKFLOW.md', '9'), + ('docs/skeletons/000-README.md', '7'), + ('docs/000-README.md', '43'), + ('docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md', '3'), + ('docs/rules/710-TAURI.md', '7'), + ('docs/studies/002-TAURI_SKELETON_DECISION.md', '3'), +): + lines = Path(path).read_text(encoding='utf-8').splitlines() + assert lines[1] == f'', (path, lines[1]) + +workflow = Path('docs/rules/210-WORKFLOW.md').read_text(encoding='utf-8') +for phrase in ( + 'Les entrées des archives delta/history MUST utiliser directement les chemins relatifs à la racine du dépôt', + 'MUST NOT ajouter un répertoire englobant portant le nom du projet', + 'vérifier la liste des entrées du ZIP avant remise', +): + assert phrase in workflow, phrase + +index = Path('docs/skeletons/000-README.md').read_text(encoding='utf-8') +assert '[`004-TAURI.md`](004-TAURI.md)' in index + +doc_index = Path('docs/000-README.md').read_text(encoding='utf-8') +assert '[`skeletons/004-TAURI.md`](skeletons/004-TAURI.md)' in doc_index + +assert not Path('history/0.1.4/alpha.3.md').exists() +assert not Path('docs/templates/011-TAURI.md').exists() +assert not Path('docs/validation/006-TAURI_VALIDATION.md').exists() + +print( + '0.1.4 alpha.3 skeleton audit: clean ' + '(004 materialized, owners composed, no premature template/validation artifact, ZIP root contract explicit)' +) +PY + +git diff --check + +git add VERSION \ + deltas/0.1.4/alpha.3.md \ + docs/000-README.md \ + docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md \ + docs/rules/210-WORKFLOW.md \ + docs/skeletons/000-README.md \ + docs/skeletons/004-TAURI.md + +git diff --cached --check +git status --short +``` + +Le scope attendu est : + +```text +M VERSION +A deltas/0.1.4/alpha.3.md +M docs/000-README.md +M docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md +M docs/rules/210-WORKFLOW.md +M docs/skeletons/000-README.md +A docs/skeletons/004-TAURI.md +``` + +## Transition + +### PASS + +Produire `history/0.1.4/alpha.3.md`, commit/push sous l'identité `0.1.4-alpha.3`, puis ouvrir `beta.1` pour la réconciliation globale et la décision explicite sur les artefacts Tauri supplémentaires. + +### FAIL + +Enregistrer le résultat réel dans `history/0.1.4/alpha.3.md` et poursuivre sous `alpha.3.fix.N`. Ne pas ouvrir `beta.1` tant que la composition du skeleton et le scope ne sont pas propres. diff --git a/docs/000-README.md b/docs/000-README.md index 1115bb7..4f5c227 100644 --- a/docs/000-README.md +++ b/docs/000-README.md @@ -1,5 +1,5 @@ - + # Documentation PGR @@ -25,6 +25,7 @@ Les templates techniques copiables sous `templates/` restent séparés des instr - [`plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md`](plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md) — plan actif du réexamen Tauri : audit des hosts Games/KSP actuels, classification `ADOPT / KEEP-LOCAL / OVERRIDE / DEFER`, décision contrôlée sur le skeleton et séquencement jusqu'à la stable. - [`rules/710-TAURI.md`](rules/710-TAURI.md) — owner Tauri 2 réconcilié en `alpha.2` : host/orchestration, frontière commandes-permissions-capabilities, sélection des capabilities, plugins, version produit et validation proportionnée, sans absorber les choix Web. - [`skeletons/003-WEB_FRONTEND.md`](skeletons/003-WEB_FRONTEND.md) — specialization Web composable dont l'existence satisfait les prérequis historiques sans rendre Vite, TypeScript, Sass, Bootstrap ou `frontend/` universels à Tauri. +- [`skeletons/004-TAURI.md`](skeletons/004-TAURI.md) — skeleton Tauri 2 matérialisé en `alpha.3`, composant fondation, Rust/Cargo, Web et owner `710` sans template technique universel ni copie des choix Games/KSP. - [`studies/002-TAURI_SKELETON_DECISION.md`](studies/002-TAURI_SKELETON_DECISION.md) — décision historique `DEFER` et réexamen `0.1.4-alpha.2` : motif Web levé, candidat organisationnel retenu pour matérialisation contrôlée en `alpha.3`. - [`../prompts/010-V0_1_4_START_PROMPT.md`](../prompts/010-V0_1_4_START_PROMPT.md) — contrat de reprise exécuté pour ouvrir `0.1.4-alpha.1` après publication vérifiée de `v0.1.3`. diff --git a/docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md b/docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md index 6cf87d5..101084c 100644 --- a/docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md +++ b/docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md @@ -1,5 +1,5 @@ - + # Plan 0.1.4 — réexamen Tauri et skeleton contrôlé @@ -262,6 +262,18 @@ validation Tauri séparée DEFER La décision historique `DEFER` de `0.0.5-alpha.9` reste conservée comme preuve historique, mais son motif Web est levé. L'étude révisée autorise donc `alpha.3` à matérialiser la specification `004-TAURI.md` si la présente gate reste propre. +## Gates `alpha.2` et `alpha.2.fix.1` acquises + +`alpha.2` a validé la réconciliation normative Tauri mais a été enregistrée `FAIL` à cause d'une ligne vide surnuméraire à EOF. `alpha.2.fix.1` a corrigé ce défaut et ajouté `PGR-TEXT-HYGIENE-001` ; sa gate opérateur est `PASS` avec `55/55` tests, audit texte propre sur `297` fichiers et audits Markdown propres. + +Après cette gate, un défaut distinct de livraison a été identifié : deux archives remises contenaient un répertoire englobant `pgr/` au lieu d'entrées directement relatives à la racine. Le contenu du dépôt validé n'est pas affecté, mais `alpha.3` durcit `210-WORKFLOW.md` afin d'interdire ce packaging et impose au générateur de vérifier la liste des entrées avant remise. + +## Matérialisation préparée en `alpha.3` + +`alpha.3` matérialise `docs/skeletons/004-TAURI.md` comme specification organisationnelle. Elle compose les skeletons `001/002/003` et l'owner `710`, rend explicites versions, frontend, package manager, capabilities, permissions, plugins, fenêtres, bundles et cibles plateforme, puis définit un ordre d'initialisation et une validation proportionnée. + +Aucun template technique Tauri n'est créé : `tauri.conf.json`, les manifests, capability files et sources Tauri restent trop dépendants des décisions du projet pour justifier une baseline copiable universelle à ce stade. Cette décision sera réexaminée en `beta.1` conformément au plan. + ## Point transversal découvert pendant la gate `alpha.1` L'utilisation de PGR pour initialiser SaseDev Knowledge a fait apparaître trois questions de gouvernance qui dépassent le domaine Tauri : diff --git a/docs/rules/210-WORKFLOW.md b/docs/rules/210-WORKFLOW.md index 4cb295e..bff7a8b 100644 --- a/docs/rules/210-WORKFLOW.md +++ b/docs/rules/210-WORKFLOW.md @@ -1,5 +1,5 @@ - + # Workflow artifact rules @@ -149,6 +149,8 @@ L'archive delta contient uniquement les fichiers à ajouter ou remplacer pour la L'archive history contient uniquement le ou les fichiers history à appliquer pour clôturer l'état validé, sauf besoin explicitement documenté. +Les entrées des archives delta/history MUST utiliser directement les chemins relatifs à la racine du dépôt. Elles MUST NOT ajouter un répertoire englobant portant le nom du projet, par exemple `pgr/`, lorsque l'application canonique attend `unzip -o -d .`. Le générateur MUST vérifier la liste des entrées du ZIP avant remise afin qu'un chemin annoncé comme `docs/...`, `history/...` ou `VERSION` soit réellement présent à ce niveau dans l'archive. + Delta et history MUST rester des livraisons séparées afin que la preuve observée ne soit pas confondue avec l'intention prospective. Lorsque la gate courante est `PASS` et que la tranche suivante est déjà déterminée par le plan sans décision ouverte, le générateur SHOULD préparer et remettre dans la même réponse : diff --git a/docs/skeletons/000-README.md b/docs/skeletons/000-README.md index 0f90029..6178c4a 100644 --- a/docs/skeletons/000-README.md +++ b/docs/skeletons/000-README.md @@ -1,5 +1,5 @@ - + # Index des skeleton specifications PGR @@ -20,6 +20,7 @@ Une specification peut se composer avec une fondation plus générale, mais la c - [`001-PROJECT_GOVERNANCE_FOUNDATION.md`](001-PROJECT_GOVERNANCE_FOUNDATION.md) — fondation composable pour établir la gouvernance locale, la version, la documentation minimale, le workflow retenu et sa validation initiale sans imposer d'architecture applicative. - [`002-RUST_CARGO_WORKSPACE.md`](002-RUST_CARGO_WORKSPACE.md) — specialization composable d'un workspace Rust/Cargo fondée sur `001`, les profils `500 + 510`, les cinq templates Rust/Cargo et une validation réelle de la toolchain. - [`003-WEB_FRONTEND.md`](003-WEB_FRONTEND.md) — specialization composable d'un frontend Web contrôlé fondée sur les owners `530/540/550/560`, avec TypeScript/Vite recommandés, Sass conditionnel et validation indépendante du host. +- [`004-TAURI.md`](004-TAURI.md) — specialization Tauri 2 contrôlée composant fondation, Rust/Cargo, frontend et owner `710`, avec décisions explicites sur layout, capabilities, plugins, versions, packaging et validation proportionnée. Pour un projet existant, ces specifications servent de références de comparaison et non de recettes à recopier aveuglément. Le chemin canonique passe alors par [`../rules/230-ADOPTION.md`](../rules/230-ADOPTION.md) et son mapping `ADOPT / KEEP-LOCAL / OVERRIDE / DEFER`. @@ -27,8 +28,6 @@ Les familles Java/Android, JNI et autres domaines sans pièces suffisantes reste Le skeleton Web `003` est matérialisé en `0.1.1-alpha.5` parce que les owners `530/540/550/560`, les guides d'adaptation et la validation frontend indépendante du host permettent désormais une composition sans ownership caché. Il ne fixe ni npm, ni Vite/Sass comme obligations, ni Bootstrap, ni un layout `frontend/` universel. -Le skeleton Tauri a fait l'objet d'une décision explicite en `0.0.5-alpha.9` : son host Rust/Tauri est cadré par `510` et `710`, mais sa promotion avait été différée tant que les owners Web nécessaires n'existaient pas. La décision `DEFER` et ses conditions de sortie restent enregistrées dans [`../studies/002-TAURI_SKELETON_DECISION.md`](../studies/002-TAURI_SKELETON_DECISION.md). - -La création du skeleton Web ne lève pas automatiquement ce `DEFER`. `0.1.1-beta.1` doit encore réconcilier objectivement les conditions de sortie avant que `0.1.4` ne réexamine un éventuel skeleton Tauri, qui devra composer les owners Web au lieu de posséder leurs règles. +Le skeleton Tauri avait été différé en `0.0.5-alpha.9` tant que les owners Web nécessaires n'existaient pas. `0.1.4-alpha.1` a confirmé les conditions de sortie, `alpha.2` a réconcilié l'owner `710`, puis `alpha.3` matérialise `004-TAURI.md` comme specification de composition sans reprendre l'ownership Web. L'étude historique et la levée du `DEFER` restent enregistrées dans [`../studies/002-TAURI_SKELETON_DECISION.md`](../studies/002-TAURI_SKELETON_DECISION.md). Aucun fichier placeholder ne doit être ajouté pour réserver un skeleton futur. diff --git a/docs/skeletons/004-TAURI.md b/docs/skeletons/004-TAURI.md new file mode 100644 index 0000000..94dda1e --- /dev/null +++ b/docs/skeletons/004-TAURI.md @@ -0,0 +1,217 @@ + + + +# Skeleton — Tauri 2 + +## Objectif + +Cette specification décrit une baseline organisationnelle composable pour une application Tauri 2 contrôlée par le projet, sans transformer les choix observés dans Games ou KSP en obligations universelles. + +Elle compose les responsabilités déjà possédées par : + +- [`001-PROJECT_GOVERNANCE_FOUNDATION.md`](001-PROJECT_GOVERNANCE_FOUNDATION.md) pour la gouvernance locale ; +- [`002-RUST_CARGO_WORKSPACE.md`](002-RUST_CARGO_WORKSPACE.md) pour le workspace et le host Rust/Cargo ; +- [`003-WEB_FRONTEND.md`](003-WEB_FRONTEND.md) lorsque le frontend Web est gouverné par cette baseline ; +- [`../rules/710-TAURI.md`](../rules/710-TAURI.md) pour l'intégration Tauri elle-même. + +Le contrat transversal des skeletons reste possédé par [`../rules/220-SKELETONS.md`](../rules/220-SKELETONS.md). Le présent document sélectionne et ordonne des décisions ; il ne recopie pas les règles de ces owners. + +## Applicabilité + +Appliquer ce skeleton à un nouveau host Tauri 2 dont le projet contrôle l'organisation du dépôt et souhaite une baseline PGR composable. + +Pour un projet Tauri existant, cette specification sert d'abord de référence de comparaison. L'adoption suit [`../rules/230-ADOPTION.md`](../rules/230-ADOPTION.md) et classe les écarts `ADOPT / KEEP-LOCAL / OVERRIDE / DEFER` au lieu de migrer mécaniquement vers le layout proposé. + +Ne pas appliquer ce skeleton uniquement parce qu'un frontend Web existe, parce qu'une application desktop est envisagée ou parce que Tauri apparaît dans un autre projet. La présence effective d'un host Tauri 2 est la condition d'applicabilité. + +## Composition de référence + +Pour une nouvelle baseline contrôlée, l'ordre de composition est : + +```text +001 PROJECT_GOVERNANCE_FOUNDATION + ↓ +002 RUST_CARGO_WORKSPACE + ↓ +003 WEB_FRONTEND si le frontend est gouverné ici + ↓ +710 TAURI owner framework + ↓ +004 TAURI présente specification d'instanciation + ↓ +profils plateforme Android/iOS/autres uniquement s'ils sont ciblés +``` + +Cette composition ne transfère aucun ownership. TypeScript, package manager, Vite, CSS/Sass et framework CSS restent possédés par leurs owners Web ; Cargo/Rust reste possédé par `510`; Android reste possédé par `610` lorsqu'il s'applique. + +## Décisions obligatoires avant matérialisation + +Le projet doit résoudre explicitement au minimum : + +1. l'identité du host, sa place dans le workspace et les noms distincts de ses cibles `lib` et `bin` ; +2. la version de Tauri 2 réellement retenue et sa stratégie de mise à jour ; +3. la racine frontend et les owners Web réellement sélectionnés ; +4. le package manager frontend lorsqu'un package JavaScript existe ; +5. les commandes de développement et de build reliant Tauri au frontend ; +6. la stratégie `devUrl` / `frontendDist` cohérente avec la chaîne frontend ; +7. les capabilities réellement nécessaires et leur mode de sélection ; +8. les permissions, commandes natives et scopes associés ; +9. les plugins réellement requis et leurs modifications de configuration/ACL ; +10. les fenêtres/webviews réellement nécessaires et leur répartition de privilèges ; +11. la politique de version pour `tauri.conf.json` et le frontend conformément aux règles de gouvernance ; +12. les ressources, icônes, bundle targets et cibles plateforme réellement distribuées ; +13. la gate initiale capable de prouver les surfaces effectivement matérialisées. + +Une décision encore inconnue reste une entrée ouverte ; elle ne doit pas être remplacée par une valeur copiée depuis Games, KSP ou un scaffold Tauri. + +## Baseline organisationnelle recommandée + +Pour un nouveau projet contrôlé, le host **SHOULD** rester une crate Cargo directement lisible et la surface Tauri **SHOULD** être visible à la racine de cette crate : + +```text +/ +├── Cargo.toml +├── build.rs +├── tauri.conf.json +├── capabilities/ +├── src/ +│ ├── lib.rs +│ ├── main.rs +│ └── tauri.rs +└── frontend/ +``` + +`frontend/` est la convention de cette baseline PGR lorsque le projet n'a pas déjà une autre racine frontend motivée. Un projet existant ou une contrainte externe peut conserver `src-tauri/`, une autre racine frontend ou une autre disposition supportée par la toolchain ; cet écart n'est pas à lui seul une raison de réécriture. + +Le package Tauri contrôlé **SHOULD** utiliser une paire `lib + bin` conforme à `710-TAURI.md` : bibliothèque applicative/façade, launcher mince et module `src/tauri.rs` pour l'assemblage Tauri et les wrappers d'invocation. + +## Frontend + +Lorsque le projet ne possède pas déjà une stack frontend imposée ou motivée, la baseline Web de `003-WEB_FRONTEND.md` **SHOULD** être utilisée : TypeScript et Vite sont alors les choix recommandés, sans devenir des obligations Tauri universelles. + +Le package manager est une décision du projet. npm, pnpm, yarn, Bun ou un autre outil supporté peuvent être retenus selon l'environnement et les contraintes réelles. + +Sass et un framework CSS restent optionnels. Bootstrap, Tailwind CSS ou un autre framework ne sont jamais ajoutés par ce skeleton uniquement parce qu'ils existent dans un corpus historique. + +WASM reste une unité séparée par défaut. Une chaîne WASM n'est intégrée dans le host que si l'architecture du produit l'exige explicitement. + +## Capabilities, permissions et commandes + +La baseline doit rendre visibles les trois niveaux distincts définis par `710-TAURI.md` : + +```text +commande native enregistrée +permission ACL +capability attribuée à une fenêtre/webview +``` + +Pour une baseline simple à une capability, le projet peut conserver le comportement d'inclusion automatique supporté par sa version Tauri si cette décision est explicite et relue. + +Dès que plusieurs capabilities, fenêtres/webviews ou niveaux de privilège apparaissent, une sélection explicite via `app.security.capabilities` **SHOULD** être préférée pour rendre la surface effective plus lisible. + +Chaque ajout de plugin, permission, scope, origine distante ou capability doit être revu comme une modification de sécurité. Une commande enregistrée n'implique pas automatiquement qu'elle doit être accessible depuis toutes les fenêtres. + +## Plugins + +Aucun plugin n'est ajouté par défaut. + +Lorsqu'un plugin est nécessaire, choisir sa version compatible, ajouter seulement les dépendances et bindings réellement utilisés, puis revoir les changements Rust, frontend, configuration et ACL associés. + +Une commande de commodité comme `cargo tauri add` peut être utilisée si elle apporte une valeur réelle, mais la voie de validation reste la revue des fichiers effectivement modifiés. Le skeleton n'exige pas cette commande. + +## Versions et métadonnées produit + +`VERSION` reste la version canonique lorsque le projet adopte ce contrat de gouvernance. + +La version du package Cargo du host suit la politique du workspace. `tauri.conf.json > version` et une éventuelle `package.json > version` doivent être classés explicitement, par exemple `MIRROR-STABLE` ou `MIRROR-EXACT`, selon le contrat de distribution réel. + +Les identifiers d'application, noms de produit, bundle identifiers, publisher metadata et numéros plateforme sont des décisions produit/plateforme ; le skeleton ne fournit aucune identité fictive. + +## Ordre d'initialisation + +Une instanciation neuve suit normalement cet ordre : + +1. appliquer la fondation locale et décider la version/unité de release ; +2. matérialiser ou adapter le workspace Rust/Cargo ; +3. créer le host Tauri et ses cibles `lib + bin` ; +4. sélectionner puis matérialiser la baseline frontend ; +5. raccorder `beforeDevCommand`, `beforeBuildCommand`, `devUrl` et `frontendDist` selon les outils réellement choisis ; +6. créer `tauri.conf.json` avec uniquement les propriétés utiles ; +7. créer les capability files et décider leur sélection ; +8. ajouter uniquement les commandes et plugins nécessaires ; +9. configurer fenêtres, ressources et bundle targets réellement requis ; +10. composer les profils plateforme applicables ; +11. exécuter la gate initiale proportionnée. + +L'ordre peut être adapté lorsqu'une toolchain officielle crée certaines pièces automatiquement. Les fichiers générés doivent alors être relus et adaptés aux owners locaux avant d'être considérés comme baseline. + +## Validation initiale + +La gate minimale dépend des surfaces réellement créées. Elle **SHOULD** séparer les preuves : + +```text +Rust/Cargo +→ fmt/check/clippy/tests sélectionnés par le projet + +frontend +→ restore/typecheck/build/styles selon 003 et 005-WEB_FRONTEND_VALIDATION + +Tauri integration +→ lancement Tauri ou smoke équivalent quand hooks/config/IPC/capabilities sont concernés + +packaging +→ tauri build uniquement lorsqu'un artefact packagé doit réellement être prouvé + +plateforme mobile +→ gates Android/iOS applicables en plus de Tauri +``` + +Une nouvelle baseline qui possède `beforeDevCommand`, `beforeBuildCommand`, `devUrl`, `frontendDist`, des commands ou des capabilities doit au minimum exercer une commande Tauri supportée qui charge réellement cette configuration ; un simple `cargo check` ne prouve pas cette intégration. + +Le projet doit également vérifier : + +```text +CHECK aucun placeholder ou identifiant fictif provenant de PGR/Games/KSP +CHECK noms lib/bin non ambigus après normalisation Cargo +CHECK frontend root et outputs cohérents avec tauri.conf.json +CHECK capabilities intentionnelles et surface cumulée relue +CHECK plugins présents uniquement s'ils sont utilisés +CHECK artefacts générés exclus ou classifiés selon leur rôle réel +CHECK secrets/signing credentials hors Git +REVIEW fenêtres, bundles, ressources et targets réellement nécessaires +``` + +## Templates techniques + +Aucun template Tauri technique supplémentaire n'est requis pour matérialiser cette specification. + +Le host dépend trop des décisions de nommage, de frontend, de capabilities, de plugins, de fenêtres, de plateformes et de versions pour qu'un `tauri.conf.json`, `Cargo.toml`, capability file ou `src/tauri.rs` universel apporte actuellement plus de valeur qu'il ne créerait de placeholders et de defaults arbitraires. + +Les templates Rust/Cargo et Web existants restent utilisables pour leurs responsabilités propres. Un futur template Tauri ne sera justifié que si un besoin répétitif non correctement possédé par ces artefacts est démontré. + +## Projet existant + +Pour un projet existant : + +- conserver son layout supporté lorsqu'une migration n'apporte pas de valeur démontrée ; +- comparer les owners et décisions plutôt que les noms de fichiers ; +- inventorier capabilities, plugins, commandes, hooks, fenêtres, bundles et plateformes ; +- classer les écarts selon `ADOPT / KEEP-LOCAL / OVERRIDE / DEFER` ; +- introduire les changements par tranches validables plutôt qu'en remplaçant le scaffold complet. + +L'objectif est l'autonomie locale du projet, pas sa ressemblance visuelle avec le skeleton PGR. + +## Hors scope + +Cette specification ne possède pas : + +- un framework frontend ou CSS universel ; +- un package manager universel ; +- une version exacte de Tauri/CLI/plugin ; +- un port de développement universel ; +- un catalogue de plugins ; +- une configuration de fenêtres ou bundles universelle ; +- une chaîne WASM implicite ; +- les règles Android/iOS ; +- un CI/CD ou deployment universel ; +- un template technique Tauri par symétrie. diff --git a/history/0.1.4/alpha.3.md b/history/0.1.4/alpha.3.md new file mode 100644 index 0000000..041ba39 --- /dev/null +++ b/history/0.1.4/alpha.3.md @@ -0,0 +1,97 @@ + + + +# History 0.1.4-alpha.3 — skeleton Tauri matérialisé + +## Statut + +PASS + +La gate opérateur de `0.1.4-alpha.3` exécutée le `2026-09-29` est propre. Le skeleton Tauri contrôlé `docs/skeletons/004-TAURI.md` est matérialisé, le contrat de packaging delta/history est explicite et aucun template technique ou contrat de validation Tauri séparé n'a été créé prématurément. + +## Baseline opérateur + +La tranche corrective précédente a été committée puis publiée avant application de `alpha.3` : + +```text +commit alpha.2.fix.1 9b140e8 +push ed794d6..9b140e8 master -> master +``` + +La version observée pendant la gate est : + +```text +0.1.4-alpha.3 +``` + +Les contrôles préalables confirment `history/0.1.4/alpha.2.fix.1.md` présent avec statut `PASS`, `deltas/0.1.4/alpha.3.md` présent, `docs/skeletons/004-TAURI.md` présent et `history/0.1.4/alpha.3.md` absent pendant la gate. + +## Tests Python + +La suite complète a affiché : + +```text +Ran 55 tests in 0.942s + +OK +``` + +Soit `55/55` tests `PASS`. + +## Audit d'hygiène texte + +L'audit réutilisable a affiché : + +```text +Text hygiene audit: clean (300 file(s)) +``` + +La gate confirme donc LF, absence de whitespace terminal, newline finale unique et absence de ligne vide terminale surnuméraire sur le corpus sélectionné. + +## Audits Markdown + +Les audits documentaires sont propres : + +```text +Markdown header audit: clean (273 file(s)) +Markdown table audit: clean (11 table(s), 273 file(s)) +Markdown link audit: clean (352 local link(s), 273 file(s)) +``` + +## Audit structurel `alpha.3` + +Le contrôle structurel a affiché : + +```text +0.1.4 alpha.3 skeleton audit: clean (004 materialized, owners composed, no premature template/validation artifact, ZIP root contract explicit) +``` + +Il confirme notamment : + +- `docs/skeletons/004-TAURI.md` en révision interne `1` avec décisions obligatoires, baseline recommandée, ACL/capabilities, ordre d'initialisation, validation initiale et politique d'artefacts ; +- les révisions internes attendues de `210-WORKFLOW.md`, des index, du plan, de l'owner `710` et de l'étude Tauri ; +- le contrat de workflow interdisant un répertoire englobant dans les ZIP delta/history et imposant la vérification des entrées avant remise ; +- l'absence de `docs/templates/011-TAURI.md` et `docs/validation/006-TAURI_VALIDATION.md` ; +- l'absence du history `alpha.3` anticipé pendant la gate. + +## Hygiène Git et scope observé + +`git diff --check` et `git diff --cached --check` n'ont produit aucun diagnostic. + +Le scope indexé observé est exactement : + +```text +M VERSION +A deltas/0.1.4/alpha.3.md +M docs/000-README.md +M docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md +M docs/rules/210-WORKFLOW.md +M docs/skeletons/000-README.md +A docs/skeletons/004-TAURI.md +``` + +## Décision + +`0.1.4-alpha.3` est validée `PASS`. + +`beta.1` peut maintenant réconcilier l'ensemble des artefacts Tauri `0.1.4`, rechercher les duplications ou ownerships cachés et décider explicitement si un template technique Tauri, un contrat de validation séparé ou un dry-run exécutable apportent une valeur nette. En l'absence de lacune démontrée, aucun artefact supplémentaire ne doit être créé.