This commit is contained in:
2026-09-28 13:04:53 +02:00
parent a9fba6c5c3
commit fe80dbbb73
8 changed files with 458 additions and 17 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: CHANGELOG.md -->
<!-- version: 16 -->
<!-- version: 17 -->
# 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.
## 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 ;
- 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 ;

View File

@@ -1,5 +1,5 @@
<!-- file: README.md -->
<!-- version: 24 -->
<!-- version: 25 -->
# Project Governance Rules
@@ -11,9 +11,9 @@ Le dépôt officiel est `https://git.sasedev.com/Sasedev/pgr`.
## 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
@@ -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/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/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/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 ;

View File

@@ -1,5 +1,5 @@
<!-- file: ROADMAP.md -->
<!-- version: 14 -->
<!-- version: 15 -->
# 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.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.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 ;

View File

@@ -1 +1 @@
0.1.3-rc.1
0.1.3

288
deltas/0.1.3/rel.1.md Normal file
View 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.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/000-README.md -->
<!-- version: 39 -->
<!-- version: 40 -->
# 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
- [`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/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.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md -->
<!-- version: 5 -->
<!-- version: 6 -->
# 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
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
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
@@ -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`.
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 :
```text

149
history/0.1.3/rel.1.md Normal file
View 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`.