From 351025b4f2eccdb3319f06f2cebe1c4f4ed4be10 Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Sat, 26 Sep 2026 19:19:20 +0200 Subject: [PATCH] 0.1.0-alpha.3.fix.1 --- VERSION | 2 +- deltas/0.1.0/alpha.3.fix.1.md | 167 ++++++++++++++++++ .../006-V0_1_0_REUSABLE_BASELINE_PLAN.md | 12 +- history/0.1.0/alpha.3.fix.1.md | 94 ++++++++++ 4 files changed, 271 insertions(+), 4 deletions(-) create mode 100644 deltas/0.1.0/alpha.3.fix.1.md create mode 100644 history/0.1.0/alpha.3.fix.1.md diff --git a/VERSION b/VERSION index d594bc9..a01cba5 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.1.0-alpha.3 +0.1.0-alpha.3.fix.1 diff --git a/deltas/0.1.0/alpha.3.fix.1.md b/deltas/0.1.0/alpha.3.fix.1.md new file mode 100644 index 0000000..8793cd0 --- /dev/null +++ b/deltas/0.1.0/alpha.3.fix.1.md @@ -0,0 +1,167 @@ + + + +# 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 '' docs/rules/210-WORKFLOW.md +grep -Fx '' docs/templates/006-OPERATOR_COMMAND_HANDOFF.md +grep -Fx '' docs/000-README.md +grep -Fx '' 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 ', + "## 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 '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. diff --git a/docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md b/docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md index e286113..86c0d7b 100644 --- a/docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md +++ b/docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md @@ -1,5 +1,5 @@ - + # 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 -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 diff --git a/history/0.1.0/alpha.3.fix.1.md b/history/0.1.0/alpha.3.fix.1.md new file mode 100644 index 0000000..9dd3f60 --- /dev/null +++ b/history/0.1.0/alpha.3.fix.1.md @@ -0,0 +1,94 @@ + + + +# 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`.