0.1.1-beta.1
This commit is contained in:
264
deltas/0.1.1/beta.1.md
Normal file
264
deltas/0.1.1/beta.1.md
Normal file
@@ -0,0 +1,264 @@
|
||||
<!-- file: deltas/0.1.1/beta.1.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# 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 '<!-- 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 :
|
||||
|
||||
```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] == "<!-- 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 :
|
||||
|
||||
```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.
|
||||
Reference in New Issue
Block a user