From 3230356cd696cab95d95c41c2fd71fd512ecaf14 Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Sat, 26 Sep 2026 19:00:32 +0200 Subject: [PATCH] 0.1.0-alpha.2.fix.1 --- VERSION | 2 +- deltas/0.1.0/alpha.2.fix.1.md | 178 ++++++++++++++++++ .../006-V0_1_0_REUSABLE_BASELINE_PLAN.md | 22 ++- history/0.1.0/alpha.2.fix.1.md | 92 +++++++++ 4 files changed, 286 insertions(+), 8 deletions(-) create mode 100644 deltas/0.1.0/alpha.2.fix.1.md create mode 100644 history/0.1.0/alpha.2.fix.1.md diff --git a/VERSION b/VERSION index 1f3a604..2fe3e9d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.1.0-alpha.2 +0.1.0-alpha.2.fix.1 diff --git a/deltas/0.1.0/alpha.2.fix.1.md b/deltas/0.1.0/alpha.2.fix.1.md new file mode 100644 index 0000000..4f40738 --- /dev/null +++ b/deltas/0.1.0/alpha.2.fix.1.md @@ -0,0 +1,178 @@ + + + +# Delta 0.1.0-alpha.2.fix.1 — correction de la gate `rel.N` + +## Baseline et version + +Baseline attendue : commit opérateur de `0.1.0-alpha.2`, réalisé après application de `history/0.1.0/alpha.2.md` avec statut `FAIL`. + +Le hash de ce commit n'est pas anticipé. + +Version avant application : + +```text +0.1.0-alpha.2 +``` + +Version après application : + +```text +0.1.0-alpha.2.fix.1 +``` + +## Objet + +Corriger uniquement la gate opérateur défectueuse de `alpha.2`. + +Le contenu normatif de `docs/rules/200-GOVERNANCE.md` et `docs/rules/210-WORKFLOW.md` a déjà été couvert par la preuve Python de `alpha.2` et n'est pas modifié. Le défaut constaté provient de motifs `grep -F` entourés de quotes simples alors qu'ils contenaient des apostrophes littérales, notamment `n'utilise` et `l'exploitation`. + +Le delta historique `deltas/0.1.0/alpha.2.md` reste immuable. + +## Scope + +REPLACE : + +```text +VERSION +docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md +``` + +ADD : + +```text +deltas/0.1.0/alpha.2.fix.1.md +``` + +DELETE : aucun. + +Aucun owner normatif, profil technologique, skeleton, template, script d'audit ou test n'est modifié par ce correctif. + +## Correction + +La validation du fix n'utilise plus de `grep` pour les phrases contenant apostrophes, backticks ou autres caractères shell sensibles. Ces assertions sont regroupées dans un bloc Python littéral sous heredoc quoté. + +Le fix vérifie à nouveau : + +- le history `alpha.2` en `FAIL` ; +- la convention `rel.N` sans padding ; +- la conservation des quatre artefacts historiques `rel.001*` de `0.0.5` ; +- la distinction entre tranche de clôture et commit stable `X.Y.Z` ; +- l'indépendance de `publish.001` ; +- les horizons Clippy statique et deployment/operations différés ; +- l'absence de réservation prématurée de `0.1.1` ; +- les tests/audits globaux et le scope exact du fix. + +## Validation opérateur + +Après application du history `FAIL`, commit/push de `alpha.2`, puis application du présent delta : + +```bash +test "$(cat VERSION)" = '0.1.0-alpha.2.fix.1' +git cat-file -e HEAD:history/0.1.0/alpha.2.md +test -f history/0.1.0/alpha.2.md +test -f deltas/0.1.0/alpha.2.md +test -f deltas/0.1.0/alpha.2.fix.1.md +test ! -e history/0.1.0/alpha.2.fix.1.md + +grep -A2 '^## Statut$' history/0.1.0/alpha.2.md | grep -Fx 'FAIL' +grep -Fx '' docs/rules/200-GOVERNANCE.md +grep -Fx '' docs/rules/210-WORKFLOW.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.2.md').read_text(encoding='utf-8') +assert re.search(r'## Statut\s+FAIL\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') +roadmap = Path('ROADMAP.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 phrase in ( + 'history rel.1 FAIL / PARTIAL / BLOCKED', + 'premier history rel.N[/fix.M] PASS qui établit réellement la stable', + 'La présente règle ne renomme pas `publish.001`', +): + assert phrase in workflow, phrase + +for phrase in ( + 'sous-ensemble des conventions Rust/Clippy', + "série dédiée au déploiement et à l'exploitation", + '### alpha.2.fix.1 — correction de la gate `rel.N`', +): + assert phrase in plan, 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 '- `( ) 0.1.1`' not in roadmap + +print('0.1.0 alpha.2.fix.1 rel gate audit: clean (failed gate preserved, rel.N content reconfirmed, shell-sensitive assertions 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.2.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.2.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.2` est conservé historiquement ; +- `docs/rules/200-GOVERNANCE.md` et `docs/rules/210-WORKFLOW.md` ne sont pas modifiés par le fix ; +- le delta historique `alpha.2.md` n'est pas réécrit ; +- aucun élément du handoff automatique réservé à `alpha.3` n'est absorbé dans le correctif ; +- aucun profil Web, Java/Android, WASM, Tauri ou serveur n'est ajouté ou modifié. + +## Transition + +### PASS + +Produire `history/0.1.0/alpha.2.fix.1.md`, l'appliquer puis committer/pousser le fix. Dans la même réponse, reprendre la trajectoire normale avec `0.1.0-alpha.3`, consacré au handoff automatique des commandes opérateur. + +Après remise du history, fournir spontanément le bloc Git exact permettant de fermer `alpha.2.fix.1` avant application de `alpha.3`. + +### FAIL + +Consigner le diagnostic réel dans `history/0.1.0/alpha.2.fix.1.md` et rester dans `alpha.2.fix.M`. Le scope MUST rester limité à la correction de la gate `rel.N` 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 dad3568..1cf8a58 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 @@ -173,14 +173,22 @@ La stable `v0.0.5`, son rapport post-tag, les owners normatifs, profils, templat ### alpha.2 — clôture stable et identité `rel.N` -Modifier les owners de gouvernance/workflow nécessaires pour : +Statut opérateur : **FAIL**. -- remplacer la convention future `rel.001` par `rel.1` ; -- préserver l'immutabilité des anciennes releases ; -- définir le message de commit des tranches de clôture échouées ; -- définir que le commit qui obtient finalement le `PASS` stable se nomme `X.Y.Z` par défaut avant création de `vX.Y.Z`. +Le contenu normatif prévu a été matérialisé et le contrôle structurel spécifique a confirmé `rel.N` sans padding, la conservation des historiques `rel.001*` et l'identité explicite du commit stable. La gate livrée contenait toutefois des commandes `grep -F` entourées de quotes simples alors que certains motifs contenaient eux-mêmes des apostrophes (`n'utilise`, `l'exploitation`). Le shell a donc mal interprété plusieurs contrôles textuels. -Aucun changement technologique dans cette tranche. +Le défaut appartient à la gate opérateur, pas aux owners `200-GOVERNANCE` / `210-WORKFLOW`. Le delta `alpha.2.md` reste immuable. + +### alpha.2.fix.1 — correction de la gate `rel.N` + +Corriger uniquement la validation de `alpha.2` : + +- conserver `200-GOVERNANCE.md` et `210-WORKFLOW.md` inchangés ; +- remplacer les assertions shell fragiles par une vérification Python syntaxiquement sûre ; +- rejouer la suite Python complète, les audits Markdown et la preuve structurelle ; +- conserver le `FAIL` de `alpha.2` avant toute progression. + +Après PASS de ce fix, reprendre la trajectoire normale à `alpha.3`. ### alpha.3 — handoff automatique des commandes opérateur diff --git a/history/0.1.0/alpha.2.fix.1.md b/history/0.1.0/alpha.2.fix.1.md new file mode 100644 index 0000000..a2fc542 --- /dev/null +++ b/history/0.1.0/alpha.2.fix.1.md @@ -0,0 +1,92 @@ + + + +# History 0.1.0-alpha.2.fix.1 — correction de la gate `rel.N` + +## Statut + +PASS + +La gate opérateur de `0.1.0-alpha.2.fix.1` exécutée le `2026-09-26` valide la correction strictement opérationnelle de la gate `rel.N`. Le `FAIL` de `alpha.2` reste conservé comme vérité historique ; aucun owner normatif de la convention `rel.N` n'a dû être réécrit. + +## Baseline opérateur + +La tranche `0.1.0-alpha.2` a été clôturée avec son history `FAIL`, puis committée et poussée avant application du fix : + +```text +commit 62f3d25 +message 0.1.0-alpha.2 +push origin/master PASS +``` + +Après application du delta de correction, les contrôles initiaux ont confirmé : + +```text +VERSION 0.1.0-alpha.2.fix.1 +history/0.1.0/alpha.2.md présent dans HEAD et le workspace +deltas/0.1.0/alpha.2.md présent +deltas/0.1.0/alpha.2.fix.1.md présent +history/0.1.0/alpha.2.fix.1.md absent pendant la gate +docs/rules/200-GOVERNANCE.md version 5 +docs/rules/210-WORKFLOW.md version 6 +docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md version 3 +``` + +Le statut `FAIL` de `history/0.1.0/alpha.2.md` a également été retrouvé explicitement. + +## Validation opérateur observée + +La preuve Python corrigée a terminé proprement : + +```text +0.1.0 alpha.2.fix.1 rel gate audit: clean (failed gate preserved, rel.N content reconfirmed, shell-sensitive assertions safe) +``` + +Elle reconfirme notamment : + +- `rel.1` et `rel.1.fix.1` comme représentation future sans padding ; +- la règle du premier `history rel.N[/fix.M] PASS` qui établit réellement la stable ; +- la conservation de `publish.001` comme identité indépendante ; +- la présence intacte des quatre artefacts historiques `rel.001*` de `0.0.5` ; +- les horizons différés concernant le sous-ensemble statique Rust/Clippy et le futur domaine deployment/operations ; +- l'absence de réservation prématurée de `0.1.1` dans `ROADMAP.md`. + +La suite Python globale a exécuté `48` tests, tous réussis : + +```text +Ran 48 tests in 0.715s + +OK +``` + +Les audits documentaires sont propres : + +```text +Markdown header audit: clean (177 file(s)) +Markdown table audit: clean (8 table(s), 177 file(s)) +Markdown link audit: clean (163 local link(s), 177 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.2.fix.1.md +M docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md +``` + +Le scope correspond au correctif annoncé. `docs/rules/200-GOVERNANCE.md`, `docs/rules/210-WORKFLOW.md` et le delta historique `alpha.2.md` sont restés inchangés. + +## Décision + +`0.1.0-alpha.2.fix.1` est `PASS`. Aucun nouveau fix ni REPLAN n'est requis. + +La trajectoire normale reprend à : + +```text +0.1.0-alpha.3 +``` + +Cette tranche formalise la remise automatique des commandes opérateur après chaque history, l'ordre commit/push avant le delta suivant, la clôture stable avec tag et les preuves à fournir pour la vérification post-tag.