Files
pgr/deltas/0.0.5/alpha.4.md
2026-09-25 00:03:51 +02:00

222 lines
8.4 KiB
Markdown

<!-- file: deltas/0.0.5/alpha.4.md -->
<!-- version: 1 -->
# Delta 0.0.5-alpha.4 — REPLAN du lifecycle inter-release et de l'horizon
## Baseline et version
Baseline attendue : commit opérateur complet de `0.0.5-alpha.3.fix.1`, réalisé après application de `history/0.0.5/alpha.3.fix.1.md` avec statut `PASS`.
Le hash de ce futur commit n'est pas anticipé.
Version avant application :
```text
0.0.5-alpha.3.fix.1
```
Version après application :
```text
0.0.5-alpha.4
```
## Rôle de la tranche
`alpha.4` est un `REPLAN` déclenché après la gate réussie du fix précédent. Il traite un besoin de gouvernance général découvert en relisant le plan `0.0.5`, `ROADMAP.md` et les historiques de conception PGR `0.0.1` à `0.0.4` : les responsabilités de fermeture sont connues séparément mais ne sont pas encore reliées par un contrat explicite de plan, et l'horizon des versions futures ne possède pas de mécanisme de revue.
La tranche ne remet pas en cause `alpha.3.fix.1`, ne commence pas le chantier Rust de façade et ne matérialise aucun profil Tauri.
## Scope
REPLACE :
```text
VERSION
ROADMAP.md
docs/000-README.md
docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
docs/rules/200-GOVERNANCE.md
docs/rules/210-WORKFLOW.md
docs/rules/300-DOCUMENTATION.md
docs/skeletons/001-PROJECT_GOVERNANCE_FOUNDATION.md
docs/templates/003-NEW_SESSION_PROMPT.md
```
ADD :
```text
docs/templates/005-RELEASE_PLAN.md
deltas/0.0.5/alpha.4.md
```
DELETE : aucun.
Le history `alpha.3.fix.1` appartient au commit baseline et n'est pas inclus dans l'archive du présent delta.
## Décisions matérialisées
### Plan de release
Un plan complexe doit désormais expliciter sa **clôture et transition** : réconciliation documentaire, `CHANGELOG`, `ROADMAP`, prompt/handoff suivant, fermeture du plan, stable et publication.
Il doit aussi indiquer si une **revue d'horizon** est nécessaire. Une cible future inconnue reste inconnue : PGR interdit d'inventer une version ou une mission uniquement pour remplir le plan.
### Revue d'horizon
`ROADMAP.md` devient explicitement une trajectoire macro engagée à horizon fini. Une revue d'horizon est déclenchée lorsque la dernière release connue approche, qu'un jalon change la trajectoire ou que les ideas/studies/décisions accumulées justifient de rediscuter la suite.
La revue peut vivre dans une session stratégique séparée sans changement de `VERSION`.
Pour PGR, l'après-`0.1.0` reste volontairement ouvert. Le plan `0.1.0` devra programmer sa propre revue avant fermeture au lieu de spéculer dès `0.0.5`.
### Continuité et productivité
Lorsque la gate courante est `PASS` et que la suite est déjà déterminée, le générateur peut remettre `history` courant et `delta` suivant dans la même réponse. Les archives restent séparées et le delta suivant reste interdit d'application avant le commit de la tranche courante.
Le message manuel après publication devient spontané lorsque la prochaine cible est connue. S'il existe une preuve post-tag externe requise, la consigne finale indique explicitement qu'elle doit être fournie avec l'archive taggée.
### Pattern de plan
`docs/templates/005-RELEASE_PLAN.md` fournit une forme courte réutilisable pour KSP, Games et les futurs projets : mission, état acquis/ouvert, scope, validation, forecast, déclencheurs de REPLAN, clôture/transition et revue d'horizon.
Le pattern ne crée pas un journal de revisions obligatoire ; les deltas/histories restent la trace détaillée.
## Replan de 0.0.5
L'ancien forecast est décalé :
```text
alpha.4 REPLAN lifecycle inter-release / horizon
alpha.5 audit Rust façade/export completeness
alpha.6 profil Tauri
alpha.7 décision skeleton Tauri
beta.1 réconciliation intégrée
rc.1 candidate gelée / CHANGELOG / ROADMAP / prompt 006
stable 0.0.5 + publish.001 séparé
```
Aucun ancien objectif n'est abandonné par ce décalage.
## Validation opérateur
Après application du history `PASS` de `alpha.3.fix.1`, commit/push de ce fix, puis application du présent delta :
```bash
test "$(cat VERSION)" = '0.0.5-alpha.4'
test -f history/0.0.5/alpha.3.fix.1.md
test -f deltas/0.0.5/alpha.4.md
test -f docs/templates/005-RELEASE_PLAN.md
test ! -e history/0.0.5/alpha.4.md
grep -A2 '^## Statut$' history/0.0.5/alpha.3.fix.1.md | grep -Fx 'PASS'
grep -Fx '<!-- version: 2 -->' docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
grep -Fx '<!-- version: 3 -->' docs/rules/200-GOVERNANCE.md
grep -Fx '<!-- version: 5 -->' docs/rules/210-WORKFLOW.md
grep -Fx '<!-- version: 4 -->' docs/rules/300-DOCUMENTATION.md
grep -Fx '<!-- version: 6 -->' ROADMAP.md
grep -Fx '<!-- version: 2 -->' docs/templates/003-NEW_SESSION_PROMPT.md
grep -Fx '<!-- version: 1 -->' docs/templates/005-RELEASE_PLAN.md
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
python3 -B - <<'PY'
from pathlib import Path
import re
history = Path('history/0.0.5/alpha.3.fix.1.md').read_text(encoding='utf-8')
assert re.search(r'## Statut\s+PASS\s', history)
plan = Path('docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md').read_text(encoding='utf-8')
for phrase in (
'## REPLAN alpha.4 — lifecycle inter-release et horizon',
'## Clôture et transition',
'## Revue d\'horizon',
'### alpha.5 — audit Rust de façade/export completeness',
'### alpha.6 — premier profil framework : Tauri',
'### alpha.7 — décision de skeleton Tauri',
):
assert phrase in plan, phrase
workflow = Path('docs/rules/210-WORKFLOW.md').read_text(encoding='utf-8')
for phrase in (
'clôture et transition',
'revue d\'horizon',
'archive history de la tranche courante',
'archive delta de la tranche suivante',
'MUST remettre spontanément',
'preuve future extérieure au tag',
):
assert phrase in workflow, phrase
doc = Path('docs/rules/300-DOCUMENTATION.md').read_text(encoding='utf-8')
for phrase in (
'### Revue d\'horizon',
'Une roadmap à horizon fini est valide.',
'roadmap ou plan lorsqu\'un engagement de réalisation existe',
):
assert phrase in doc, phrase
roadmap = Path('ROADMAP.md').read_text(encoding='utf-8')
assert '## Horizon après `0.1.0`' in roadmap
assert 'L\'horizon est volontairement ouvert.' in roadmap
assert '0.2.0' in roadmap # cité uniquement comme version à ne pas réserver arbitrairement
template = Path('docs/templates/005-RELEASE_PLAN.md').read_text(encoding='utf-8')
for phrase in ('## Contrat minimal', '## Clôture et transition', '## Revue d\'horizon', '## Critère de sortie'):
assert phrase in template, phrase
manual = Path('docs/templates/003-NEW_SESSION_PROMPT.md').read_text(encoding='utf-8')
assert 'doit être remis spontanément' in manual
assert 'horizon reste ouvert' in manual
print('0.0.5 alpha.4 lifecycle audit: clean (closure assigned, horizon review explicit, deterministic handoff optimized)')
PY
git diff --check
git add VERSION ROADMAP.md docs/000-README.md \
docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md \
docs/rules/200-GOVERNANCE.md docs/rules/210-WORKFLOW.md \
docs/rules/300-DOCUMENTATION.md \
docs/skeletons/001-PROJECT_GOVERNANCE_FOUNDATION.md \
docs/templates/003-NEW_SESSION_PROMPT.md docs/templates/005-RELEASE_PLAN.md \
deltas/0.0.5/alpha.4.md
git diff --cached --check
git status --short
```
La sortie Git attendue avant ajout du history `alpha.4` est exactement :
```text
M ROADMAP.md
M VERSION
A deltas/0.0.5/alpha.4.md
M docs/000-README.md
M docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
M docs/rules/200-GOVERNANCE.md
M docs/rules/210-WORKFLOW.md
M docs/rules/300-DOCUMENTATION.md
M docs/skeletons/001-PROJECT_GOVERNANCE_FOUNDATION.md
M docs/templates/003-NEW_SESSION_PROMPT.md
A docs/templates/005-RELEASE_PLAN.md
```
## Transition
### PASS
Créer/appliquer `history/0.0.5/alpha.4.md`, committer/pousser `0.0.5-alpha.4`, puis poursuivre le forecast révisé à `0.0.5-alpha.5` pour l'audit Rust de façade/export completeness.
### FAIL
Rester dans `0.0.5-alpha.4.fix.M` tant que le défaut concerne le lifecycle inter-release ou la documentation livrée par cette tranche. Si la revue révèle qu'un autre chantier substantiel doit être absorbé avant l'audit Rust, refaire explicitement le REPLAN plutôt que l'introduire dans un fix.