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

8.4 KiB

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é :

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 :

0.0.4

Version après application :

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 :

VERSION
README.md
docs/000-README.md

ADD :

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 :

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 :

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.