# Delta 0.1.1-beta.1 — réconciliation Web et préparation du réexamen Tauri ## Baseline et version Baseline attendue : commit opérateur de `0.1.1-alpha.5`, réalisé après application de `history/0.1.1/alpha.5.md` avec statut `PASS`. Le hash de ce commit n'est pas anticipé. Version avant application : ```text 0.1.1-alpha.5 ``` Version après application : ```text 0.1.1-beta.1 ``` ## Objet Fermer la phase alpha de `0.1.1` en réconciliant la fondation frontend Web désormais matérialisée et en vérifiant factuellement si les cinq conditions de sortie du `DEFER` Tauri possèdent des owners PGR suffisants. La tranche : - enregistre le `PASS` de `alpha.5` dans le plan actif ; - exécute un dry-run structurel du skeleton `003-WEB_FRONTEND.md` sans simuler les toolchains qu'un projet réel doit exécuter ; - révise `002-TAURI_SKELETON_DECISION.md` pour comparer chacune des cinq conditions historiques aux owners réels `530/540/550/560`, guides, templates et validation désormais disponibles ; - met à jour la roadmap pour distinguer « prérequis Web couverts » de « skeleton Tauri adopté » ; - conserve le skeleton Tauri en `DEFER` jusqu'au réexamen autonome prévu en `0.1.4`. Aucun profil Web, template technique, skeleton ou contrat de validation n'est modifié dans `beta.1`. ## Dry-run structurel du skeleton Web Le dry-run vérifie uniquement ce que PGR peut prouver sans inventer un projet concret : ```text skeleton 003 référence owners 530 / 540 / 550 / 560 skeleton 003 référence validation 005 package.json + tsconfig.json génériques se copient et se parsèrent comme JSON aucun vite.config.ts universel n'est injecté aucun main.scss universel n'est injecté aucun host Tauri n'est injecté aucune devDependency arbitraire n'est ajoutée au package.json générique ``` Cette preuve ne vaut pas type-check/build Sass/Vite. Une instanciation réelle doit sélectionner ses versions, dépendances, layout et configuration puis exécuter les outils propriétaires conformément à `005-WEB_FRONTEND_VALIDATION.md`. ## Réconciliation des cinq conditions Tauri `docs/studies/002-TAURI_SKELETON_DECISION.md` enregistre désormais les correspondances suivantes : ```text TypeScript contrôlé -> 530 + 008 + templates web-typescript Vite/dev server/build outputs -> 550 + 009 CSS/Sass + artefacts générés -> 560 + 010 validation frontend indépendante du host -> validation 005 framework CSS = choix local -> 560 + skeleton 003 ``` Les cinq prérequis sont donc **couverts pour préparer un réexamen**. Cette conclusion ne signifie pas : - que Vite, Sass, Bootstrap ou `frontend/` sont obligatoires pour Tauri ; - que le candidat historique reste optimal en `0.1.4` ; - que le corpus `0.0.5` peut être réutilisé sans réaudit ; - que le skeleton Tauri est créé, adopté ou autorisé pendant `0.1.1`. ## Scope REPLACE : ```text VERSION ROADMAP.md docs/000-README.md docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md docs/studies/000-README.md docs/studies/002-TAURI_SKELETON_DECISION.md ``` ADD : ```text deltas/0.1.1/beta.1.md ``` DELETE : aucun. `README.md`, `RULES.md`, `CHANGELOG.md`, les profils `530/540/550/560/710`, les skeletons, templates techniques, contrats de validation et scripts restent inchangés. ## Validation opérateur Après application du history `PASS`, commit/push de `alpha.5`, puis application du présent delta : ```bash test "$(cat VERSION)" = '0.1.1-beta.1' git cat-file -e HEAD:history/0.1.1/alpha.5.md test -f history/0.1.1/alpha.5.md test -f deltas/0.1.1/beta.1.md test ! -e history/0.1.1/beta.1.md grep -A2 '^## Statut$' history/0.1.1/alpha.5.md | grep -Fx 'PASS' grep -Fx '' ROADMAP.md grep -Fx '' docs/000-README.md grep -Fx '' docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md grep -Fx '' docs/studies/000-README.md grep -Fx '' docs/studies/002-TAURI_SKELETON_DECISION.md ``` Réconciliation et dry-run structurel : ```bash python3 -B - <<'PYGATE' from pathlib import Path import json import re import shutil import tempfile history = Path("history/0.1.1/alpha.5.md").read_text(encoding="utf-8") assert re.search(r"## Statut\s+PASS\s", history) plan = Path("docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md").read_text(encoding="utf-8") for phrase in ( "### alpha.5 — CSS/Sass et validation frontend", "Statut opérateur : **PASS**.", "### beta.1 — réconciliation et preuve de préparation Tauri", "Statut opérateur : **à valider**.", "dry-run structurel du skeleton Web", "Ce dry-run ne prétend pas remplacer `tsc`, Vite ou Sass", ): assert phrase in plan, phrase study = Path("docs/studies/002-TAURI_SKELETON_DECISION.md").read_text(encoding="utf-8") for phrase in ( "DEFER", "## Réexamen de préparation 0.1.1-beta.1", "### Condition 1 — TypeScript et conventions Web contrôlées", "### Condition 2 — Vite et ownership des commandes/dev server/build outputs", "### Condition 3 — Sass/CSS et statut des artefacts générés", "### Condition 4 — validation frontend indépendante de la validation Tauri", "### Condition 5 — framework CSS classé comme décision de skeleton/projet", "Les cinq conditions de sortie formulées en `0.0.5-alpha.9` possèdent désormais des owners PGR matérialisés et non redondants.", "skeleton Tauri dans 0.1.1 toujours DEFER", "réexamen autorisé 0.1.4", "La présente étude ne préjuge pas de cette décision.", ): assert phrase in study, phrase roadmap = Path("ROADMAP.md").read_text(encoding="utf-8") assert "skeleton Tauri jusqu'au réexamen 0.1.4" in roadmap assert "0.1.1-beta.1` confirme que ses cinq prérequis Web disposent désormais d'owners PGR" in roadmap assert "- `( ) 0.1.4`" in roadmap assert "0.1.8" not in roadmap skeleton = Path("docs/skeletons/003-WEB_FRONTEND.md").read_text(encoding="utf-8") for phrase in ( "+ 530 TypeScript", "+ 540 JavaScript package ecosystem", "+ 550 Vite", "+ 560 CSS / Sass", "005-WEB_FRONTEND_VALIDATION.md", "Le skeleton Tauri reste `DEFER` pendant `0.1.1`", ): assert phrase in skeleton, phrase package_source = Path("templates/web-typescript/package.json") tsconfig_source = Path("templates/web-typescript/tsconfig.json") with tempfile.TemporaryDirectory(prefix="pgr-web-skeleton-") as temp_name: temp = Path(temp_name) shutil.copy2(package_source, temp / "package.json") shutil.copy2(tsconfig_source, temp / "tsconfig.json") package = json.loads((temp / "package.json").read_text(encoding="utf-8")) tsconfig = json.loads((temp / "tsconfig.json").read_text(encoding="utf-8")) assert package == { "name": "project-web", "private": True, "scripts": {"typecheck": "tsc --noEmit"}, } assert tsconfig["compilerOptions"]["strict"] is True assert tsconfig["compilerOptions"]["noEmit"] is True assert "dependencies" not in package assert "devDependencies" not in package assert not (temp / "vite.config.ts").exists() assert not (temp / "main.scss").exists() assert not (temp / "src-tauri").exists() assert not Path("templates/web-vite/vite.config.ts").exists() assert not Path("templates/web-css/main.scss").exists() assert Path("docs/rules/530-TYPESCRIPT.md").read_text(encoding="utf-8").splitlines()[1] == "" assert Path("docs/rules/540-JAVASCRIPT_PACKAGE_ECOSYSTEM.md").read_text(encoding="utf-8").splitlines()[1] == "" assert Path("docs/rules/550-VITE.md").read_text(encoding="utf-8").splitlines()[1] == "" assert Path("docs/rules/560-CSS_SASS.md").read_text(encoding="utf-8").splitlines()[1] == "" assert Path("docs/rules/710-TAURI.md").read_text(encoding="utf-8").splitlines()[1] == "" assert Path("docs/skeletons/003-WEB_FRONTEND.md").read_text(encoding="utf-8").splitlines()[1] == "" assert Path("docs/validation/005-WEB_FRONTEND_VALIDATION.md").read_text(encoding="utf-8").splitlines()[1] == "" print("0.1.1 beta.1 reconciliation audit: clean (Web skeleton composes structurally, five Tauri Web prerequisites covered, DEFER preserved for 0.1.4)") PYGATE ``` Puis rejouer les preuves PGR : ```bash 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 git diff --check git add VERSION ROADMAP.md docs/000-README.md \ docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md \ docs/studies/000-README.md docs/studies/002-TAURI_SKELETON_DECISION.md \ deltas/0.1.1/beta.1.md git diff --cached --check git status --short ``` Le scope indexé attendu avant ajout du history de `beta.1` est exactement : ```text M ROADMAP.md M VERSION A deltas/0.1.1/beta.1.md M docs/000-README.md M docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md M docs/studies/000-README.md M docs/studies/002-TAURI_SKELETON_DECISION.md ``` ## Revue opérateur complémentaire Confirmer que : - les cinq conditions historiques du `DEFER` Tauri sont toutes rattachées à des owners/artifacts PGR existants ; - cette couverture est décrite comme préparation de `0.1.4`, pas comme promotion du skeleton Tauri ; - le corpus Tauri devra être réexaminé en `0.1.4` au lieu d'être supposé inchangé ; - le dry-run structurel ne prétend pas remplacer `tsc`, Vite, Sass ou un package manager réel ; - aucun profil, skeleton, template technique ou contrat de validation n'est modifié dans `beta.1` ; - `frontend/`, Vite, Sass, Bootstrap, npm, TS-RS et WASM ne deviennent pas des obligations Tauri ; - `0.1.8` n'est pas réservé et l'horizon engagé reste inchangé. ## Transition ### PASS Produire `history/0.1.1/beta.1.md`, l'appliquer puis committer/pousser `beta.1`. Continuer avec `0.1.1-rc.1` pour geler le scope, préparer l'entrée `CHANGELOG`, rejouer le release gate complet et vérifier le prompt de reprise `0.1.2` si la roadmap reste valide. ### FAIL Consigner le diagnostic réel dans `history/0.1.1/beta.1.md`, puis produire `beta.1.fix.N` ou effectuer un REPLAN si la réconciliation révèle un owner Web manquant. Ne pas masquer une lacune en créant prématurément le skeleton Tauri.