5.9 KiB
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 :
0.1.0-alpha.2
Version après application :
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 :
VERSION
docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md
ADD :
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.2enFAIL; - la convention
rel.Nsans padding ; - la conservation des quatre artefacts historiques
rel.001*de0.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 :
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 '<!-- version: 5 -->' docs/rules/200-GOVERNANCE.md
grep -Fx '<!-- version: 6 -->' docs/rules/210-WORKFLOW.md
grep -Fx '<!-- version: 3 -->' 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 :
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
FAILdealpha.2est conservé historiquement ; docs/rules/200-GOVERNANCE.mdetdocs/rules/210-WORKFLOW.mdne sont pas modifiés par le fix ;- le delta historique
alpha.2.mdn'est pas réécrit ; - aucun élément du handoff automatique réservé à
alpha.3n'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.