Files
pgr/deltas/0.1.0/alpha.2.fix.1.md

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.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 :

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 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.