6.9 KiB
Delta 0.0.5 rel.001 — promotion stable pré-tag
Baseline et version
Baseline : 0.0.5-rc.1, avec history/0.0.5/rc.1.md appliqué et committé. Ce delta MUST NOT être appliqué avant ce commit.
Le commit exact de cette baseline sera celui produit par l'opérateur après application du history RC ; il n'est pas anticipé dans cette livraison simultanée du history et du delta stable.
Version avant application :
0.0.5-rc.1
Version après application :
0.0.5
rel.001 identifie la clôture opérationnelle ; il ne fait pas partie de la version SemVer du produit.
Objet
Promouvoir la RC validée vers la stable 0.0.5. La tranche finalise uniquement la présentation de la release : version stable, roadmap terminée, changelog sans marqueur candidate, index documentaires et plan historique.
Le scope fonctionnel reste celui validé en RC : lifecycle inter-release, prompts versionnés, contrats documentaires locaux, profil Rust strict et audits monotâches, contrats architecturaux des suffixes de crates, ownership du tracing, profil Tauri 2, classification des versions produit, réconciliation KSP/Games et décision DEFER du skeleton Tauri contrôlé jusqu'à matérialisation d'owners Web suffisants.
La validation de cette tranche est pré-tag. Ni le tag v0.0.5, ni l'archive pgr-v0.0.5.zip téléchargée depuis Gitea, ni un rapport pgr-0.0.5-publish.001-report.md ne sont déclarés existants par ce delta. Ils suivent le history PASS, le commit stable et la publication réelle du tag.
Scope
REPLACE :
VERSION
README.md
ROADMAP.md
CHANGELOG.md
docs/000-README.md
docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
ADD :
deltas/0.0.5/rel.001.md
DELETE : aucun.
L'archive contient uniquement ces fichiers complets. history/0.0.5/rc.1.md est livré séparément ; le history de rel.001 sera produit après sa gate. Le rapport post-tag restera extérieur à l'archive source taggée.
Validation opérateur pré-tag
Après application sur le commit rc.1, depuis la racine du dépôt :
test "$(cat VERSION)" = '0.0.5'
git cat-file -e HEAD:history/0.0.5/rc.1.md
test -f history/0.0.5/rc.1.md
test -f deltas/0.0.5/rel.001.md
test -f prompts/006-V0_1_0_START_PROMPT.md
test ! -e history/0.0.5/rel.001.md
grep -Fx '<!-- version: 14 -->' README.md
grep -Fx '<!-- version: 8 -->' ROADMAP.md
grep -Fx '<!-- version: 9 -->' CHANGELOG.md
grep -Fx '<!-- version: 17 -->' docs/000-README.md
grep -Fx '<!-- version: 15 -->' docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
grep -F 'plan historique de réconciliation `0.0.5`' README.md
grep -F -- '- `(x) 0.0.5`' ROADMAP.md
grep -Fx '## 0.0.5' CHANGELOG.md
grep -F 'périmètre et décisions de la release `0.0.5`' docs/000-README.md
grep -F 'La gate opérateur de `rc.1` est `PASS`' docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
grep -F 'pgr-0.0.5-publish.001-report.md' docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
grep -F 'Le skeleton Tauri contrôlé reste `DEFER`' prompts/006-V0_1_0_START_PROMPT.md
python3 -B - <<'PYGATE'
from pathlib import Path
import re
expected = {
'alpha.1.md': 'PASS',
'alpha.2.md': 'PASS',
'alpha.3.md': 'FAIL',
'alpha.3.fix.1.md': 'PASS',
'alpha.4.md': 'PASS',
'alpha.5.md': 'FAIL',
'alpha.5.fix.1.md': 'PASS',
'alpha.6.md': 'FAIL',
'alpha.6.fix.1.md': 'FAIL',
'alpha.6.fix.2.md': 'FAIL',
'alpha.6.fix.3.md': 'PASS',
'alpha.7.md': 'FAIL',
'alpha.7.fix.1.md': 'PASS',
'alpha.8.md': 'PASS',
'alpha.9.md': 'PASS',
'beta.1.md': 'PASS',
'rc.1.md': 'PASS',
}
for name, status in expected.items():
delta = Path('deltas/0.0.5', name)
history = Path('history/0.0.5', 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 = {p.name for p in Path('deltas/0.0.5').glob('*.md')} - \
{p.name for p in Path('history/0.0.5').glob('*.md')}
assert pending == {'rel.001.md'}, pending
roadmap = Path('ROADMAP.md').read_text(encoding='utf-8')
assert '- `(x) 0.0.5`' in roadmap
assert '- `( ) 0.1.0`' in roadmap
assert '(d) skeleton Tauri pour projets contrôlés' in roadmap
assert 'saselang-bible' not in roadmap
changelog = Path('CHANGELOG.md').read_text(encoding='utf-8')
assert '## 0.0.5
' in changelog
assert '## 0.0.5 (candidate)' not in changelog
prompt = Path('prompts/006-V0_1_0_START_PROMPT.md').read_text(encoding='utf-8')
assert 'pgr-v0.0.5.zip' in prompt
assert 'pgr-0.0.5-publish.001-report.md' in prompt
assert '0.1.0-alpha.1' in prompt
assert 'Le skeleton Tauri contrôlé reste `DEFER`' in prompt
print('0.0.5 stable history audit: clean (17 prior histories with expected statuses, rel.001 pending)')
PYGATE
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 docs/000-README.md \
docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md deltas/0.0.5/rel.001.md
git diff --cached --check
git status --short
Le scope attendu avant ajout du history est exactement :
M CHANGELOG.md
M README.md
M ROADMAP.md
M VERSION
A deltas/0.0.5/rel.001.md
M docs/000-README.md
M docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
Les 48 tests Python et les validations structurelles validés en RC restent des preuves applicables parce qu'aucun code, script, test, règle, template ou skeleton technique n'est modifié pendant rel.001. La gate stable se concentre donc sur l'intégrité de la chaîne historique, la présentation stable et les audits documentaires affectés.
Revue opérateur complémentaire
Confirmer que le scope fonctionnel de la RC ne change pas, que README/roadmap/changelog/index/plan décrivent la même stable, que les FAIL historiques restent conservés avec leurs fixes PASS, que le skeleton Tauri reste différé sans release réservée, que le prompt 006 reste conditionnel à une vraie publication et qu'aucune preuve post-tag n'est anticipée.
Transition
PASS
Produire séparément history/0.0.5/rel.001.md, l'appliquer puis committer la stable. Ensuite seulement créer et publier le tag canonique v0.0.5, télécharger son archive source depuis Gitea, vérifier cette archive et conserver séparément la preuve post-tag pgr-0.0.5-publish.001-report.md.
Le message manuel de reprise de prompts/006-V0_1_0_START_PROMPT.md n'est remis à l'opérateur qu'après vérification effective de l'archive et d'un rapport post-tag PASS réel.
FAIL
Consigner le diagnostic réel dans history/0.0.5/rel.001.md, ne pas tagger et corriger la clôture dans une tranche explicite avant publication.