0.1.0-alpha.3.fix.1

This commit is contained in:
2026-09-26 19:19:20 +02:00
parent f37481627a
commit 351025b4f2
4 changed files with 271 additions and 4 deletions

View File

@@ -1 +1 @@
0.1.0-alpha.3 0.1.0-alpha.3.fix.1

View File

@@ -0,0 +1,167 @@
<!-- file: deltas/0.1.0/alpha.3.fix.1.md -->
<!-- version: 1 -->
# Delta 0.1.0-alpha.3.fix.1 — correction de la gate du handoff opérateur
## Baseline et version
Baseline attendue : commit opérateur de `0.1.0-alpha.3`, réalisé après application de `history/0.1.0/alpha.3.md` avec statut `FAIL`.
Le hash de ce commit n'est pas anticipé.
Version avant application :
```text
0.1.0-alpha.3
```
Version après application :
```text
0.1.0-alpha.3.fix.1
```
## Objet
Corriger uniquement la syntaxe défectueuse de la gate opérateur de `alpha.3`.
Le contenu normatif de `docs/rules/210-WORKFLOW.md`, le pattern `docs/templates/006-OPERATOR_COMMAND_HANDOFF.md`, l'index `docs/000-README.md` et le delta historique `deltas/0.1.0/alpha.3.md` restent inchangés.
Le défaut observé était un littéral Python entouré de quotes simples alors que son texte contenait l'apostrophe de `d'une` :
```python
'## Fermeture d'une tranche non stable'
```
Le fix rend les assertions textuelles syntaxiquement sûres sans modifier ce qu'elles vérifient.
## Scope
REPLACE :
```text
VERSION
docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md
```
ADD :
```text
deltas/0.1.0/alpha.3.fix.1.md
```
DELETE : aucun.
Aucun owner normatif, template, profil technologique, skeleton, script d'audit ou test n'est modifié par ce correctif.
## Validation opérateur
Après application du history `FAIL`, commit/push de `alpha.3`, puis application du présent delta :
```bash
test "$(cat VERSION)" = '0.1.0-alpha.3.fix.1'
git cat-file -e HEAD:history/0.1.0/alpha.3.md
test -f history/0.1.0/alpha.3.md
test -f deltas/0.1.0/alpha.3.md
test -f deltas/0.1.0/alpha.3.fix.1.md
test -f docs/templates/006-OPERATOR_COMMAND_HANDOFF.md
test ! -e history/0.1.0/alpha.3.fix.1.md
grep -A2 '^## Statut$' history/0.1.0/alpha.3.md | grep -Fx 'FAIL'
grep -Fx '<!-- version: 7 -->' docs/rules/210-WORKFLOW.md
grep -Fx '<!-- version: 1 -->' docs/templates/006-OPERATOR_COMMAND_HANDOFF.md
grep -Fx '<!-- version: 19 -->' docs/000-README.md
grep -Fx '<!-- version: 5 -->' docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md
python3 -B - <<'PYGATE'
from pathlib import Path
import re
history = Path('history/0.1.0/alpha.3.md').read_text(encoding='utf-8')
assert re.search(r'## Statut\s+FAIL\s', history)
workflow = Path('docs/rules/210-WORKFLOW.md').read_text(encoding='utf-8')
template = Path('docs/templates/006-OPERATOR_COMMAND_HANDOFF.md').read_text(encoding='utf-8')
plan = Path('docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md').read_text(encoding='utf-8')
index = Path('docs/000-README.md').read_text(encoding='utf-8')
workflow_phrases = (
'## Remise automatique des commandes opérateur',
'le générateur MUST remettre spontanément les commandes nécessaires pour fermer cette tranche',
'Le générateur MUST NOT inventer un remote, une branche ou une politique de tag non établis.',
'première clôture `rel.N[/fix.M]` qui établit réellement la stable',
'refs/tags/vX.Y.Z^{}',
'Le rapport `publish.*` est produit seulement à partir des artefacts et preuves réellement disponibles après publication.',
'../templates/006-OPERATOR_COMMAND_HANDOFF.md',
)
for phrase in workflow_phrases:
assert phrase in workflow, phrase
template_phrases = (
"## Fermeture d'une tranche non stable",
'git diff --cached --check',
'git push <remote> <branche>',
"## Tranche échouée suivie d'un fix",
'## Première clôture qui établit réellement la stable',
'git tag -a vX.Y.Z -m "vX.Y.Z"',
"git ls-remote <remote> 'refs/tags/vX.Y.Z^{}'",
'## Remise nécessaire pour `publish.*`',
'## Après `publish.* PASS`',
)
for phrase in template_phrases:
assert phrase in template, phrase
assert '006-OPERATOR_COMMAND_HANDOFF.md' in index
assert 'Statut opérateur : **FAIL**.' in plan
assert '### alpha.3.fix.1 — correction de la gate du handoff opérateur' in plan
print('0.1.0 alpha.3.fix.1 operator handoff gate: clean (alpha.3 FAIL preserved, workflow/template reconfirmed, Python literals safe)')
PYGATE
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
git diff --check
git add VERSION docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md \
deltas/0.1.0/alpha.3.fix.1.md
git diff --cached --check
git status --short
```
Le scope indexé attendu avant ajout du history du fix est exactement :
```text
M VERSION
A deltas/0.1.0/alpha.3.fix.1.md
M docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md
```
## Revue opérateur complémentaire
Confirmer que :
- le `FAIL` de `alpha.3` est conservé historiquement ;
- `docs/rules/210-WORKFLOW.md`, `docs/templates/006-OPERATOR_COMMAND_HANDOFF.md` et `docs/000-README.md` ne sont pas modifiés par le fix ;
- le delta historique `alpha.3.md` n'est pas réécrit ;
- aucun contenu prévu pour `alpha.4` n'est absorbé dans le correctif ;
- aucun profil technologique n'est ajouté ou modifié.
## Transition
### PASS
Produire `history/0.1.0/alpha.3.fix.1.md`, l'appliquer puis committer/pousser le fix. Reprendre ensuite la trajectoire normale avec `0.1.0-alpha.4`, consacré à l'adoption proportionnée de PGR par un projet existant.
Le handoff remis après ce PASS doit lui-même suivre le contrat `210-WORKFLOW` et `006-OPERATOR_COMMAND_HANDOFF.md` désormais reconfirmé.
### FAIL
Consigner le diagnostic réel dans `history/0.1.0/alpha.3.fix.1.md` et rester dans `alpha.3.fix.M`. Le scope MUST rester limité à la correction de la gate du handoff tant qu'aucun défaut plus large ne justifie un REPLAN.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md --> <!-- file: docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md -->
<!-- version: 4 --> <!-- version: 5 -->
# Plan 0.1.0 — première baseline PGR réutilisable # Plan 0.1.0 — première baseline PGR réutilisable
@@ -189,9 +189,15 @@ La validation a exécuté `48/48` tests et les trois audits Markdown sans diagno
### alpha.3 — handoff automatique des commandes opérateur ### alpha.3 — handoff automatique des commandes opérateur
Formaliser le bloc de commandes remis après chaque history, l'ordre commit/push avant application du delta suivant, les commandes supplémentaires de tag pour une stable validée et la liste des preuves à fournir pour produire le rapport post-tag. Statut opérateur : **FAIL**.
La tranche introduit un pattern documentaire dédié afin de ne pas recopier ces règles dans chaque delta. Le workflow reste owner de la sémantique ; le template possède seulement la forme de rendu et les variantes tranche normale / échec + fix / clôture stable / post-tag. Le contenu prévu a été matérialisé : `210-WORKFLOW.md` possède le contrat normatif de remise automatique et `006-OPERATOR_COMMAND_HANDOFF.md` fournit la forme de rendu pour tranche ordinaire, échec + fix, clôture stable, tag et preuves `publish.*`. Les `48` tests et les trois audits Markdown sont restés propres.
La gate spécifique n'a toutefois pas pu s'exécuter jusqu'au bout : le littéral Python `'## Fermeture d'une tranche non stable'` utilisait des quotes simples autour d'un texte contenant l'apostrophe de `d'une`, provoquant `SyntaxError: unterminated string literal`. Le défaut appartient à la gate ; aucun défaut normatif du workflow ou du template n'est établi.
### alpha.3.fix.1 — correction de la gate du handoff opérateur
Corriger uniquement la syntaxe du contrôle Python de `alpha.3`, conserver les owners et le delta historique inchangés, puis reconfirmer le handoff automatique, les tests, audits Markdown et le scope minimal du fix.
### alpha.4 — adoption d'un projet existant ### alpha.4 — adoption d'un projet existant

View File

@@ -0,0 +1,94 @@
<!-- file: history/0.1.0/alpha.3.fix.1.md -->
<!-- version: 1 -->
# History 0.1.0-alpha.3.fix.1 — correction de la gate du handoff opérateur
## Statut
PASS
La gate opérateur de `0.1.0-alpha.3.fix.1` exécutée le `2026-09-26` a réussi. Le `FAIL` historique de `alpha.3` est conservé, la syntaxe du contrôle Python a été corrigée sans modifier les owners du handoff, puis le contenu de `210-WORKFLOW.md` et de `006-OPERATOR_COMMAND_HANDOFF.md` a été reconfirmé.
## Baseline opérateur
La tranche `0.1.0-alpha.3` a été clôturée avec son history `FAIL`, puis committée et poussée avant application du fix :
```text
commit f374816
message 0.1.0-alpha.3
push origin/master PASS
```
Après application du correctif, les contrôles initiaux ont confirmé :
```text
VERSION 0.1.0-alpha.3.fix.1
history/0.1.0/alpha.3.md présent dans HEAD et le workspace
deltas/0.1.0/alpha.3.md présent
deltas/0.1.0/alpha.3.fix.1.md présent
docs/templates/006-OPERATOR_COMMAND_HANDOFF.md présent
history/0.1.0/alpha.3.fix.1.md absent pendant la gate
docs/rules/210-WORKFLOW.md version 7
docs/templates/006-OPERATOR_COMMAND_HANDOFF.md version 1
docs/000-README.md version 19
docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md version 5
```
Le statut `FAIL` de `history/0.1.0/alpha.3.md` a été retrouvé explicitement.
## Validation opérateur observée
Le contrôle Python corrigé a terminé proprement :
```text
0.1.0 alpha.3.fix.1 operator handoff gate: clean (alpha.3 FAIL preserved, workflow/template reconfirmed, Python literals safe)
```
Il reconfirme notamment :
- le contrat normatif de remise automatique dans `210-WORKFLOW.md` ;
- l'interdiction d'inventer remote, branche ou politique de tag ;
- la clôture stable au premier `rel.N[/fix.M]` réellement `PASS` ;
- la distinction entre objet tag et commit déréférencé ;
- la production de `publish.*` uniquement à partir de preuves post-publication réellement disponibles ;
- les blocs du pattern opérateur pour tranche ordinaire, échec + fix, stable, tag et reprise après `publish.* PASS`.
La suite Python globale a exécuté `48` tests, tous réussis :
```text
Ran 48 tests in 0.688s
OK
```
Les audits documentaires sont propres :
```text
Markdown header audit: clean (182 file(s))
Markdown table audit: clean (8 table(s), 182 file(s))
Markdown link audit: clean (167 local link(s), 182 file(s))
```
## Contrôles Git
Le statut indexé transmis avant ajout du présent history est exactement :
```text
M VERSION
A deltas/0.1.0/alpha.3.fix.1.md
M docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md
```
Le scope correspond au correctif annoncé. `docs/rules/210-WORKFLOW.md`, `docs/templates/006-OPERATOR_COMMAND_HANDOFF.md`, `docs/000-README.md` et le delta historique `alpha.3.md` sont restés inchangés.
## Décision
`0.1.0-alpha.3.fix.1` est `PASS`. Aucun nouveau fix ni REPLAN n'est requis.
La trajectoire normale reprend à :
```text
0.1.0-alpha.4
```
Cette tranche formalise l'adoption proportionnée de PGR par un projet existant, distincte de l'instanciation d'un nouveau projet et sans migration concrète de Games ou KSP dans `0.1.0`.