0.1.3
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: CHANGELOG.md -->
|
<!-- file: CHANGELOG.md -->
|
||||||
<!-- version: 16 -->
|
<!-- version: 17 -->
|
||||||
|
|
||||||
# Changelog Project Governance Rules
|
# Changelog Project Governance Rules
|
||||||
|
|
||||||
@@ -7,7 +7,7 @@ Ce fichier décrit les changements utiles aux utilisateurs ou intégrateurs des
|
|||||||
|
|
||||||
Les tranches `alpha`, `beta`, `rc`, fixes, validations, audits et détails de développement appartiennent aux plans, deltas et historiques. Ils ne sont pas recopiés ici par défaut.
|
Les tranches `alpha`, `beta`, `rc`, fixes, validations, audits et détails de développement appartiennent aux plans, deltas et historiques. Ils ne sont pas recopiés ici par défaut.
|
||||||
|
|
||||||
## 0.1.3 (candidate)
|
## 0.1.3
|
||||||
|
|
||||||
- réévalue le profil Android contre le corpus Games réel tout en conservant Android neutre vis-à-vis du langage applicatif et en composant Java/Gradle uniquement lorsqu'ils sont réellement présents ;
|
- réévalue le profil Android contre le corpus Games réel tout en conservant Android neutre vis-à-vis du langage applicatif et en composant Java/Gradle uniquement lorsqu'ils sont réellement présents ;
|
||||||
- clarifie les responsabilités `compileSdk` / `targetSdk` / `minSdk`, l'identité `namespace` / `applicationId`, la configuration locale, le signing et les manifests/resources sans promouvoir les valeurs particulières de Games ;
|
- clarifie les responsabilités `compileSdk` / `targetSdk` / `minSdk`, l'identité `namespace` / `applicationId`, la configuration locale, le signing et les manifests/resources sans promouvoir les valeurs particulières de Games ;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: README.md -->
|
<!-- file: README.md -->
|
||||||
<!-- version: 24 -->
|
<!-- version: 25 -->
|
||||||
|
|
||||||
# Project Governance Rules
|
# Project Governance Rules
|
||||||
|
|
||||||
@@ -11,9 +11,9 @@ Le dépôt officiel est `https://git.sasedev.com/Sasedev/pgr`.
|
|||||||
|
|
||||||
## Statut
|
## Statut
|
||||||
|
|
||||||
PGR a clôturé sa phase de fondation `0.0.x`, dispose avec `0.1.0` de sa première baseline réutilisable stable, avec `0.1.1` d’une fondation frontend Web stable et avec `0.1.2` d’owners Java, Maven et Gradle séparés et composables après réévaluation du corpus Games. La release `0.1.3-beta.1` réconcilie maintenant le profil Android révisé contre Games et les owners PGR existants : les choix locaux Games restent locaux, les contraintes natives restent conditionnelles et aucun artefact Android supplémentaire n’est ajouté sans besoin démontré. Tauri reste réservé à `0.1.4` et l’adoption Games à `0.1.5`.
|
PGR a clôturé sa phase de fondation `0.0.x`, dispose avec `0.1.0` de sa première baseline réutilisable stable, avec `0.1.1` d’une fondation frontend Web stable, avec `0.1.2` d’owners Java, Maven et Gradle séparés et composables, et avec `0.1.3` d’un profil Android réévalué contre Games sans généraliser ses choix locaux. Les contrats SDK, identité, natif/ABI, Lint, tests, packaging et 16 KB sont désormais bornés par leur applicabilité réelle. Tauri reste réservé à `0.1.4` et l’adoption Games à `0.1.5`.
|
||||||
|
|
||||||
La version courante est définie par [`VERSION`](VERSION). La release `0.0.1` établit la gouvernance normative et documentaire de PGR lui-même. La release `0.0.2` ajoute les premiers profils réutilisables Rust/Cargo, Java/Maven/Gradle et Android, ainsi que deux audits Markdown. La release `0.0.3` fournit les premiers modèles Rust/Cargo, deux audits de style Rust facultatifs, l'audit des headers Markdown et la spécification du message manuel de reprise. La release `0.0.4` définit le contrat transversal des skeleton specifications, ajoute une fondation composable de gouvernance locale et une première spécialisation Rust/Cargo workspace fondée sur les profils `500 + 510` et les cinq templates existants. La release `0.0.5` réconcilie PGR avec les baselines réelles de `khadhroony-solana-project` et `sasedev-games` : prompts versionnés, contrats documentaires locaux, lifecycle inter-release, profil Rust strict et audits monotâches, premier profil Tauri 2 et décision explicite de différer son skeleton complet jusqu'à matérialisation d'owners Web suffisants. La release `0.1.0` stabilise la première baseline réutilisable : adoption `ADOPT / KEEP-LOCAL / OVERRIDE / DEFER`, skeletons/templates Rust/Cargo exercés par dry-run, clôture `rel.N`, handoff opérateur automatique et trajectoire `0.1.1` à `0.1.7` issue d'une revue d'horizon explicite. La release `0.1.1` stabilise la fondation frontend Web : owners indépendants TypeScript/package/Vite/CSS-Sass, déclarations de types externes conditionnelles, package manager neutre, validation frontend indépendante du host et skeleton Web composable, tout en conservant le skeleton Tauri en `DEFER` jusqu’à son réexamen `0.1.4`. La release `0.1.2` stabilise trois owners indépendants `520-JAVA`, `521-MAVEN` et `522-GRADLE`, clarifie JDK/source/bytecode et l'ownership Gradle, conserve Maven cohérent sans corpus artificiel et maintient les responsabilités Android dans `610-ANDROID.md` pour leur réévaluation distincte en `0.1.3`.
|
La version courante est définie par [`VERSION`](VERSION). La release `0.0.1` établit la gouvernance normative et documentaire de PGR lui-même. La release `0.0.2` ajoute les premiers profils réutilisables Rust/Cargo, Java/Maven/Gradle et Android, ainsi que deux audits Markdown. La release `0.0.3` fournit les premiers modèles Rust/Cargo, deux audits de style Rust facultatifs, l'audit des headers Markdown et la spécification du message manuel de reprise. La release `0.0.4` définit le contrat transversal des skeleton specifications, ajoute une fondation composable de gouvernance locale et une première spécialisation Rust/Cargo workspace fondée sur les profils `500 + 510` et les cinq templates existants. La release `0.0.5` réconcilie PGR avec les baselines réelles de `khadhroony-solana-project` et `sasedev-games` : prompts versionnés, contrats documentaires locaux, lifecycle inter-release, profil Rust strict et audits monotâches, premier profil Tauri 2 et décision explicite de différer son skeleton complet jusqu'à matérialisation d'owners Web suffisants. La release `0.1.0` stabilise la première baseline réutilisable : adoption `ADOPT / KEEP-LOCAL / OVERRIDE / DEFER`, skeletons/templates Rust/Cargo exercés par dry-run, clôture `rel.N`, handoff opérateur automatique et trajectoire `0.1.1` à `0.1.7` issue d'une revue d'horizon explicite. La release `0.1.1` stabilise la fondation frontend Web : owners indépendants TypeScript/package/Vite/CSS-Sass, déclarations de types externes conditionnelles, package manager neutre, validation frontend indépendante du host et skeleton Web composable, tout en conservant le skeleton Tauri en `DEFER` jusqu’à son réexamen `0.1.4`. La release `0.1.2` stabilise trois owners indépendants `520-JAVA`, `521-MAVEN` et `522-GRADLE`, clarifie JDK/source/bytecode et l'ownership Gradle, conserve Maven cohérent sans corpus artificiel et maintient les responsabilités Android dans `610-ANDROID.md` pour leur réévaluation distincte en `0.1.3`. La release `0.1.3` stabilise le profil Android générique : séparation des responsabilités SDK et identité applicative, contraintes natives conditionnelles, Android Lint explicite, niveaux de tests distincts, frontières APK/AAB et compatibilité 16 KB liée au code natif et au canal de distribution, sans imposer les versions ou ABI propres à Games.
|
||||||
|
|
||||||
## Entrées principales
|
## Entrées principales
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ La version courante est définie par [`VERSION`](VERSION). La release `0.0.1` é
|
|||||||
- [`docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md`](docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md) — plan historique de la première baseline réutilisable `0.1.0` ;
|
- [`docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md`](docs/plans/006-V0_1_0_REUSABLE_BASELINE_PLAN.md) — plan historique de la première baseline réutilisable `0.1.0` ;
|
||||||
- [`docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md`](docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md) — plan historique de la fondation frontend Web stable `0.1.1` ;
|
- [`docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md`](docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md) — plan historique de la fondation frontend Web stable `0.1.1` ;
|
||||||
- [`docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md`](docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md) — plan historique de la stable `0.1.2` : réévaluation Games, scission Java/Maven/Gradle et maintien d'Android hors scope ;
|
- [`docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md`](docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md) — plan historique de la stable `0.1.2` : réévaluation Games, scission Java/Maven/Gradle et maintien d'Android hors scope ;
|
||||||
- [`docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md`](docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md) — plan actif de la réévaluation pratique Android `0.1.3`, fondé sur Games avec classification `ADOPT / KEEP-LOCAL / OVERRIDE / DEFER` ;
|
- [`docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md`](docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md) — plan historique de la stable Android `0.1.3`, fondée sur Games avec classification `ADOPT / KEEP-LOCAL / OVERRIDE / DEFER` ;
|
||||||
- [`docs/studies/001-KSP_GAMES_RECONCILIATION.md`](docs/studies/001-KSP_GAMES_RECONCILIATION.md) — étude de réconciliation et classification des écarts entre PGR, KSP et Games ;
|
- [`docs/studies/001-KSP_GAMES_RECONCILIATION.md`](docs/studies/001-KSP_GAMES_RECONCILIATION.md) — étude de réconciliation et classification des écarts entre PGR, KSP et Games ;
|
||||||
- [`docs/skeletons/000-README.md`](docs/skeletons/000-README.md) — index des skeleton specifications et de leur contrat de composition ;
|
- [`docs/skeletons/000-README.md`](docs/skeletons/000-README.md) — index des skeleton specifications et de leur contrat de composition ;
|
||||||
- [`docs/skeletons/001-PROJECT_GOVERNANCE_FOUNDATION.md`](docs/skeletons/001-PROJECT_GOVERNANCE_FOUNDATION.md) — fondation composable de gouvernance locale pour un projet adoptant PGR ;
|
- [`docs/skeletons/001-PROJECT_GOVERNANCE_FOUNDATION.md`](docs/skeletons/001-PROJECT_GOVERNANCE_FOUNDATION.md) — fondation composable de gouvernance locale pour un projet adoptant PGR ;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: ROADMAP.md -->
|
<!-- file: ROADMAP.md -->
|
||||||
<!-- version: 14 -->
|
<!-- version: 15 -->
|
||||||
|
|
||||||
# Roadmap Project Governance Rules
|
# Roadmap Project Governance Rules
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ La revue d'horizon de `0.1.0-beta.1` engage les releases suivantes, chacune avec
|
|||||||
|
|
||||||
- `(x) 0.1.1` — fondation frontend Web : TypeScript, Vite, Sass/CSS, package/build outputs et validation frontend indépendante ;
|
- `(x) 0.1.1` — fondation frontend Web : TypeScript, Vite, Sass/CSS, package/build outputs et validation frontend indépendante ;
|
||||||
- `(x) 0.1.2` — réévaluation pratique de Java/Maven/Gradle, séparation des owners lorsque leurs applicabilités divergent et matérialisation uniquement des artefacts génériques réellement nécessaires ;
|
- `(x) 0.1.2` — réévaluation pratique de Java/Maven/Gradle, séparation des owners lorsque leurs applicabilités divergent et matérialisation uniquement des artefacts génériques réellement nécessaires ;
|
||||||
- `( ) 0.1.3` — réévaluation pratique du profil Android existant à partir de Games, sans absorber les décisions propres aux jeux ou à SDL ;
|
- `(x) 0.1.3` — réévaluation pratique du profil Android existant à partir de Games, sans absorber les décisions propres aux jeux ou à SDL ;
|
||||||
- `( ) 0.1.4` — domaine Tauri : réexamen du `DEFER` et matérialisation du skeleton contrôlé seulement si les owners Web issus de `0.1.1` satisfont réellement les conditions de sortie ;
|
- `( ) 0.1.4` — domaine Tauri : réexamen du `DEFER` et matérialisation du skeleton contrôlé seulement si les owners Web issus de `0.1.1` satisfont réellement les conditions de sortie ;
|
||||||
- `( ) 0.1.5` — adoption réelle de PGR par `sasedev-games` avec mapping `ADOPT / KEEP-LOCAL / OVERRIDE / DEFER` ;
|
- `( ) 0.1.5` — adoption réelle de PGR par `sasedev-games` avec mapping `ADOPT / KEEP-LOCAL / OVERRIDE / DEFER` ;
|
||||||
- `( ) 0.1.6` — adoption réelle de PGR par `khadhroony-solana-project`, principalement sur Rust/Cargo + Tauri et sans dépendance aux profils non applicables ;
|
- `( ) 0.1.6` — adoption réelle de PGR par `khadhroony-solana-project`, principalement sur Rust/Cargo + Tauri et sans dépendance aux profils non applicables ;
|
||||||
|
|||||||
288
deltas/0.1.3/rel.1.md
Normal file
288
deltas/0.1.3/rel.1.md
Normal file
@@ -0,0 +1,288 @@
|
|||||||
|
<!-- file: deltas/0.1.3/rel.1.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Delta 0.1.3 rel.1 — promotion stable pré-tag
|
||||||
|
|
||||||
|
## Baseline et version
|
||||||
|
|
||||||
|
Baseline : `0.1.3-rc.1`, avec `history/0.1.3/rc.1.md` appliqué et committé. Ce delta MUST NOT être appliqué avant ce commit.
|
||||||
|
|
||||||
|
Version avant application :
|
||||||
|
|
||||||
|
```text
|
||||||
|
0.1.3-rc.1
|
||||||
|
```
|
||||||
|
|
||||||
|
Version après application :
|
||||||
|
|
||||||
|
```text
|
||||||
|
0.1.3
|
||||||
|
```
|
||||||
|
|
||||||
|
`rel.1` identifie la clôture opérationnelle ; il ne fait pas partie de la version SemVer du produit.
|
||||||
|
|
||||||
|
## Objet
|
||||||
|
|
||||||
|
Promouvoir mécaniquement la RC validée vers la stable `0.1.3` sans rouvrir le scope fonctionnel.
|
||||||
|
|
||||||
|
La tranche finalise uniquement la présentation et les métadonnées de release : version stable, roadmap terminée, changelog sans marqueur `candidate`, README/index en état stable et plan `009` historique. Aucun owner Android/Java/Gradle/Tauri, template, skeleton, validation, étude technique ou script d'audit n'est modifié.
|
||||||
|
|
||||||
|
La validation de cette tranche est **pré-tag**. Le tag `v0.1.3`, son archive source Gitea et le rapport `pgr-0.1.3-publish.001-report.md` ne sont pas déclarés existants par ce delta. Ils suivent uniquement un history `rel.1` `PASS`, le commit stable `0.1.3` et la publication réelle du tag.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
REPLACE :
|
||||||
|
|
||||||
|
```text
|
||||||
|
VERSION
|
||||||
|
README.md
|
||||||
|
ROADMAP.md
|
||||||
|
CHANGELOG.md
|
||||||
|
docs/000-README.md
|
||||||
|
docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md
|
||||||
|
```
|
||||||
|
|
||||||
|
ADD :
|
||||||
|
|
||||||
|
```text
|
||||||
|
deltas/0.1.3/rel.1.md
|
||||||
|
```
|
||||||
|
|
||||||
|
DELETE : aucun.
|
||||||
|
|
||||||
|
Le history `rc.1` est livré séparément. Le history `rel.1` sera produit uniquement après la gate opérateur.
|
||||||
|
|
||||||
|
## Validation opérateur pré-tag
|
||||||
|
|
||||||
|
Après application sur le commit contenant `history/0.1.3/rc.1.md` :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
test "$(cat VERSION)" = '0.1.3'
|
||||||
|
git cat-file -e HEAD:history/0.1.3/rc.1.md
|
||||||
|
test -f history/0.1.3/rc.1.md
|
||||||
|
test -f deltas/0.1.3/rel.1.md
|
||||||
|
test -f prompts/010-V0_1_4_START_PROMPT.md
|
||||||
|
test ! -e history/0.1.3/rel.1.md
|
||||||
|
|
||||||
|
grep -A2 '^## Statut$' history/0.1.3/rc.1.md | grep -Fx 'PASS'
|
||||||
|
grep -Fx '<!-- version: 25 -->' README.md
|
||||||
|
grep -Fx '<!-- version: 15 -->' ROADMAP.md
|
||||||
|
grep -Fx '<!-- version: 17 -->' CHANGELOG.md
|
||||||
|
grep -Fx '<!-- version: 40 -->' docs/000-README.md
|
||||||
|
grep -Fx '<!-- version: 6 -->' docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md
|
||||||
|
grep -F -- '- `(x) 0.1.3`' ROADMAP.md
|
||||||
|
grep -Fx '## 0.1.3' CHANGELOG.md
|
||||||
|
grep -F 'avec `0.1.3` d’un profil Android réévalué contre Games' README.md
|
||||||
|
grep -F 'plan historique de la stable `0.1.3`' docs/000-README.md
|
||||||
|
|
||||||
|
python3 -B - <<'PYGATE'
|
||||||
|
from pathlib import Path
|
||||||
|
import re
|
||||||
|
|
||||||
|
expected = {
|
||||||
|
"alpha.1.md": "PASS",
|
||||||
|
"alpha.2.md": "PASS",
|
||||||
|
"alpha.3.md": "PASS",
|
||||||
|
"beta.1.md": "PASS",
|
||||||
|
"rc.1.md": "PASS",
|
||||||
|
}
|
||||||
|
|
||||||
|
for name, status in expected.items():
|
||||||
|
delta = Path("deltas/0.1.3", name)
|
||||||
|
history = Path("history/0.1.3", name)
|
||||||
|
assert delta.is_file(), name
|
||||||
|
assert history.is_file(), name
|
||||||
|
text = history.read_text(encoding="utf-8")
|
||||||
|
assert re.search(rf"## Statut\s+{status}\s", text), (name, status)
|
||||||
|
|
||||||
|
pending = {path.name for path in Path("deltas/0.1.3").glob("*.md")} - {
|
||||||
|
path.name for path in Path("history/0.1.3").glob("*.md")
|
||||||
|
}
|
||||||
|
assert pending == {"rel.1.md"}, pending
|
||||||
|
|
||||||
|
roadmap = Path("ROADMAP.md").read_text(encoding="utf-8")
|
||||||
|
assert "- `(x) 0.1.3`" in roadmap
|
||||||
|
for version in ("0.1.4", "0.1.5", "0.1.6", "0.1.7"):
|
||||||
|
assert f"- `( ) {version}`" in roadmap, version
|
||||||
|
assert "- `( ) 0.1.8`" not in roadmap
|
||||||
|
assert "skeleton Tauri jusqu'au réexamen 0.1.4" in roadmap
|
||||||
|
|
||||||
|
changelog = Path("CHANGELOG.md").read_text(encoding="utf-8")
|
||||||
|
assert "## 0.1.3" in changelog.splitlines()
|
||||||
|
assert "## 0.1.3 (candidate)" not in changelog
|
||||||
|
section = changelog.split("## 0.1.3", 1)[1].split("## 0.1.2", 1)[0]
|
||||||
|
for phrase in (
|
||||||
|
"profil Android",
|
||||||
|
"compileSdk",
|
||||||
|
"targetSdk",
|
||||||
|
"minSdk",
|
||||||
|
"namespace",
|
||||||
|
"applicationId",
|
||||||
|
"NDK",
|
||||||
|
"Android Lint",
|
||||||
|
"tests instrumentés",
|
||||||
|
"APK/AAB",
|
||||||
|
"16 KB",
|
||||||
|
"0.1.4",
|
||||||
|
"0.1.5",
|
||||||
|
):
|
||||||
|
assert phrase in section, phrase
|
||||||
|
for forbidden in ("alpha.1", "alpha.2", "alpha.3", "beta.1", "rc.1", "rel.1"):
|
||||||
|
assert forbidden not in section, forbidden
|
||||||
|
|
||||||
|
readme = Path("README.md").read_text(encoding="utf-8")
|
||||||
|
assert "avec `0.1.3` d’un profil Android réévalué contre Games" in readme
|
||||||
|
assert "plan historique de la stable Android `0.1.3`" in readme
|
||||||
|
|
||||||
|
index = Path("docs/000-README.md").read_text(encoding="utf-8")
|
||||||
|
assert "plan historique de la stable `0.1.3`" in index
|
||||||
|
assert "à exécuter uniquement après publication et vérification post-tag de `v0.1.3`" in index
|
||||||
|
|
||||||
|
plan = Path("docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md").read_text(encoding="utf-8")
|
||||||
|
assert "Plan 0.1.3 — réévaluation pratique Android" in plan
|
||||||
|
assert "### rc.1 — release candidate\n\nStatut opérateur : **PASS**." in plan
|
||||||
|
assert "history/0.1.3/rel.1.md" in plan
|
||||||
|
assert "pgr-0.1.3-publish.001-report.md" in plan
|
||||||
|
assert "commit `0.1.3` avant le tag `v0.1.3`" in plan
|
||||||
|
assert "plan historique de la stable `0.1.3`" in plan
|
||||||
|
|
||||||
|
prompt = Path("prompts/010-V0_1_4_START_PROMPT.md").read_text(encoding="utf-8")
|
||||||
|
for phrase in (
|
||||||
|
"tag Gitea `v0.1.3`",
|
||||||
|
"pgr-0.1.3-publish.001-report.md",
|
||||||
|
"0.1.4-alpha.1",
|
||||||
|
"002-TAURI_SKELETON_DECISION.md",
|
||||||
|
"710-TAURI.md",
|
||||||
|
"003-WEB_FRONTEND",
|
||||||
|
"ADOPT / KEEP-LOCAL / OVERRIDE / DEFER",
|
||||||
|
"adoption Games `0.1.5`",
|
||||||
|
"adoption KSP `0.1.6`",
|
||||||
|
):
|
||||||
|
assert phrase in prompt, phrase
|
||||||
|
|
||||||
|
for path, version in (
|
||||||
|
("docs/rules/400-VALIDATION.md", 1),
|
||||||
|
("docs/rules/520-JAVA.md", 4),
|
||||||
|
("docs/rules/522-GRADLE.md", 1),
|
||||||
|
("docs/rules/600-PLATFORMS.md", 1),
|
||||||
|
("docs/rules/610-ANDROID.md", 5),
|
||||||
|
("docs/rules/710-TAURI.md", 6),
|
||||||
|
("docs/studies/002-TAURI_SKELETON_DECISION.md", 2),
|
||||||
|
("docs/skeletons/003-WEB_FRONTEND.md", 1),
|
||||||
|
("docs/validation/005-WEB_FRONTEND_VALIDATION.md", 1),
|
||||||
|
):
|
||||||
|
lines = Path(path).read_text(encoding="utf-8").splitlines()
|
||||||
|
assert lines[1] == f"<!-- version: {version} -->", (path, lines[1])
|
||||||
|
|
||||||
|
android = Path("docs/rules/610-ANDROID.md").read_text(encoding="utf-8")
|
||||||
|
for phrase in (
|
||||||
|
"Android ne sélectionne pas à lui seul le langage applicatif du projet.",
|
||||||
|
"Le choix de `minSdk` MUST être justifié par le contrat produit",
|
||||||
|
"PGR ne fixe ni version NDK ni liste universelle d'ABI.",
|
||||||
|
"PGR MUST NOT supposer qu'un build Gradle ordinaire exécute Lint automatiquement.",
|
||||||
|
"Un AAB n'est pas directement une preuve d'installation ou d'exécution sur device.",
|
||||||
|
"## Pages mémoire 16 KB et packaging natif",
|
||||||
|
"PGR MUST NOT imposer une version AGP/NDK globale uniquement pour cette raison.",
|
||||||
|
):
|
||||||
|
assert phrase in android, phrase
|
||||||
|
for forbidden in (
|
||||||
|
"targetSdk MUST être 36",
|
||||||
|
"minSdk MUST être 21",
|
||||||
|
"NDK MUST être r28",
|
||||||
|
"MUST supporter arm64-v8a, armeabi-v7a, x86_64 et x86",
|
||||||
|
"Gradle MUST être 9.7.1",
|
||||||
|
"AGP MUST être 9.4.0",
|
||||||
|
"JDK MUST être 25",
|
||||||
|
):
|
||||||
|
assert forbidden not in android, forbidden
|
||||||
|
|
||||||
|
for forbidden_path in (
|
||||||
|
"docs/validation/006-ANDROID_VALIDATION.md",
|
||||||
|
"docs/skeletons/004-ANDROID.md",
|
||||||
|
"docs/rules/620-JNI.md",
|
||||||
|
"docs/skeletons/004-TAURI.md",
|
||||||
|
):
|
||||||
|
assert not Path(forbidden_path).exists(), forbidden_path
|
||||||
|
|
||||||
|
workflow = Path("docs/rules/210-WORKFLOW.md").read_text(encoding="utf-8")
|
||||||
|
assert "history rel.1 FAIL / PARTIAL / BLOCKED" in workflow
|
||||||
|
assert "premier history rel.N[/fix.M] PASS qui établit réellement la stable" in workflow
|
||||||
|
assert "commit X.Y.Z" in workflow
|
||||||
|
|
||||||
|
print("0.1.3 rel.1 stable gate audit: clean (5 prior histories, rel.1 pending, stable Android presentation and post-tag Tauri handoff coherent)")
|
||||||
|
PYGATE
|
||||||
|
|
||||||
|
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 - <<'PYHYGIENE'
|
||||||
|
from pathlib import Path
|
||||||
|
import json
|
||||||
|
import tomllib
|
||||||
|
|
||||||
|
for path in sorted(Path("templates/rust-cargo").rglob("*.toml")):
|
||||||
|
tomllib.loads(path.read_text(encoding="utf-8"))
|
||||||
|
|
||||||
|
json.loads(Path("templates/web-typescript/package.json").read_text(encoding="utf-8"))
|
||||||
|
json.loads(Path("templates/web-typescript/tsconfig.json").read_text(encoding="utf-8"))
|
||||||
|
|
||||||
|
roots = (
|
||||||
|
Path("VERSION"), Path("README.md"), Path("RULES.md"), Path("ROADMAP.md"), Path("CHANGELOG.md"),
|
||||||
|
Path("docs"), Path("deltas"), Path("history"), Path("prompts"), Path("templates"),
|
||||||
|
)
|
||||||
|
files = []
|
||||||
|
for root in roots:
|
||||||
|
if root.is_file():
|
||||||
|
files.append(root)
|
||||||
|
elif root.is_dir():
|
||||||
|
files.extend(path for path in root.rglob("*") if path.is_file())
|
||||||
|
for path in files:
|
||||||
|
try:
|
||||||
|
data = path.read_bytes()
|
||||||
|
text = data.decode("utf-8")
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
continue
|
||||||
|
assert b"\r" not in data, path
|
||||||
|
assert text.endswith("\n"), path
|
||||||
|
for number, line in enumerate(text.splitlines(), 1):
|
||||||
|
assert line == line.rstrip(" \t"), (path, number)
|
||||||
|
print("0.1.3 rel.1 text/template hygiene: clean")
|
||||||
|
PYHYGIENE
|
||||||
|
|
||||||
|
git diff --check
|
||||||
|
git add VERSION README.md ROADMAP.md CHANGELOG.md docs/000-README.md \
|
||||||
|
docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md \
|
||||||
|
deltas/0.1.3/rel.1.md
|
||||||
|
git diff --cached --check
|
||||||
|
git status --short
|
||||||
|
```
|
||||||
|
|
||||||
|
Le scope attendu avant ajout du history est exactement :
|
||||||
|
|
||||||
|
```text
|
||||||
|
M CHANGELOG.md
|
||||||
|
M README.md
|
||||||
|
M ROADMAP.md
|
||||||
|
M VERSION
|
||||||
|
A deltas/0.1.3/rel.1.md
|
||||||
|
M docs/000-README.md
|
||||||
|
M docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md
|
||||||
|
```
|
||||||
|
|
||||||
|
La RC a déjà reconfirmé le profil Android gelé, les frontières Tauri/Games/KSP, le contrat du prompt `010` et l'absence d'artefacts Android supplémentaires. Comme `rel.1` ne modifie aucun artefact technique, la promotion stable rejoue les tests PGR, les audits documentaires et l'hygiène des templates sans simuler une toolchain Android absente du dépôt.
|
||||||
|
|
||||||
|
## Revue opérateur complémentaire
|
||||||
|
|
||||||
|
Confirmer que :
|
||||||
|
|
||||||
|
- `0.1.3` est bien présenté comme stable partout où la RC était auparavant candidate ;
|
||||||
|
- aucun changement fonctionnel Android n'est entré dans `rel.1` ;
|
||||||
|
- `0.1.4` reste le réexamen Tauri, sans création anticipée du skeleton ;
|
||||||
|
- `0.1.5` et `0.1.6` restent respectivement les adoptions Games et KSP ;
|
||||||
|
- le tag et le rapport post-tag ne sont pas anticipés dans le dépôt pré-tag.
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/000-README.md -->
|
<!-- file: docs/000-README.md -->
|
||||||
<!-- version: 39 -->
|
<!-- version: 40 -->
|
||||||
|
|
||||||
# Documentation PGR
|
# Documentation PGR
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Les templates techniques copiables sous `templates/` restent séparés des instr
|
|||||||
|
|
||||||
## Points d'entrée de 0.1.3
|
## Points d'entrée de 0.1.3
|
||||||
|
|
||||||
- [`plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md`](plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md) — plan actif de la réévaluation Android ; `beta.1` est `PASS` et `rc.1` gèle le scope avant promotion stable.
|
- [`plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md`](plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md) — plan historique de la stable `0.1.3`, de l'audit Games à la stabilisation du profil Android générique et au handoff Tauri `0.1.4`.
|
||||||
- [`rules/610-ANDROID.md`](rules/610-ANDROID.md) — owner Android révisé : contrats SDK/identité/signing, natif/ABI, Lint, niveaux de tests, packaging/distribution et 16 KB conditionnel, sans absorber les choix propres à Games.
|
- [`rules/610-ANDROID.md`](rules/610-ANDROID.md) — owner Android révisé : contrats SDK/identité/signing, natif/ABI, Lint, niveaux de tests, packaging/distribution et 16 KB conditionnel, sans absorber les choix propres à Games.
|
||||||
- [`rules/520-JAVA.md`](rules/520-JAVA.md) et [`rules/522-GRADLE.md`](rules/522-GRADLE.md) — owners composés uniquement lorsqu'un projet Android contient réellement du Java ou utilise Gradle.
|
- [`rules/520-JAVA.md`](rules/520-JAVA.md) et [`rules/522-GRADLE.md`](rules/522-GRADLE.md) — owners composés uniquement lorsqu'un projet Android contient réellement du Java ou utilise Gradle.
|
||||||
- [`rules/600-PLATFORMS.md`](rules/600-PLATFORMS.md) et [`rules/400-VALIDATION.md`](rules/400-VALIDATION.md) — contrats généraux de plateforme et de preuve auxquels la spécialisation Android doit rester conforme.
|
- [`rules/600-PLATFORMS.md`](rules/600-PLATFORMS.md) et [`rules/400-VALIDATION.md`](rules/400-VALIDATION.md) — contrats généraux de plateforme et de preuve auxquels la spécialisation Android doit rester conforme.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md -->
|
<!-- file: docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md -->
|
||||||
<!-- version: 5 -->
|
<!-- version: 6 -->
|
||||||
|
|
||||||
# Plan 0.1.3 — réévaluation pratique Android
|
# Plan 0.1.3 — réévaluation pratique Android
|
||||||
|
|
||||||
@@ -563,17 +563,19 @@ La gate beta confirme `48/48` tests Python, les trois audits Markdown, la récon
|
|||||||
|
|
||||||
### rc.1 — release candidate
|
### rc.1 — release candidate
|
||||||
|
|
||||||
Statut opérateur : **à valider**.
|
Statut opérateur : **PASS**.
|
||||||
|
|
||||||
Geler le scope Android, préparer le changelog candidat et `prompts/010-V0_1_4_START_PROMPT.md` sans commencer Tauri. Rejouer les validations PGR de release et vérifier les frontières `0.1.4` / `0.1.5`.
|
La gate RC a confirmé les quatre histories antérieurs `PASS`, le profil Android gelé en révision `5`, le changelog candidat, le prompt `010`, les `48/48` tests, les trois audits Markdown et l'hygiène texte/templates. Aucun owner Android/Java/Gradle/Tauri, template, skeleton, validation, étude technique ou script n'a été modifié pendant la RC.
|
||||||
|
|
||||||
Aucune nouvelle fonctionnalité normative Android ne doit apparaître en RC. Le profil `610-ANDROID.md` reste en révision `5`; la RC ne fait qu'établir la présentation candidate, le handoff vers `0.1.4` et les preuves de cohérence de release.
|
Le prompt `010-V0_1_4_START_PROMPT.md` conserve la frontière de release : le réexamen Tauri démarre en `0.1.4` seulement depuis une stable `v0.1.3` réellement taggée et son rapport post-tag `PASS`; l'adoption Games reste `0.1.5` et l'adoption KSP `0.1.6`.
|
||||||
|
|
||||||
### rel.1 — promotion stable
|
### rel.1 — promotion stable
|
||||||
|
|
||||||
Promouvoir mécaniquement `0.1.3` après RC `PASS` : version stable, roadmap, changelog, README/index et plan historique. Aucun nouveau changement fonctionnel Android ne doit entrer dans la clôture.
|
Première clôture stable de `0.1.3`. La promotion est strictement mécanique : `VERSION = 0.1.3`, `ROADMAP.md` marque `0.1.3` terminée, le `CHANGELOG` perd son marqueur `candidate`, README/index décrivent la réévaluation Android comme stable et le présent plan devient historique. Aucun owner Android/Java/Gradle/Tauri, template, skeleton, validation, étude technique ou script n'est modifié.
|
||||||
|
|
||||||
La preuve post-tag reste séparée et doit être produite depuis l'archive du tag `v0.1.3` réellement publiée avant de démarrer `0.1.4`.
|
Le résultat opérateur de cette tranche appartient à `history/0.1.3/rel.1.md`, créé seulement après exécution de la gate. Si `rel.1` échoue, son history est conservé et un `rel.1.fix.N` corrige uniquement la fermeture ; la première tranche qui établit réellement la stable est incluse dans le commit `0.1.3` avant le tag `v0.1.3`.
|
||||||
|
|
||||||
|
La vérification post-tag reste séparée : `pgr-0.1.3-publish.001-report.md` ne peut être produit qu'à partir de l'archive du tag réellement publiée et des preuves Git observées. Le prompt `010` ne devient le point de départ effectif de `0.1.4` qu'après cette preuve post-tag `PASS`.
|
||||||
|
|
||||||
## Stratégie de validation
|
## Stratégie de validation
|
||||||
|
|
||||||
@@ -604,6 +606,8 @@ Un REPLAN ne sert pas à ajouter des artefacts pour remplir la release ; il corr
|
|||||||
|
|
||||||
La roadmap possède déjà un horizon suffisant jusqu'à `0.1.7`. Aucune nouvelle release n'est réservée par `0.1.3-alpha.1`.
|
La roadmap possède déjà un horizon suffisant jusqu'à `0.1.7`. Aucune nouvelle release n'est réservée par `0.1.3-alpha.1`.
|
||||||
|
|
||||||
|
Le présent document devient le plan historique de la stable `0.1.3`. La publication du tag et sa vérification post-tag restent séparées de cette clôture pré-tag.
|
||||||
|
|
||||||
La prochaine release après publication vérifiée de `0.1.3` reste :
|
La prochaine release après publication vérifiée de `0.1.3` reste :
|
||||||
|
|
||||||
```text
|
```text
|
||||||
|
|||||||
149
history/0.1.3/rel.1.md
Normal file
149
history/0.1.3/rel.1.md
Normal file
@@ -0,0 +1,149 @@
|
|||||||
|
<!-- file: history/0.1.3/rel.1.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# History 0.1.3-rel.1 — promotion stable pré-tag
|
||||||
|
|
||||||
|
## Statut
|
||||||
|
|
||||||
|
PASS
|
||||||
|
|
||||||
|
La gate opérateur de `0.1.3-rel.1` exécutée le `2026-09-28` a réussi. Elle confirme la promotion mécanique de la release candidate vers la stable `0.1.3`, la cohérence des histories antérieurs, la présentation stable du profil Android, les tests PGR, les audits documentaires et l'hygiène texte/templates avant création du tag.
|
||||||
|
|
||||||
|
## Baseline opérateur
|
||||||
|
|
||||||
|
La tranche `0.1.3-rc.1` a été clôturée avec son history `PASS`, puis committée et poussée avant application de `rel.1` :
|
||||||
|
|
||||||
|
```text
|
||||||
|
commit a9fba6c
|
||||||
|
message 0.1.3-rc.1
|
||||||
|
push origin/master PASS
|
||||||
|
```
|
||||||
|
|
||||||
|
Après application du delta `rel.1`, les contrôles initiaux ont confirmé :
|
||||||
|
|
||||||
|
```text
|
||||||
|
VERSION 0.1.3
|
||||||
|
history/0.1.3/rc.1.md présent dans HEAD et le workspace
|
||||||
|
deltas/0.1.3/rel.1.md présent
|
||||||
|
prompts/010-V0_1_4_START_PROMPT.md présent
|
||||||
|
history/0.1.3/rel.1.md absent pendant la gate
|
||||||
|
README.md version 25
|
||||||
|
ROADMAP.md version 15
|
||||||
|
CHANGELOG.md version 17
|
||||||
|
docs/000-README.md version 40
|
||||||
|
docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md version 6
|
||||||
|
```
|
||||||
|
|
||||||
|
Le history `rc.1` a été retrouvé avec statut `PASS`.
|
||||||
|
|
||||||
|
La présentation stable est établie :
|
||||||
|
|
||||||
|
```text
|
||||||
|
ROADMAP.md 0.1.3 marqué terminé
|
||||||
|
CHANGELOG.md entrée `## 0.1.3` sans suffixe `(candidate)`
|
||||||
|
README.md profil Android réévalué contre Games présenté comme stable
|
||||||
|
docs index plan 009 classé historique
|
||||||
|
```
|
||||||
|
|
||||||
|
## Gate stable pré-tag
|
||||||
|
|
||||||
|
Le contrôle structurel a affiché :
|
||||||
|
|
||||||
|
```text
|
||||||
|
0.1.3 rel.1 stable gate audit: clean (5 prior histories, rel.1 pending, stable Android presentation and post-tag Tauri handoff coherent)
|
||||||
|
```
|
||||||
|
|
||||||
|
Il a vérifié les cinq histories antérieurs avec statut `PASS` :
|
||||||
|
|
||||||
|
```text
|
||||||
|
alpha.1 PASS
|
||||||
|
alpha.2 PASS
|
||||||
|
alpha.3 PASS
|
||||||
|
beta.1 PASS
|
||||||
|
rc.1 PASS
|
||||||
|
```
|
||||||
|
|
||||||
|
Avant application du présent history, `rel.1.md` est la seule tranche `0.1.3` possédant un delta sans history.
|
||||||
|
|
||||||
|
La gate a également confirmé :
|
||||||
|
|
||||||
|
- `0.1.3` terminé dans la roadmap ;
|
||||||
|
- `0.1.4` à `0.1.7` engagés sans réservation de `0.1.8` ;
|
||||||
|
- le `CHANGELOG` stable sans suffixe `(candidate)` et sans détails de tranches ;
|
||||||
|
- le plan `009` classé historique ;
|
||||||
|
- le profil Android `610-ANDROID.md` gelé en révision `5` ;
|
||||||
|
- l'absence de généralisation de `targetSdk 36`, `minSdk 21`, NDK r28, quatre ABI, Gradle 9.7.1, AGP 9.4.0 ou JDK 25 ;
|
||||||
|
- la composition Android avec les owners génériques existants sans création d'owner JNI/Rust/SDL, de skeleton Android ni de contrat de validation redondant ;
|
||||||
|
- les contrats Android stabilisés pour SDK, identité applicative, natif/ABI, Android Lint, niveaux de tests, APK/AAB et contraintes 16 KB conditionnelles ;
|
||||||
|
- `0.1.4` réservé au réexamen Tauri, sans création anticipée du skeleton ;
|
||||||
|
- `0.1.5` et `0.1.6` réservés respectivement aux adoptions Games et KSP ;
|
||||||
|
- le prompt `010` préparé pour démarrer `0.1.4` uniquement depuis le tag réel `v0.1.3` et un rapport post-tag `publish.001` `PASS` ;
|
||||||
|
- la convention de clôture `rel.N`, puis commit stable `X.Y.Z` avant création du tag.
|
||||||
|
|
||||||
|
## Validation Android
|
||||||
|
|
||||||
|
Les décisions Android issues du corpus Games ont été réconciliées avant la RC et `rel.1` n'a modifié aucun owner technique.
|
||||||
|
|
||||||
|
La promotion stable n'a donc pas simulé de toolchain Android, Gradle, AGP, JDK ou NDK absente du dépôt PGR. Elle a rejoué les gates réellement possédées par PGR afin de vérifier que la promotion documentaire et les métadonnées de release n'ont invalidé aucune propriété du référentiel.
|
||||||
|
|
||||||
|
Les choix Games qui restent locaux n'ont pas été promus en minima PGR universels et aucun artefact Android supplémentaire n'a été créé pendant la clôture.
|
||||||
|
|
||||||
|
## Tests et audits PGR
|
||||||
|
|
||||||
|
La suite Python globale a exécuté `48` tests, tous réussis :
|
||||||
|
|
||||||
|
```text
|
||||||
|
Ran 48 tests in 0.735s
|
||||||
|
|
||||||
|
OK
|
||||||
|
```
|
||||||
|
|
||||||
|
Les audits documentaires sont propres :
|
||||||
|
|
||||||
|
```text
|
||||||
|
Markdown header audit: clean (263 file(s))
|
||||||
|
Markdown table audit: clean (11 table(s), 263 file(s))
|
||||||
|
Markdown link audit: clean (337 local link(s), 263 file(s))
|
||||||
|
```
|
||||||
|
|
||||||
|
L'hygiène texte/templates a également affiché :
|
||||||
|
|
||||||
|
```text
|
||||||
|
0.1.3 rel.1 text/template hygiene: clean
|
||||||
|
```
|
||||||
|
|
||||||
|
Les templates TOML Rust/Cargo et JSON Web ont été parsés avec succès ; aucun retour chariot, whitespace final ni fichier texte sans newline finale n'a été détecté dans le corpus contrôlé.
|
||||||
|
|
||||||
|
## Contrôles Git
|
||||||
|
|
||||||
|
`git diff --check` et `git diff --cached --check` n'ont produit aucun diagnostic.
|
||||||
|
|
||||||
|
Le statut indexé transmis avant ajout du présent history est exactement :
|
||||||
|
|
||||||
|
```text
|
||||||
|
M CHANGELOG.md
|
||||||
|
M README.md
|
||||||
|
M ROADMAP.md
|
||||||
|
M VERSION
|
||||||
|
A deltas/0.1.3/rel.1.md
|
||||||
|
M docs/000-README.md
|
||||||
|
M docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md
|
||||||
|
```
|
||||||
|
|
||||||
|
Le scope correspond exactement à la promotion stable annoncée. Aucun owner Android/Java/Gradle/Tauri, template, skeleton, validation, étude technique ou script d'audit n'a été modifié pendant `rel.1`.
|
||||||
|
|
||||||
|
## Décision
|
||||||
|
|
||||||
|
`0.1.3-rel.1` est `PASS`. Aucun fix ni REPLAN n'est requis.
|
||||||
|
|
||||||
|
Conformément à la convention stable PGR, le présent history doit être inclus dans le commit final nommé exactement :
|
||||||
|
|
||||||
|
```text
|
||||||
|
0.1.3
|
||||||
|
```
|
||||||
|
|
||||||
|
Le commit stable doit être poussé sur `origin/master` avant création du tag annoté `v0.1.3`.
|
||||||
|
|
||||||
|
Le rapport `pgr-0.1.3-publish.001-report.md` ne pourra être produit qu'après réception des preuves post-publication réelles : identité du commit stable, propreté du workspace, objet et cible déréférencée du tag local, références distantes du tag et archive ZIP téléchargée depuis le tag Gitea.
|
||||||
|
|
||||||
|
Le prompt `010-V0_1_4_START_PROMPT.md` ne devient la reprise effective de `0.1.4` qu'après un rapport post-tag `PASS`.
|
||||||
Reference in New Issue
Block a user