Files
pgr/deltas/0.0.5/alpha.2.md
2026-09-24 21:21:44 +02:00

180 lines
7.5 KiB
Markdown

<!-- file: deltas/0.0.5/alpha.2.md -->
<!-- version: 1 -->
# Delta 0.0.5-alpha.2 — contrat générique des prompts de démarrage
## Baseline et version
Baseline attendue : commit opérateur de `0.0.5-alpha.1`, réalisé après application de `history/0.0.5/alpha.1.md` avec statut `PASS`.
Le hash de ce commit n'est volontairement pas anticipé : le history `alpha.1` et le présent delta peuvent être livrés dans le même échange, mais restent deux archives séparées et le delta `alpha.2` MUST NOT être appliqué avant le commit de `alpha.1`.
Version avant application :
```text
0.0.5-alpha.1
```
Version après application :
```text
0.0.5-alpha.2
```
## Objet
Exécuter la deuxième tranche du plan `0.0.5` en renforçant l'owner `docs/rules/210-WORKFLOW.md` pour les prompts de démarrage versionnés.
Les prompts PGR récents et les baselines KSP/Games montrent qu'un bon prompt de reprise ne se limite pas à nommer une baseline et une mission : il doit permettre de reconstruire explicitement l'état utile, les sources à lire, les décisions déjà acquises, les limites de scope, la première gate et la trajectoire de validation sans réimporter toute la documentation du projet.
La tranche généralise ce contrat sémantique sans copier la structure exhaustive des prompts KSP/Games. Elle ne crée ni nouveau template manuel ni nouveau type d'artefact.
## Scope
REPLACE :
```text
VERSION
docs/rules/000-README.md
docs/rules/210-WORKFLOW.md
```
ADD :
```text
deltas/0.0.5/alpha.2.md
```
DELETE : aucun.
L'archive delta contient uniquement ces quatre fichiers complets avec leurs chemins relatifs. Elle ne contient pas `history/0.0.5/alpha.1.md`, livré séparément pour clôturer la tranche précédente, ni `history/0.0.5/alpha.2.md`, qui sera produit après la gate opérateur.
Le plan `docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md`, l'étude `docs/studies/001-KSP_GAMES_RECONCILIATION.md` et `docs/templates/003-NEW_SESSION_PROMPT.md` restent inchangés : cette tranche exécute leur trajectoire et préserve explicitement la séparation entre prompt versionné et message manuel de nouvelle session.
## Contrat matérialisé
`docs/rules/210-WORKFLOW.md` porte désormais un contrat réutilisable des prompts de démarrage versionnés couvrant :
- baseline autoritaire, cible et première tranche ;
- ordre de lecture nécessaire à une reprise fiable ;
- état déjà acquis et traçabilité des décisions conservées ;
- mission et résultat attendu ;
- scope et hors-scope ;
- décisions gelées et questions ouvertes ;
- première gate et travaux éventuellement interdits avant sa fermeture ;
- trajectoire prévisionnelle explicitement non contraignante ;
- validation et responsabilité de la preuve ;
- comportement fail-closed lorsqu'une source externe requise manque.
Le contrat reste sémantique : il n'impose pas neuf titres littéraux ni une longueur uniforme. Les projets importants peuvent détailler leur ordre de lecture et leurs questions de cadrage ; les projets simples conservent une forme courte dès lors que les mêmes responsabilités sont couvertes.
Les règles locales de langage, plateforme, framework, architecture ou métier ne deviennent pas des règles PGR parce qu'elles apparaissent dans un prompt. Le prompt doit renvoyer vers les owners existants au lieu de les dupliquer.
`docs/templates/003-NEW_SESSION_PROMPT.md` conserve son rôle distinct : produire la courte phrase manuelle de reprise après une stable publiée. Il ne remplace pas le prompt versionné et n'est pas dupliqué par cette tranche.
## Validation opérateur
Après avoir appliqué `history/0.0.5/alpha.1.md`, committé `0.0.5-alpha.1`, puis appliqué le présent delta, depuis la racine du dépôt :
```bash
test "$(cat VERSION)" = '0.0.5-alpha.2'
test -f history/0.0.5/alpha.1.md
test -f deltas/0.0.5/alpha.2.md
test ! -e history/0.0.5/alpha.2.md
grep -Fx '<!-- version: 12 -->' docs/rules/000-README.md
grep -Fx '<!-- version: 4 -->' docs/rules/210-WORKFLOW.md
grep -F 'prompts versionnés' docs/rules/000-README.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.1.md').read_text(encoding='utf-8')
assert re.search(r'## Statut\s+PASS\s', history)
workflow = Path('docs/rules/210-WORKFLOW.md').read_text(encoding='utf-8')
required = (
'## Prompt de démarrage versionné',
'### Contrat minimal',
'baseline autoritaire et cible',
'ordre de lecture',
'état déjà acquis',
'mission et résultat attendu',
'scope et hors-scope',
'décisions gelées et questions ouvertes',
'première gate',
'trajectoire prévisionnelle',
'validation et responsabilité',
'### Sources externes et données manquantes',
'### Décisions acquises et détails locaux',
'### Création et clôture',
'003-NEW_SESSION_PROMPT.md',
)
for phrase in required:
assert phrase in workflow, phrase
for forbidden in (
'prompts/036-V0_3_17_START_PROMPT.md',
'prompts/007-V0_3_6_START_PROMPT.md',
'tokio-postgres',
'WebTransport',
'Uroburas',
):
assert forbidden not in workflow, forbidden
assert 'MUST NOT les recopier exhaustivement' in workflow
assert 'Le prompt n\'a pas à reproduire littéralement cette numérotation.' in workflow
assert 'MUST NOT autoriser à reconstituer silencieusement' in workflow
assert 'Les contraintes locales de langage, plateforme, framework, architecture ou métier restent chez leurs owners respectifs.' in workflow
manual = Path('docs/templates/003-NEW_SESSION_PROMPT.md').read_text(encoding='utf-8')
assert '<!-- version: 1 -->' in manual
assert 'une seule phrase' in manual
print('0.0.5 alpha.2 prompt contract audit: clean (versioned prompt strengthened, manual restart template unchanged)')
PY
git diff --check
git add VERSION docs/rules/000-README.md docs/rules/210-WORKFLOW.md \
deltas/0.0.5/alpha.2.md
git diff --cached --check
git status --short
```
Le scope indexé attendu avant ajout du history est :
```text
M VERSION
A deltas/0.0.5/alpha.2.md
M docs/rules/000-README.md
M docs/rules/210-WORKFLOW.md
```
La revue opérateur doit en outre confirmer que :
- le nouveau contrat décrit des responsabilités de reprise et non une liste obligatoire de titres ;
- la baseline et les sources manquantes restent fail-closed : aucun état externe n'est reconstruit depuis un souvenir ou un workspace non fourni ;
- les décisions acquises sont résumées seulement lorsqu'elles empêchent une régression utile et restent traçables vers leur owner ;
- les contraintes KSP/Games spécifiques ne sont pas aspirées dans la règle générale ;
- le template `003-NEW_SESSION_PROMPT.md` reste la forme courte post-publication et n'est ni remplacé ni dupliqué.
## Transition
### PASS
Rédiger et livrer séparément `history/0.0.5/alpha.2.md` avec les résultats réellement observés ; l'appliquer et committer la tranche. Préparer seulement ensuite `0.0.5-alpha.3` pour le pattern facultatif de contrats de fichiers/familles.
### FAIL
Consigner le résultat réel dans le history de `alpha.2`, puis corriger le contrat dans `0.0.5-alpha.2.fix.1` ou produire un REPLAN motivé. Aucun contenu de `alpha.3` ne doit être absorbé silencieusement dans un fix.