Files
pgr/deltas/0.0.5/alpha.6.fix.2.md

6.1 KiB

Delta 0.0.5-alpha.6.fix.2 — convention Tauri contrôlée et gate robuste

Baseline et version

Baseline attendue : commit opérateur complet de 0.0.5-alpha.6.fix.1, réalisé après application de history/0.0.5/alpha.6.fix.1.md avec statut FAIL.

Version avant application :

0.0.5-alpha.6.fix.1

Version après application :

0.0.5-alpha.6.fix.2

Cause du fix

alpha.6.fix.1 conserve une gate Python invalide : une phrase contenant l'extérieur est placée dans une chaîne simple et son apostrophe provoque encore SyntaxError: unterminated string literal.

La revue opérateur demande en parallèle de confronter le profil non seulement aux configurations Tauri mais aux règles complètes KSP/Games. Cette seconde passe montre qu'une convention de projet contrôlé plus riche est déjà éprouvée et doit être distinguée du contrat Tauri universel.

Scope

REPLACE :

VERSION
docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
docs/rules/710-TAURI.md
docs/studies/001-KSP_GAMES_RECONCILIATION.md

ADD :

deltas/0.0.5/alpha.6.fix.2.md

DELETE : aucun.

Décisions

Le fix établit pour les nouveaux projets Tauri contrôlés une convention forte mais adaptable :

  • host Cargo direct, sans src-tauri/ ajouté par réflexe ;
  • fichiers Tauri/frontend principaux à la racine de la crate et sources Rust sous src/ ;
  • frontend versionné sous frontend/ ;
  • lib.rs comme façade, main.rs comme launcher mince et tauri.rs comme owner de l'assemblage et des wrappers #[tauri::command] ;
  • modules cohérents par fenêtre/responsabilité et modules communs pour les helpers réellement partagés ;
  • TS-RS obligatoire dans le profil strict lorsque des DTO/enum/struct Rust possédés par le host sont partagés avec un frontend TypeScript, sauf incompatibilité documentée ;
  • bindings générés reconstruisibles et non modifiés manuellement ;
  • intégration explicite des plugins préférée à une commande de commodité opaque ;
  • WASM séparé du host Tauri par défaut.

Vite, TypeScript, Sass et Bootstrap restent le candidat de stack/skeleton pour les projets contrôlés ; ils ne deviennent pas des invariants universels du framework Tauri tant que leurs owners Web ne sont pas matérialisés.

Replanification

La seconde lecture des règles KSP/Games montre que alpha.7 serait trop large si elle mélangeait conventions sémantiques, nomenclature et tous les audits de formatage. Le forecast devient :

alpha.7  profil Rust strict + chemins + nomenclature des crates
alpha.8  formatage Rust structurel + audits monotâches
alpha.9  décision de skeleton Tauri pour projets contrôlés
beta.1   réconciliation intégrée

KSP est utilisé comme référence stricte ; Games sert à identifier ce qui doit rester SHOULD, sélectionnable ou project-specific.

Validation opérateur

Après application du history FAIL de alpha.6.fix.1, commit/push de cette tranche, puis application du présent fix :

test "$(cat VERSION)" = '0.0.5-alpha.6.fix.2'
test -f history/0.0.5/alpha.6.fix.1.md
test -f deltas/0.0.5/alpha.6.fix.2.md
test ! -e history/0.0.5/alpha.6.fix.2.md

grep -A2 '^## Statut$' history/0.0.5/alpha.6.fix.1.md | grep -Fx 'FAIL'
grep -Fx '<!-- version: 3 -->' docs/rules/710-TAURI.md
grep -Fx '<!-- version: 6 -->' docs/studies/001-KSP_GAMES_RECONCILIATION.md
grep -Fx '<!-- version: 7 -->' docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md

python3 -B -m unittest discover -s tests -v

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

history = Path("history/0.0.5/alpha.6.fix.1.md").read_text(encoding="utf-8")
assert re.search(r"## Statut\s+FAIL\s", history)

tauri = Path("docs/rules/710-TAURI.md").read_text(encoding="utf-8")
for phrase in (
    "## Convention renforcée pour les projets contrôlés",
    "sans couche `src-tauri/` ajoutée uniquement pour reproduire `create-tauri-app`",
    "`src/tauri.rs` SHOULD posséder l'assemblage Tauri et les wrappers `#[tauri::command]`",
    "partagés avec le frontend MUST utiliser TS-RS comme source de génération",
    "WASM reste normalement une unité séparée de la crate Tauri",
):
    assert phrase in tauri, phrase

study = Path("docs/studies/001-KSP_GAMES_RECONCILIATION.md").read_text(encoding="utf-8")
for phrase in (
    "Commun aux `8` hosts Tauri observés",
    "aucun ne possède `src-tauri/`",
    "KSP plus strict mais réutilisable",
    "Nomenclature des crates",
):
    assert phrase in study, phrase

plan = Path("docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md").read_text(encoding="utf-8")
for phrase in (
    "### alpha.7 — profil Rust strict, chemins et nomenclature explicite",
    "### alpha.8 — formatage Rust structurel et audits monotâches",
    "### alpha.9 — décision de skeleton Tauri pour projets contrôlés",
):
    assert phrase in plan, phrase

print("0.0.5 alpha.6.fix.2 Tauri convention audit: clean (8 hosts reconciled, strict controlled layout separated from universal framework)")
PY

git diff --check

git add VERSION \
    docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md \
    docs/rules/710-TAURI.md \
    docs/studies/001-KSP_GAMES_RECONCILIATION.md \
    deltas/0.0.5/alpha.6.fix.2.md

git diff --cached --check
git status --short

La sortie Git attendue avant ajout du history est exactement :

M  VERSION
A  deltas/0.0.5/alpha.6.fix.2.md
M  docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
M  docs/rules/710-TAURI.md
M  docs/studies/001-KSP_GAMES_RECONCILIATION.md

Transition

PASS

Créer/appliquer history/0.0.5/alpha.6.fix.2.md, committer/pousser le fix, puis poursuivre avec alpha.7.

FAIL

Rester dans 0.0.5-alpha.6.fix.M. Ne pas commencer la réconciliation Rust tant que la convention Tauri et sa gate ne sont pas fermées proprement.