202 lines
7.1 KiB
Markdown
202 lines
7.1 KiB
Markdown
<!-- file: deltas/0.1.0/alpha.2.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta 0.1.0-alpha.2 — clôture stable et identité `rel.N`
|
|
|
|
## Baseline
|
|
|
|
Baseline attendue : `0.1.0-alpha.1` committée avec `history/0.1.0/alpha.1.md` en `PASS`.
|
|
|
|
Cette tranche MUST être appliquée uniquement après le commit/push complet de `alpha.1` ; elle ne doit pas être superposée au workspace encore non committé de la gate précédente.
|
|
|
|
Version avant application :
|
|
|
|
```text
|
|
0.1.0-alpha.1
|
|
```
|
|
|
|
Version après application :
|
|
|
|
```text
|
|
0.1.0-alpha.2
|
|
```
|
|
|
|
## Objet
|
|
|
|
Corriger la convention normative de clôture stable avant diffusion plus large de PGR :
|
|
|
|
- utiliser `rel.1`, `rel.2`, etc. sans padding pour les nouvelles releases ;
|
|
- conserver sans renommage tous les artefacts historiques `rel.001*` déjà publiés ;
|
|
- distinguer le nom de la tranche de clôture de l'identité du commit stable ;
|
|
- rendre explicite qu'une clôture `FAIL`, `PARTIAL` ou `BLOCKED` conserve le suffixe opérationnel dans son commit ;
|
|
- rendre explicite que la première tranche `rel.N[/fix.M]` qui obtient réellement le `PASS` stable est committée sous `X.Y.Z` avant création du tag `vX.Y.Z`.
|
|
|
|
La tranche ne modifie aucun profil technologique, skeleton, template, script d'audit ou convention de publication post-tag `publish.001`.
|
|
|
|
## Scope
|
|
|
|
REPLACE :
|
|
|
|
```text
|
|
VERSION
|
|
docs/rules/200-GOVERNANCE.md
|
|
docs/rules/210-WORKFLOW.md
|
|
docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md
|
|
```
|
|
|
|
ADD :
|
|
|
|
```text
|
|
deltas/0.1.0/alpha.2.md
|
|
```
|
|
|
|
DELETE : aucun.
|
|
|
|
Le plan actif est révisé parce qu'il enregistre `alpha.1 PASS` et deux horizons différés explicitement décidés pendant la session — audit Python d'un sous-ensemble Clippy après Games/KSP et future famille deployment/operations — sans leur attribuer de numéro ni les absorber dans `0.1.0`.
|
|
|
|
Aucun `history/0.1.0/alpha.2.md` n'est anticipé avant la gate opérateur.
|
|
|
|
## Convention obtenue
|
|
|
|
La représentation future canonique est :
|
|
|
|
```text
|
|
rel.1
|
|
rel.1.fix.1
|
|
rel.2
|
|
...
|
|
```
|
|
|
|
Pour le message du commit de clôture, le défaut PGR devient :
|
|
|
|
```text
|
|
history rel.1 FAIL / PARTIAL / BLOCKED
|
|
-> X.Y.Z-rel.1
|
|
|
|
history rel.1.fix.1 FAIL / PARTIAL / BLOCKED
|
|
-> X.Y.Z-rel.1.fix.1
|
|
|
|
premier history rel.N[/fix.M] PASS établissant réellement la stable
|
|
-> X.Y.Z
|
|
```
|
|
|
|
`VERSION` MAY déjà être `X.Y.Z` pendant ces tranches de fermeture : `rel.N` n'est pas une prerelease SemVer. Le tag `vX.Y.Z` intervient uniquement après le commit final `X.Y.Z` contenant le history `PASS` stable.
|
|
|
|
Les fichiers historiques comme :
|
|
|
|
```text
|
|
deltas/0.0.5/rel.001.md
|
|
history/0.0.5/rel.001.md
|
|
deltas/0.0.5/rel.001.fix.1.md
|
|
history/0.0.5/rel.001.fix.1.md
|
|
```
|
|
|
|
restent intacts.
|
|
|
|
## Validation opérateur
|
|
|
|
Après application sur le commit de `0.1.0-alpha.1`, depuis la racine du dépôt :
|
|
|
|
```bash
|
|
test "$(cat VERSION)" = '0.1.0-alpha.2'
|
|
test -f history/0.1.0/alpha.1.md
|
|
test -f deltas/0.1.0/alpha.2.md
|
|
test ! -e history/0.1.0/alpha.2.md
|
|
|
|
grep -Fx '<!-- version: 5 -->' docs/rules/200-GOVERNANCE.md
|
|
grep -Fx '<!-- version: 6 -->' docs/rules/210-WORKFLOW.md
|
|
grep -Fx '<!-- version: 2 -->' docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md
|
|
|
|
grep -F 'représentation canonique n'utilise pas de zéro de padding' docs/rules/200-GOVERNANCE.md
|
|
grep -F 'première tranche de clôture PASS' docs/rules/200-GOVERNANCE.md
|
|
grep -F 'history rel.1 FAIL / PARTIAL / BLOCKED' docs/rules/210-WORKFLOW.md
|
|
grep -F 'premier history rel.N[/fix.M] PASS qui établit réellement la stable' docs/rules/210-WORKFLOW.md
|
|
grep -F 'La présente règle ne renomme pas `publish.001`' docs/rules/210-WORKFLOW.md
|
|
|
|
grep -F 'sous-ensemble des conventions Rust/Clippy' docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md
|
|
grep -F 'série dédiée au déploiement et à l'exploitation' docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.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 - <<'PY'
|
|
from pathlib import Path
|
|
import re
|
|
|
|
history = Path('history/0.1.0/alpha.1.md').read_text(encoding='utf-8')
|
|
assert re.search(r'## Statut\s+PASS\s', history)
|
|
|
|
governance = Path('docs/rules/200-GOVERNANCE.md').read_text(encoding='utf-8')
|
|
workflow = Path('docs/rules/210-WORKFLOW.md').read_text(encoding='utf-8')
|
|
plan = Path('docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md').read_text(encoding='utf-8')
|
|
|
|
for phrase in (
|
|
'rel.1',
|
|
'rel.1.fix.1',
|
|
'représentation canonique n\'utilise pas de zéro de padding',
|
|
'première tranche de clôture PASS',
|
|
'Le commit `X.Y.Z` MUST',
|
|
):
|
|
assert phrase in governance or phrase in workflow, phrase
|
|
|
|
for path in (
|
|
Path('deltas/0.0.5/rel.001.md'),
|
|
Path('history/0.0.5/rel.001.md'),
|
|
Path('deltas/0.0.5/rel.001.fix.1.md'),
|
|
Path('history/0.0.5/rel.001.fix.1.md'),
|
|
):
|
|
assert path.is_file(), path
|
|
|
|
assert 'publish.001' in workflow
|
|
assert 'La présente règle ne renomme pas `publish.001`' in workflow
|
|
assert 'sous-ensemble des conventions Rust/Clippy' in plan
|
|
assert "série dédiée au déploiement et à l'exploitation" in plan
|
|
assert '- `( ) 0.1.1`' not in Path('ROADMAP.md').read_text(encoding='utf-8')
|
|
|
|
print('0.1.0 alpha.2 rel identity audit: clean (rel.N unpadded, historical rel.001 preserved, stable commit identity explicit)')
|
|
PY
|
|
|
|
git diff --check
|
|
git add VERSION docs/rules/200-GOVERNANCE.md docs/rules/210-WORKFLOW.md \
|
|
docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md \
|
|
deltas/0.1.0/alpha.2.md
|
|
git diff --cached --check
|
|
git status --short
|
|
```
|
|
|
|
Le scope indexé attendu avant ajout du history est :
|
|
|
|
```text
|
|
M VERSION
|
|
A deltas/0.1.0/alpha.2.md
|
|
M docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md
|
|
M docs/rules/200-GOVERNANCE.md
|
|
M docs/rules/210-WORKFLOW.md
|
|
```
|
|
|
|
La revue opérateur doit également confirmer que :
|
|
|
|
- aucune occurrence historique `rel.001*` n'a été renommée ;
|
|
- `publish.001` reste une convention indépendante et n'est pas modifiée par cette tranche ;
|
|
- aucune commande de handoff Git automatique n'est encore rendue normative ici — ce sujet appartient à `alpha.3` ;
|
|
- les horizons Clippy statique et deployment/operations restent de simples candidats différés dans le plan ;
|
|
- aucun profil Web, Java/Android, WASM, Tauri ou serveur n'est ajouté ou modifié.
|
|
|
|
## Transition
|
|
|
|
### PASS
|
|
|
|
Produire `history/0.1.0/alpha.2.md` à partir des résultats réellement observés. Dans la même réponse, si aucune décision nouvelle n'est ouverte, préparer séparément `0.1.0-alpha.3` consacré au handoff automatique des commandes opérateur après history, au commit/push, au tag stable et aux preuves requises pour `publish.001`.
|
|
|
|
Après remise du history, fournir déjà spontanément le bloc Git exact de fermeture de `alpha.2`, conformément à la décision acquise, même si `alpha.3` sera la tranche qui rendra ce comportement normatif.
|
|
|
|
### FAIL
|
|
|
|
Consigner le résultat réel dans le history puis ouvrir `0.1.0-alpha.2.fix.1` ou un REPLAN selon la cause. Aucun élément du handoff automatique prévu pour `alpha.3` ne doit être absorbé silencieusement dans le fix.
|