0.0.5-rc.1
This commit is contained in:
190
deltas/0.0.5/rc.1.md
Normal file
190
deltas/0.0.5/rc.1.md
Normal file
@@ -0,0 +1,190 @@
|
||||
<!-- file: deltas/0.0.5/rc.1.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.0.5-rc.1 — gel du scope et préparation de release
|
||||
|
||||
## Baseline et version
|
||||
|
||||
Baseline : `0.0.5-beta.1`, avec `history/0.0.5/beta.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 beta ; il n'est pas anticipé dans cette livraison simultanée du history et du delta suivant.
|
||||
|
||||
Version avant application :
|
||||
|
||||
```text
|
||||
0.0.5-beta.1
|
||||
```
|
||||
|
||||
Version après application :
|
||||
|
||||
```text
|
||||
0.0.5-rc.1
|
||||
```
|
||||
|
||||
## Objet et gel
|
||||
|
||||
La réconciliation `beta.1` est `PASS`. La RC gèle le scope fonctionnel de `0.0.5` sur :
|
||||
|
||||
- les prompts versionnés, contrats documentaires facultatifs et responsabilités de lifecycle/revue d'horizon ;
|
||||
- le profil Rust strict des projets contrôlés, ses contrats de nomenclature/packaging/tracing et ses audits monotâches ;
|
||||
- l'audit de complétude de façade et l'usage canonique `crate::Item` ;
|
||||
- les profils framework et Tauri 2, leurs frontières Rust/frontend, TS-RS, plugins/capabilities, politique de versions produit et exception encadrée `lib + bin` ;
|
||||
- la décision explicite `DEFER` du skeleton Tauri contrôlé jusqu'à matérialisation d'owners Web suffisants ;
|
||||
- la réconciliation KSP/Games et le prompt candidat `006` vers `0.1.0`.
|
||||
|
||||
Le changelog reçoit une entrée candidate `0.0.5` orientée utilisateurs. `ROADMAP.md` est vérifié mais reste inchangé : `0.0.5` n'est marqué terminé qu'à la promotion stable ; `0.1.0` reste la prochaine release engagée ; le skeleton Tauri reste différé sans numéro réservé. Le prompt `006` est vérifié sans être réécrit si son contrat est déjà correct.
|
||||
|
||||
Aucun nouvel owner, profil Web, skeleton, template, audit, règle fonctionnelle ou version postérieure à `0.1.0` n'entre en RC.
|
||||
|
||||
## Scope
|
||||
|
||||
REPLACE :
|
||||
|
||||
```text
|
||||
VERSION
|
||||
CHANGELOG.md
|
||||
docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
|
||||
```
|
||||
|
||||
ADD :
|
||||
|
||||
```text
|
||||
deltas/0.0.5/rc.1.md
|
||||
```
|
||||
|
||||
DELETE : aucun.
|
||||
|
||||
L'archive contient exactement ces fichiers complets. Le history `beta.1` est livré séparément ; le history `rc.1` sera produit après la gate opérateur.
|
||||
|
||||
## Gate opérateur de release candidate
|
||||
|
||||
Après application du history `PASS` de `beta.1`, commit/push de cette tranche, puis application du présent delta :
|
||||
|
||||
```bash
|
||||
test "$(cat VERSION)" = '0.0.5-rc.1'
|
||||
git cat-file -e HEAD:history/0.0.5/beta.1.md
|
||||
test -f history/0.0.5/beta.1.md
|
||||
test -f deltas/0.0.5/rc.1.md
|
||||
test -f prompts/006-V0_1_0_START_PROMPT.md
|
||||
test ! -e history/0.0.5/rc.1.md
|
||||
|
||||
grep -A2 '^## Statut$' history/0.0.5/beta.1.md | grep -Fx 'PASS'
|
||||
grep -Fx '<!-- version: 8 -->' CHANGELOG.md
|
||||
grep -Fx '## 0.0.5 (candidate)' CHANGELOG.md
|
||||
grep -Fx '<!-- version: 14 -->' docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
|
||||
grep -Fx '<!-- version: 7 -->' ROADMAP.md
|
||||
grep -Fx '<!-- version: 1 -->' prompts/006-V0_1_0_START_PROMPT.md
|
||||
grep -F 'La gate opérateur de `beta.1` est `PASS`' docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
|
||||
grep -F '(d) skeleton Tauri pour projets contrôlés' ROADMAP.md
|
||||
grep -F 'Le skeleton Tauri contrôlé reste `DEFER`' prompts/006-V0_1_0_START_PROMPT.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 - <<'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',
|
||||
}
|
||||
histories = {path.name for path in Path('history/0.0.5').glob('*.md')}
|
||||
assert histories == set(expected), histories
|
||||
for name, status in expected.items():
|
||||
text = Path('history/0.0.5', name).read_text(encoding='utf-8')
|
||||
assert re.search(rf'## Statut\s+{status}\s', text), (name, status)
|
||||
|
||||
deltas = {path.name for path in Path('deltas/0.0.5').glob('*.md')}
|
||||
assert deltas == set(expected) | {'rc.1.md'}, deltas
|
||||
|
||||
changelog = Path('CHANGELOG.md').read_text(encoding='utf-8')
|
||||
assert '## 0.0.5 (candidate)' in changelog
|
||||
for forbidden in ('alpha.6.fix.3', 'alpha.7.fix.1', 'beta.1'):
|
||||
assert forbidden not in changelog, forbidden
|
||||
|
||||
roadmap = Path('ROADMAP.md').read_text(encoding='utf-8')
|
||||
assert '- `( ) 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
|
||||
|
||||
prompt = Path('prompts/006-V0_1_0_START_PROMPT.md').read_text(encoding='utf-8')
|
||||
for value in (
|
||||
'pgr-v0.0.5.zip',
|
||||
'pgr-0.0.5-publish.001-report.md',
|
||||
'0.1.0-alpha.1',
|
||||
'Le skeleton Tauri contrôlé reste `DEFER`',
|
||||
"revue d'horizon avant la clôture stable",
|
||||
):
|
||||
assert value in prompt, value
|
||||
|
||||
for path in (
|
||||
'scripts/audit_rust_item_spacing.py',
|
||||
'scripts/audit_rust_module_order.py',
|
||||
'scripts/audit_rust_reexport_blocks.py',
|
||||
'scripts/audit_rust_trait_import_blocks.py',
|
||||
'scripts/audit_rust_export_completeness.py',
|
||||
):
|
||||
assert Path(path).is_file(), path
|
||||
|
||||
assert Path('docs/rules/710-TAURI.md').is_file()
|
||||
assert not any(Path('docs/skeletons').glob('003-TAURI*.md'))
|
||||
|
||||
print('0.0.5 rc.1 integration audit: clean (16 prior histories, frozen scope, candidate changelog, roadmap/prompt 006 verified)')
|
||||
PYGATE
|
||||
|
||||
git diff --check
|
||||
|
||||
git add VERSION CHANGELOG.md \
|
||||
docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md \
|
||||
deltas/0.0.5/rc.1.md
|
||||
|
||||
git diff --cached --check
|
||||
git status --short
|
||||
```
|
||||
|
||||
Le scope attendu avant ajout du history est exactement :
|
||||
|
||||
```text
|
||||
M CHANGELOG.md
|
||||
M VERSION
|
||||
A deltas/0.0.5/rc.1.md
|
||||
M docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
|
||||
```
|
||||
|
||||
## Revue opérateur complémentaire
|
||||
|
||||
Confirmer que le changelog décrit les capacités de la release plutôt que ses tranches internes, que le `DEFER` Tauri reste visible sans numéro de release, que les trois autres candidats d'horizon ne sont pas promus en roadmap, que le prompt `006` ne présume aucune publication post-tag et que la RC n'étend pas le périmètre fonctionnel.
|
||||
|
||||
Une gate RC `PASS` n'est ni la promotion stable, ni le tag `v0.0.5`, ni la vérification de l'archive publiée après le tag.
|
||||
|
||||
## Transition
|
||||
|
||||
### PASS
|
||||
|
||||
Produire séparément `history/0.0.5/rc.1.md`, l'appliquer puis committer/pousser la RC avant le delta stable `rel.001`.
|
||||
|
||||
### FAIL
|
||||
|
||||
Consigner l'échec réel dans `history/0.0.5/rc.1.md` et corriger uniquement le scope gelé dans `rc.1.fix.1`, sauf REPLAN explicite si la candidate révèle un défaut fonctionnel plus large.
|
||||
Reference in New Issue
Block a user