276 lines
9.1 KiB
Markdown
276 lines
9.1 KiB
Markdown
<!-- file: deltas/0.1.2/beta.1.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# 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 '<!-- version: 21 -->' README.md
|
|
grep -Fx '<!-- version: 34 -->' docs/000-README.md
|
|
grep -Fx '<!-- version: 8 -->' docs/architecture/003-RULE_PROFILE_MODEL.md
|
|
grep -Fx '<!-- version: 4 -->' docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md
|
|
|
|
grep -Fx '<!-- version: 4 -->' docs/rules/520-JAVA.md
|
|
grep -Fx '<!-- version: 1 -->' docs/rules/521-MAVEN.md
|
|
grep -Fx '<!-- version: 1 -->' docs/rules/522-GRADLE.md
|
|
grep -Fx '<!-- version: 4 -->' docs/rules/520-JAVA_MAVEN_GRADLE.md
|
|
grep -Fx '<!-- version: 3 -->' 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.
|