236 lines
10 KiB
Markdown
236 lines
10 KiB
Markdown
<!-- 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`.
|