0.1.2-alpha.1

This commit is contained in:
2026-09-27 22:27:45 +02:00
parent 4893a04f49
commit 46a159a3bc
6 changed files with 720 additions and 4 deletions

235
deltas/0.1.2/alpha.1.md Normal file
View File

@@ -0,0 +1,235 @@
<!-- file: deltas/0.1.2/alpha.1.md -->
<!-- version: 1 -->
# Delta 0.1.2-alpha.1 — audit de stable et cadrage Java / Gradle
## Baseline et sources
Baseline PGR autoritaire : archive source téléchargée depuis le tag Gitea `v0.1.1`, accompagnée du rapport externe `pgr-0.1.1-publish.001-report.md` avec statut `PASS`.
SHA-256 vérifiés sur les fichiers réellement fournis :
```text
pgr-v0.1.1(1).zip caaf8f456f7f8520172ea7705fd0cf5c5bf0e942dc4a773410bcbe7fe4ce243a
pgr-0.1.1-publish.001-report(1).md 3eafc2767225526a6cba65b3b62a45a664b71a1f2fa049915ec243a196e14bb3
games-v0.3.6(1).zip ad6e44a1332eb7d6069cf1189d9433f0fbb8fac19c5aac9f4641ac45c1c556e8
```
Les archives locales PGR et Games comportent `(1)` dans leur nom, mais leurs empreintes correspondent exactement aux baselines canoniques `pgr-v0.1.1.zip` et `games-v0.3.6.zip` attendues par le rapport/prompt.
Version avant application :
```text
0.1.1
```
Version après application :
```text
0.1.2-alpha.1
```
## Objet
Exécuter `prompts/008-V0_1_2_START_PROMPT.md` : vérifier intégralement la stable `v0.1.1` et son rapport post-tag, auditer le corpus Games autoritaire sur Java/Gradle et ses preuves historiques, relire `520-JAVA_MAVEN_GRADLE.md`, `610-ANDROID.md` et la revue d'horizon, puis créer le plan `0.1.2` avant toute normalisation importante.
`alpha.1` reste un gate de cadrage. Aucune règle Java/Gradle, règle Android, validation spécialisée, template, skeleton ou audit nouveau n'est encore créé ou modifié.
## Résultat de l'audit d'intake
La stable PGR et son rapport post-tag concordent : SHA-256 attendu, CRC propre, racine unique `pgr/`, `256` fichiers, `36` répertoires en comptant la racine, aucun symlink, absence normale de `.git` et `VERSION=0.1.1`.
Les quatre modules de tests Python ont été rejoués par groupes et donnent `48/48 PASS`. Les audits Markdown sont propres : `231` fichiers pour les headers, `9` tables sur `231` fichiers et `267` liens locaux sur `231` fichiers. Les cinq templates TOML Rust/Cargo sont parsables.
Les `83` couples delta/history de `0.0.1` à `0.1.1` sont complets. La vérité `0.1.1` conserve `alpha.2 FAIL`, `alpha.2.fix.1 PASS`, `alpha.3.fix.1 FAIL`, `alpha.3.fix.2 PASS`, puis `rel.1 PASS`.
Le corpus Games fourni possède exactement le SHA canonique attendu, `502` fichiers et aucun symlink. Ses audits statiques principaux sont propres. Il exerce quatre sources Java canoniques sous `src/main/java/` et un projet Gradle multi-module en Groovy DSL avec ownership identifiable entre `settings.gradle`, root build, `gradle.properties`, modules et scripts Gradle communs.
Les histories Games montrent successivement une preuve avec Wrapper Gradle `9.6.0` + JDK 17, puis la décision durable et validée d'utiliser Gradle système `>= 9.6.0` avec le JDK courant. Les gates suivantes ont utilisé Temurin `25.0.4.1 LTS` et Gradle `9.7.1`, tandis que la glue Java restait explicitement source/target `17`. Cette trajectoire confirme la séparation build JDK / niveau Java et le caractère conditionnel du Wrapper sans généraliser les versions exactes.
Games n'exerce ni Maven, ni version catalog, ni tests Java génériques suffisants pour créer de nouveaux artefacts correspondants. Aucun `pom.xml`, Maven Wrapper, Gradle Wrapper ou `libs.versions.toml` n'est présent dans la stable `0.3.6`.
Les contraintes AGP, SDK/NDK, ABI/JNI, SDL3, manifests, APK/AAB, signing, AVD/devices et smokes restent explicitement hors scope : elles appartiennent à Android ou au produit Games et sont réservées à `0.1.3` pour la réévaluation PGR Android.
Le plan classe les choix observés avec `ADOPT / KEEP-LOCAL / OVERRIDE / DEFER` et retient une révision ciblée de `520` plutôt qu'une copie de Games ou une multiplication d'artefacts.
## Scope
REPLACE :
```text
VERSION
README.md
docs/000-README.md
```
ADD :
```text
docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md
deltas/0.1.2/alpha.1.md
```
DELETE : aucun.
`RULES.md`, `ROADMAP.md`, `CHANGELOG.md`, `docs/rules/520-JAVA_MAVEN_GRADLE.md`, `docs/rules/610-ANDROID.md`, les autres règles, templates, skeletons, validations, scripts, studies, prompts et histories existants restent inchangés dans `alpha.1`.
Aucun `history/0.1.2/alpha.1.md` n'est anticipé avant la gate opérateur.
## Validation opérateur
Après application sur la stable `0.1.1`, depuis la racine du dépôt :
```bash
test "$(cat VERSION)" = '0.1.2-alpha.1'
test -f docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md
test -f deltas/0.1.2/alpha.1.md
test ! -e history/0.1.2/alpha.1.md
grep -Fx '<!-- version: 20 -->' README.md
grep -Fx '<!-- version: 32 -->' docs/000-README.md
grep -F '008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md' README.md docs/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
expected = {
'0.0.1': 12,
'0.0.2': 12,
'0.0.3': 10,
'0.0.4': 9,
'0.0.5': 19,
'0.1.0': 10,
'0.1.1': 11,
}
for release, count in expected.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) == count, (release, len(deltas))
assert deltas == histories, (release, sorted(deltas ^ histories))
statuses = {}
for path in Path('history/0.1.1').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[path.name] = match.group(1)
assert statuses['alpha.2.md'] == 'FAIL'
assert statuses['alpha.2.fix.1.md'] == 'PASS'
assert statuses['alpha.3.fix.1.md'] == 'FAIL'
assert statuses['alpha.3.fix.2.md'] == 'PASS'
assert statuses['rel.1.md'] == 'PASS'
roadmap = Path('ROADMAP.md').read_text(encoding='utf-8')
assert '- `(x) 0.1.1`' in roadmap
for release in range(2, 8):
assert f'- `( ) 0.1.{release}`' in roadmap, release
assert '0.1.8' not in roadmap
assert 'skeleton Tauri jusqu\'au réexamen 0.1.4' in roadmap
prompt = Path('prompts/008-V0_1_2_START_PROMPT.md').read_text(encoding='utf-8')
for phrase in (
'Version cible : `0.1.2`',
'Première tranche attendue : `0.1.2-alpha.1`',
'ad6e44a1332eb7d6069cf1189d9433f0fbb8fac19c5aac9f4641ac45c1c556e8',
'ADOPT / KEEP-LOCAL / OVERRIDE / DEFER',
'Gradle système versus Wrapper',
'Le profil `520` possède également Maven.',
'`0.1.2` MUST NOT absorber les responsabilités',
):
assert phrase in prompt, phrase
profile = Path('docs/rules/520-JAVA_MAVEN_GRADLE.md').read_text(encoding='utf-8')
for phrase in (
'JDK utilisé pour construire',
'PGR MUST NOT ajouter un Maven Wrapper uniquement par cérémonie.',
'Un Gradle Wrapper SHOULD être versionné lorsqu\'il apporte une reproductibilité utile',
'Groovy DSL et Kotlin DSL sont tous deux reconnus.',
'`gradle clean` est une opération de maintenance',
):
assert phrase in profile, phrase
android = Path('docs/rules/610-ANDROID.md').read_text(encoding='utf-8')
for phrase in (
'Matrice AGP / Gradle / JDK',
'`compileSdk`, `targetSdk` et `minSdk`',
'ABI et code natif',
'Signing et secrets',
):
assert phrase in android, phrase
plan = Path('docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md').read_text(encoding='utf-8')
for phrase in (
'Classification initiale des décisions Games',
'`ADOPT`',
'`KEEP-LOCAL`',
'`OVERRIDE`',
'`DEFER`',
'alpha.2 — révision ciblée Java / Gradle',
'beta.1 — réconciliation et décision d\'artefacts',
'AGP 9.4.0',
'Aucun skeleton Java/Gradle ni artefact Maven nouveau n\'est prévu par défaut.',
'0.1.3 — réévaluation pratique du profil Android à partir de Games',
):
assert phrase in plan, phrase
assert Path('docs/rules/520-JAVA_MAVEN_GRADLE.md').read_text(encoding='utf-8').startswith(
'<!-- file: docs/rules/520-JAVA_MAVEN_GRADLE.md -->\n<!-- version: 2 -->'
)
assert Path('docs/rules/610-ANDROID.md').read_text(encoding='utf-8').startswith(
'<!-- file: docs/rules/610-ANDROID.md -->\n<!-- version: 2 -->'
)
print('0.1.2 alpha.1 structural audit: clean (83 prior pairs, Games classified, Android 0.1.3 boundary preserved)')
PY
git diff --check
git add VERSION README.md docs/000-README.md \
docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md \
deltas/0.1.2/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.1.2/alpha.1.md
M docs/000-README.md
A docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md
```
La revue opérateur doit également confirmer que :
- `alpha.1` n'a pas modifié `520-JAVA_MAVEN_GRADLE.md` avant validation du cadrage ;
- `610-ANDROID.md` reste intact et aucune responsabilité Android n'a été absorbée dans le plan Java/Gradle ;
- les versions exactes Games (`Gradle 9.6/9.7.1`, JDK 25, Java 17, AGP 9.4.0) restent des preuves ou choix locaux, pas des contraintes PGR universelles ;
- l'absence de Wrapper dans Games est classée comme choix local compatible avec une politique PGR conditionnelle, pas comme interdiction globale du Wrapper ;
- aucun nouveau template/audit/skeleton Maven ou Gradle n'est créé sans preuve supplémentaire ;
- Games reste un corpus externe non modifié et son adoption reste réservée à `0.1.5` ;
- le skeleton Tauri reste `DEFER` jusqu'à `0.1.4` ;
- aucun nouveau numéro au-delà de `0.1.7` n'est réservé.
## Transition
### PASS
Produire `history/0.1.2/alpha.1.md` à partir des résultats réellement observés. Dans la même réponse, si aucune décision nouvelle n'est ouverte, préparer séparément le delta `0.1.2-alpha.2` consacré à la révision normative ciblée de `520-JAVA_MAVEN_GRADLE.md`, sans modification de `610-ANDROID.md` et sans nouvel artefact Maven.
Après remise du history, fournir automatiquement le bloc Git exact de fermeture conformément à `docs/templates/006-OPERATOR_COMMAND_HANDOFF.md`, puis indiquer l'application du delta suivant seulement après succès du commit/push.
### FAIL
Consigner le résultat réel dans le history, puis ouvrir `0.1.2-alpha.1.fix.1` ou un REPLAN selon la cause. Un fix de `alpha.1` doit rester limité au cadrage et ne doit pas absorber la révision normative prévue pour `alpha.2`.