0.0.5-rel.001.fix.1
This commit is contained in:
170
deltas/0.0.5/rel.001.fix.1.md
Normal file
170
deltas/0.0.5/rel.001.fix.1.md
Normal file
@@ -0,0 +1,170 @@
|
||||
<!-- file: deltas/0.0.5/rel.001.fix.1.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.0.5 rel.001.fix.1 — correction de la gate stable pré-tag
|
||||
|
||||
## Baseline et version
|
||||
|
||||
Baseline : état stable `0.0.5` issu de `rel.001`, avec `history/0.0.5/rel.001.md` appliqué et committé en `FAIL`.
|
||||
|
||||
`VERSION` reste :
|
||||
|
||||
```text
|
||||
0.0.5
|
||||
```
|
||||
|
||||
Ce correctif est strictement documentaire et opérationnel. Il ne change ni la version produit, ni le scope fonctionnel validé par `rc.1`, ni les fichiers de présentation stable déjà promus par `rel.001`.
|
||||
|
||||
## Diagnostic corrigé
|
||||
|
||||
La gate `rel.001` devait confirmer la présence exacte du heading stable `## 0.0.5` dans `CHANGELOG.md`. Le delta livré a généré une chaîne Python simple contenant un retour à la ligne physique :
|
||||
|
||||
```python
|
||||
assert '## 0.0.5
|
||||
' in changelog
|
||||
```
|
||||
|
||||
Le heredoc est donc invalide et produit `SyntaxError: unterminated string literal` avant la preuve attendue.
|
||||
|
||||
`rel.001.fix.1` remplace cette forme fragile par une vérification ligne par ligne :
|
||||
|
||||
```python
|
||||
assert '## 0.0.5' in changelog.splitlines()
|
||||
```
|
||||
|
||||
Le delta historique `rel.001.md` reste immuable.
|
||||
|
||||
## Scope
|
||||
|
||||
REPLACE :
|
||||
|
||||
```text
|
||||
docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
|
||||
```
|
||||
|
||||
ADD :
|
||||
|
||||
```text
|
||||
deltas/0.0.5/rel.001.fix.1.md
|
||||
```
|
||||
|
||||
DELETE : aucun.
|
||||
|
||||
Aucun fichier `VERSION`, `README`, `ROADMAP`, `CHANGELOG`, règle, script, test, template ou skeleton n'est modifié par ce correctif.
|
||||
|
||||
## Validation opérateur pré-tag
|
||||
|
||||
Après application sur le commit qui contient le history `FAIL` de `rel.001` :
|
||||
|
||||
```bash
|
||||
test "$(cat VERSION)" = '0.0.5'
|
||||
git cat-file -e HEAD:history/0.0.5/rel.001.md
|
||||
test -f history/0.0.5/rel.001.md
|
||||
test -f deltas/0.0.5/rel.001.fix.1.md
|
||||
test -f prompts/006-V0_1_0_START_PROMPT.md
|
||||
test ! -e history/0.0.5/rel.001.fix.1.md
|
||||
|
||||
grep -A2 '^## Statut$' history/0.0.5/rel.001.md | grep -Fx 'FAIL'
|
||||
grep -Fx '<!-- version: 16 -->' docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
|
||||
grep -Fx '<!-- version: 14 -->' README.md
|
||||
grep -Fx '<!-- version: 8 -->' ROADMAP.md
|
||||
grep -Fx '<!-- version: 9 -->' CHANGELOG.md
|
||||
grep -Fx '## 0.0.5' CHANGELOG.md
|
||||
grep -F -- '- `(x) 0.0.5`' ROADMAP.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',
|
||||
'rel.001.md': 'FAIL',
|
||||
}
|
||||
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.fix.1.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.splitlines()
|
||||
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
|
||||
|
||||
plan = Path('docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md').read_text(encoding='utf-8')
|
||||
assert "La gate opérateur de `rel.001` est toutefois `FAIL`" in plan
|
||||
assert '`rel.001.fix.1` corrige uniquement cette preuve de clôture' in plan
|
||||
|
||||
print('0.0.5 rel.001.fix.1 stable history audit: clean (18 prior histories, failed rel preserved, corrected pre-tag proof)')
|
||||
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 docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md \
|
||||
deltas/0.0.5/rel.001.fix.1.md
|
||||
|
||||
git diff --cached --check
|
||||
git status --short
|
||||
```
|
||||
|
||||
Le scope attendu avant ajout du history du fix est exactement :
|
||||
|
||||
```text
|
||||
A deltas/0.0.5/rel.001.fix.1.md
|
||||
M docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
|
||||
```
|
||||
|
||||
## Revue opérateur complémentaire
|
||||
|
||||
Confirmer que `VERSION` reste `0.0.5`, que la présentation stable de `rel.001` reste inchangée, que le `FAIL` de `rel.001` est conservé historiquement, que le fix ne modifie aucun owner fonctionnel et qu'aucun tag n'est créé avant le history PASS de ce correctif.
|
||||
|
||||
## Transition
|
||||
|
||||
### PASS
|
||||
|
||||
Produire séparément `history/0.0.5/rel.001.fix.1.md`, l'appliquer puis committer/pousser la clôture stable corrigée. Ensuite seulement créer et publier le tag canonique `v0.0.5`, télécharger son archive source depuis Gitea et exécuter la vérification externe `publish.001`.
|
||||
|
||||
### FAIL
|
||||
|
||||
Consigner le diagnostic réel dans `history/0.0.5/rel.001.fix.1.md`, ne pas tagger et poursuivre avec un nouveau `.fix.N` ou un REPLAN si le problème dépasse la gate de clôture.
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md -->
|
||||
<!-- version: 15 -->
|
||||
<!-- version: 16 -->
|
||||
|
||||
# Plan 0.0.5 — réconciliation réelle avec KSP et sasedev-games
|
||||
|
||||
@@ -170,6 +170,8 @@ La vérification post-tag doit produire, si le mécanisme reste retenu, `pgr-0.0
|
||||
|
||||
La promotion `rel.001` clôt le présent plan sans modifier le scope fonctionnel : `VERSION = 0.0.5`, `ROADMAP.md` marque `0.0.5` terminé, le changelog perd son marqueur `candidate`, les index décrivent le plan comme historique et le prompt `006` reste conditionnel à la publication effective du tag et à son rapport post-tag PASS.
|
||||
|
||||
La gate opérateur de `rel.001` est toutefois `FAIL` pour un défaut strictement local à sa commande de validation : l'assertion Python qui cherchait le heading `## 0.0.5` a été livrée avec une chaîne simple coupée par un retour à la ligne et provoque `SyntaxError: unterminated string literal`. Les audits Markdown et les contrôles Git exécutés ensuite sont propres ; aucun défaut du contenu stable n'est établi. `rel.001.fix.1` corrige uniquement cette preuve de clôture, conserve `VERSION = 0.0.5` et ne rouvre pas le scope fonctionnel.
|
||||
|
||||
## Clôture et transition
|
||||
|
||||
Le présent plan attribue dès maintenant les responsabilités de fermeture :
|
||||
|
||||
88
history/0.0.5/rel.001.fix.1.md
Normal file
88
history/0.0.5/rel.001.fix.1.md
Normal file
@@ -0,0 +1,88 @@
|
||||
<!-- file: history/0.0.5/rel.001.fix.1.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# History 0.0.5 rel.001.fix.1 — correction de la gate stable pré-tag
|
||||
|
||||
## Statut
|
||||
|
||||
PASS
|
||||
|
||||
La gate opérateur de `rel.001.fix.1` exécutée le `2026-09-25` est propre. Le correctif conserve `VERSION = 0.0.5`, préserve le `FAIL` historique de `rel.001`, exécute correctement la preuve Python de cohérence stable et ne modifie aucun fichier fonctionnel de la release.
|
||||
|
||||
La branche est donc prête pour le commit de cette clôture corrigée puis, uniquement après ce commit/push, pour la création du tag canonique `v0.0.5` et la vérification externe `publish.001`.
|
||||
|
||||
## Baseline et état observé
|
||||
|
||||
La baseline opérateur est le commit `4366802` de `0.0.5-rel.001`, poussé sur `master` avec `history/0.0.5/rel.001.md` en `FAIL`.
|
||||
|
||||
L'opérateur a confirmé :
|
||||
|
||||
```text
|
||||
VERSION 0.0.5
|
||||
history/0.0.5/rel.001.md présent dans HEAD
|
||||
deltas/0.0.5/rel.001.fix.1.md présent
|
||||
history/0.0.5/rel.001.fix.1.md absent avant clôture
|
||||
history/0.0.5/rel.001.md FAIL
|
||||
docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md version 16
|
||||
README.md version 14
|
||||
ROADMAP.md version 8
|
||||
CHANGELOG.md version 9
|
||||
CHANGELOG heading stable ## 0.0.5
|
||||
ROADMAP 0.0.5 terminé
|
||||
prompt 006 skeleton Tauri toujours DEFER
|
||||
```
|
||||
|
||||
## Preuve stable corrigée
|
||||
|
||||
Le contrôle Python inline corrigé s'est exécuté jusqu'à son terme et a produit :
|
||||
|
||||
```text
|
||||
0.0.5 rel.001.fix.1 stable history audit: clean (18 prior histories, failed rel preserved, corrected pre-tag proof)
|
||||
```
|
||||
|
||||
Il confirme notamment :
|
||||
|
||||
- les `18` histories antérieurs attendus existent avec leurs statuts réels ;
|
||||
- `rel.001.md` reste enregistré `FAIL` ;
|
||||
- seul `rel.001.fix.1.md` reste en attente de history ;
|
||||
- `ROADMAP.md` conserve `0.0.5` terminé, `0.1.0` ouvert et le skeleton Tauri en `DEFER` ;
|
||||
- `CHANGELOG.md` expose exactement le heading stable `## 0.0.5` et ne contient plus le marqueur candidate ;
|
||||
- le prompt `006` référence l'archive taggée `pgr-v0.0.5.zip`, le rapport externe `pgr-0.0.5-publish.001-report.md`, la première tranche `0.1.0-alpha.1` et le `DEFER` Tauri ;
|
||||
- le plan conserve le diagnostic `FAIL` de `rel.001` et décrit `rel.001.fix.1` comme correction exclusive de la preuve de clôture.
|
||||
|
||||
## Audits documentaires
|
||||
|
||||
Les audits Markdown ont produit :
|
||||
|
||||
```text
|
||||
Markdown header audit: clean (170 file(s))
|
||||
Markdown table audit: clean (8 table(s), 170 file(s))
|
||||
Markdown link audit: clean (161 local link(s), 170 file(s))
|
||||
```
|
||||
|
||||
## Contrôles Git
|
||||
|
||||
`git diff --check` et `git diff --cached --check` n'ont produit aucun diagnostic.
|
||||
|
||||
Le statut indexé transmis avant ajout du history est exactement :
|
||||
|
||||
```text
|
||||
A deltas/0.0.5/rel.001.fix.1.md
|
||||
M docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
|
||||
```
|
||||
|
||||
Le correctif ne modifie donc ni `VERSION`, ni `README.md`, ni `ROADMAP.md`, ni `CHANGELOG.md`, ni règles, scripts, tests, templates ou skeletons.
|
||||
|
||||
## Conclusion pré-tag
|
||||
|
||||
`rel.001.fix.1` corrige exclusivement le défaut de quoting de la preuve `rel.001` sans rouvrir le scope stable. La promotion documentaire `0.0.5` reste inchangée et la preuve de clôture requise est désormais valide.
|
||||
|
||||
Aucun tag n'a été créé pendant cette gate.
|
||||
|
||||
## Transition
|
||||
|
||||
Appliquer ce history puis committer/pousser la tranche avec le message canonique `0.0.5-rel.001.fix.1`.
|
||||
|
||||
Après confirmation que `master` contient ce history et que l'arbre est propre, créer le tag canonique `v0.0.5` sur le commit de clôture, pousser ce tag, télécharger l'archive source taggée depuis Gitea puis exécuter la vérification externe `publish.001`.
|
||||
|
||||
Le rapport `pgr-0.0.5-publish.001-report.md` reste extérieur au tag stable et doit refléter les preuves réellement observées après publication.
|
||||
Reference in New Issue
Block a user