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

141 lines
5.6 KiB
Markdown

<!-- file: deltas/0.0.5/alpha.6.fix.3.md -->
<!-- version: 1 -->
# Delta 0.0.5-alpha.6.fix.3 — politique de versions Tauri/frontend
## Baseline et version
Baseline attendue : commit opérateur complet de `0.0.5-alpha.6.fix.2`, réalisé après application de `history/0.0.5/alpha.6.fix.2.md` avec statut `FAIL`.
Version après application :
```text
0.0.5-alpha.6.fix.3
```
## Motif
La gate mécanique de `alpha.6.fix.2` est propre, mais la revue fonctionnelle identifie une convention mal généralisée : KSP et Games ont tous deux utilisé l'omission de `tauri.conf.json > version` et une `package.json > version` rarement synchronisée comme moyen de réduire le churn des prereleases. PGR ne doit pas transformer cette solution historique en obligation.
L'objectif réel est de conserver `VERSION` comme identité exacte de travail tout en évitant de modifier les miroirs produit qui n'ont pas besoin de suivre chaque `alpha`, `.fix`, beta ou RC.
## Scope
REPLACE :
```text
VERSION
docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
docs/rules/200-GOVERNANCE.md
docs/rules/710-TAURI.md
docs/studies/001-KSP_GAMES_RECONCILIATION.md
```
ADD :
```text
deltas/0.0.5/alpha.6.fix.3.md
```
DELETE : aucun.
## Décisions
Le fix rétablit une classification explicite des valeurs de version :
- `CANONICAL` pour `VERSION` ;
- `MIRROR-EXACT` pour les miroirs techniques qui doivent suivre chaque prerelease ;
- `MIRROR-STABLE` pour les champs qui portent seulement la cible `X.Y.Z` ;
- catégories indépendantes pour compteurs, schémas et révisions documentaires.
Pour une application Tauri contrôlée appartenant au même produit, `tauri.conf.json > version` et `package.json > version`, lorsqu'ils sont conservés, SHOULD être `MIRROR-STABLE` par défaut et porter `X.Y.Z` pendant tout le développement de cette cible. Ils ne sont pas modifiés uniquement pour passer de `alpha.N` à un autre alpha/fix/beta/RC.
Si des bundles prerelease sont réellement distribués et doivent être identifiables séparément, le projet MAY sélectionner `MIRROR-EXACT` ou une politique de jalons de packaging documentée. L'omission d'un champ reste possible lorsqu'il est réellement inutile, mais elle n'est plus la stratégie PGR recommandée uniquement pour éviter le churn.
La revue obligatoire déclenchée par `.fix.3` conclut `CONTINUE` : `alpha.6` reste bornée au profil Tauri ; `alpha.7`, `alpha.8` et `alpha.9` conservent leurs scopes distincts.
## Hors scope
Ce fix ne modifie ni les règles Rust strictes prévues en `alpha.7`, ni les audits de formatage de `alpha.8`, ni le skeleton Tauri de `alpha.9`. Il ne modifie pas non plus la politique Cargo existante de `510-RUST_CARGO.md`.
## Validation opérateur
Après application du history `FAIL` de `alpha.6.fix.2`, commit/push de cette tranche, puis application du présent fix :
```bash
test "$(cat VERSION)" = '0.0.5-alpha.6.fix.3'
test -f history/0.0.5/alpha.6.fix.2.md
test -f deltas/0.0.5/alpha.6.fix.3.md
test ! -e history/0.0.5/alpha.6.fix.3.md
grep -A2 '^## Statut$' history/0.0.5/alpha.6.fix.2.md | grep -Fx 'FAIL'
grep -Fx '<!-- version: 4 -->' docs/rules/200-GOVERNANCE.md
grep -Fx '<!-- version: 4 -->' docs/rules/710-TAURI.md
grep -Fx '<!-- version: 7 -->' docs/studies/001-KSP_GAMES_RECONCILIATION.md
grep -Fx '<!-- version: 8 -->' 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.2.md").read_text(encoding="utf-8")
assert re.search(r"## Statut\s+FAIL\s", history)
governance = Path("docs/rules/200-GOVERNANCE.md").read_text(encoding="utf-8")
for phrase in (
"MIRROR-EXACT",
"MIRROR-STABLE",
"Seul un `MIRROR-EXACT` est normalement modifié à chaque changement de `VERSION`.",
"PGR MUST NOT imposer la suppression d'un champ utile uniquement pour éviter de le modifier à chaque prerelease",
):
assert phrase in governance, phrase
tauri = Path("docs/rules/710-TAURI.md").read_text(encoding="utf-8")
for phrase in (
"PGR MUST NOT imposer l'une de ces deux formes uniquement pour réduire le nombre de fichiers modifiés.",
"la politique recommandée lorsque les prereleases ne sont pas distribuées comme produits installables distincts est `MIRROR-STABLE`",
"tauri.conf.json version = X.Y.Z",
"package.json version = X.Y.Z",
"remplace explicitement les conventions historiques KSP/Games",
):
assert phrase in tauri, phrase
plan = Path("docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md").read_text(encoding="utf-8")
assert "`alpha.6.fix.3` restaure la classification générale" in plan
assert "résultat `CONTINUE`" in plan
print("0.0.5 alpha.6.fix.3 version policy audit: clean (canonical/exact/stable mirrors classified, Tauri/frontend churn bounded)")
PY
git diff --check
git add VERSION \
docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md \
docs/rules/200-GOVERNANCE.md docs/rules/710-TAURI.md \
docs/studies/001-KSP_GAMES_RECONCILIATION.md \
deltas/0.0.5/alpha.6.fix.3.md
git diff --cached --check
git status --short
```
La sortie Git attendue avant ajout du history est exactement :
```text
M VERSION
A deltas/0.0.5/alpha.6.fix.3.md
M docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
M docs/rules/200-GOVERNANCE.md
M docs/rules/710-TAURI.md
M docs/studies/001-KSP_GAMES_RECONCILIATION.md
```