# Delta 0.0.4 rel.001 — promotion stable pré-tag ## Baseline et version Baseline : `0.0.4-rc.1`, avec `history/0.0.4/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 : ```text 0.0.4-rc.1 ``` Version après application : ```text 0.0.4 ``` `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.4`. 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 : contrat transversal des skeleton specifications, fondation gouvernée `001`, spécialisation Rust/Cargo `002`, utilisation gouvernée des cinq templates Rust/Cargo existants et différé explicite des autres familles non suffisamment matérialisées. La validation de cette tranche est **pré-tag**. Ni le tag `v0.0.4`, ni l'archive `pgr-v0.0.4.zip` téléchargée depuis Gitea, ni un rapport `pgr-0.0.4-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 : ```text VERSION README.md ROADMAP.md CHANGELOG.md docs/000-README.md docs/plans/004-V0_0_4_SKELETONS_PLAN.md ``` ADD : ```text deltas/0.0.4/rel.001.md ``` DELETE : aucun. L'archive contient uniquement ces fichiers complets. `history/0.0.4/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 : ```bash test "$(cat VERSION)" = '0.0.4' git cat-file -e HEAD:history/0.0.4/rc.1.md test -f history/0.0.4/rc.1.md test -f deltas/0.0.4/rel.001.md test -f prompts/005-V0_0_5_START_PROMPT.md test ! -e history/0.0.4/rel.001.md grep -Fx '' README.md grep -Fx '' ROADMAP.md grep -Fx '' CHANGELOG.md grep -Fx '' docs/000-README.md grep -Fx '' docs/plans/004-V0_0_4_SKELETONS_PLAN.md grep -F 'La release `0.0.4` définit le contrat transversal des skeleton specifications' README.md grep -F 'plan historique des skeleton specifications `0.0.4`' README.md grep -F -- '- `(x) 0.0.4`' ROADMAP.md grep -Fx '## 0.0.4' CHANGELOG.md grep -F 'périmètre et décisions de la release `0.0.4`' docs/000-README.md grep -F 'La gate opérateur de `rc.1` est `PASS`' docs/plans/004-V0_0_4_SKELETONS_PLAN.md grep -F 'pgr-0.0.4-publish.001-report.md' docs/plans/004-V0_0_4_SKELETONS_PLAN.md python3 -B - <<'PY' from pathlib import Path import re expected = { 'alpha.1.md': 'PASS', 'alpha.2.md': 'PASS', 'alpha.3.md': 'PASS', 'alpha.4.md': 'FAIL', 'alpha.4.fix.1.md': 'PASS', 'beta.1.md': 'FAIL', 'beta.1.fix.1.md': 'PASS', 'rc.1.md': 'PASS', } for name, status in expected.items(): delta = Path('deltas/0.0.4', name) history = Path('history/0.0.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 = {p.name for p in Path('deltas/0.0.4').glob('*.md')} - \ {p.name for p in Path('history/0.0.4').glob('*.md')} assert pending == {'rel.001.md'}, pending print('Stable history audit: clean (8 prior histories with expected statuses, rel.001 pending)') PY 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/004-V0_0_4_SKELETONS_PLAN.md deltas/0.0.4/rel.001.md git diff --cached --check git status --short ``` Le scope attendu avant ajout du history est exactement : ```text M CHANGELOG.md M README.md M ROADMAP.md M VERSION A deltas/0.0.4/rel.001.md M docs/000-README.md M docs/plans/004-V0_0_4_SKELETONS_PLAN.md ``` Les `15` tests, les cinq TOML et le smoke Rust/Cargo complets validés en RC restent des preuves applicables parce qu'aucun code, script, test, 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 prompt `005` reste conditionnel à une vraie publication et à des baselines KSP/Games fournies, et qu'aucune preuve post-tag n'est anticipée. ## Transition ### PASS Produire séparément `history/0.0.4/rel.001.md`, l'appliquer puis committer la stable. Ensuite seulement créer et publier le tag canonique `v0.0.4`, télécharger son archive source depuis Gitea, vérifier cette archive et conserver séparément la preuve post-tag `pgr-0.0.4-publish.001-report.md`. Le message manuel de reprise de `prompts/005-V0_0_5_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.4/rel.001.md`, ne pas tagger et corriger la clôture dans une tranche explicite avant publication.