# Delta 0.1.4 rel.1 — promotion stable pré-tag ## Baseline et version Baseline : `0.1.4-rc.1`, avec `history/0.1.4/rc.1.md` appliqué et committé. Ce delta MUST NOT être appliqué avant ce commit. Version avant application : ```text 0.1.4-rc.1 ``` Version après application : ```text 0.1.4 ``` `rel.1` identifie la clôture opérationnelle ; il ne fait pas partie de la version SemVer du produit. ## Objet Promouvoir mécaniquement la RC validée vers la stable `0.1.4` sans rouvrir le scope Tauri et sans commencer `0.1.5`. La tranche finalise uniquement la présentation et les métadonnées de release : version stable, roadmap terminée, changelog sans marqueur `candidate`, README/index en état stable et plan `010` historique. Aucun owner Tauri, skeleton, étude technique, audit Python ou règle normative réservée à `0.1.5` n'est modifié. La validation de cette tranche est **pré-tag**. Le tag `v0.1.4`, son archive source Gitea et le rapport `pgr-0.1.4-publish.001-report.md` ne sont pas déclarés existants par ce delta. Ils suivent uniquement un history `rel.1` `PASS`, le commit stable `0.1.4` et la publication réelle du tag. ## Scope REPLACE : ```text VERSION README.md ROADMAP.md CHANGELOG.md docs/000-README.md docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md ``` ADD : ```text deltas/0.1.4/rel.1.md ``` DELETE : aucun. Le history `rc.1` est livré séparément. Le history `rel.1` sera produit uniquement après la gate opérateur. ## Validation opérateur pré-tag Après application sur le commit contenant `history/0.1.4/rc.1.md` : ```bash test "$(cat VERSION)" = '0.1.4' git cat-file -e HEAD:history/0.1.4/rc.1.md test -f history/0.1.4/rc.1.md test -f deltas/0.1.4/rel.1.md test -f prompts/011-V0_1_5_START_PROMPT.md test ! -e history/0.1.4/rel.1.md grep -A2 '^## Statut$' history/0.1.4/rc.1.md | grep -Fx 'PASS' grep -Fx '' README.md grep -Fx '' ROADMAP.md grep -Fx '' CHANGELOG.md grep -Fx '' docs/000-README.md grep -Fx '' docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md grep -F -- '- `(x) 0.1.4`' ROADMAP.md grep -Fx '## 0.1.4' CHANGELOG.md grep -F 'La stable `0.1.4` réexamine le domaine Tauri' README.md grep -F 'plan historique de la stable `0.1.4`' docs/000-README.md python3 -B - <<'PYGATE' from pathlib import Path import re expected = { 'alpha.1.md': 'PASS', 'alpha.2.md': 'FAIL', 'alpha.2.fix.1.md': 'PASS', 'alpha.3.md': 'PASS', 'beta.1.md': 'PASS', 'rc.1.md': 'PASS', } for name, status in expected.items(): delta = Path('deltas/0.1.4', name) history = Path('history/0.1.4', name) assert delta.is_file(), name assert history.is_file(), name text = history.read_text(encoding='utf-8') assert re.search(rf'## Statut\s+{status}\s', text), (name, status) pending = {path.name for path in Path('deltas/0.1.4').glob('*.md')} - { path.name for path in Path('history/0.1.4').glob('*.md') } assert pending == {'rel.1.md'}, pending roadmap = Path('ROADMAP.md').read_text(encoding='utf-8') assert '- `(x) 0.1.4`' in roadmap for version in ('0.1.5', '0.1.6', '0.1.7', '0.1.8'): assert f'- `( ) {version}`' in roadmap, version assert '- `( ) 0.1.9`' not in roadmap changelog = Path('CHANGELOG.md').read_text(encoding='utf-8') assert '## 0.1.4' in changelog.splitlines() assert '## 0.1.4 (candidate)' not in changelog section = changelog.split('## 0.1.4', 1)[1].split('## 0.1.3', 1)[0] for phrase in ( 'skeleton Tauri', 'commandes, permissions et capabilities', '004-TAURI.md', 'audit réutilisable d’hygiène texte', '0.1.5', '0.1.8', ): assert phrase in section, phrase for forbidden in ('alpha.1', 'alpha.2', 'alpha.3', 'beta.1', 'rc.1', 'rel.1'): assert forbidden not in section, forbidden readme = Path('README.md').read_text(encoding='utf-8') for phrase in ( 'La stable `0.1.4` réexamine le domaine Tauri', 'skeleton organisationnel `004-TAURI.md`', 'audit réutilisable d’hygiène texte', '0.1.5', '0.1.6', '0.1.7', ): assert phrase in readme, phrase index = Path('docs/000-README.md').read_text(encoding='utf-8') assert 'plan historique de la stable `0.1.4`' in index assert 'handoff de la stable `0.1.4` vers `0.1.5-alpha.1`' in index plan = Path('docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md').read_text(encoding='utf-8') for phrase in ( 'Plan historique de la stable `0.1.4`', '## Gate `rc.1` acquise et promotion stable', 'history/0.1.4/rel.1.md', 'pgr-0.1.4-publish.001-report.md', 'commit stable `0.1.4`', ): assert phrase in plan, phrase prompt = Path('prompts/011-V0_1_5_START_PROMPT.md').read_text(encoding='utf-8') for phrase in ( 'tag Gitea `v0.1.4`', 'pgr-0.1.4-publish.001-report.md', '0.1.5-alpha.1', '004-V0_1_4_HORIZON_REVIEW.md', 'forte recommandation non obligatoire', 'SaseDev Knowledge', 'réservée à `0.1.6`', 'réservée à `0.1.7`', 'réservés à `0.1.8`', ): assert phrase in prompt, phrase for path, version in ( ('docs/rules/710-TAURI.md', 7), ('docs/skeletons/004-TAURI.md', 1), ('docs/studies/002-TAURI_SKELETON_DECISION.md', 4), ('docs/studies/004-V0_1_4_HORIZON_REVIEW.md', 1), ('RULES.md', 14), ('docs/rules/230-ADOPTION.md', 1), ('docs/rules/400-VALIDATION.md', 1), ): lines = Path(path).read_text(encoding='utf-8').splitlines() assert lines[1] == f'', (path, lines[1]) assert not Path('docs/templates/011-TAURI.md').exists() assert not Path('docs/validation/006-TAURI_VALIDATION.md').exists() print( '0.1.4 rel.1 stable gate audit: clean ' '(6 prior histories including expected alpha.2 FAIL/fix PASS, rel.1 pending, stable Tauri presentation and 0.1.5 handoff coherent)' ) PYGATE 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 git diff --check git add VERSION README.md ROADMAP.md CHANGELOG.md \ deltas/0.1.4/rel.1.md \ docs/000-README.md \ docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md git diff --cached --check git status --short ``` ## Scope Git attendu ```text M CHANGELOG.md M README.md M ROADMAP.md M VERSION A deltas/0.1.4/rel.1.md M docs/000-README.md M docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md ``` ## Transition après PASS Si cette gate pré-tag est `PASS` : 1. produire `history/0.1.4/rel.1.md` avec les preuves opérateur réelles ; 2. appliquer ce history ; 3. `git add -A`, `git diff --cached --check`, puis committer **`0.1.4`** sans suffixe `rel.1` ; 4. pousser `master` ; 5. vérifier un workspace propre ; 6. créer et pousser le tag annoté `v0.1.4` ; 7. télécharger l'archive Gitea du tag et produire `pgr-0.1.4-publish.001-report.md` après vérification indépendante ; 8. seulement après `publish.001 PASS`, ouvrir la session `0.1.5` avec `prompts/011-V0_1_5_START_PROMPT.md`.