0.1.1-alpha.2
This commit is contained in:
269
deltas/0.1.1/alpha.2.md
Normal file
269
deltas/0.1.1/alpha.2.md
Normal file
@@ -0,0 +1,269 @@
|
||||
<!-- file: deltas/0.1.1/alpha.2.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.1.1-alpha.2 — frontières d'ownership frontend Web
|
||||
|
||||
## Baseline et version
|
||||
|
||||
Baseline attendue : commit opérateur de `0.1.1-alpha.1`, réalisé après application de `history/0.1.1/alpha.1.md` avec statut `PASS`.
|
||||
|
||||
Le hash de ce commit n'est pas anticipé.
|
||||
|
||||
Version avant application :
|
||||
|
||||
```text
|
||||
0.1.1-alpha.1
|
||||
```
|
||||
|
||||
Version après application :
|
||||
|
||||
```text
|
||||
0.1.1-alpha.2
|
||||
```
|
||||
|
||||
## Objet
|
||||
|
||||
Matérialiser les frontières d'ownership frontend nécessaires avant d'écrire les configurations détaillées de `alpha.3` à `alpha.5`.
|
||||
|
||||
La tranche crée quatre profils indépendants dans la famille `500` :
|
||||
|
||||
```text
|
||||
530 TypeScript
|
||||
540 JavaScript package ecosystem
|
||||
550 Vite
|
||||
560 CSS / Sass
|
||||
```
|
||||
|
||||
Elle inscrit également les trois préférences validées pendant la revue de `alpha.1` : TypeScript, Vite et Sass sont fortement recommandés dans leurs scopes applicables pour les nouveaux frontends contrôlés, donc exprimés en `SHOULD`, mais aucun n'est une obligation universelle.
|
||||
|
||||
La tranche ne crée encore aucun template `package.json`, `tsconfig.json` ou `vite.config.ts`, aucun skeleton Web, aucun audit frontend et aucune politique finale de lockfile. Ces responsabilités restent prévues dans les tranches suivantes.
|
||||
|
||||
## Scope
|
||||
|
||||
REPLACE :
|
||||
|
||||
```text
|
||||
VERSION
|
||||
RULES.md
|
||||
docs/000-README.md
|
||||
docs/architecture/003-RULE_PROFILE_MODEL.md
|
||||
docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md
|
||||
docs/rules/000-README.md
|
||||
docs/rules/710-TAURI.md
|
||||
```
|
||||
|
||||
ADD :
|
||||
|
||||
```text
|
||||
deltas/0.1.1/alpha.2.md
|
||||
docs/rules/530-TYPESCRIPT.md
|
||||
docs/rules/540-JAVASCRIPT_PACKAGE_ECOSYSTEM.md
|
||||
docs/rules/550-VITE.md
|
||||
docs/rules/560-CSS_SASS.md
|
||||
```
|
||||
|
||||
DELETE : aucun.
|
||||
|
||||
`ROADMAP.md`, `CHANGELOG.md`, les templates, skeletons, scripts, tests, validations et studies restent inchangés.
|
||||
|
||||
Aucun `history/0.1.1/alpha.2.md` n'est anticipé.
|
||||
|
||||
## Décisions normatives
|
||||
|
||||
### TypeScript
|
||||
|
||||
Pour un frontend contrôlé portant une logique durable non triviale, TypeScript `SHOULD` être préféré au JavaScript non typé. Du JavaScript direct reste valide lorsqu'il est plus proportionné.
|
||||
|
||||
Le type-check TypeScript et la génération éventuelle de bindings depuis une autre source de vérité sont des responsabilités distinctes du bundler. TS-RS reste un outil de frontière Rust/TypeScript lorsqu'un owner plus spécifique l'exige ; il n'est pas une dépendance TypeScript universelle.
|
||||
|
||||
### Écosystème de package
|
||||
|
||||
`package.json`, le package manager concret, les scripts de package, les dépendances téléchargées et la décision de lockfile appartiennent au profil `540`.
|
||||
|
||||
PGR MUST NOT imposer npm par défaut. La politique du lockfile sera définie en `alpha.3` à partir du rôle du package et de la reproductibilité recherchée, pas à partir de l'absence de lockfile observée dans Games.
|
||||
|
||||
### Vite
|
||||
|
||||
Pour un frontend contrôlé compatible avec ses capacités, Vite `SHOULD` être le build tool/dev server privilégié. Une alternative justifiée reste permise.
|
||||
|
||||
Le profil Vite possède sa configuration, son cache et ses outputs ; il ne possède ni TypeScript, ni Sass/CSS, ni le package manager, ni Tauri, ni WASM.
|
||||
|
||||
### CSS / Sass
|
||||
|
||||
CSS direct reste une baseline valide. Sass `SHOULD` être préféré lorsqu'une chaîne de styles non triviale ou une dépendance Sass/SCSS configurable en tire une valeur claire.
|
||||
|
||||
Bootstrap est un exemple réel de bibliothèque pouvant être personnalisée à partir de ses sources Sass et de variables/maps ; il reste un choix de skeleton/projet, pas une dépendance Web universelle.
|
||||
|
||||
Pour du nouveau code Sass, `@use` / `@forward` SHOULD être préférés lorsque compatibles. `@import` MAY rester utilisé pour la compatibilité avec des dépendances existantes qui l'exigent.
|
||||
|
||||
## Classification Games de cadrage
|
||||
|
||||
La classification préparatoire est inscrite dans le plan :
|
||||
|
||||
```text
|
||||
TypeScript durable ADOPT
|
||||
Vite ADOPT
|
||||
package.json ADOPT
|
||||
npm concret KEEP-LOCAL
|
||||
lockfiles Games KEEP-LOCAL jusqu'à décision alpha.3
|
||||
Sass ADOPT quand applicable
|
||||
Bootstrap KEEP-LOCAL
|
||||
frontend/ layout KEEP-LOCAL / candidat skeleton
|
||||
ports / aliases / plugins KEEP-LOCAL
|
||||
WASM dans scripts DEFER
|
||||
```
|
||||
|
||||
Aucun `OVERRIDE` n'est nécessaire avant l'adoption réelle de Games en `0.1.5`.
|
||||
|
||||
## Validation opérateur
|
||||
|
||||
Après application du history `PASS`, commit/push de `alpha.1`, puis application du présent delta :
|
||||
|
||||
```bash
|
||||
test "$(cat VERSION)" = '0.1.1-alpha.2'
|
||||
git cat-file -e HEAD:history/0.1.1/alpha.1.md
|
||||
test -f history/0.1.1/alpha.1.md
|
||||
test -f deltas/0.1.1/alpha.2.md
|
||||
test ! -e history/0.1.1/alpha.2.md
|
||||
|
||||
for path in docs/rules/530-TYPESCRIPT.md docs/rules/540-JAVASCRIPT_PACKAGE_ECOSYSTEM.md docs/rules/550-VITE.md docs/rules/560-CSS_SASS.md; do
|
||||
test -f "$path"
|
||||
done
|
||||
|
||||
grep -A2 '^## Statut$' history/0.1.1/alpha.1.md | grep -Fx 'PASS'
|
||||
grep -Fx '<!-- version: 13 -->' RULES.md
|
||||
grep -Fx '<!-- version: 25 -->' docs/000-README.md
|
||||
grep -Fx '<!-- version: 6 -->' docs/architecture/003-RULE_PROFILE_MODEL.md
|
||||
grep -Fx '<!-- version: 2 -->' docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md
|
||||
grep -Fx '<!-- version: 15 -->' docs/rules/000-README.md
|
||||
grep -Fx '<!-- version: 6 -->' docs/rules/710-TAURI.md
|
||||
|
||||
python3 -B -m unittest discover -s tests -v
|
||||
|
||||
python3 -B scripts/audit_markdown_headers.py README.md RULES.md ROADMAP.md CHANGELOG.md docs deltas history prompts
|
||||
python3 -B scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs deltas history prompts
|
||||
python3 -B scripts/audit_markdown_links.py README.md RULES.md ROADMAP.md CHANGELOG.md docs deltas history prompts
|
||||
|
||||
python3 -B - <<'PYGATE'
|
||||
from pathlib import Path
|
||||
import re
|
||||
|
||||
history = Path('history/0.1.1/alpha.1.md').read_text(encoding='utf-8')
|
||||
assert re.search(r'## Statut\s+PASS\s', history)
|
||||
|
||||
expected = {
|
||||
'530-TYPESCRIPT.md': (
|
||||
'TypeScript **SHOULD** être préféré',
|
||||
'TS-RS',
|
||||
'ni Vite',
|
||||
),
|
||||
'540-JAVASCRIPT_PACKAGE_ECOSYSTEM.md': (
|
||||
'MUST NOT imposer npm',
|
||||
'Lockfile',
|
||||
'alpha.3',
|
||||
),
|
||||
'550-VITE.md': (
|
||||
'Vite **SHOULD** être le build tool/dev server privilégié',
|
||||
'Le profil s'applique uniquement lorsqu'un projet utilise réellement Vite.',
|
||||
'alpha.4',
|
||||
),
|
||||
'560-CSS_SASS.md': (
|
||||
'Sass **SHOULD** être préféré',
|
||||
'Bootstrap constitue un exemple concret',
|
||||
'`@use` / `@forward`',
|
||||
'`@import` Sass est déprécié',
|
||||
'alpha.5',
|
||||
),
|
||||
}
|
||||
for name, phrases in expected.items():
|
||||
text = Path('docs/rules', name).read_text(encoding='utf-8')
|
||||
for phrase in phrases:
|
||||
assert phrase in text, (name, phrase)
|
||||
|
||||
rules = Path('RULES.md').read_text(encoding='utf-8')
|
||||
rules_index = Path('docs/rules/000-README.md').read_text(encoding='utf-8')
|
||||
architecture = Path('docs/architecture/003-RULE_PROFILE_MODEL.md').read_text(encoding='utf-8')
|
||||
tauri = Path('docs/rules/710-TAURI.md').read_text(encoding='utf-8')
|
||||
plan = Path('docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md').read_text(encoding='utf-8')
|
||||
roadmap = Path('ROADMAP.md').read_text(encoding='utf-8')
|
||||
|
||||
for owner in ('530-TYPESCRIPT.md', '540-JAVASCRIPT_PACKAGE_ECOSYSTEM.md', '550-VITE.md', '560-CSS_SASS.md'):
|
||||
assert owner in rules
|
||||
assert owner in rules_index
|
||||
|
||||
for phrase in (
|
||||
'530 — TypeScript',
|
||||
'540 — JavaScript package ecosystem',
|
||||
'550 — Vite',
|
||||
'560 — CSS / Sass',
|
||||
'Un frontend minimal peut n'en sélectionner qu'une partie.',
|
||||
):
|
||||
assert phrase in architecture, phrase
|
||||
|
||||
for phrase in (
|
||||
'TypeScript et Vite sont fortement recommandés mais restent des `SHOULD`',
|
||||
'Sass est également fortement recommandé',
|
||||
'profils `530`, `550` et `560`',
|
||||
):
|
||||
assert phrase in tauri, phrase
|
||||
|
||||
for phrase in (
|
||||
'Décisions de revue après `alpha.1`',
|
||||
'**TypeScript** : fortement recommandé',
|
||||
'**Vite** : fortement recommandé',
|
||||
'**Sass** : fortement recommandé',
|
||||
'`@use` / `@forward`',
|
||||
'| TypeScript pour les frontends durables | `ADOPT` |',
|
||||
'| npm comme package manager concret | `KEEP-LOCAL` |',
|
||||
'| commandes/génération WASM dans les scripts | `DEFER` |',
|
||||
):
|
||||
assert phrase in plan, phrase
|
||||
|
||||
assert '0.1.8' not in roadmap
|
||||
assert 'skeleton Tauri avant owners Web suffisants' in roadmap
|
||||
|
||||
print('0.1.1 alpha.2 ownership audit: clean (530/540/550/560 independent, SHOULD recommendations explicit, Games classified)')
|
||||
PYGATE
|
||||
|
||||
git diff --check
|
||||
git add VERSION RULES.md docs/000-README.md docs/architecture/003-RULE_PROFILE_MODEL.md docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md docs/rules/000-README.md docs/rules/710-TAURI.md docs/rules/530-TYPESCRIPT.md docs/rules/540-JAVASCRIPT_PACKAGE_ECOSYSTEM.md docs/rules/550-VITE.md docs/rules/560-CSS_SASS.md deltas/0.1.1/alpha.2.md
|
||||
git diff --cached --check
|
||||
git status --short
|
||||
```
|
||||
|
||||
Le scope indexé attendu avant ajout du history est :
|
||||
|
||||
```text
|
||||
M RULES.md
|
||||
M VERSION
|
||||
A deltas/0.1.1/alpha.2.md
|
||||
M docs/000-README.md
|
||||
M docs/architecture/003-RULE_PROFILE_MODEL.md
|
||||
M docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md
|
||||
M docs/rules/000-README.md
|
||||
A docs/rules/530-TYPESCRIPT.md
|
||||
A docs/rules/540-JAVASCRIPT_PACKAGE_ECOSYSTEM.md
|
||||
A docs/rules/550-VITE.md
|
||||
A docs/rules/560-CSS_SASS.md
|
||||
M docs/rules/710-TAURI.md
|
||||
```
|
||||
|
||||
La revue qualitative doit confirmer que :
|
||||
|
||||
- `SHOULD` représente bien « fortement recommandé » et qu'aucun des profils `530`, `550`, `560` n'est activé universellement ;
|
||||
- TypeScript n'est pas rendu dépendant de Rust ou TS-RS ;
|
||||
- Vite est recommandé sans interdire un autre build tool ;
|
||||
- Sass est recommandé conditionnellement et CSS direct reste valide ;
|
||||
- Bootstrap reste un exemple/choix de skeleton, pas une dépendance universelle ;
|
||||
- npm et la politique Games des lockfiles restent non généralisés ;
|
||||
- WASM, serveur Rust et skeleton Tauri restent hors scope de la tranche.
|
||||
|
||||
## Transition
|
||||
|
||||
### PASS
|
||||
|
||||
Produire `history/0.1.1/alpha.2.md`, puis préparer `0.1.1-alpha.3` consacré aux règles et artefacts TypeScript + écosystème de package : `tsconfig`, manifest, scripts utiles, sélection du package manager et politique du lockfile.
|
||||
|
||||
### FAIL
|
||||
|
||||
Consigner le diagnostic réel dans `history/0.1.1/alpha.2.md` et rester dans `alpha.2.fix.N` sauf REPLAN justifié. Le fix MUST rester borné au défaut d'ownership ou de formulation observé.
|
||||
Reference in New Issue
Block a user