Files
pgr/deltas/0.0.5/alpha.1.md
2026-09-24 20:43:57 +02:00

194 lines
8.4 KiB
Markdown

<!-- file: deltas/0.0.5/alpha.1.md -->
<!-- version: 1 -->
# Delta 0.0.5-alpha.1 — réconciliation des baselines et cadrage
## Baseline et sources
Baseline PGR : archive source fournie `pgr-v0.0.4.zip`, déclarée téléchargée depuis le tag Gitea `v0.0.4`, accompagnée du rapport externe `pgr-0.0.4-publish.001-report.md` avec statut `PASS`.
SHA-256 vérifié :
```text
pgr-v0.0.4.zip 7137bb084f017362323a2043d13ba71490be15b8786adc8d645981bf455b80ae
khadhroony-solana-project-v0.3.16.zip db3cc1b3fc3fb07ee864b02e2a7346c673d4cf63b33e8e872aca6c6458856ca0
games-v0.3.5.zip 5f5fdee1a271386766d059657d6eaa831acdc263b3e722fed738808335c0a105
```
Les deux archives externes sont des corpus autoritaires de réconciliation pour cette session, pas des projets déjà gouvernés par PGR. Elles ne sont ni modifiées ni incorporées à l'archive delta.
Version avant application :
```text
0.0.4
```
Version après application :
```text
0.0.5-alpha.1
```
## Objet
Exécuter la gate de cadrage imposée par `prompts/005-V0_0_5_START_PROMPT.md` : vérifier indépendamment la stable PGR et sa preuve post-tag, contrôler les deux snapshots externes fournis, inventorier leurs responsabilités et audits, puis classer les écarts avant toute modification normative importante.
L'analyse détaillée vit dans `docs/studies/001-KSP_GAMES_RECONCILIATION.md`. Elle confirme que KSP `v0.3.16` et Games `v0.3.5` n'ont pas encore adopté PGR et ne doivent donc pas être jugés comme des projets non conformes. La plupart des mécanismes de gouvernance, documentation, validation et Rust/Cargo observés sont déjà correctement possédés par PGR.
Quatre axes communs restent suffisamment étayés pour le plan `0.0.5` : contrat générique des prompts versionnés, pattern facultatif de contrats de fichiers/familles, audit Rust de façade/export completeness, et Tauri comme premier candidat réel à la famille framework `700`.
Aucun de ces axes n'est matérialisé normativement dans `alpha.1`. Web/Vite/WASM, JNI, les audits composites et les règles métier ou de distribution spécifiques restent différés ou locaux.
## Vérifications d'intake déjà exécutées
Le ZIP PGR est lisible, possède une racine unique `pgr/`, `139` fichiers et `28` répertoires, sans doublon, collision de casse, chemin dangereux, lien symbolique ni `.git`. Son hash concorde avec le rapport post-tag.
Les deux corpus externes passent les contrôles ZIP équivalents. Leurs audits statiques fournis ont également été exécutés avec succès : audits Rust généraux/export/workspace et tableaux Markdown pour KSP ; audits Rust généraux/export/workspace, tableaux Markdown et distribution layout pour Games.
Sur la stable PGR extraite, les `15` tests Python passent, les trois audits Markdown sont propres et les cinq TOML Rust/Cargo se parsèrent. La toolchain `cargo` n'est pas disponible dans l'environnement de préparation ; aucune commande Cargo externe n'est donc présentée comme exécutée.
## Scope
REPLACE :
```text
VERSION
README.md
docs/000-README.md
```
ADD :
```text
docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
docs/studies/000-README.md
docs/studies/001-KSP_GAMES_RECONCILIATION.md
deltas/0.0.5/alpha.1.md
```
DELETE : aucun.
L'archive delta contient uniquement ces sept fichiers complets avec leurs chemins relatifs. Aucun history, règle normative, script, template technique, profil framework, skeleton ou modification KSP/Games n'appartient à cette tranche.
`ROADMAP.md` annonce déjà `0.0.5` comme planifiée et `CHANGELOG.md` reste limité aux releases publiées ; aucun changement cérémoniel de ces deux fichiers n'est requis ici.
## Validation opérateur
Après application sur le commit stable `0.0.4`, depuis la racine du dépôt :
```bash
test "$(cat VERSION)" = '0.0.5-alpha.1'
test -f docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
test -f docs/studies/000-README.md
test -f docs/studies/001-KSP_GAMES_RECONCILIATION.md
test -f deltas/0.0.5/alpha.1.md
test ! -e history/0.0.5/alpha.1.md
grep -Fx '<!-- version: 12 -->' README.md
grep -Fx '<!-- version: 10 -->' docs/000-README.md
grep -F '005-V0_0_5_RECONCILIATION_PLAN.md' README.md docs/000-README.md
grep -F '001-KSP_GAMES_RECONCILIATION.md' README.md docs/000-README.md docs/studies/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
import tomllib
expected_hashes = {
'pgr-v0.0.4.zip': '7137bb084f017362323a2043d13ba71490be15b8786adc8d645981bf455b80ae',
'khadhroony-solana-project-v0.3.16.zip': 'db3cc1b3fc3fb07ee864b02e2a7346c673d4cf63b33e8e872aca6c6458856ca0',
'games-v0.3.5.zip': '5f5fdee1a271386766d059657d6eaa831acdc263b3e722fed738808335c0a105',
}
study = Path('docs/studies/001-KSP_GAMES_RECONCILIATION.md').read_text(encoding='utf-8')
plan = Path('docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md').read_text(encoding='utf-8')
for name, digest in expected_hashes.items():
assert name in study or name in plan, name
assert digest in study or digest in plan, digest
for path in (
Path('templates/rust-cargo/rustfmt.toml'),
Path('templates/rust-cargo/clippy.toml'),
Path('templates/rust-cargo/.cargo/config.toml'),
Path('templates/rust-cargo/Cargo.toml'),
Path('templates/rust-cargo/crates/project-core-lib/Cargo.toml'),
):
with path.open('rb') as stream:
tomllib.load(stream)
expected_counts = {'0.0.1': 12, '0.0.2': 12, '0.0.3': 10, '0.0.4': 9}
for release, expected in expected_counts.items():
deltas = {path.name for path in Path('deltas', release).glob('*.md')}
histories = {path.name for path in Path('history', release).glob('*.md')}
assert len(deltas) == expected, (release, len(deltas))
assert deltas == histories, (release, sorted(deltas ^ histories))
statuses_004 = {}
for path in Path('history/0.0.4').glob('*.md'):
text = path.read_text(encoding='utf-8')
match = re.search(r'## Statut\s+(PASS|FAIL|PARTIAL|BLOCKED)\s', text)
assert match is not None, path
statuses_004[path.name] = match.group(1)
assert statuses_004['alpha.4.md'] == 'FAIL'
assert statuses_004['alpha.4.fix.1.md'] == 'PASS'
assert statuses_004['beta.1.md'] == 'FAIL'
assert statuses_004['beta.1.fix.1.md'] == 'PASS'
assert statuses_004['rc.1.md'] == 'PASS'
assert statuses_004['rel.001.md'] == 'PASS'
assert 'ne sont pas encore gouvernés par PGR' in plan
assert 'aucune migration de KSP ou Games' in plan
assert 'Tauri' in plan
assert 'audit_rust_export_completeness.py' in study
print('0.0.5 alpha.1 structural audit: clean (43 prior pairs, 5 TOML parsed, reconciliation sources recorded)')
PY
git diff --check
git add VERSION README.md docs/000-README.md \
docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md \
docs/studies/000-README.md docs/studies/001-KSP_GAMES_RECONCILIATION.md \
deltas/0.0.5/alpha.1.md
git diff --cached --check
git status --short
```
Le scope indexé attendu avant ajout du history est :
```text
M README.md
M VERSION
A deltas/0.0.5/alpha.1.md
M docs/000-README.md
A docs/plans/005-V0_0_5_RECONCILIATION_PLAN.md
A docs/studies/000-README.md
A docs/studies/001-KSP_GAMES_RECONCILIATION.md
```
La revue opérateur doit en outre confirmer que :
- les trois archives/hashes consignés correspondent bien aux sources autoritaires fournies pour cette reprise ;
- l'étude traite KSP et Games comme corpus non encore migrés vers PGR ;
- le plan n'atteste aucun profil Tauri, audit de façade ou template avant sa tranche dédiée ;
- les conventions métier et plateforme locales ne sont pas promues en règles PGR par simple similarité ;
- aucune modification des deux projets externes n'est cachée dans le delta.
## Transition
### PASS
Rédiger et livrer séparément `history/0.0.5/alpha.1.md` avec les résultats réellement observés ; l'appliquer et committer la tranche. Préparer seulement ensuite `0.0.5-alpha.2` pour le contrat générique des prompts versionnés.
### FAIL
Consigner le résultat réel dans le history de `alpha.1`, puis corriger le cadrage dans `0.0.5-alpha.1.fix.1` ou produire un REPLAN motivé. Aucun contenu de `alpha.2` ne doit être absorbé silencieusement dans un fix.