10 KiB
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 :
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 :
0.1.1
Version après application :
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 :
VERSION
README.md
docs/000-README.md
ADD :
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 :
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 :
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.1n'a pas modifié520-JAVA_MAVEN_GRADLE.mdavant validation du cadrage ;610-ANDROID.mdreste 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
DEFERjusqu'à0.1.4; - aucun nouveau numéro au-delà de
0.1.7n'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.