# Delta 0.1.2-beta.1 — réconciliation intégrée et décision finale d'artefacts ## Baseline et version Baseline attendue : commit opérateur de `0.1.2-alpha.3`, réalisé après application de `history/0.1.2/alpha.3.md` avec statut `PASS`. Version avant application : ```text 0.1.2-alpha.3 ``` Version après application : ```text 0.1.2-beta.1 ``` ## Objet Cette tranche exécute la réconciliation prévue après la scission des owners Java, Maven et Gradle. Elle ne crée aucune nouvelle règle fonctionnelle et ne modifie aucun des profils `520-JAVA.md`, `521-MAVEN.md`, `522-GRADLE.md` ou `610-ANDROID.md`. La beta confirme que la séparation `520/521/522` résout l'ambiguïté d'applicabilité sans importer les choix locaux Games ni ouvrir le scope Android. ## Scope REPLACE : ```text VERSION README.md docs/000-README.md docs/architecture/003-RULE_PROFILE_MODEL.md docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md ``` ADD : ```text deltas/0.1.2/beta.1.md ``` DELETE : aucun. Aucun `history/0.1.2/beta.1.md` n'est anticipé. ## Réconciliation des owners La revue confirme les contrats suivants : ```text 520-JAVA.md Java uniquement 521-MAVEN.md Maven uniquement lorsqu'il est réellement utilisé 522-GRADLE.md Gradle uniquement lorsqu'il est réellement utilisé ``` La composition reste explicite. Un projet Java/Maven applique `520 + 521`; un projet Java/Gradle applique `520 + 522`; un projet Gradle sans Java n'applique pas `520` par simple transitivité. L'ancien `520-JAVA_MAVEN_GRADLE.md` reste un bridge `SUPERSEDED` non normatif pour la compatibilité documentaire historique et ne redevient pas sélectionnable. ## Réconciliation contre Games Games fournit une preuve réelle pour Java et Gradle, mais aucune preuve Maven. La beta confirme donc que : - la séparation JDK de build / niveau source / bytecode-runtime est généralisable ; - l'ownership `settings` / root / module / propriétés partagées est généralisable ; - une politique Gradle système doit avoir une contrainte effectivement vérifiée ; - le Wrapper reste un mécanisme conditionnel de reproductibilité ; - Groovy DSL et absence de Wrapper restent des choix locaux Games ; - JDK 25, Java 17, Gradle 9.6.0+ et Gradle 9.7.1 ne deviennent aucun minimum PGR ; - aucun contenu Maven nouveau n'est déduit d'un corpus qui n'utilise pas Maven. ## Frontière Android La beta ne modifie pas `610-ANDROID.md`. Restent explicitement hors du scope `0.1.2` : ```text AGP compileSdk / targetSdk / minSdk SDK / NDK ABI / JNI manifests / resources APK / AAB / signing Variant API AVD / devices / smokes Android contraintes 16 KB SDL3 et architecture produit Games ``` Ces responsabilités restent réservées à `0.1.3` ou à un owner plus spécifique. ## Décision finale d'artefacts Aucun artefact technique supplémentaire n'est justifié pour `0.1.2`. Ne sont donc pas ajoutés : ```text nouveau contrat docs/validation/ template Java/Maven/Gradle générique skeleton Java/Gradle générique audit Python Java/Maven/Gradle artefact Maven déduit de Games ``` La raison est positive et vérifiable : les trois owners couvrent déjà les responsabilités génériques démontrées, tandis que Java, Maven et Gradle eux-mêmes possèdent les preuves exécutables de compilation/build/test. Ajouter un artefact uniquement pour remplir la release introduirait de la duplication ou une convention insuffisamment éprouvée. ## Documentation durable La tranche actualise : - le statut racine de la release ; - l'index documentaire `0.1.2` ; - le modèle architectural avec la décision beta durable ; - le plan actif avec le `PASS` de `alpha.3` et la décision finale d'artefacts. Aucun changement n'est requis dans `RULES.md`, `docs/rules/000-README.md` ou `ROADMAP.md`, déjà réconciliés pendant `alpha.3`. ## Validation opérateur Après application du history `PASS` de `alpha.3`, commit/push de `alpha.3`, puis application du présent delta : ```bash test "$(cat VERSION)" = '0.1.2-beta.1' git cat-file -e HEAD:history/0.1.2/alpha.3.md test -f history/0.1.2/alpha.3.md test -f deltas/0.1.2/beta.1.md test ! -e history/0.1.2/beta.1.md grep -A2 '^## Statut$' history/0.1.2/alpha.3.md | grep -Fx 'PASS' grep -Fx '' README.md grep -Fx '' docs/000-README.md grep -Fx '' docs/architecture/003-RULE_PROFILE_MODEL.md grep -Fx '' docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md grep -Fx '' docs/rules/520-JAVA.md grep -Fx '' docs/rules/521-MAVEN.md grep -Fx '' docs/rules/522-GRADLE.md grep -Fx '' docs/rules/520-JAVA_MAVEN_GRADLE.md grep -Fx '' docs/rules/610-ANDROID.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 - <<'PYGATE' from pathlib import Path import re history = Path('history/0.1.2/alpha.3.md').read_text(encoding='utf-8') assert re.search(r'## Statut\s+PASS\s', history) java = Path('docs/rules/520-JAVA.md').read_text(encoding='utf-8') maven = Path('docs/rules/521-MAVEN.md').read_text(encoding='utf-8') gradle = Path('docs/rules/522-GRADLE.md').read_text(encoding='utf-8') legacy = Path('docs/rules/520-JAVA_MAVEN_GRADLE.md').read_text(encoding='utf-8') android = Path('docs/rules/610-ANDROID.md').read_text(encoding='utf-8') architecture = Path('docs/architecture/003-RULE_PROFILE_MODEL.md').read_text(encoding='utf-8') plan = Path('docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md').read_text(encoding='utf-8') assert '# Profil Java' in java assert '# Profil Maven' in maven assert '# Profil Gradle' in gradle assert '`SUPERSEDED` depuis `0.1.2-alpha.3`.' in legacy assert 'Il ne constitue plus un profil sélectionnable' in legacy for current in ('RULES.md', 'docs/000-README.md', 'docs/rules/000-README.md', 'docs/rules/610-ANDROID.md'): assert '520-JAVA_MAVEN_GRADLE.md' not in Path(current).read_text(encoding='utf-8'), current for local_choice in ( 'JDK 25', 'source/target 17', 'Gradle 9.6.0', 'Gradle 9.7.1', 'AGP 9.4.0', ): assert local_choice not in java, local_choice assert local_choice not in maven, local_choice assert local_choice not in gradle, local_choice for android_term in ( 'compileSdk', 'targetSdk', 'minSdk', 'NDK', 'ABI/JNI', 'APK/AAB', 'device/AVD', 'SDL3', ): assert android_term not in maven, android_term assert android_term not in gradle, android_term assert 'Matrice AGP / Gradle / JDK' in android assert '`compileSdk`, `targetSdk` et `minSdk`' in android for phrase in ( '## Réconciliation beta de Java / Maven / Gradle en `0.1.2`', 'aucune preuve Maven réelle', 'Aucun nouveau contrat sous `docs/validation/`, template, skeleton ou audit Python Java/Maven/Gradle n\'est justifié.', ): assert phrase in architecture, phrase for phrase in ( '## Décision après `alpha.3` et réconciliation `beta.1`', 'La gate opérateur de `alpha.3` est `PASS`', 'aucun artefact technique supplémentaire', 'aucun corpus Maven', '`0.1.3`', ): assert phrase in plan, phrase for foreign in ( 'Cargo.toml', 'crates/knowledge-domain-lib/src/content_family.rs', 'deltas/0.0.1/alpha.3.fix.2.md', 'history/0.0.1/alpha.3.fix.1.md', ): assert not Path(foreign).exists(), foreign print('0.1.2 beta.1 reconciliation audit: clean (owners stable, Games-local choices not generalized, no extra artifacts justified, Android boundary preserved)') PYGATE git diff --check git add README.md VERSION \ docs/000-README.md \ docs/architecture/003-RULE_PROFILE_MODEL.md \ docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md \ deltas/0.1.2/beta.1.md git diff --cached --check git status --short ``` Le scope indexé attendu avant ajout du history est exactement : ```text M README.md M VERSION A deltas/0.1.2/beta.1.md M docs/000-README.md M docs/architecture/003-RULE_PROFILE_MODEL.md M docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md ``` La revue qualitative doit confirmer que : - aucun choix local Games n'est promu comme minimum générique ; - Maven n'est pas présenté comme validé par Games ; - les owners `520/521/522` restent indépendants et composables ; - aucun nouveau fichier technique n'est ajouté pour satisfaire une structure théorique ; - Android reste entièrement hors du scope fonctionnel de `0.1.2` ; - la documentation durable reflète la scission et la décision d'artefacts sans réécrire les snapshots historiques. ## Transition ### PASS Produire `history/0.1.2/beta.1.md`, puis préparer `0.1.2-rc.1` pour le gel de scope et la release gate complète. ### FAIL Consigner le diagnostic réel dans `history/0.1.2/beta.1.md`, puis produire `beta.1.fix.N` ou effectuer un REPLAN uniquement si un défaut d'ownership ou de frontière ne peut pas être corrigé localement.