32 KiB
Plan 0.1.1 — fondation frontend Web contrôlée
Statut et sources
Plan actif créé pendant 0.1.1-alpha.1 conformément à prompts/007-V0_1_1_START_PROMPT.md, après audit indépendant de la stable taggée v0.1.0, de son rapport post-tag et du corpus Games réellement fourni.
Sources autoritaires de reprise PGR :
pgr-v0.1.0.zip bc8f3a8117d04afc1280344eceaaac8c6a4724ca94c285a6234fe42c1023b2be
pgr-0.1.0-publish.001-report.md a64dc4a5a81e1776b641894d8493eec3ef315932fffb2881e52ff4147eb8b6a5
Le rapport publish.001 est PASS, porte sur cette même archive et confirme le commit stable 2ed8742f3b26695bcd2d1efc07eebf0cb88ff51d. Le tag annoté v0.1.0 possède l'objet tag 372650ea9fe313e7d5389ed43cacb6faa5f18f74 et se déréférence vers ce commit stable. L'absence de .git dans l'archive du tag est normale.
Corpus principal réellement fourni pour instruire le domaine Web :
games-v0.3.6(1).zip ad6e44a1332eb7d6069cf1189d9433f0fbb8fac19c5aac9f4641ac45c1c556e8
Le nom local comporte (1), mais son SHA-256 correspond exactement à la baseline canonique games-v0.3.6.zip enregistrée dans le prompt 007. L'archive Games est donc le corpus autoritaire attendu pour cette étude.
Un corpus secondaire récent a également été fourni :
khadhroony-solana-project-v0.3.17.zip 2a9cabcb9f147a348dcf8d24df8bc6c5029089b6d49feb17bd4a42b4293c329a
KSP 0.3.17 ne devient ni une baseline requise de 0.1.1, ni une cible de migration. Il sert uniquement à corroborer, lorsque cela évite de généraliser un choix Games accidentel, les responsabilités frontend déjà observées derrière Tauri. Toute adoption KSP reste réservée à 0.1.6.
Audit de la stable v0.1.0
Intégrité de l'archive et preuve post-tag
L'archive stable contient 254 entrées sous une racine unique pgr/, soit 221 fichiers et 33 répertoires. Son CRC est propre, aucun lien symbolique n'est présent et .git est absent comme attendu pour une archive de tag Gitea.
VERSION vaut exactement 0.1.0. CHANGELOG.md contient l'entrée stable 0.1.0, ROADMAP.md marque 0.1.0 terminé et engage 0.1.1 à 0.1.7 sans réserver 0.1.8.
La convention de clôture introduite par 0.1.0 est cohérente :
tranche de clôture rel.1
history rel.1 PASS
commit stable 0.1.0
tag v0.1.0
publish.001 preuve externe post-tag PASS
Aucun ancien artefact rel.001* n'est renommé rétroactivement.
Tests, audits et hygiène
Les quatre suites Python présentes donnent :
48 / 48 tests PASS
Les audits documentaires donnent :
Markdown header audit: clean (198 file(s))
Markdown table audit: clean (8 table(s), 198 file(s))
Markdown link audit: clean (193 local link(s), 198 file(s))
Les cinq templates Rust/Cargo TOML sont parsables. Aucun répertoire de sortie courant tel que target/, build/, builds/, dist/, node_modules/ ou __pycache__/ n'est embarqué dans la stable.
Les scripts d'audit restent des contrôles read-only. Aucun audit PGR ne devient un générateur, un formateur ou un wrapper de build.
Chaîne delta/history et vérité opérateur
Les 72 deltas publiés disposent tous d'un history correspondant :
0.0.1 12 / 12
0.0.2 12 / 12
0.0.3 10 / 10
0.0.4 9 / 9
0.0.5 19 / 19
0.1.0 10 / 10
Pour 0.1.0, la vérité opérateur reste explicitement conservée :
alpha.1 PASS
alpha.2 FAIL
alpha.2.fix.1 PASS
alpha.3 FAIL
alpha.3.fix.1 PASS
alpha.4 PASS
alpha.5 PASS
beta.1 PASS
rc.1 PASS
rel.1 PASS
Les FAIL ne sont donc ni écrasés ni requalifiés après coup.
Règles, profils, templates et skeletons
La hiérarchie normative courante reste cohérente : gouvernance, workflow, skeletons, adoption, documentation, validation, langages/écosystèmes, plateformes et frameworks possèdent des owners explicites.
Profils techniques déjà matérialisés :
510 Rust / Cargo
520 Java / Maven / Gradle
610 Android
710 Tauri 2
La stable possède :
- cinq templates techniques Rust/Cargo sous
templates/rust-cargo/; - deux skeleton specifications concrètes, gouvernance locale et workspace Rust/Cargo ;
- les templates documentaires de reprise, handoff opérateur et adoption d'un projet existant ;
- les contrats de validation Rust/Cargo et les audits Markdown/Rust monotâches.
Aucun owner Web générique n'existe encore. Il serait incorrect de faire porter TypeScript, Vite ou Sass/CSS par 710-TAURI.md uniquement parce qu'un host Tauri utilise une WebView.
Décisions différées vérifiées
docs/studies/002-TAURI_SKELETON_DECISION.md conserve correctement le skeleton Tauri en DEFER. Ses conditions de sortie exigent notamment :
TypeScript et conventions Web contrôlées
Vite et ownership du dev server / build outputs
Sass/CSS et statut des artefacts générés
validation frontend indépendante de Tauri
choix d'un framework CSS classé comme décision de skeleton, pas comme règle Tauri
docs/studies/003-V0_1_0_HORIZON_REVIEW.md et ROADMAP.md engagent 0.1.1 pour cette fondation frontend, puis 0.1.2 Java/Gradle, 0.1.3 Android, 0.1.4 réexamen Tauri, 0.1.5 adoption Games, 0.1.6 adoption KSP et 0.1.7 audits Rust/Clippy statiques Python.
Les sujets suivants restent volontairement hors de cette release :
- WASM, sans numéro réservé ;
- serveur Web Rust / Actix Web ou alternative, sans numéro réservé et sans corpus d'implémentation suffisant ;
- deployment & operations, horizon futur sans numéro précis réservé ;
- création du skeleton Tauri contrôlé, réservée à un réexamen objectif en
0.1.4.
La réussite de 0.1.1 devra produire les owners nécessaires à ce réexamen, mais ne lèvera pas automatiquement le DEFER.
Audit du corpus Games 0.3.6
Intégrité et portée
L'archive fournie contient 652 entrées sous une racine unique games/, soit 502 fichiers et 150 répertoires. Son CRC est propre et aucun lien symbolique n'est présent.
Games n'est pas supposé conforme à PGR à ce stade. Les observations suivantes décrivent un corpus d'implémentation réel servant à décider ce qui mérite d'être généralisé ; elles ne transforment pas ses choix locaux en norme.
Frontends exercés
Trois packages frontend sont présents :
Web/game-snake-poc/
Web/game-realtime-webtransport-browser-smoke/
crates/apps/game-snake-poc-tauri/
Ils exercent tous :
- un
package.jsonprivé ; - TypeScript ;
- Vite ;
- un
frontend/distinct des configurations/outils du host ; - un build de production combinant
tscetvite buildlorsque la chaîne frontend elle-même est validée ; cacheDiretoutDirplacés sous../builds/sasedev-games/..., donc hors de l'arborescence source ;- une séparation entre sources versionnées et sorties générées.
Les deux hosts navigateur directs utilisent en plus un mode preview. Le host Tauri ajoute des paramètres propres à son environnement de développement ; ces paramètres ne sont pas des règles Vite universelles.
Styles et assets
Web/game-snake-poc exerce réellement Sass via sass-embedded, Bootstrap et une politique explicite de sorties CSS/assets. Le smoke WebTransport n'a besoin ni de Sass ni de Bootstrap. Le host Tauri Snake utilise Vite et la copie d'assets, mais son manifest actuel n'impose pas Sass.
La preuve Games indique donc :
CSS responsabilité frontend générale
Sass capacité optionnelle, pas obligation universelle
framework CSS (Bootstrap) choix de présentation/skeleton ou projet, pas règle Web universelle
copie d'assets besoin Vite réel, mais configuration dépendante du projet
Un owner Sass/CSS doit expliquer les sources et artefacts générés sans exiger un préprocesseur sur les frontends qui n'en ont pas besoin.
Package manager, manifest et lockfiles
Les packages exercés utilisent des commandes npm, mais le corpus ne justifie pas de rendre npm obligatoire dans PGR.
La racine Games ignore explicitement :
**/node_modules/
**/dist/
package-lock.json
pnpm-lock.yaml
yarn.lock
Aucun lockfile Node n'est versionné dans l'archive. Cette politique est un choix Games actuel, pas une preuve qu'un lockfile frontend doit toujours être ignoré.
alpha.3 retient une politique fondée sur le rôle :
- une application privée ou déployable
SHOULDversionner le lockfile produit par son package manager afin de figer l'arbre réellement résolu ; - une bibliothèque publiée
MAYversionner un lockfile pour stabiliser l'environnement contributeur/CI, mais le manifest et ses contraintes restent le contrat de résolution des consommateurs ; - un exemple, template ou fixture sans résolution de dépendances réelle
MAYne pas posséder de lockfile ; - un même package
SHOULD NOTconserver simultanément plusieurs lockfiles de package managers concurrents, sauf migration explicitement temporaire ; - lorsqu'un lockfile est versionné, CI
SHOULDutiliser le mode gelé/immutable/clean-install équivalent du package manager sélectionné plutôt qu'une résolution permissive.
L'absence actuelle de lockfiles dans Games devient donc une décision à réexaminer pendant l'adoption 0.1.5 : les packages applicatifs pourront ADOPT la recommandation en versionnant leur lockfile, ou documenter un OVERRIDE s'ils conservent volontairement une autre politique.
Le corpus Games exerce également déjà des dépendances de déclarations TypeScript :
Web/game-snake-poc @types/bootstrap + @types/node
Web/game-realtime-webtransport-browser-smoke @types/node
crates/apps/game-snake-poc-tauri @types/node
KSP 0.3.17 corrobore la même pratique sur ses applications Tauri, qui utilisent @types/bootstrap et @types/node en devDependencies. Cette répétition justifie une règle générique de découverte des déclarations nécessaires, mais ne justifie pas d'imposer ces deux packages à tous les frontends.
La règle retenue est donc : vérifier d'abord les types embarqués par le package, puis rechercher un @types/... seulement lorsqu'il est réellement nécessaire. Pour une application privée, ces déclarations de développement appartiennent normalement à devDependencies; une bibliothèque publiée doit en revanche conserver disponibles aux consommateurs les types requis par ses déclarations publiques.
Relation avec WASM et host
Deux packages Games chaînent actuellement des commandes WASM avant Vite. Cela prouve une intégration locale, mais ne justifie pas de faire du WASM une responsabilité du futur owner Vite ou TypeScript.
La frontière à conserver est :
validation frontend propre TypeScript / Vite / CSS / assets / outputs
validation du host Tauri, navigateur spécialisé ou autre host
validation WASM owner futur séparé si sa valeur est démontrée
Un frontend doit pouvoir être validé autant que possible indépendamment du host qui l'embarque. Les commandes de génération WASM observées restent donc hors scope normatif de 0.1.1.
Corroboration secondaire KSP 0.3.17
KSP contient six applications Tauri possédant chacune un frontend Vite/TypeScript. Les six manifests exercent également sass-embedded et Bootstrap.
Cette répétition confirme que les owners TypeScript/Vite/Sass/CSS sont bien transversaux à plusieurs hosts et ne doivent pas être absorbés par le profil Tauri. Elle ne suffit toujours pas à rendre Sass ou Bootstrap obligatoires pour tous les frontends : le corpus Games contient déjà des contre-exemples utiles.
Aucune autre règle KSP n'est importée dans 0.1.1-alpha.1.
Décisions de revue après alpha.1
La gate opérateur de alpha.1 est PASS : 48/48 tests, audits Markdown propres et scope Git conforme. Aucun fix de cadrage n'est nécessaire.
La revue ajoute trois préférences explicites à traduire avec la force normative SHOULD :
- TypeScript : fortement recommandé pour les frontends contrôlés, mais non obligatoire. Sa valeur attendue est le type-check statique avant exécution/génération du JavaScript et la possibilité de partager des contrats typés avec d'autres écosystèmes ; lorsqu'une frontière Rust existe, des générateurs comme TS-RS peuvent éviter la duplication manuelle des DTO.
- Vite : fortement recommandé comme build tool/dev server des frontends contrôlés lorsque ses capacités correspondent au besoin, mais non obligatoire. Une alternative justifiée reste valide.
- Sass : fortement recommandé pour les chaînes de styles non triviales, en particulier lorsqu'une dépendance installée via l'écosystème de packages expose un entrypoint Sass/SCSS, des variables, maps, mixins ou autres points de configuration permettant d'adapter la bibliothèque sans modifier ses sources. Sass reste optionnel pour un frontend simple.
Bootstrap constitue un exemple réel de dépendance offrant une chaîne Sass personnalisable ; il ne devient pas pour autant une dépendance PGR universelle. Pour du nouveau code Sass, @use / @forward est préféré lorsque compatible ; @import reste toléré pour les bibliothèques existantes qui l'exigent encore.
alpha.2 matérialise donc quatre owners séparés dans la famille 500 :
530 TypeScript
540 JavaScript package ecosystem
550 Vite
560 CSS / Sass
Cette granularité conserve l'indépendance d'applicabilité : un projet peut utiliser TypeScript sans Vite, Vite avec JavaScript, CSS sans Sass, ou un package manager sans aucune des trois autres briques.
Classification initiale des choix Games
| Choix Games | Classification pour l'adoption future | Motif |
|---|---|---|
| TypeScript pour les frontends durables | ADOPT |
déjà exercé et conforme à la préférence PGR SHOULD |
| Vite comme build tool/dev server | ADOPT |
déjà exercé ; reste remplaçable par une alternative justifiée |
package.json comme manifest frontend |
ADOPT |
owner générique nécessaire |
| npm comme package manager concret | KEEP-LOCAL |
PGR ne rend pas npm universel |
| absence/versionnement des lockfiles Games | DEFER jusqu'à l'adoption 0.1.5 |
choisir alors ADOPT ou OVERRIDE selon le rôle du package |
Sass dans game-snake-poc |
ADOPT lorsque la chaîne de styles le justifie |
capacité recommandée, applicabilité conditionnelle |
| Bootstrap | KEEP-LOCAL |
choix de présentation/skeleton, pas règle Web universelle |
frontend/ comme layout |
KEEP-LOCAL / candidat skeleton |
ne pas transformer un layout observé en règle de langage/build |
| ports, aliases et plugins Vite | KEEP-LOCAL |
valeurs propres au host/projet |
| commandes/génération WASM dans les scripts | DEFER |
futur owner WASM séparé |
Aucun OVERRIDE n'est nécessaire à ce stade : Games n'est pas encore gouverné par ces nouveaux profils et sera réellement mappé pendant 0.1.5.
Mission de 0.1.1
0.1.1 doit produire la première fondation frontend Web contrôlée de PGR à partir des responsabilités réellement exercées, sans créer un catalogue théorique de technologies Web.
La release doit pouvoir répondre de manière générique à ces questions :
- qui possède la configuration TypeScript et quelles options relèvent du langage/outillage plutôt que du host ;
- qui possède Vite, son dev server, son build, son cache et ses sorties ;
- comment distinguer CSS, Sass optionnel et framework CSS optionnel ;
- comment choisir et documenter un package manager sans imposer npm ;
- comment traiter le manifest et le lockfile selon leur rôle ;
- quelles sorties sont sources, générées, ignorées ou publiables ;
- comment valider le frontend indépendamment de Tauri, WASM ou d'un backend ;
- quels templates, skeletons ou audits read-only apportent une preuve réellement réutilisable.
Frontières d'ownership à décider
alpha.1 ne fixe volontairement ni numéros de profils ni découpage définitif. Les faits indiquent plusieurs responsabilités possibles, mais alpha.2 doit choisir la frontière la plus générale où chaque règle est vraie.
Les axes à distinguer sont au minimum :
TypeScript langage / toolchain frontend
manifest + package manager écosystème de package et scripts
Vite bundler / dev server / build outputs
CSS source frontend standard
Sass préprocesseur optionnel
framework CSS choix de skeleton/projet si applicable
frontend host navigateur direct, Tauri ou autre, hors owner générique
Le découpage final MUST éviter :
- un profil monolithique « Web moderne » qui rendrait toutes les briques obligatoires ;
- un owner Tauri qui posséderait des règles TypeScript/Vite génériques ;
- un owner TypeScript qui posséderait des règles de bundler ;
- une politique npm codée en dur alors que le contrat doit rester compatible avec un autre package manager choisi explicitement ;
- une règle universelle de lockfile dérivée du seul choix historique de Games ;
- l'import implicite de WASM ou d'un serveur Rust.
Artefacts candidats
Les artefacts suivants sont candidats, pas des livrables déjà décidés :
- un ou plusieurs profils normatifs dans les familles existantes lorsque leur owner est démontré ;
- guides/templates minimaux pour
package.json,tsconfig.jsonetvite.config.tsseulement si les valeurs génériques peuvent être séparées des décisions locales ; - contrat CSS/Sass expliquant source, génération et outputs sans imposer Sass ;
- skeleton frontend Web seulement si la composition devient suffisamment générique et indépendante de Tauri/WASM ;
- validations frontend sélectionnées selon les capacités réelles : parsing du manifest, TypeScript, build Vite, Sass/CSS, smoke navigateur si la promesse de la tranche l'exige ;
- audits Python uniquement pour des propriétés statiques génériques et certaines, en restant monotâches et read-only.
Aucun de ces artefacts n'est créé par alpha.1.
Trajectoire prévisionnelle de 0.1.1
alpha.1 — audit de stable, corpus et plan
Auditer v0.1.0, publish.001, Games 0.3.6, les décisions Tauri/horizon, puis créer le présent plan. Aucun changement normatif Web n'appartient à cette tranche.
alpha.2 — frontières d'ownership Web
Statut opérateur : FAIL.
La tranche a matérialisé les quatre owners 530 / 540 / 550 / 560, leurs frontières indépendantes et les recommandations SHOULD TypeScript/Vite/Sass. Les 48 tests et les trois audits Markdown sont restés propres et le scope Git observé correspond au delta.
La gate spécifique n'a toutefois pas pu atteindre son message final : le littéral Python 'Le profil s'applique uniquement lorsqu'un projet utilise réellement Vite.' utilise des quotes simples autour d'un texte contenant l'apostrophe de s'applique, provoquant un SyntaxError. Aucun défaut normatif des profils livrés n'est établi.
alpha.2.fix.1 — correction de la gate d'ownership Web
Statut opérateur : PASS.
Le correctif a conservé le FAIL historique de alpha.2, reconfirmé les quatre owners 530/540/550/560, les recommandations SHOULD, la classification Games et le DEFER Tauri. Les 48/48 tests et les trois audits Markdown sont propres ; le scope du fix est resté limité à VERSION, au plan et au delta de correction.
alpha.3 — TypeScript et écosystème de package
Statut opérateur : PASS.
La tranche a matérialisé un type-check indépendant sous le script canonique typecheck, un tsconfig strict sans émission comme baseline minimale, un package.json privé minimal pour les applications contrôlées et une politique de lockfile fondée sur le rôle de l'artefact et la reproductibilité, jamais sur une préférence npm.
La gate spécifique atteint son message final, les 48/48 tests et les trois audits Markdown sont propres, et le scope Git correspond exactement au delta. Vite est resté réservé à alpha.4 et CSS/Sass à alpha.5.
La revue opérateur après PASS relève toutefois une précision appartenant exactement au scope de la tranche : le manifest réel doit rechercher et déclarer les types externes nécessaires (@types/node, @types/bootstrap ou équivalent) lorsque les dépendances utilisées ne fournissent pas déjà leurs propres déclarations. Le delta livré reste immuable ; cette précision est portée par un fix local.
alpha.3.fix.1 — déclarations de types externes
Statut opérateur : FAIL.
Le correctif a livré la règle types embarqués → @types si nécessaire, la classification conditionnelle de @types/node / @types/bootstrap, la distinction application privée / bibliothèque publiée et l'intégration IDE attendue. Les 48/48 tests et les trois audits Markdown sont propres, et le scope Git correspond au delta.
La gate spécifique n'a toutefois pas atteint son message final : le littéral Python 'qualité TypeScript et à l'expérience IDE' utilise des quotes simples autour d'un texte contenant l'apostrophe de l'expérience, provoquant un SyntaxError. Aucun défaut normatif du correctif n'est établi.
alpha.3.fix.2 — correction de la gate des déclarations de types
Statut opérateur : PASS.
La gate corrigée atteint son message final, reconfirme le FAIL historique de alpha.3.fix.1, les règles de découverte des types externes et la séparation application/bibliothèque. Les 48/48 tests et les trois audits Markdown passent, et le scope Git reste limité à VERSION, au plan et au delta de correction.
Aucune règle TypeScript/package ni aucun template n'a été modifié par le fix. La trajectoire reprend donc normalement avec Vite.
alpha.4 — Vite, dev server et outputs
Statut opérateur : PASS.
La tranche a matérialisé le contrat Vite sans créer de vite.config.ts universel artificiel. Les sources, cache, outputs et assets ont des statuts explicites ; le dev server reste borné ; les paramètres root, base, ports, aliases et plugins restent des décisions locales.
La gate spécifique a atteint son message final, les 48/48 tests et les trois audits Markdown sont propres, et le scope Git correspond exactement aux six chemins annoncés. TypeScript/package n'a pas été rouvert et CSS/Sass est resté réservé à alpha.5.
alpha.5 — CSS/Sass et validation frontend
Statut opérateur : PASS.
La gate spécifique Web frontend a atteint son message final, les 48/48 tests et les trois audits Markdown sont propres, et le scope Git correspond exactement au delta. Le skeleton 003-WEB_FRONTEND.md compose désormais les owners 530/540/550/560 sans ownership caché ni valeur universelle arbitraire.
La tranche retient les décisions suivantes :
- CSS reste une baseline valide sans préprocesseur ;
- Sass reste optionnel mais SHOULD être préféré lorsque la chaîne de styles est non triviale ou lorsqu'un package expose une API Sass utile ;
- le nouveau code Sass contrôlé privilégie
@use/@forward, tandis que@importreste uniquement une voie de compatibilité pour les dépendances qui l'exigent encore ; - les sources
.css/.scss/.sassintentionnelles sont versionnées, mais les CSS compilées, minifiées, sourcemaps et copies présentes dans un output de build sont générées et ne doivent pas devenir un second source ; - un package de styles doit être consommé via son entrypoint public/documenté plutôt que par des chemins internes arbitraires ;
- Bootstrap, Tailwind CSS ou une autre bibliothèque restent des choix de projet/skeleton, jamais une obligation de
560; - lorsqu'un frontend utilise Vite + Sass,
sass-embeddedest un choix de développement recommandé lorsque compatible, mais le profil Sass ne dépend pas de Vite ; - la validation frontend distingue restore reproductible, type-check, build/compilation des styles et smoke navigateur seulement lorsque celui-ci apporte une preuve supplémentaire ;
- un PASS frontend ne vaut pas PASS du host, et un host Tauri ne doit pas posséder les validations TypeScript/Vite/Sass génériques.
Les owners 530/540/550/560 sont désormais assez complets pour composer un skeleton Web sans ownership caché. La tranche crée donc 003-WEB_FRONTEND.md comme specialization contrôlée : TypeScript et Vite y restent des SHOULD, Sass reste conditionnel, le package manager et le framework CSS restent des décisions explicites, et aucun layout frontend/, vite.config.ts, main.scss, port ou package concret n'est imposé.
Le skeleton ne lève pas le DEFER Tauri. beta.1 devra encore réconcilier les cinq conditions de sortie de l'étude 002 et conclure factuellement si 0.1.4 peut réexaminer le candidat Tauri.
beta.1 — réconciliation et preuve de préparation Tauri
Statut opérateur : PASS.
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 :
1. TypeScript contrôlé 530 + 008 + templates web-typescript
2. Vite/dev server/build outputs 550 + 009
3. CSS/Sass + statut des artefacts générés 560 + 010
4. validation frontend indépendante du host validation 005
5. framework CSS classé comme choix local 560 + skeleton 003
La tranche exécute aussi un dry-run structurel du skeleton Web : copie des templates JSON génériques dans un répertoire temporaire, parsing réel de ces artefacts, contrôle des références vers les owners/guides/validation et vérification de l'absence de vite.config.ts, main.scss, host Tauri ou dépendance frontend arbitraire injectés par PGR.
Ce dry-run ne prétend pas remplacer tsc, Vite ou Sass : le dépôt PGR ne possède volontairement ni versions de dépendances frontend ni configuration de projet concrète. Une instanciation réelle doit toujours exécuter les toolchains officielles sélectionnées conformément à 005-WEB_FRONTEND_VALIDATION.md.
Si les cinq conditions sont matériellement couvertes, beta.1 peut conclure que 0.1.4 dispose désormais des prérequis PGR nécessaires pour réexaminer le candidat Tauri. Cette conclusion MUST NOT lever le DEFER, créer le skeleton Tauri, figer frontend/, Bootstrap, Sass ou Vite comme obligations Tauri, ni remplacer la réévaluation du corpus courant exigée par l'étude 002.
Si une responsabilité Web nécessaire reste sans owner clair, effectuer un REPLAN avant RC plutôt que masquer la lacune.
rc.1 — release candidate
Statut opérateur : PASS.
La gate opérateur a confirmé les neuf histories antérieurs avec leurs statuts réels, le scope Web gelé, le changelog candidat, le prompt 008, le dry-run structurel du skeleton Web, les 48/48 tests, les trois audits Markdown et l'hygiène texte/JSON. Aucun owner, template technique, skeleton, validation ou étude technique n'a été modifié pendant la RC.
Le prompt 008-V0_1_2_START_PROMPT.md conserve la séparation Java/Gradle générique versus Android : le profil 520 sera 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.
rel.1 — promotion stable
Première clôture stable de 0.1.1. La promotion est strictement mécanique : VERSION = 0.1.1, ROADMAP.md marque 0.1.1 terminée, le CHANGELOG perd son marqueur candidate, README/index décrivent la fondation frontend Web comme stable et le présent plan devient historique. Aucun owner, profil, template, skeleton, validation, étude ou script technique n'est modifié.
Le résultat opérateur de cette tranche appartient à history/0.1.1/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.1 avant le tag v0.1.1.
La vérification post-tag reste séparée : pgr-0.1.1-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 008 ne devient le point de départ effectif de 0.1.2 qu'après cette preuve post-tag PASS.
Stratégie de validation
Chaque tranche conserve les gates PGR de base applicables :
python3 -B -m unittest discover -s tests -v
python3 -B scripts/audit_markdown_headers.py ...
python3 -B scripts/audit_markdown_tables.py ...
python3 -B scripts/audit_markdown_links.py ...
Lorsqu'un artefact frontend réel est ajouté, la gate doit utiliser l'outil propriétaire lorsque disponible et pertinent au scope. Un audit Python peut prévalider une propriété statique précise, mais ne doit pas prétendre remplacer TypeScript, Vite, Sass ou le package manager.
Le choix des commandes Node/package manager doit être rendu explicite par le projet ou le fixture de validation. PGR ne doit pas utiliser npm install comme commande universelle simplement parce que Games l'utilise actuellement.
Les smokes navigateur ne sont requis que lorsqu'une tranche ou la release prétend supporter un comportement observable que le build statique ne suffit pas à prouver. Ils doivent être placés avant RC lorsque nécessaires, puis rejoués au release gate selon la matrice finale.
Déclencheurs de REPLAN
Le plan MUST être révisé avant de continuer si :
- le découpage TypeScript/package/Vite/styles ne peut pas conserver un owner unique par règle ;
0.1.1devrait absorber WASM, Tauri ou un serveur Rust pour être cohérent ;- la politique de package manager/lockfile nécessite plusieurs catégories de projet non prévues ;
- un skeleton frontend ne peut être générique sans décisions propres à Games/KSP ;
- une tranche prévue dépasse nettement l'unité cohérente et indépendamment validable visée par PGR ;
- les validations réelles montrent qu'un outil ou une target supplémentaire est nécessaire pour soutenir une règle normative ;
- le périmètre total ne peut plus raisonnablement être clôturé dans la session/release prévue.
Un REPLAN peut scinder une tranche ou, si nécessaire, réexaminer la trajectoire conformément à la règle de revue d'horizon. Il ne doit pas artificiellement remplir la release avec des owners non prouvés.
Clôture et transition
La release est prête pour RC lorsque :
- les owners Web retenus ont des frontières explicites et non redondantes ;
- TypeScript, package manager/manifest, Vite, CSS/Sass et outputs ont une politique contrôlée proportionnée ;
- la validation frontend est distinguée de la validation du host ;
- WASM, serveur Rust et Tauri n'ont pas été absorbés par proximité ;
- les choix Games non génériques restent classifiés comme locaux ou différés ;
- les conditions Tauri peuvent être réévaluées objectivement en
0.1.4sans que0.1.1décide leur issue à l'avance.
Après publication 0.1.1 et publish.001 PASS, la reprise normale est 0.1.2 — réévaluation Java/Maven/Gradle — sauf REPLAN explicite de l'horizon fondé sur les résultats réels de la release.