Files
pgr/deltas/0.1.4/rel.1.md
2026-09-29 18:11:44 +02:00

7.3 KiB
Raw Permalink Blame History

Delta 0.1.4 rel.1 — promotion stable pré-tag

Baseline et version

Baseline : 0.1.4-rc.1, avec history/0.1.4/rc.1.md appliqué et committé. Ce delta MUST NOT être appliqué avant ce commit.

Version avant application :

0.1.4-rc.1

Version après application :

0.1.4

rel.1 identifie la clôture opérationnelle ; il ne fait pas partie de la version SemVer du produit.

Objet

Promouvoir mécaniquement la RC validée vers la stable 0.1.4 sans rouvrir le scope Tauri et sans commencer 0.1.5.

La tranche finalise uniquement la présentation et les métadonnées de release : version stable, roadmap terminée, changelog sans marqueur candidate, README/index en état stable et plan 010 historique. Aucun owner Tauri, skeleton, étude technique, audit Python ou règle normative réservée à 0.1.5 n'est modifié.

La validation de cette tranche est pré-tag. Le tag v0.1.4, son archive source Gitea et le rapport pgr-0.1.4-publish.001-report.md ne sont pas déclarés existants par ce delta. Ils suivent uniquement un history rel.1 PASS, le commit stable 0.1.4 et la publication réelle du tag.

Scope

REPLACE :

VERSION
README.md
ROADMAP.md
CHANGELOG.md
docs/000-README.md
docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md

ADD :

deltas/0.1.4/rel.1.md

DELETE : aucun.

Le history rc.1 est livré séparément. Le history rel.1 sera produit uniquement après la gate opérateur.

Validation opérateur pré-tag

Après application sur le commit contenant history/0.1.4/rc.1.md :

test "$(cat VERSION)" = '0.1.4'
git cat-file -e HEAD:history/0.1.4/rc.1.md
test -f history/0.1.4/rc.1.md
test -f deltas/0.1.4/rel.1.md
test -f prompts/011-V0_1_5_START_PROMPT.md
test ! -e history/0.1.4/rel.1.md

grep -A2 '^## Statut$' history/0.1.4/rc.1.md | grep -Fx 'PASS'
grep -Fx '<!-- version: 27 -->' README.md
grep -Fx '<!-- version: 17 -->' ROADMAP.md
grep -Fx '<!-- version: 19 -->' CHANGELOG.md
grep -Fx '<!-- version: 46 -->' docs/000-README.md
grep -Fx '<!-- version: 6 -->' docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md
grep -F -- '- `(x) 0.1.4`' ROADMAP.md
grep -Fx '## 0.1.4' CHANGELOG.md
grep -F 'La stable `0.1.4` réexamine le domaine Tauri' README.md
grep -F 'plan historique de la stable `0.1.4`' docs/000-README.md

python3 -B - <<'PYGATE'
from pathlib import Path
import re

expected = {
    'alpha.1.md': 'PASS',
    'alpha.2.md': 'FAIL',
    'alpha.2.fix.1.md': 'PASS',
    'alpha.3.md': 'PASS',
    'beta.1.md': 'PASS',
    'rc.1.md': 'PASS',
}

for name, status in expected.items():
    delta = Path('deltas/0.1.4', name)
    history = Path('history/0.1.4', name)
    assert delta.is_file(), name
    assert history.is_file(), name
    text = history.read_text(encoding='utf-8')
    assert re.search(rf'## Statut\s+{status}\s', text), (name, status)

pending = {path.name for path in Path('deltas/0.1.4').glob('*.md')} - {
    path.name for path in Path('history/0.1.4').glob('*.md')
}
assert pending == {'rel.1.md'}, pending

roadmap = Path('ROADMAP.md').read_text(encoding='utf-8')
assert '- `(x) 0.1.4`' in roadmap
for version in ('0.1.5', '0.1.6', '0.1.7', '0.1.8'):
    assert f'- `( ) {version}`' in roadmap, version
assert '- `( ) 0.1.9`' not in roadmap

changelog = Path('CHANGELOG.md').read_text(encoding='utf-8')
assert '## 0.1.4' in changelog.splitlines()
assert '## 0.1.4 (candidate)' not in changelog
section = changelog.split('## 0.1.4', 1)[1].split('## 0.1.3', 1)[0]
for phrase in (
    'skeleton Tauri',
    'commandes, permissions et capabilities',
    '004-TAURI.md',
    'audit réutilisable d’hygiène texte',
    '0.1.5',
    '0.1.8',
):
    assert phrase in section, phrase
for forbidden in ('alpha.1', 'alpha.2', 'alpha.3', 'beta.1', 'rc.1', 'rel.1'):
    assert forbidden not in section, forbidden

readme = Path('README.md').read_text(encoding='utf-8')
for phrase in (
    'La stable `0.1.4` réexamine le domaine Tauri',
    'skeleton organisationnel `004-TAURI.md`',
    'audit réutilisable d’hygiène texte',
    '0.1.5',
    '0.1.6',
    '0.1.7',
):
    assert phrase in readme, phrase

index = Path('docs/000-README.md').read_text(encoding='utf-8')
assert 'plan historique de la stable `0.1.4`' in index
assert 'handoff de la stable `0.1.4` vers `0.1.5-alpha.1`' in index

plan = Path('docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md').read_text(encoding='utf-8')
for phrase in (
    'Plan historique de la stable `0.1.4`',
    '## Gate `rc.1` acquise et promotion stable',
    'history/0.1.4/rel.1.md',
    'pgr-0.1.4-publish.001-report.md',
    'commit stable `0.1.4`',
):
    assert phrase in plan, phrase

prompt = Path('prompts/011-V0_1_5_START_PROMPT.md').read_text(encoding='utf-8')
for phrase in (
    'tag Gitea `v0.1.4`',
    'pgr-0.1.4-publish.001-report.md',
    '0.1.5-alpha.1',
    '004-V0_1_4_HORIZON_REVIEW.md',
    'forte recommandation non obligatoire',
    'SaseDev Knowledge',
    'réservée à `0.1.6`',
    'réservée à `0.1.7`',
    'réservés à `0.1.8`',
):
    assert phrase in prompt, phrase

for path, version in (
    ('docs/rules/710-TAURI.md', 7),
    ('docs/skeletons/004-TAURI.md', 1),
    ('docs/studies/002-TAURI_SKELETON_DECISION.md', 4),
    ('docs/studies/004-V0_1_4_HORIZON_REVIEW.md', 1),
    ('RULES.md', 14),
    ('docs/rules/230-ADOPTION.md', 1),
    ('docs/rules/400-VALIDATION.md', 1),
):
    lines = Path(path).read_text(encoding='utf-8').splitlines()
    assert lines[1] == f'<!-- version: {version} -->', (path, lines[1])

assert not Path('docs/templates/011-TAURI.md').exists()
assert not Path('docs/validation/006-TAURI_VALIDATION.md').exists()

print(
    '0.1.4 rel.1 stable gate audit: clean '
    '(6 prior histories including expected alpha.2 FAIL/fix PASS, rel.1 pending, stable Tauri presentation and 0.1.5 handoff coherent)'
)
PYGATE

python3 -B -m unittest discover -s tests -v

python3 -B scripts/audit_text_hygiene.py \
    VERSION README.md RULES.md ROADMAP.md CHANGELOG.md \
    docs deltas history prompts scripts tests templates .gitignore .settings

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 README.md ROADMAP.md CHANGELOG.md \
    deltas/0.1.4/rel.1.md \
    docs/000-README.md \
    docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md

git diff --cached --check
git status --short

Scope Git attendu

M  CHANGELOG.md
M  README.md
M  ROADMAP.md
M  VERSION
A  deltas/0.1.4/rel.1.md
M  docs/000-README.md
M  docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md

Transition après PASS

Si cette gate pré-tag est PASS :

  1. produire history/0.1.4/rel.1.md avec les preuves opérateur réelles ;
  2. appliquer ce history ;
  3. git add -A, git diff --cached --check, puis committer 0.1.4 sans suffixe rel.1 ;
  4. pousser master ;
  5. vérifier un workspace propre ;
  6. créer et pousser le tag annoté v0.1.4 ;
  7. télécharger l'archive Gitea du tag et produire pgr-0.1.4-publish.001-report.md après vérification indépendante ;
  8. seulement après publish.001 PASS, ouvrir la session 0.1.5 avec prompts/011-V0_1_5_START_PROMPT.md.