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

204 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- file: deltas/0.1.4/rc.1.md -->
<!-- version: 1 -->
# 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
```bash
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
```text
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`.