Files
pgr/deltas/0.1.1/beta.1.md
2026-09-27 11:57:09 +02:00

10 KiB

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 :

0.1.1-alpha.5

Version après application :

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 :

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 :

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 :

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 :

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 :

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 '<!-- version: 11 -->' ROADMAP.md
grep -Fx '<!-- version: 29 -->' docs/000-README.md
grep -Fx '<!-- version: 9 -->' docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md
grep -Fx '<!-- version: 4 -->' docs/studies/000-README.md
grep -Fx '<!-- version: 2 -->' docs/studies/002-TAURI_SKELETON_DECISION.md

Réconciliation et dry-run structurel :

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] == "<!-- version: 3 -->"
assert Path("docs/rules/540-JAVASCRIPT_PACKAGE_ECOSYSTEM.md").read_text(encoding="utf-8").splitlines()[1] == "<!-- version: 3 -->"
assert Path("docs/rules/550-VITE.md").read_text(encoding="utf-8").splitlines()[1] == "<!-- version: 2 -->"
assert Path("docs/rules/560-CSS_SASS.md").read_text(encoding="utf-8").splitlines()[1] == "<!-- version: 2 -->"
assert Path("docs/rules/710-TAURI.md").read_text(encoding="utf-8").splitlines()[1] == "<!-- version: 6 -->"
assert Path("docs/skeletons/003-WEB_FRONTEND.md").read_text(encoding="utf-8").splitlines()[1] == "<!-- version: 1 -->"
assert Path("docs/validation/005-WEB_FRONTEND_VALIDATION.md").read_text(encoding="utf-8").splitlines()[1] == "<!-- version: 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 :

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 :

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.