0.1.1-rc.1
This commit is contained in:
11
CHANGELOG.md
11
CHANGELOG.md
@@ -1,5 +1,5 @@
|
||||
<!-- file: CHANGELOG.md -->
|
||||
<!-- version: 11 -->
|
||||
<!-- version: 12 -->
|
||||
|
||||
# Changelog Project Governance Rules
|
||||
|
||||
@@ -7,6 +7,15 @@ 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.1 (candidate)
|
||||
|
||||
- établit une fondation frontend Web composable avec quatre owners indépendants : TypeScript, écosystème de package JavaScript, Vite et CSS/Sass, sans transformer un outil concret en obligation universelle ;
|
||||
- recommande TypeScript pour les frontends durables avec vérification stricte et `noEmit`, tout en distinguant les types embarqués des packages `@types/*` réellement nécessaires à l'analyse, à l'intégration IDE et aux API consommées ;
|
||||
- formalise un écosystème de package neutre vis-à-vis de npm/pnpm/yarn, un script `typecheck` indépendant et une politique de lockfile dépendant du rôle application/bibliothèque plutôt qu'une règle unique artificielle ;
|
||||
- recommande Vite lorsque son modèle convient, avec ownership explicite du dev server, du cache, des outputs, des assets et des paramètres de sécurité, sans fournir de `vite.config.ts`, port, `base` ou layout universels ;
|
||||
- conserve CSS comme baseline valide et recommande Sass lorsqu'il apporte une valeur réelle, notamment pour les packages exposant une API Sass, avec préférence pour `@use` / `@forward` et séparation stricte entre sources et styles générés ;
|
||||
- ajoute une validation frontend indépendante du host et un skeleton Web composable, puis confirme que les cinq prérequis Web du futur réexamen Tauri sont couverts sans lever le `DEFER`, qui reste réservé à `0.1.4`.
|
||||
|
||||
## 0.1.0
|
||||
|
||||
- établit la première baseline PGR réellement réutilisable pour initialiser de nouveaux projets et adopter progressivement des projets existants, avec une fondation de gouvernance, des skeleton specifications composables et une validation proportionnée ;
|
||||
|
||||
331
deltas/0.1.1/rc.1.md
Normal file
331
deltas/0.1.1/rc.1.md
Normal file
@@ -0,0 +1,331 @@
|
||||
<!-- file: deltas/0.1.1/rc.1.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.1.1-rc.1 — gel du scope et gate de release candidate
|
||||
|
||||
## Baseline et version
|
||||
|
||||
Baseline attendue : commit opérateur de `0.1.1-beta.1`, réalisé après application de `history/0.1.1/beta.1.md` avec statut `PASS`.
|
||||
|
||||
Le hash de ce commit n'est pas anticipé.
|
||||
|
||||
Version avant application :
|
||||
|
||||
```text
|
||||
0.1.1-beta.1
|
||||
```
|
||||
|
||||
Version après application :
|
||||
|
||||
```text
|
||||
0.1.1-rc.1
|
||||
```
|
||||
|
||||
## Objet et gel
|
||||
|
||||
La RC gèle le scope fonctionnel de `0.1.1` sur :
|
||||
|
||||
- les quatre owners indépendants `530 — TypeScript`, `540 — JavaScript package ecosystem`, `550 — Vite` et `560 — CSS / Sass` ;
|
||||
- la baseline TypeScript/package avec `strict`, `noEmit`, script `typecheck`, politique de lockfile par rôle et déclarations de types externes conditionnelles ;
|
||||
- Vite comme build tool/dev server recommandé mais non obligatoire, avec ownership explicite des caches, outputs, assets et limites d'exposition du dev server ;
|
||||
- CSS comme baseline valide et Sass recommandé lorsqu'il apporte une valeur réelle, avec préférence `@use` / `@forward`, consommation des entrypoints publics et séparation source/généré ;
|
||||
- la validation frontend `005` indépendante du host ;
|
||||
- le skeleton Web `003` composable sans `vite.config.ts`, `main.scss`, package manager, framework CSS ou layout universels ;
|
||||
- la preuve `beta.1` que les cinq prérequis Web du futur réexamen Tauri sont couverts, sans lever le `DEFER` avant `0.1.4`.
|
||||
|
||||
Le changelog reçoit une entrée candidate `0.1.1` orientée utilisateurs. Le prompt `008-V0_1_2_START_PROMPT.md` est préparé pour la prochaine cible engagée Java/Maven/Gradle avec frontière Android explicite.
|
||||
|
||||
Aucune nouvelle fonctionnalité normative n'entre dans cette RC. Les profils, skeletons, templates techniques et contrats de validation Web sont vérifiés mais non modifiés.
|
||||
|
||||
## Scope
|
||||
|
||||
REPLACE :
|
||||
|
||||
```text
|
||||
VERSION
|
||||
CHANGELOG.md
|
||||
docs/000-README.md
|
||||
docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md
|
||||
```
|
||||
|
||||
ADD :
|
||||
|
||||
```text
|
||||
deltas/0.1.1/rc.1.md
|
||||
prompts/008-V0_1_2_START_PROMPT.md
|
||||
```
|
||||
|
||||
DELETE : aucun.
|
||||
|
||||
Le history `beta.1` est livré séparément et MUST être appliqué/committé avant ce delta.
|
||||
|
||||
## Gate opérateur de release candidate
|
||||
|
||||
Après application du history `PASS` de `beta.1`, commit/push de `beta.1`, puis application du présent delta :
|
||||
|
||||
```bash
|
||||
test "$(cat VERSION)" = '0.1.1-rc.1'
|
||||
git cat-file -e HEAD:history/0.1.1/beta.1.md
|
||||
test -f history/0.1.1/beta.1.md
|
||||
test -f deltas/0.1.1/rc.1.md
|
||||
test -f prompts/008-V0_1_2_START_PROMPT.md
|
||||
test ! -e history/0.1.1/rc.1.md
|
||||
|
||||
grep -A2 '^## Statut$' history/0.1.1/beta.1.md | grep -Fx 'PASS'
|
||||
grep -Fx '<!-- version: 12 -->' CHANGELOG.md
|
||||
grep -Fx '## 0.1.1 (candidate)' CHANGELOG.md
|
||||
grep -Fx '<!-- version: 30 -->' docs/000-README.md
|
||||
grep -Fx '<!-- version: 10 -->' docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md
|
||||
grep -Fx '<!-- version: 11 -->' ROADMAP.md
|
||||
grep -Fx '<!-- version: 1 -->' prompts/008-V0_1_2_START_PROMPT.md
|
||||
```
|
||||
|
||||
Contrôle d'intégration de la RC :
|
||||
|
||||
```bash
|
||||
python3 -B - <<'PYGATE'
|
||||
from pathlib import Path
|
||||
import json
|
||||
import re
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
expected = {
|
||||
"alpha.1.md": "PASS",
|
||||
"alpha.2.md": "FAIL",
|
||||
"alpha.2.fix.1.md": "PASS",
|
||||
"alpha.3.md": "PASS",
|
||||
"alpha.3.fix.1.md": "FAIL",
|
||||
"alpha.3.fix.2.md": "PASS",
|
||||
"alpha.4.md": "PASS",
|
||||
"alpha.5.md": "PASS",
|
||||
"beta.1.md": "PASS",
|
||||
}
|
||||
|
||||
histories = {path.name for path in Path("history/0.1.1").glob("*.md")}
|
||||
assert histories == set(expected), histories
|
||||
for name, status in expected.items():
|
||||
text = Path("history/0.1.1", name).read_text(encoding="utf-8")
|
||||
assert re.search(rf"## Statut\s+{status}\s", text), (name, status)
|
||||
|
||||
deltas = {path.name for path in Path("deltas/0.1.1").glob("*.md")}
|
||||
assert deltas == set(expected) | {"rc.1.md"}, deltas
|
||||
|
||||
changelog = Path("CHANGELOG.md").read_text(encoding="utf-8")
|
||||
assert "## 0.1.1 (candidate)" in changelog
|
||||
section = changelog.split("## 0.1.1 (candidate)", 1)[1].split("## 0.1.0", 1)[0]
|
||||
for phrase in (
|
||||
"quatre owners indépendants",
|
||||
"TypeScript",
|
||||
"@types/*",
|
||||
"package JavaScript",
|
||||
"Vite",
|
||||
"CSS comme baseline valide",
|
||||
"Sass",
|
||||
"validation frontend indépendante du host",
|
||||
"DEFER",
|
||||
"0.1.4",
|
||||
):
|
||||
assert phrase in section, phrase
|
||||
for forbidden in (
|
||||
"alpha.2",
|
||||
"alpha.3",
|
||||
"alpha.4",
|
||||
"alpha.5",
|
||||
"beta.1",
|
||||
"rc.1",
|
||||
):
|
||||
assert forbidden not in section, forbidden
|
||||
|
||||
plan = Path("docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md").read_text(encoding="utf-8")
|
||||
for phrase in (
|
||||
"### beta.1 — réconciliation et preuve de préparation Tauri\n\nStatut opérateur : **PASS**.",
|
||||
"### rc.1 — release candidate\n\nStatut opérateur : **à valider**.",
|
||||
"prompts/008-V0_1_2_START_PROMPT.md",
|
||||
"Aucune nouvelle fonctionnalité normative ne doit apparaître en RC.",
|
||||
):
|
||||
assert phrase in plan, phrase
|
||||
|
||||
prompt = Path("prompts/008-V0_1_2_START_PROMPT.md").read_text(encoding="utf-8")
|
||||
for phrase in (
|
||||
"archive source téléchargée depuis le tag Gitea `v0.1.1`",
|
||||
"pgr-0.1.1-publish.001-report.md",
|
||||
"0.1.2-alpha.1",
|
||||
"ad6e44a1332eb7d6069cf1189d9433f0fbb8fac19c5aac9f4641ac45c1c556e8",
|
||||
"520-JAVA_MAVEN_GRADLE.md",
|
||||
"610-ANDROID.md",
|
||||
"ADOPT / KEEP-LOCAL / OVERRIDE / DEFER",
|
||||
"Gradle système versus Wrapper",
|
||||
"Maven",
|
||||
"Frontière Android obligatoire",
|
||||
"réservé à `0.1.4`",
|
||||
):
|
||||
assert phrase in prompt, phrase
|
||||
|
||||
roadmap = Path("ROADMAP.md").read_text(encoding="utf-8")
|
||||
for version in ("0.1.1", "0.1.2", "0.1.3", "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
|
||||
|
||||
for path, version in (
|
||||
("docs/rules/530-TYPESCRIPT.md", 3),
|
||||
("docs/rules/540-JAVASCRIPT_PACKAGE_ECOSYSTEM.md", 3),
|
||||
("docs/rules/550-VITE.md", 2),
|
||||
("docs/rules/560-CSS_SASS.md", 2),
|
||||
("docs/rules/710-TAURI.md", 6),
|
||||
("docs/skeletons/003-WEB_FRONTEND.md", 1),
|
||||
("docs/validation/005-WEB_FRONTEND_VALIDATION.md", 1),
|
||||
("docs/studies/002-TAURI_SKELETON_DECISION.md", 2),
|
||||
):
|
||||
lines = Path(path).read_text(encoding="utf-8").splitlines()
|
||||
assert lines[1] == f"<!-- version: {version} -->", (path, lines[1])
|
||||
|
||||
study = Path("docs/studies/002-TAURI_SKELETON_DECISION.md").read_text(encoding="utf-8")
|
||||
for phrase in (
|
||||
"DEFER",
|
||||
"Condition 1 — TypeScript et conventions Web contrôlées",
|
||||
"Condition 2 — Vite et ownership des commandes/dev server/build outputs",
|
||||
"Condition 3 — Sass/CSS et statut des artefacts générés",
|
||||
"Condition 4 — validation frontend indépendante de la validation Tauri",
|
||||
"Condition 5 — framework CSS classé comme décision de skeleton/projet",
|
||||
"réexamen autorisé 0.1.4",
|
||||
):
|
||||
assert phrase in study, phrase
|
||||
|
||||
package_source = Path("templates/web-typescript/package.json")
|
||||
tsconfig_source = Path("templates/web-typescript/tsconfig.json")
|
||||
with tempfile.TemporaryDirectory(prefix="pgr-rc1-web-") as temp_name:
|
||||
temp = Path(temp_name)
|
||||
shutil.copy2(package_source, temp / "package.json")
|
||||
shutil.copy2(tsconfig_source, temp / "tsconfig.json")
|
||||
package = json.loads((temp / "package.json").read_text(encoding="utf-8"))
|
||||
tsconfig = json.loads((temp / "tsconfig.json").read_text(encoding="utf-8"))
|
||||
assert package == {
|
||||
"name": "project-web",
|
||||
"private": True,
|
||||
"scripts": {"typecheck": "tsc --noEmit"},
|
||||
}
|
||||
assert tsconfig["compilerOptions"] == {
|
||||
"strict": True,
|
||||
"noEmit": True,
|
||||
"noUnusedLocals": True,
|
||||
"noUnusedParameters": True,
|
||||
"noFallthroughCasesInSwitch": True,
|
||||
}
|
||||
assert not (temp / "vite.config.ts").exists()
|
||||
assert not (temp / "main.scss").exists()
|
||||
assert not (temp / "src-tauri").exists()
|
||||
|
||||
assert not Path("templates/web-vite/vite.config.ts").exists()
|
||||
assert not Path("templates/web-css/main.scss").exists()
|
||||
|
||||
index = Path("docs/000-README.md").read_text(encoding="utf-8")
|
||||
assert "../prompts/008-V0_1_2_START_PROMPT.md" in index
|
||||
|
||||
print("0.1.1 rc.1 integration audit: clean (9 prior histories, frozen Web foundation, candidate changelog and prompt 008 verified)")
|
||||
PYGATE
|
||||
```
|
||||
|
||||
Rejouer ensuite les preuves PGR :
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
Vérifier également l'hygiène texte/JSON sans prétendre remplacer les toolchains frontend :
|
||||
|
||||
```bash
|
||||
python3 -B - <<'PYHYGIENE'
|
||||
from pathlib import Path
|
||||
import json
|
||||
|
||||
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.1 rc.1 text/JSON hygiene: clean")
|
||||
PYHYGIENE
|
||||
|
||||
git diff --check
|
||||
|
||||
git add VERSION CHANGELOG.md docs/000-README.md \
|
||||
docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md \
|
||||
prompts/008-V0_1_2_START_PROMPT.md \
|
||||
deltas/0.1.1/rc.1.md
|
||||
|
||||
git diff --cached --check
|
||||
git status --short
|
||||
```
|
||||
|
||||
Le scope indexé attendu avant ajout du history de `rc.1` est exactement :
|
||||
|
||||
```text
|
||||
M CHANGELOG.md
|
||||
M VERSION
|
||||
A deltas/0.1.1/rc.1.md
|
||||
M docs/000-README.md
|
||||
M docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md
|
||||
A prompts/008-V0_1_2_START_PROMPT.md
|
||||
```
|
||||
|
||||
## Revue opérateur complémentaire
|
||||
|
||||
Confirmer que :
|
||||
|
||||
- le scope normatif Web est gelé ;
|
||||
- aucun owner `530/540/550/560`, skeleton, template technique ou contrat de validation n'est modifié par la RC ;
|
||||
- le changelog candidat décrit les capacités utiles de `0.1.1` sans recopier les tranches internes ;
|
||||
- TypeScript, Vite et Sass restent des recommandations conditionnelles et non des obligations universelles ;
|
||||
- le prompt `008` réévalue le profil `520` avant de créer de nouveaux artefacts Java/Gradle ;
|
||||
- le prompt `008` ne transforme pas les choix Android de Games en règles Java/Gradle générales ;
|
||||
- Maven reste dans l'owner `520`, mais aucun nouvel artefact Maven n'est anticipé sans corpus réel ;
|
||||
- le skeleton Tauri reste `DEFER` et son réexamen reste réservé à `0.1.4` ;
|
||||
- `0.1.8` n'est pas réservé ;
|
||||
- aucun résultat `tsc`, Vite ou Sass n'est revendiqué alors que PGR ne contient pas de frontend concret ni de dépendances installées pour cette RC.
|
||||
|
||||
## Transition
|
||||
|
||||
### PASS
|
||||
|
||||
Produire `history/0.1.1/rc.1.md`, l'appliquer puis committer/pousser `rc.1`. Continuer avec `0.1.1-rel.1` pour la promotion mécanique vers la stable, la clôture roadmap/plan/changelog et la gate pré-tag.
|
||||
|
||||
### FAIL
|
||||
|
||||
Consigner le diagnostic réel dans `history/0.1.1/rc.1.md`. Corriger uniquement la release candidate dans `rc.1.fix.N` tant qu'aucun défaut normatif plus large ne justifie un REPLAN. Ne pas préparer `rel.1` tant que la RC n'a pas obtenu `PASS`.
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/000-README.md -->
|
||||
<!-- version: 29 -->
|
||||
<!-- version: 30 -->
|
||||
|
||||
# Documentation PGR
|
||||
|
||||
@@ -32,6 +32,7 @@ Les templates techniques copiables sous `templates/` restent séparés des instr
|
||||
- [`studies/002-TAURI_SKELETON_DECISION.md`](studies/002-TAURI_SKELETON_DECISION.md) — décision `DEFER` conservée ; `beta.1` vérifie que ses cinq prérequis Web sont désormais couverts et prépare leur réexamen objectif en `0.1.4` sans créer le skeleton Tauri.
|
||||
- [`studies/003-V0_1_0_HORIZON_REVIEW.md`](studies/003-V0_1_0_HORIZON_REVIEW.md) — revue ayant engagé `0.1.1` à `0.1.7` et maintenu WASM, serveur Rust et deployment sans réservation prématurée.
|
||||
- [`../prompts/007-V0_1_1_START_PROMPT.md`](../prompts/007-V0_1_1_START_PROMPT.md) — contrat de reprise autoritaire de la release `0.1.1`.
|
||||
- [`../prompts/008-V0_1_2_START_PROMPT.md`](../prompts/008-V0_1_2_START_PROMPT.md) — prompt préparé en RC pour réévaluer Java/Maven/Gradle en `0.1.2` après publication et vérification post-tag de `0.1.1`, avec frontière Android explicite.
|
||||
|
||||
## Points d'entrée de 0.1.0
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md -->
|
||||
<!-- version: 9 -->
|
||||
<!-- version: 10 -->
|
||||
|
||||
# Plan 0.1.1 — fondation frontend Web contrôlée
|
||||
|
||||
@@ -423,9 +423,11 @@ Le skeleton ne lève pas le `DEFER` Tauri. `beta.1` devra encore réconcilier le
|
||||
|
||||
### beta.1 — réconciliation et preuve de préparation Tauri
|
||||
|
||||
Statut opérateur : **à valider**.
|
||||
Statut opérateur : **PASS**.
|
||||
|
||||
Réconcilier la fondation Web complète et comparer explicitement les cinq conditions de sortie de `002-TAURI_SKELETON_DECISION.md` aux artefacts désormais matérialisés :
|
||||
La gate opérateur confirme le dry-run structurel du skeleton Web, la couverture des cinq prérequis Web du futur réexamen Tauri, les `48/48` tests et les trois audits Markdown propres. Le `DEFER` Tauri reste explicitement réservé à `0.1.4` et aucun owner Web n'a été modifié pendant cette réconciliation.
|
||||
|
||||
Les cinq conditions de sortie de `002-TAURI_SKELETON_DECISION.md` sont désormais rattachées aux artefacts matérialisés suivants :
|
||||
|
||||
```text
|
||||
1. TypeScript contrôlé 530 + 008 + templates web-typescript
|
||||
@@ -445,7 +447,13 @@ Si une responsabilité Web nécessaire reste sans owner clair, effectuer un REPL
|
||||
|
||||
### rc.1 — release candidate
|
||||
|
||||
Geler le scope, mettre à jour le `CHANGELOG.md` candidat, exécuter le release gate proportionnel complet et préparer/vérifier le prompt de reprise `0.1.2` si la roadmap reste valide.
|
||||
Statut opérateur : **à valider**.
|
||||
|
||||
Geler le scope sur les owners `530/540/550/560`, les guides `008/009/010`, la validation `005`, le skeleton `003` et la preuve de préparation Tauri obtenue en `beta.1`.
|
||||
|
||||
Mettre à jour le `CHANGELOG.md` candidat, rejouer un release gate proportionnel complet, vérifier l'intégrité des histories de `0.1.1` et préparer `prompts/008-V0_1_2_START_PROMPT.md` puisque la roadmap engage toujours `0.1.2` sur la réévaluation Java/Maven/Gradle.
|
||||
|
||||
Le prompt `008` doit imposer la séparation Java/Gradle générique versus Android : le profil `520` est réévalué à partir du corpus Games, tandis qu'AGP, SDK Android, JNI/ABI et packaging APK/AAB restent hors scope et réservés à `0.1.3`. Maven reste dans l'owner `520`, mais aucun artefact Maven nouveau ne doit être créé en `0.1.2` sans corpus ou besoin réel.
|
||||
|
||||
Aucune nouvelle fonctionnalité normative ne doit apparaître en RC.
|
||||
|
||||
|
||||
127
history/0.1.1/rc.1.md
Normal file
127
history/0.1.1/rc.1.md
Normal file
@@ -0,0 +1,127 @@
|
||||
<!-- file: history/0.1.1/rc.1.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# History 0.1.1-rc.1 — release candidate frontend Web
|
||||
|
||||
## Statut
|
||||
|
||||
PASS
|
||||
|
||||
La gate opérateur de `0.1.1-rc.1` exécutée le `2026-09-27` a réussi. Elle confirme le gel de la fondation frontend Web, l'intégrité des histories antérieurs, le changelog candidat, le prompt de reprise `008`, les tests Python, les audits Markdown et l'hygiène texte/JSON avant promotion stable.
|
||||
|
||||
## Baseline opérateur
|
||||
|
||||
La tranche `0.1.1-beta.1` a été clôturée avec son history `PASS`, puis committée et poussée avant application de `rc.1` :
|
||||
|
||||
```text
|
||||
commit 9ef9549
|
||||
message 0.1.1-beta.1
|
||||
push origin/master PASS
|
||||
```
|
||||
|
||||
Après application du delta `rc.1`, les contrôles initiaux ont confirmé :
|
||||
|
||||
```text
|
||||
VERSION 0.1.1-rc.1
|
||||
history/0.1.1/beta.1.md présent dans HEAD et le workspace
|
||||
deltas/0.1.1/rc.1.md présent
|
||||
prompts/008-V0_1_2_START_PROMPT.md présent
|
||||
history/0.1.1/rc.1.md absent pendant la gate
|
||||
CHANGELOG.md version 12
|
||||
docs/000-README.md version 30
|
||||
docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md version 10
|
||||
ROADMAP.md version 11
|
||||
prompts/008-V0_1_2_START_PROMPT.md version 1
|
||||
```
|
||||
|
||||
Le history `beta.1` a été retrouvé avec statut `PASS`.
|
||||
|
||||
## Gate d'intégration RC
|
||||
|
||||
Le contrôle structurel a affiché :
|
||||
|
||||
```text
|
||||
0.1.1 rc.1 integration audit: clean (9 prior histories, frozen Web foundation, candidate changelog and prompt 008 verified)
|
||||
```
|
||||
|
||||
Il a vérifié les neuf histories antérieurs avec leurs statuts réels :
|
||||
|
||||
```text
|
||||
alpha.1 PASS
|
||||
alpha.2 FAIL
|
||||
alpha.2.fix.1 PASS
|
||||
alpha.3 PASS
|
||||
alpha.3.fix.1 FAIL
|
||||
alpha.3.fix.2 PASS
|
||||
alpha.4 PASS
|
||||
alpha.5 PASS
|
||||
beta.1 PASS
|
||||
```
|
||||
|
||||
Avant application du présent history, `rc.1.md` est la seule tranche `0.1.1` possédant un delta sans history.
|
||||
|
||||
La gate a également confirmé :
|
||||
|
||||
- le `CHANGELOG` candidat `0.1.1` sans détails de tranches ;
|
||||
- le plan `007` avec `beta.1` `PASS` et `rc.1` encore à valider pendant la gate ;
|
||||
- le prompt `008` ciblant `0.1.2-alpha.1` depuis une future archive du tag `v0.1.1` et son rapport post-tag réel ;
|
||||
- la frontière obligatoire Java/Maven/Gradle versus Android dans ce prompt ;
|
||||
- la roadmap `0.1.1` à `0.1.7` sans réservation de `0.1.8` ;
|
||||
- le `DEFER` du skeleton Tauri jusqu'au réexamen `0.1.4` ;
|
||||
- les versions gelées des owners `530/540/550/560`, du profil Tauri, du skeleton Web, de la validation Web et de l'étude Tauri ;
|
||||
- le dry-run structurel du skeleton Web sans `vite.config.ts`, `main.scss` ni host Tauri injecté.
|
||||
|
||||
## Tests et audits PGR
|
||||
|
||||
La suite Python globale a exécuté `48` tests, tous réussis :
|
||||
|
||||
```text
|
||||
Ran 48 tests in 0.693s
|
||||
|
||||
OK
|
||||
```
|
||||
|
||||
Les audits documentaires sont propres :
|
||||
|
||||
```text
|
||||
Markdown header audit: clean (228 file(s))
|
||||
Markdown table audit: clean (9 table(s), 228 file(s))
|
||||
Markdown link audit: clean (267 local link(s), 228 file(s))
|
||||
```
|
||||
|
||||
L'hygiène texte/JSON a également réussi :
|
||||
|
||||
```text
|
||||
0.1.1 rc.1 text/JSON hygiene: clean
|
||||
```
|
||||
|
||||
Les deux templates JSON Web ont été parsés et 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 VERSION
|
||||
A deltas/0.1.1/rc.1.md
|
||||
M docs/000-README.md
|
||||
M docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md
|
||||
A prompts/008-V0_1_2_START_PROMPT.md
|
||||
```
|
||||
|
||||
Le scope correspond exactement à la RC annoncée. Aucun owner Web, template technique, skeleton, validation ou étude technique n'a été modifié pendant la RC.
|
||||
|
||||
## Décision
|
||||
|
||||
`0.1.1-rc.1` est `PASS`. Aucun fix ni REPLAN n'est requis.
|
||||
|
||||
La transition autorisée est la promotion mécanique pré-tag :
|
||||
|
||||
```text
|
||||
0.1.1-rel.1
|
||||
```
|
||||
|
||||
Cette promotion ne doit pas rouvrir le scope fonctionnel. Elle doit uniquement présenter `0.1.1` comme stable, produire sa propre gate pré-tag et préparer le handoff de publication sans anticiper le rapport post-tag.
|
||||
98
prompts/008-V0_1_2_START_PROMPT.md
Normal file
98
prompts/008-V0_1_2_START_PROMPT.md
Normal file
@@ -0,0 +1,98 @@
|
||||
<!-- file: prompts/008-V0_1_2_START_PROMPT.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Prompt de démarrage 0.1.2 — réévaluation Java / Maven / Gradle
|
||||
|
||||
## Baseline et cible
|
||||
|
||||
Dépôt canonique : `https://git.sasedev.com/Sasedev/pgr`.
|
||||
|
||||
La baseline attendue au démarrage effectif de `0.1.2` est l'archive source téléchargée depuis le tag Gitea `v0.1.1`, accompagnée du rapport post-tag `pgr-0.1.1-publish.001-report.md` uniquement si ce rapport a réellement été produit avec statut `PASS`.
|
||||
|
||||
Version cible : `0.1.2`. Première tranche attendue : `0.1.2-alpha.1`.
|
||||
|
||||
Le corpus principal attendu pour confronter Java/Gradle à un projet réel est une archive autoritaire récente de `sasedev-games`. Si aucune baseline plus récente n'est explicitement fournie, la baseline de référence déjà auditée reste :
|
||||
|
||||
```text
|
||||
games-v0.3.6.zip ad6e44a1332eb7d6069cf1189d9433f0fbb8fac19c5aac9f4641ac45c1c556e8
|
||||
```
|
||||
|
||||
Une archive source peut légitimement ne pas contenir `.git`. Ne pas lui attribuer une preuve Git qu'elle ne peut contenir.
|
||||
|
||||
## Reprise manuelle après publication
|
||||
|
||||
Après vérification réelle de l'archive du tag `v0.1.1` et du rapport post-tag `PASS`, la consigne de nouvelle session doit suivre le pattern de [`../docs/templates/003-NEW_SESSION_PROMPT.md`](../docs/templates/003-NEW_SESSION_PROMPT.md) et citer les artefacts réellement obtenus.
|
||||
|
||||
La forme attendue, si les noms et le statut sont confirmés, est :
|
||||
|
||||
```text
|
||||
Partir de l'archive pgr-v0.1.1.zip téléchargée depuis le tag Gitea v0.1.1 et du rapport post-tag pgr-0.1.1-publish.001-report.md. Lire et exécuter prompts/008-V0_1_2_START_PROMPT.md. Vérifier intégralement la stable PGR, puis réévaluer le profil Java/Maven/Gradle à partir du corpus Games autoritaire avant de préparer 0.1.2-alpha.1, sans absorber le scope Android réservé à 0.1.3.
|
||||
```
|
||||
|
||||
Ce texte ne doit pas être remis comme preuve de publication avant le `publish.001 PASS` réel.
|
||||
|
||||
## Mission
|
||||
|
||||
Réévaluer pratiquement le profil existant [`../docs/rules/520-JAVA_MAVEN_GRADLE.md`](../docs/rules/520-JAVA_MAVEN_GRADLE.md) à partir du corpus Games réellement fourni, puis matérialiser uniquement les règles, templates, validations ou audits Java/Gradle génériques qui apportent une valeur réutilisable démontrée.
|
||||
|
||||
`alpha.1` MUST commencer par :
|
||||
|
||||
1. auditer indépendamment la stable `v0.1.1` et son rapport post-tag lorsqu'il est fourni ;
|
||||
2. auditer le corpus Games réellement fourni, en particulier sa structure Java/Gradle et les preuves historiques pertinentes ;
|
||||
3. relire `520-JAVA_MAVEN_GRADLE.md`, [`../docs/rules/610-ANDROID.md`](../docs/rules/610-ANDROID.md) et [`../docs/studies/003-V0_1_0_HORIZON_REVIEW.md`](../docs/studies/003-V0_1_0_HORIZON_REVIEW.md) ;
|
||||
4. créer le plan `0.1.2` avant toute normalisation importante ;
|
||||
5. classifier les décisions observées avec `ADOPT / KEEP-LOCAL / OVERRIDE / DEFER` plutôt que copier Games dans PGR.
|
||||
|
||||
## Questions à instruire
|
||||
|
||||
La release doit notamment réexaminer :
|
||||
|
||||
- politique JDK : LTS de build, niveau source/bytecode/runtime et compatibilité réelle ;
|
||||
- structure source Java, packages, visibilité, imports, nullabilité, exceptions et tests ;
|
||||
- ownership Gradle root versus sous-projets, configuration partagée et duplication ;
|
||||
- Gradle système versus Wrapper, avec reproductibilité proportionnée et sans wrapper cérémoniel ;
|
||||
- DSL Gradle Groovy/Kotlin sans imposer arbitrairement celui observé dans Games ;
|
||||
- dépendances, plugins, repositories, version catalogs et contraintes de version seulement lorsqu'ils apportent une valeur générique ;
|
||||
- outputs/caches Gradle et état local à exclure de Git ;
|
||||
- validations ciblées versus gates globales, sans `clean` systématique ;
|
||||
- séparation claire entre ce qui appartient réellement à Java/Gradle et ce qui appartient à Android.
|
||||
|
||||
Le profil `520` possède également Maven. Games ne constitue pas à lui seul une preuve suffisante pour inventer de nouveaux templates ou audits Maven s'il n'exerce pas Maven. Les règles Maven existantes doivent être relues pour cohérence, mais tout nouvel artefact Maven exige un besoin ou corpus réel.
|
||||
|
||||
## Frontière Android obligatoire
|
||||
|
||||
`0.1.2` MUST NOT absorber les responsabilités possédées par [`../docs/rules/610-ANDROID.md`](../docs/rules/610-ANDROID.md), notamment :
|
||||
|
||||
- Android Gradle Plugin et contraintes qui lui sont propres ;
|
||||
- Android SDK, `minSdk`, `targetSdk`, `compileSdk` ;
|
||||
- NDK, ABI, JNI et packaging natif ;
|
||||
- manifests, resources Android et application IDs ;
|
||||
- signing, APK/AAB, devices/AVD et smokes Android ;
|
||||
- décisions SDL ou autres choix propres au produit Games.
|
||||
|
||||
Une contrainte Gradle/JDK découverte uniquement parce qu'Android ou Tauri Android l'impose doit rester classifiée comme contrainte de plateforme/framework, pas devenir automatiquement une règle Java/Gradle générale.
|
||||
|
||||
## Hors scope
|
||||
|
||||
`0.1.2` MUST NOT :
|
||||
|
||||
- migrer Games vers PGR ;
|
||||
- réécrire le profil Android ou démarrer `0.1.3` ;
|
||||
- réexaminer le skeleton Tauri, réservé à `0.1.4` ;
|
||||
- rouvrir la fondation Web `0.1.1` sans défaut transversal réellement démontré ;
|
||||
- créer un owner WASM, serveur Rust ou deployment/operations par proximité ;
|
||||
- réserver une nouvelle release au-delà de la roadmap engagée sans nouvelle revue d'horizon justifiée.
|
||||
|
||||
## Principes
|
||||
|
||||
- Partir des responsabilités réellement exercées par Games, pas d'un catalogue théorique Java/Gradle.
|
||||
- Les choix locaux du corpus ne deviennent pas des `MUST` PGR sans preuve générique.
|
||||
- Utiliser la toolchain officielle Java/Gradle lorsque la validation porte sur un artefact exécutable réel ; un audit Python read-only ne remplace ni `javac`, ni Gradle, ni Maven.
|
||||
- Ne pas introduire automatiquement un Wrapper, un version catalog, Kotlin DSL, Maven ou un plugin simplement parce que l'écosystème les permet.
|
||||
- Conserver une frontière nette avec Android afin que `0.1.3` puisse réévaluer la plateforme avec ses propres owners et preuves.
|
||||
|
||||
## Workflow
|
||||
|
||||
Suivre [`../RULES.md`](../RULES.md), [`../docs/rules/210-WORKFLOW.md`](../docs/rules/210-WORKFLOW.md), [`../docs/rules/230-ADOPTION.md`](../docs/rules/230-ADOPTION.md) et [`../docs/rules/400-VALIDATION.md`](../docs/rules/400-VALIDATION.md).
|
||||
|
||||
La séquence reste : delta → gate opérateur → history constaté → application du history → commit/push → delta suivant. Les commandes de handoff sont remises automatiquement conformément à [`../docs/templates/006-OPERATOR_COMMAND_HANDOFF.md`](../docs/templates/006-OPERATOR_COMMAND_HANDOFF.md).
|
||||
Reference in New Issue
Block a user