# Delta 0.0.1-alpha.4 — baseline Web indépendante et template lab ## Base requise État `0.0.1-alpha.3.fix.3` committé et poussé après application du history : ```text history/0.0.1/alpha.3.fix.3.md = PASS ``` La version devient : ```text 0.0.1-alpha.4 ``` ## Objectif Matérialiser le skeleton Web PGR `003-WEB_FRONTEND` sans démarrer encore Actix/Maud. La tranche introduit un package unique : ```text Web/knowledge-template-lab/ ``` Ce package est un laboratoire de templates statiques partagé par les trois façades. Il n'est ni une application produit supplémentaire ni un renderer de production. ## Décisions matérialisées ```text package manager npm lockfile package-lock.json versionné TypeScript strict Vite build/dev/preview + manifest styles Sass via sass-embedded framework CSS Bootstrap Bootstrap runtime @popperjs/core explicite ``` Le package commun est retenu tant qu'aucune divergence réelle ne justifie plusieurs toolchains. ## Versions sélectionnées La tranche fixe explicitement : ```text typescript 7.0.2 vite 8.3.1 sass-embedded 1.105.0 bootstrap 5.3.8 @popperjs/core 2.11.8 @types/bootstrap 5.2.11 ``` `@types/bootstrap` est justifié par l'import TypeScript du runtime Bootstrap. Aucun `@types/node` n'est ajouté : la configuration Vite ne consomme pas d'API Node typée. ## Build externe Le cache et l'output sont configurés hors du dépôt : ```text ../builds/sasedev-knowledge/vite-cache/template-lab/ ../builds/sasedev-knowledge/web/template-lab/ ``` Aucun `dist/`, cache Vite ou `node_modules/` n'est versionné. ## Manifest et future intégration Maud Le build Vite active : ```text build.manifest = true ``` L'entrée stable : ```text src/main.ts ``` importe également `src/styles/main.scss`. Le manifest doit donc permettre à la future intégration Actix/Maud de résoudre les sorties JavaScript et CSS hashées à partir d'une clé logique stable, sans coder leurs noms de fichiers. `alpha.4` ne contient aucun loader Rust du manifest. Ce contrat appartient à `alpha.5`. ## Template statique de référence `index.html` matérialise une référence minimale commune : - trois familles PGR/HOWTOs/snippets ; - layout responsive Bootstrap ; - styles Sass ; - un exemple d’interaction JavaScript Bootstrap via tooltip. Aucune URL admin/login ni hostname de production n'est introduit. ## Lockfile npm Le delta ne préfabrique pas `package-lock.json`. L'opérateur doit le générer avec npm à partir du manifest réel, puis vérifier une restauration reproductible avec `npm ci`. Le lockfile généré devient partie du staging et du commit de tranche. ## Scope exclu La tranche n'ajoute pas : - Actix Web ; - Maud ; - les trois crates serveur ; - PostgreSQL/migrations ; - adapter Gitea ; - routes `/admin`, `/login` ou équivalentes ; - loader Rust du manifest ; - UI d'administration fonctionnelle. ## Validation attendue La gate combine les preuves Rust existantes et le skeleton Web réel. Elle est fournie dans `docs/validation/001-VALIDATION_MATRIX.md`. Ne pas committe `alpha.4` avant production de son history à partir des résultats opérateur.