# 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 '' docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md grep -Fx '' docs/rules/200-GOVERNANCE.md grep -Fx '' docs/rules/210-WORKFLOW.md grep -Fx '' docs/rules/300-DOCUMENTATION.md grep -Fx '' ROADMAP.md grep -Fx '' docs/templates/003-NEW_SESSION_PROMPT.md grep -Fx '' 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.