248 lines
11 KiB
Markdown
248 lines
11 KiB
Markdown
<!-- file: deltas/0.1.3/alpha.1.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta 0.1.3-alpha.1 — audit de stable et cadrage Android
|
|
|
|
## Baseline et sources
|
|
|
|
Baseline PGR autoritaire : archive source téléchargée depuis le tag Gitea `v0.1.2`, accompagnée du rapport externe `pgr-0.1.2-publish.001-report.md` avec statut `PASS`.
|
|
|
|
SHA-256 vérifiés sur les fichiers réellement fournis :
|
|
|
|
```text
|
|
pgr-v0.1.2(1).zip 0ef8facab0c6f92ca427f5f13d38d6c4a4c1cc16174a20ecdab48991bd88d0e6
|
|
pgr-0.1.2-publish.001-report.md 0f6b4e2a685a957fa647a7db009320ada0fc67948737d8344cc3773bcaeb6a9c
|
|
games-v0.3.6(2).zip ad6e44a1332eb7d6069cf1189d9433f0fbb8fac19c5aac9f4641ac45c1c556e8
|
|
```
|
|
|
|
Les archives locales PGR et Games comportent respectivement `(1)` et `(2)` dans leur nom, mais leurs empreintes correspondent exactement aux baselines canoniques `pgr-v0.1.2.zip` et `games-v0.3.6.zip` attendues par le rapport/prompt.
|
|
|
|
Version avant application :
|
|
|
|
```text
|
|
0.1.2
|
|
```
|
|
|
|
Version après application :
|
|
|
|
```text
|
|
0.1.3-alpha.1
|
|
```
|
|
|
|
## Objet
|
|
|
|
Exécuter `prompts/009-V0_1_3_START_PROMPT.md` : vérifier intégralement la stable `v0.1.2` et son rapport post-tag, auditer le corpus Games autoritaire sur Android et ses preuves historiques, relire `610-ANDROID.md`, `520-JAVA.md`, `522-GRADLE.md`, `600-PLATFORMS.md`, la validation générale et la revue d'horizon, puis créer le plan `0.1.3` avant toute normalisation Android importante.
|
|
|
|
`alpha.1` reste un gate de cadrage. Aucune règle Android, règle Java/Gradle, 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/`, `316` entrées, `276` fichiers, `40` répertoires, aucun symlink, absence normale de `.git` et `VERSION=0.1.2`.
|
|
|
|
Le rapport `publish.001` est `PASS` et confirme le commit stable `585b508578aae337f6940110d4ca47c694a052d5`, l'objet tag annoté `cea2c7a06cde844ffa7411f73bb22685a3214414` et la déréférence de `v0.1.2` vers le commit stable.
|
|
|
|
La suite PGR donne `48/48` tests `PASS`. Les audits Markdown sont propres : `250` fichiers pour les headers, `10` tables sur `250` fichiers et `307` liens locaux sur `250` fichiers. Les templates TOML Rust/Cargo et JSON Web contrôlés sont parsables.
|
|
|
|
Les `90` couples delta/history de `0.0.1` à `0.1.2` sont complets. Les sept histories `0.1.2` sont tous `PASS`, y compris `alpha.2.fix.1` qui conserve la récupération historique de contamination inter-projet.
|
|
|
|
Le corpus Games fourni possède exactement le SHA canonique attendu, `652` entrées, `502` fichiers, `150` répertoires et aucun symlink. Ses audits statiques principaux sont propres : règles Rust, exports, workspace, tableaux Markdown et layout de distribution.
|
|
|
|
Le sous-projet Android natif exerce un build Gradle multi-module sous `Android/` avec `common`, `game-reflex-poc` et `game-snake-poc`, quatre sources Java, manifests/resources, namespaces/application IDs, configuration locale ignorée et scripts Gradle communs.
|
|
|
|
La baseline Games utilise AGP `9.4.0`, Gradle système `>= 9.6.0`, JDK de build compatible `>= 17`, niveau Java source/target `17`, `compileSdk 36`, `targetSdk 36`, `minSdk 21`, NDK `28.2.13676358` et SDL3 `3.4.16`. Ces valeurs restent des décisions et preuves Games, pas des minima PGR.
|
|
|
|
Les histories Games démontrent le passage d'une preuve initiale Wrapper/JDK 17 vers un Gradle système avec minimum exécutable et JDK courant, puis des builds réels avec Temurin `25.0.4.1 LTS` + Gradle `9.7.1` tout en conservant Java `17` comme niveau source/target.
|
|
|
|
Le pipeline natif Games exerce `cargo ndk`, JNI, SDL3 et quatre ABI (`arm64-v8a`, `armeabi-v7a`, `x86_64`, `x86`). Les histories prouvent APK Debug, AAB Release, contenu natif packagé, smokes AVD x86_64 et appareil ARM64 réel, runtime API 21 ainsi qu'une preuve `PAGE_SIZE=16384` sur Android 15/API 35 x86_64.
|
|
|
|
Ces responsabilités spécialisées ne sont pas copiées dans PGR. Le plan classe les décisions avec `ADOPT / KEEP-LOCAL / OVERRIDE / DEFER`, conserve Tauri en `DEFER` jusqu'à `0.1.4`, l'adoption Games jusqu'à `0.1.5` et prévoit une vérification des exigences Android officielles courantes avant toute normalisation de contraintes évolutives telles que 16 KB.
|
|
|
|
## Scope
|
|
|
|
REPLACE :
|
|
|
|
```text
|
|
VERSION
|
|
README.md
|
|
docs/000-README.md
|
|
```
|
|
|
|
ADD :
|
|
|
|
```text
|
|
docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md
|
|
deltas/0.1.3/alpha.1.md
|
|
```
|
|
|
|
DELETE : aucun.
|
|
|
|
`RULES.md`, `ROADMAP.md`, `CHANGELOG.md`, `docs/rules/610-ANDROID.md`, `docs/rules/520-JAVA.md`, `docs/rules/522-GRADLE.md`, `docs/rules/600-PLATFORMS.md`, les autres règles, templates, skeletons, validations, scripts, studies, prompts et histories existants restent inchangés dans `alpha.1`.
|
|
|
|
Aucun `history/0.1.3/alpha.1.md` n'est anticipé avant la gate opérateur.
|
|
|
|
## Validation opérateur
|
|
|
|
Après application sur la stable `0.1.2`, depuis la racine du dépôt :
|
|
|
|
```bash
|
|
test "$(cat VERSION)" = '0.1.3-alpha.1'
|
|
test -f docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md
|
|
test -f deltas/0.1.3/alpha.1.md
|
|
test ! -e history/0.1.3/alpha.1.md
|
|
|
|
grep -Fx '<!-- version: 23 -->' README.md
|
|
grep -Fx '<!-- version: 37 -->' docs/000-README.md
|
|
grep -F '009-V0_1_3_ANDROID_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,
|
|
'0.1.2': 7,
|
|
}
|
|
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.2').glob('*.md'):
|
|
text = path.read_text(encoding='utf-8')
|
|
match = re.search(r'## Statut\s+(?:`?)(PASS|FAIL|PARTIAL|BLOCKED)', text)
|
|
assert match is not None, path
|
|
statuses[path.name] = match.group(1)
|
|
assert len(statuses) == 7, statuses
|
|
assert set(statuses.values()) == {'PASS'}, statuses
|
|
assert statuses['alpha.2.fix.1.md'] == 'PASS'
|
|
assert statuses['rel.1.md'] == 'PASS'
|
|
|
|
roadmap = Path('ROADMAP.md').read_text(encoding='utf-8')
|
|
assert '- `(x) 0.1.2`' in roadmap
|
|
for release in range(3, 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/009-V0_1_3_START_PROMPT.md').read_text(encoding='utf-8')
|
|
for phrase in (
|
|
'Version cible : `0.1.3`',
|
|
'Première tranche attendue : `0.1.3-alpha.1`',
|
|
'ad6e44a1332eb7d6069cf1189d9433f0fbb8fac19c5aac9f4641ac45c1c556e8',
|
|
'ADOPT / KEEP-LOCAL / OVERRIDE / DEFER',
|
|
'structure `Android/`',
|
|
'compileSdk`, `targetSdk` et `minSdk',
|
|
'alignement mémoire/16 KB',
|
|
'skeleton Tauri, réservé à `0.1.4`',
|
|
"démarrer l'adoption Games `0.1.5`",
|
|
):
|
|
assert phrase in prompt, phrase
|
|
|
|
android = Path('docs/rules/610-ANDROID.md').read_text(encoding='utf-8')
|
|
assert android.startswith('<!-- file: docs/rules/610-ANDROID.md -->\n<!-- version: 3 -->')
|
|
for phrase in (
|
|
'Android n\'implique pas à lui seul l\'applicabilité du profil Java.',
|
|
'Matrice AGP / Gradle / JDK',
|
|
'`compileSdk`, `targetSdk` et `minSdk`',
|
|
'ABI et code natif',
|
|
'Niveaux de tests Android',
|
|
'APK, AAB et artefacts de distribution',
|
|
):
|
|
assert phrase in android, phrase
|
|
|
|
assert Path('docs/rules/520-JAVA.md').read_text(encoding='utf-8').startswith(
|
|
'<!-- file: docs/rules/520-JAVA.md -->\n<!-- version: 4 -->'
|
|
)
|
|
assert Path('docs/rules/522-GRADLE.md').read_text(encoding='utf-8').startswith(
|
|
'<!-- file: docs/rules/522-GRADLE.md -->\n<!-- version: 1 -->'
|
|
)
|
|
assert Path('docs/rules/600-PLATFORMS.md').read_text(encoding='utf-8').startswith(
|
|
'<!-- file: docs/rules/600-PLATFORMS.md -->\n<!-- version: 1 -->'
|
|
)
|
|
|
|
plan = Path('docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md').read_text(encoding='utf-8')
|
|
for phrase in (
|
|
'Classification initiale des décisions Games',
|
|
'`ADOPT`',
|
|
'`KEEP-LOCAL`',
|
|
'`OVERRIDE`',
|
|
'`DEFER`',
|
|
'alpha.2 — structure, composition et contrats Android de base',
|
|
'alpha.3 — natif, packaging, distribution et validation',
|
|
'beta.1 — réconciliation et décision d\'artefacts',
|
|
'AGP `9.4.0`',
|
|
'Gradle système `>= 9.6.0`',
|
|
'NDK `r28c`',
|
|
'PAGE_SIZE=16384',
|
|
'documentation Android officielle courante',
|
|
'0.1.4 — domaine Tauri',
|
|
'0.1.5',
|
|
):
|
|
assert phrase in plan, phrase
|
|
|
|
assert not Path('docs/validation/006-ANDROID_VALIDATION.md').exists()
|
|
assert not Path('history/0.1.3/alpha.1.md').exists()
|
|
|
|
print('0.1.3 alpha.1 structural audit: clean (90 prior pairs, Games Android classified, Tauri/adoption boundaries preserved)')
|
|
PY
|
|
|
|
git diff --check
|
|
git add VERSION README.md docs/000-README.md \
|
|
docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md \
|
|
deltas/0.1.3/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.3/alpha.1.md
|
|
M docs/000-README.md
|
|
A docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md
|
|
```
|
|
|
|
La revue opérateur doit également confirmer que :
|
|
|
|
- `alpha.1` n'a pas modifié `610-ANDROID.md` avant validation du cadrage ;
|
|
- les versions exactes Games (AGP/Gradle/JDK/SDK/NDK/SDL3) restent des preuves ou choix locaux, pas des contraintes PGR universelles ;
|
|
- `Android/` reste une convention de séparation multi-plateforme et n'est pas imposé artificiellement à un dépôt Android-only ;
|
|
- Java reste un owner composé seulement lorsqu'il existe réellement du code Java ;
|
|
- les quatre ABI, JNI, `cargo ndk`, SDL3, Activities et assets Games restent des responsabilités produit/framework/spécialisation ;
|
|
- aucune exigence 16 KB n'est normalisée sans vérification des sources Android officielles courantes ;
|
|
- aucun nouveau template, audit, skeleton ou contrat de validation Android n'est créé par symétrie ;
|
|
- 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.3/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.3-alpha.2` consacré à la structure, la composition et aux contrats Android de base définis par le plan, sans absorber encore les détails natifs/packaging de `alpha.3`.
|
|
|
|
Après remise du history, fournir automatiquement le bloc opérateur exact pour appliquer le history, committer/pusher `0.1.3-alpha.1`, puis seulement appliquer le delta suivant conformément à `docs/templates/006-OPERATOR_COMMAND_HANDOFF.md`.
|
|
|
|
### FAIL
|
|
|
|
Consigner le résultat réel dans le history, puis ouvrir `0.1.3-alpha.1.fix.1` ou un REPLAN selon la cause. Aucun changement prévu pour `alpha.2` ne doit être absorbé silencieusement dans le fix.
|