220 lines
9.6 KiB
Markdown
220 lines
9.6 KiB
Markdown
<!-- file: deltas/0.1.1/alpha.1.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta 0.1.1-alpha.1 — audit de la stable et cadrage frontend Web
|
|
|
|
## Baseline et sources
|
|
|
|
Baseline PGR autoritaire : `pgr-v0.1.0.zip`, archive source téléchargée depuis le tag Gitea `v0.1.0`, accompagnée du rapport externe `pgr-0.1.0-publish.001-report.md` avec statut `PASS`.
|
|
|
|
SHA-256 vérifiés :
|
|
|
|
```text
|
|
pgr-v0.1.0.zip bc8f3a8117d04afc1280344eceaaac8c6a4724ca94c285a6234fe42c1023b2be
|
|
pgr-0.1.0-publish.001-report.md a64dc4a5a81e1776b641894d8493eec3ef315932fffb2881e52ff4147eb8b6a5
|
|
games-v0.3.6(1).zip ad6e44a1332eb7d6069cf1189d9433f0fbb8fac19c5aac9f4641ac45c1c556e8
|
|
khadhroony-solana-project-v0.3.17.zip 2a9cabcb9f147a348dcf8d24df8bc6c5029089b6d49feb17bd4a42b4293c329a
|
|
```
|
|
|
|
Le fichier Games fourni sous le nom local `games-v0.3.6(1).zip` a exactement le SHA-256 de la baseline canonique `games-v0.3.6.zip` attendue par le prompt `007`.
|
|
|
|
KSP `0.3.17` est uniquement un corpus secondaire de corroboration pour éviter de confondre règles frontend génériques et choix d'un host particulier. Il n'est ni requis par la baseline `0.1.1`, ni modifié, ni adopté dans cette tranche.
|
|
|
|
Version avant application :
|
|
|
|
```text
|
|
0.1.0
|
|
```
|
|
|
|
Version après application :
|
|
|
|
```text
|
|
0.1.1-alpha.1
|
|
```
|
|
|
|
## Objet
|
|
|
|
Exécuter `prompts/007-V0_1_1_START_PROMPT.md` : vérifier intégralement la stable `v0.1.0`, ses règles, profils, templates, skeletons, audits, décisions différées et chaîne de gouvernance, puis auditer le corpus Games réellement fourni et créer le plan `0.1.1` avant toute normalisation Web importante.
|
|
|
|
`alpha.1` reste un gate de cadrage. Aucun owner Web, template frontend, skeleton, audit ou règle normative n'est encore créé.
|
|
|
|
## Résultat de l'audit d'intake
|
|
|
|
La stable PGR et son rapport post-tag concordent : archive SHA-256 attendue, CRC propre, racine unique `pgr/`, `221` fichiers, `33` répertoires, aucun symlink et absence normale de `.git`.
|
|
|
|
La suite de tests donne `48/48 PASS`. Les audits Markdown sont propres : `198` fichiers pour les headers, `8` tables sur `198` fichiers et `193` liens locaux sur `198` fichiers. Les cinq templates TOML Rust/Cargo sont parsables et aucun output de build courant n'est embarqué.
|
|
|
|
Les `72` couples delta/history de `0.0.1` à `0.1.0` sont complets. `0.1.0` conserve explicitement `alpha.2 FAIL`, `alpha.2.fix.1 PASS`, `alpha.3 FAIL`, `alpha.3.fix.1 PASS`, puis `rel.1 PASS`. Le commit stable et le tag suivent la nouvelle convention sans réécrire les historiques antérieurs.
|
|
|
|
La stable possède déjà les profils `510` Rust/Cargo, `520` Java/Maven/Gradle, `610` Android et `710` Tauri. Le skeleton Tauri reste correctement `DEFER`; la décision existante identifie précisément TypeScript, Vite, Sass/CSS, outputs et validation frontend indépendante comme responsabilités encore manquantes.
|
|
|
|
Le corpus Games fourni est sain et correspond au hash canonique attendu. Il contient trois packages frontend réels : deux hosts Web directs et un host Tauri. Tous exercent TypeScript, Vite, `frontend/` et des sorties/cache externes à l'arborescence source. Sass/Bootstrap n'est exercé que là où la chaîne de styles le requiert. Les lockfiles Node sont ignorés par Games, mais cette politique reste locale et n'est pas généralisée par `alpha.1`.
|
|
|
|
KSP `0.3.17` contient six applications Tauri avec frontend Vite/TypeScript et corrobore le caractère transversal de ces owners, sans devenir un corpus d'adoption dans cette release.
|
|
|
|
Le plan conserve explicitement WASM, serveur Rust/Actix et deployment hors scope, et ne lève pas le `DEFER` Tauri.
|
|
|
|
## Scope
|
|
|
|
REPLACE :
|
|
|
|
```text
|
|
VERSION
|
|
README.md
|
|
docs/000-README.md
|
|
```
|
|
|
|
ADD :
|
|
|
|
```text
|
|
docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md
|
|
deltas/0.1.1/alpha.1.md
|
|
```
|
|
|
|
DELETE : aucun.
|
|
|
|
`RULES.md`, `ROADMAP.md`, `CHANGELOG.md`, les règles, profils, templates, skeletons, scripts, studies, validations et histories existants restent inchangés dans `alpha.1`.
|
|
|
|
Aucun `history/0.1.1/alpha.1.md` n'est anticipé avant la gate opérateur.
|
|
|
|
## Validation opérateur
|
|
|
|
Après application sur la stable `0.1.0`, depuis la racine du dépôt :
|
|
|
|
```bash
|
|
test "$(cat VERSION)" = '0.1.1-alpha.1'
|
|
test -f docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md
|
|
test -f deltas/0.1.1/alpha.1.md
|
|
test ! -e history/0.1.1/alpha.1.md
|
|
|
|
grep -Fx '<!-- version: 17 -->' README.md
|
|
grep -Fx '<!-- version: 24 -->' docs/000-README.md
|
|
grep -F '007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md' README.md docs/000-README.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 - <<'PY'
|
|
from pathlib import Path
|
|
import re
|
|
|
|
expected = {
|
|
'0.0.1': 12,
|
|
'0.0.2': 12,
|
|
'0.0.3': 10,
|
|
'0.0.4': 9,
|
|
'0.0.5': 19,
|
|
'0.1.0': 10,
|
|
}
|
|
for release, count in expected.items():
|
|
deltas = {path.name for path in Path('deltas', release).glob('*.md')}
|
|
histories = {path.name for path in Path('history', release).glob('*.md')}
|
|
assert len(deltas) == count, (release, len(deltas))
|
|
assert deltas == histories, (release, sorted(deltas ^ histories))
|
|
|
|
statuses = {}
|
|
for path in Path('history/0.1.0').glob('*.md'):
|
|
text = path.read_text(encoding='utf-8')
|
|
match = re.search(r'## Statut\s+(PASS|FAIL|PARTIAL|BLOCKED)\s', text)
|
|
assert match is not None, path
|
|
statuses[path.name] = match.group(1)
|
|
assert statuses['alpha.2.md'] == 'FAIL'
|
|
assert statuses['alpha.2.fix.1.md'] == 'PASS'
|
|
assert statuses['alpha.3.md'] == 'FAIL'
|
|
assert statuses['alpha.3.fix.1.md'] == 'PASS'
|
|
assert statuses['rel.1.md'] == 'PASS'
|
|
|
|
roadmap = Path('ROADMAP.md').read_text(encoding='utf-8')
|
|
for release in range(1, 8):
|
|
assert f'- `( ) 0.1.{release}`' in roadmap, release
|
|
assert '0.1.8' not in roadmap
|
|
assert 'skeleton Tauri avant owners Web suffisants' in roadmap
|
|
assert 'WASM' in roadmap
|
|
assert 'serveur Web Rust / Actix Web ou alternative' in roadmap
|
|
assert 'deployment & operations' in roadmap
|
|
|
|
prompt = Path('prompts/007-V0_1_1_START_PROMPT.md').read_text(encoding='utf-8')
|
|
for phrase in (
|
|
'Version cible : `0.1.1`',
|
|
'Première tranche attendue : `0.1.1-alpha.1`',
|
|
'ad6e44a1332eb7d6069cf1189d9433f0fbb8fac19c5aac9f4641ac45c1c556e8',
|
|
'TypeScript et configuration applicable',
|
|
'Vite, dev server et contrat de build outputs',
|
|
'package manager, manifest et lockfile sans imposer arbitrairement npm',
|
|
'Le skeleton Tauri reste `DEFER` pendant cette release.',
|
|
):
|
|
assert phrase in prompt, phrase
|
|
|
|
study = Path('docs/studies/002-TAURI_SKELETON_DECISION.md').read_text(encoding='utf-8')
|
|
for phrase in (
|
|
'DEFER',
|
|
'TypeScript et conventions Web contrôlées',
|
|
'Vite et ownership des commandes/dev server/build outputs',
|
|
'Sass/CSS et statut des artefacts générés',
|
|
'validation frontend indépendante de la validation Tauri',
|
|
):
|
|
assert phrase in study, phrase
|
|
|
|
plan = Path('docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md').read_text(encoding='utf-8')
|
|
for phrase in (
|
|
'Frontières d\'ownership à décider',
|
|
'alpha.2 — frontières d\'ownership Web',
|
|
'alpha.3 — TypeScript et écosystème de package',
|
|
'alpha.4 — Vite, dev server et outputs',
|
|
'alpha.5 — CSS/Sass et validation frontend',
|
|
'beta.1 — réconciliation et preuve de préparation Tauri',
|
|
'La réussite de `0.1.1` devra produire les owners nécessaires à ce réexamen, mais ne lèvera pas automatiquement le `DEFER`.',
|
|
'WASM, sans numéro réservé',
|
|
'serveur Web Rust / Actix Web ou alternative',
|
|
):
|
|
assert phrase in plan, phrase
|
|
|
|
print('0.1.1 alpha.1 structural audit: clean (72 prior pairs, Web scope bounded, Tauri DEFER preserved)')
|
|
PY
|
|
|
|
git diff --check
|
|
git add VERSION README.md docs/000-README.md \
|
|
docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md \
|
|
deltas/0.1.1/alpha.1.md
|
|
git diff --cached --check
|
|
git status --short
|
|
```
|
|
|
|
Le scope indexé attendu avant ajout du history est :
|
|
|
|
```text
|
|
M README.md
|
|
M VERSION
|
|
A deltas/0.1.1/alpha.1.md
|
|
M docs/000-README.md
|
|
A docs/plans/007-V0_1_1_WEB_FRONTEND_FOUNDATION_PLAN.md
|
|
```
|
|
|
|
La revue opérateur doit également confirmer que :
|
|
|
|
- le plan n'impose pas npm, Sass ou Bootstrap comme obligation frontend universelle ;
|
|
- la politique Games sur les lockfiles reste une observation locale, pas une règle PGR acquise ;
|
|
- les numéros/frontières exacts des futurs owners Web restent à décider en `alpha.2` ;
|
|
- aucun profil WASM ou serveur Rust n'est créé par proximité ;
|
|
- aucun skeleton Tauri n'est créé et son `DEFER` n'est pas levé ;
|
|
- Games et KSP restent des corpus externes non modifiés ;
|
|
- aucun nouveau numéro de release au-delà de `0.1.7` n'est réservé.
|
|
|
|
## Transition
|
|
|
|
### PASS
|
|
|
|
Produire `history/0.1.1/alpha.1.md` à partir des résultats réellement observés. Dans la même réponse, si aucune décision nouvelle n'est ouverte, préparer séparément le delta `0.1.1-alpha.2` consacré aux frontières d'ownership Web et à la classification `ADOPT / KEEP-LOCAL / OVERRIDE / DEFER` des choix Games pertinents.
|
|
|
|
Après remise du history, fournir automatiquement le bloc Git exact de fermeture conformément à `docs/templates/006-OPERATOR_COMMAND_HANDOFF.md`, puis indiquer l'application du delta suivant seulement après succès du commit/push.
|
|
|
|
### FAIL
|
|
|
|
Consigner le résultat réel dans le history, puis ouvrir `0.1.1-alpha.1.fix.1` ou un REPLAN selon la cause. Un fix de `alpha.1` doit rester limité au cadrage et ne doit pas absorber les décisions normatives prévues pour `alpha.2`.
|