0.1.4-alpha.3

This commit is contained in:
2026-09-29 14:00:25 +02:00
parent 9b140e85b3
commit e4f405ea9d
8 changed files with 538 additions and 8 deletions

202
deltas/0.1.4/alpha.3.md Normal file
View File

@@ -0,0 +1,202 @@
<!-- file: deltas/0.1.4/alpha.3.md -->
<!-- version: 1 -->
# Delta 0.1.4-alpha.3 — skeleton Tauri contrôlé
## Précondition
`0.1.4-alpha.2.fix.1` doit être committée avec son history `PASS` avant application de ce delta.
Version après application :
```text
0.1.4-alpha.3
```
## Objet
Matérialiser le skeleton Tauri 2 autorisé par les gates précédentes, sans créer de template technique universel ni absorber les owners Rust/Web/plateforme.
La tranche corrige également le contrat de packaging des archives delta/history après l'observation opérateur d'un répertoire englobant `pgr/` dans deux ZIP remis : les entrées doivent désormais être directement relatives à la racine du dépôt.
## Scope
ADD :
```text
deltas/0.1.4/alpha.3.md
docs/skeletons/004-TAURI.md
```
REPLACE :
```text
VERSION
docs/000-README.md
docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md
docs/rules/210-WORKFLOW.md
docs/skeletons/000-README.md
```
Aucun template Tauri, contrat de validation Tauri séparé, changement de roadmap ou adoption Games/KSP n'appartient à cette tranche.
## Skeleton `004-TAURI`
La nouvelle specification :
- compose `001-PROJECT_GOVERNANCE_FOUNDATION`, `002-RUST_CARGO_WORKSPACE`, `003-WEB_FRONTEND` et `710-TAURI` ;
- conserve `src-tauri/` comme layout valide pour un projet existant tout en recommandant une crate Cargo directement lisible pour une nouvelle baseline contrôlée ;
- rend obligatoires les décisions de version, frontend, package manager, hooks, `devUrl`, `frontendDist`, capabilities, permissions, plugins, fenêtres, bundles et plateformes ;
- distingue recommandations de baseline et options locales ;
- garde WASM séparé par défaut ;
- définit un ordre d'initialisation ;
- définit une gate initiale séparant preuves Rust, frontend, intégration Tauri, packaging et plateforme ;
- conclut qu'aucun template Tauri technique supplémentaire n'est actuellement justifié.
## Packaging delta/history
`docs/rules/210-WORKFLOW.md` passe en révision `9` et rend explicite que :
```text
archive.delta/history.zip
├── VERSION # si présent dans le delta
├── docs/...
├── deltas/...
└── history/...
```
est valide, tandis que :
```text
archive.zip
└── pgr/
├── docs/...
└── history/...
```
est invalide pour le handoff canonique `unzip -o <archive> -d .`.
Le générateur doit vérifier la liste des entrées du ZIP avant remise.
## Gate opérateur
Après commit/push du history `PASS` de `alpha.2.fix.1`, appliquer ce delta puis exécuter :
```bash
cat VERSION
test -f history/0.1.4/alpha.2.fix.1.md
grep -A2 '^## Statut$' history/0.1.4/alpha.2.fix.1.md | grep -Fx 'PASS'
test -f deltas/0.1.4/alpha.3.md
test -f docs/skeletons/004-TAURI.md
test ! -e history/0.1.4/alpha.3.md
python3 -B -m unittest discover -s tests -v
python3 -B scripts/audit_text_hygiene.py \
VERSION README.md RULES.md ROADMAP.md CHANGELOG.md \
docs deltas history prompts scripts tests templates .gitignore .settings
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
assert Path('VERSION').read_text(encoding='utf-8').strip() == '0.1.4-alpha.3'
history = Path('history/0.1.4/alpha.2.fix.1.md').read_text(encoding='utf-8')
assert re.search(r'## Statut\s+PASS', history)
skeleton = Path('docs/skeletons/004-TAURI.md').read_text(encoding='utf-8')
assert skeleton.startswith(
'<!-- file: docs/skeletons/004-TAURI.md -->\n'
'<!-- version: 1 -->'
)
for phrase in (
'## Décisions obligatoires avant matérialisation',
'## Baseline organisationnelle recommandée',
'## Capabilities, permissions et commandes',
'## Ordre d\'initialisation',
'## Validation initiale',
'## Templates techniques',
'Aucun template Tauri technique supplémentaire n\'est requis',
'ADOPT / KEEP-LOCAL / OVERRIDE / DEFER',
):
assert phrase in skeleton, phrase
for path, version in (
('docs/rules/210-WORKFLOW.md', '9'),
('docs/skeletons/000-README.md', '7'),
('docs/000-README.md', '43'),
('docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md', '3'),
('docs/rules/710-TAURI.md', '7'),
('docs/studies/002-TAURI_SKELETON_DECISION.md', '3'),
):
lines = Path(path).read_text(encoding='utf-8').splitlines()
assert lines[1] == f'<!-- version: {version} -->', (path, lines[1])
workflow = Path('docs/rules/210-WORKFLOW.md').read_text(encoding='utf-8')
for phrase in (
'Les entrées des archives delta/history MUST utiliser directement les chemins relatifs à la racine du dépôt',
'MUST NOT ajouter un répertoire englobant portant le nom du projet',
'vérifier la liste des entrées du ZIP avant remise',
):
assert phrase in workflow, phrase
index = Path('docs/skeletons/000-README.md').read_text(encoding='utf-8')
assert '[`004-TAURI.md`](004-TAURI.md)' in index
doc_index = Path('docs/000-README.md').read_text(encoding='utf-8')
assert '[`skeletons/004-TAURI.md`](skeletons/004-TAURI.md)' in doc_index
assert not Path('history/0.1.4/alpha.3.md').exists()
assert not Path('docs/templates/011-TAURI.md').exists()
assert not Path('docs/validation/006-TAURI_VALIDATION.md').exists()
print(
'0.1.4 alpha.3 skeleton audit: clean '
'(004 materialized, owners composed, no premature template/validation artifact, ZIP root contract explicit)'
)
PY
git diff --check
git add VERSION \
deltas/0.1.4/alpha.3.md \
docs/000-README.md \
docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md \
docs/rules/210-WORKFLOW.md \
docs/skeletons/000-README.md \
docs/skeletons/004-TAURI.md
git diff --cached --check
git status --short
```
Le scope attendu est :
```text
M VERSION
A deltas/0.1.4/alpha.3.md
M docs/000-README.md
M docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md
M docs/rules/210-WORKFLOW.md
M docs/skeletons/000-README.md
A docs/skeletons/004-TAURI.md
```
## Transition
### PASS
Produire `history/0.1.4/alpha.3.md`, commit/push sous l'identité `0.1.4-alpha.3`, puis ouvrir `beta.1` pour la réconciliation globale et la décision explicite sur les artefacts Tauri supplémentaires.
### FAIL
Enregistrer le résultat réel dans `history/0.1.4/alpha.3.md` et poursuivre sous `alpha.3.fix.N`. Ne pas ouvrir `beta.1` tant que la composition du skeleton et le scope ne sont pas propres.