Files
pgr/deltas/0.1.4/rc.1.md
2026-09-29 18:01:37 +02:00

7.5 KiB
Raw Blame History

Delta 0.1.4-rc.1 — freeze Tauri et revue d’horizon

Objet

Geler le scope Tauri validé par beta.1, préparer le changelog candidat et exécuter la revue d’horizon transversale exigée par le plan avant de générer le prochain start prompt.

La RC ne corrige pas encore la sémantique SHOULD, le contrat d’autonomie ou la frontière PGR / Knowledge : elle décide explicitement qu’ils forment la prochaine release 0.1.5 et décale les adoptions Games/KSP afin qu’elles utilisent ensuite ce contrat stabilisé.

Préconditions

  • 0.1.4-beta.1 est validée PASS et son history est présent ;
  • 710-TAURI.md reste en révision 7 et 004-TAURI.md en révision 1 ;
  • aucun template technique Tauri ni 006-TAURI_VALIDATION.md n’est requis ;
  • les trois questions transversales enregistrées dans le plan doivent être décidées avant création du prompt suivant ;
  • les archives delta/history restent relatives directement à la racine du dépôt.

Modifications

  • VERSION passe à 0.1.4-rc.1 ;
  • CHANGELOG.md reçoit l’entrée 0.1.4 (candidate) sans chronologie de tranches ;
  • ROADMAP.md enregistre la revue d’horizon : 0.1.5 gouvernance/autonomie, 0.1.6 Games, 0.1.7 KSP, 0.1.8 audits Rust ;
  • docs/studies/004-V0_1_4_HORIZON_REVIEW.md matérialise la décision et ses limites ;
  • prompts/011-V0_1_5_START_PROMPT.md prépare la prochaine release à partir d’une future stable v0.1.4 réellement publiée ;
  • le plan et les index sont mis à jour pour refléter le freeze et le handoff ;
  • aucun owner normatif transversal n’est encore modifié en RC.

Gate opérateur

cat VERSION

test -f history/0.1.4/beta.1.md
grep -A2 '^## Statut$' history/0.1.4/beta.1.md | grep -Fx 'PASS'

test -f docs/studies/004-V0_1_4_HORIZON_REVIEW.md
test -f prompts/011-V0_1_5_START_PROMPT.md
test ! -e history/0.1.4/rc.1.md

grep -Fx '<!-- version: 18 -->' CHANGELOG.md
grep -Fx '<!-- version: 16 -->' ROADMAP.md
grep -Fx '<!-- version: 45 -->' docs/000-README.md
grep -Fx '<!-- version: 5 -->' docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md
grep -Fx '<!-- version: 5 -->' docs/studies/000-README.md
grep -Fx '<!-- version: 1 -->' docs/studies/004-V0_1_4_HORIZON_REVIEW.md
grep -Fx '<!-- version: 1 -->' prompts/011-V0_1_5_START_PROMPT.md

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

assert Path('VERSION').read_text(encoding='utf-8').strip() == '0.1.4-rc.1'

expected_statuses = {
    'alpha.1.md': 'PASS',
    'alpha.2.md': 'FAIL',
    'alpha.2.fix.1.md': 'PASS',
    'alpha.3.md': 'PASS',
    'beta.1.md': 'PASS',
}
for name, status in expected_statuses.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 = {p.name for p in Path('deltas/0.1.4').glob('*.md')} - {
    p.name for p in Path('history/0.1.4').glob('*.md')
}
assert pending == {'rc.1.md'}, pending

for path, version in (
    ('docs/rules/710-TAURI.md', 7),
    ('docs/skeletons/004-TAURI.md', 1),
    ('docs/studies/002-TAURI_SKELETON_DECISION.md', 4),
    ('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])

changelog = Path('CHANGELOG.md').read_text(encoding='utf-8')
assert '## 0.1.4 (candidate)' in changelog
section = changelog.split('## 0.1.4 (candidate)', 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

roadmap = Path('ROADMAP.md').read_text(encoding='utf-8')
for phrase in (
    '`( ) 0.1.4` — domaine Tauri',
    '`( ) 0.1.5` — sémantique normative et autonomie',
    '`( ) 0.1.6` — adoption réelle de PGR par `sasedev-games`',
    '`( ) 0.1.7` — adoption réelle de PGR par `khadhroony-solana-project`',
    '`( ) 0.1.8` — audits Python read-only',
):
    assert phrase in roadmap, phrase
assert '`( ) 0.1.9`' not in roadmap
assert "skeleton Tauri jusqu'au réexamen 0.1.4" not in roadmap

study = Path('docs/studies/004-V0_1_4_HORIZON_REVIEW.md').read_text(encoding='utf-8')
for phrase in (
    'forte recommandation',
    'MUST NOT faire échouer à lui seul une gate',
    'baseline locale du projet',
    'règles locales = autorité des sessions/releases suivantes',
    'PGR MUST rester auto-suffisant',
    'une release de gouvernance/autonomie doit précéder les adoptions Games/KSP',
    '0.1.8   audits Rust/Clippy read-only',
):
    assert phrase in study, 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',
    'ne doivent ni rechercher automatiquement « la dernière version de PGR »',
    '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

plan = Path('docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md').read_text(encoding='utf-8')
for phrase in (
    '## Gate `beta.1` acquise',
    '## Revue d’horizon préparée en `rc.1`',
    '0.1.5   sémantique normative + autonomie + frontière PGR/Knowledge',
    'Le prompt `011` transmet explicitement leur réexamen à `0.1.5-alpha.1`.',
):
    assert phrase in plan, phrase

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

print(
    '0.1.4 rc.1 integration audit: clean '
    '(beta PASS, Tauri frozen, horizon reordered to governance 0.1.5 before Games/KSP, prompt 011 verified)'
)
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 CHANGELOG.md ROADMAP.md \
    deltas/0.1.4/rc.1.md \
    docs/000-README.md \
    docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md \
    docs/studies/000-README.md \
    docs/studies/004-V0_1_4_HORIZON_REVIEW.md \
    prompts/011-V0_1_5_START_PROMPT.md

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

Scope Git attendu

M  CHANGELOG.md
M  ROADMAP.md
M  VERSION
A  deltas/0.1.4/rc.1.md
M  docs/000-README.md
M  docs/plans/010-V0_1_4_TAURI_REEVALUATION_PLAN.md
M  docs/studies/000-README.md
A  docs/studies/004-V0_1_4_HORIZON_REVIEW.md
A  prompts/011-V0_1_5_START_PROMPT.md

Transition

Si la gate est PASS, produire history/0.1.4/rc.1.md, committer/pousser 0.1.4-rc.1, puis préparer la promotion mécanique rel.1 sans rouvrir le scope Tauri ni commencer 0.1.5.