diff --git a/Cargo.lock b/Cargo.lock index 7e00d46..ad3ac2c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,18 +4,18 @@ version = 4 [[package]] name = "knowledge-domain-lib" -version = "0.0.1-alpha.4.fix.1" +version = "0.0.1-alpha.4.fix.2" [[package]] name = "knowledge-git-api" -version = "0.0.1-alpha.4.fix.1" +version = "0.0.1-alpha.4.fix.2" dependencies = [ "knowledge-domain-lib", ] [[package]] name = "knowledge-sync-api" -version = "0.0.1-alpha.4.fix.1" +version = "0.0.1-alpha.4.fix.2" dependencies = [ "knowledge-domain-lib", ] diff --git a/Cargo.toml b/Cargo.toml index c3902d3..71245c5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ # file: Cargo.toml -# version: 7 +# version: 8 [workspace] resolver = "3" @@ -10,7 +10,7 @@ members = [ ] [workspace.package] -version = "0.0.1-alpha.4.fix.1" +version = "0.0.1-alpha.4.fix.2" edition = "2024" publish = false repository = "https://git.sasedev.com/Sasedev/sasedev-knowledge" diff --git a/VERSION b/VERSION index e63c77b..bcdf570 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.1-alpha.4.fix.1 +0.0.1-alpha.4.fix.2 diff --git a/Web/knowledge-template-lab/package-lock.json b/Web/knowledge-template-lab/package-lock.json index e1d9778..05602d0 100644 --- a/Web/knowledge-template-lab/package-lock.json +++ b/Web/knowledge-template-lab/package-lock.json @@ -11,6 +11,7 @@ }, "devDependencies": { "@types/bootstrap": "5.2.11", + "@types/node": "24.13.6", "sass-embedded": "1.105.0", "typescript": "7.0.2", "vite": "8.3.1" @@ -639,6 +640,16 @@ "@popperjs/core": "^2.9.2" } }, + "node_modules/@types/node": { + "version": "24.13.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.6.tgz", + "integrity": "sha512-SGrw/h3KPFshy3OE6ZL53LMBG5vGQQ8/gIpiqz/kRZhPJ7HgwCEs8LBuNtWLa8dvGZVpSF7+Bf+c11HUrCb/yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.18.0" + } + }, "node_modules/@typescript/typescript-aix-ppc64": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/@typescript/typescript-aix-ppc64/-/typescript-aix-ppc64-7.0.2.tgz", @@ -2005,6 +2016,13 @@ "@typescript/typescript-win32-x64": "7.0.2" } }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "dev": true, + "license": "MIT" + }, "node_modules/varint": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", diff --git a/Web/knowledge-template-lab/package.json b/Web/knowledge-template-lab/package.json index 6e81470..7d4bda7 100644 --- a/Web/knowledge-template-lab/package.json +++ b/Web/knowledge-template-lab/package.json @@ -14,6 +14,7 @@ }, "devDependencies": { "@types/bootstrap": "5.2.11", + "@types/node": "24.13.6", "sass-embedded": "1.105.0", "typescript": "7.0.2", "vite": "8.3.1" diff --git a/Web/knowledge-template-lab/tsconfig.json b/Web/knowledge-template-lab/tsconfig.json index 04690ce..dc65870 100644 --- a/Web/knowledge-template-lab/tsconfig.json +++ b/Web/knowledge-template-lab/tsconfig.json @@ -6,7 +6,8 @@ "lib": [ "ES2022", "DOM", - "DOM.Iterable" + "DOM.Iterable", + "ESNext.Disposable" ], "strict": true, "noEmit": true, @@ -15,7 +16,8 @@ "noFallthroughCasesInSwitch": true, "verbatimModuleSyntax": true, "types": [ - "vite/client" + "vite/client", + "node" ] }, "include": [ diff --git a/Web/knowledge-template-lab/tsconfig.vite.json b/Web/knowledge-template-lab/tsconfig.vite.json index 1f7083f..d03bd0c 100644 --- a/Web/knowledge-template-lab/tsconfig.vite.json +++ b/Web/knowledge-template-lab/tsconfig.vite.json @@ -8,7 +8,14 @@ "noUnusedLocals": true, "noUnusedParameters": true, "noFallthroughCasesInSwitch": true, - "verbatimModuleSyntax": true + "verbatimModuleSyntax": true, + "types": [ + "node" + ], + "lib": [ + "ES2022", + "ESNext.Disposable" + ] }, "include": [ "vite.config.ts" diff --git a/deltas/0.0.1/alpha.4.fix.2.md b/deltas/0.0.1/alpha.4.fix.2.md new file mode 100644 index 0000000..a78d911 --- /dev/null +++ b/deltas/0.0.1/alpha.4.fix.2.md @@ -0,0 +1,132 @@ + + + +# Delta 0.0.1-alpha.4.fix.2 — types Node et `ESNext.Disposable` + +## Base requise + +État `0.0.1-alpha.4.fix.1` committé et poussé après application du history : + +```text +history/0.0.1/alpha.4.fix.1.md = FAIL +``` + +La version devient : + +```text +0.0.1-alpha.4.fix.2 +``` + +## Causes du second fix + +Le premier fix Web corrige l'import Sass côté Vite client et l'hygiène EOF, mais sa gate opérateur montre encore deux familles d'erreurs TypeScript. + +### Types Node absents + +Les déclarations de Vite et `sass-embedded` utilisent notamment : + +```text +Buffer +NodeJS +node:http +node:url +node:stream +``` + +Le package ajoute donc : + +```json +"@types/node": "24.13.6" +``` + +dans `devDependencies`. + +Cette branche est alignée sur l'environnement opérateur Node 24 plutôt que sur le `latest` global des types Node. + +Le `tsconfig.json` du code Web devient : + +```json +"types": ["vite/client", "node"] +``` + +Le `tsconfig.vite.json` de la configuration Vite utilise : + +```json +"types": ["node"] +``` + +### `Symbol.asyncDispose` + +Rolldown expose une déclaration utilisant : + +```text +Symbol.asyncDispose +``` + +Le projet conserve `target = ES2022` et ajoute la bibliothèque de types : + +```text +ESNext.Disposable +``` + +conformément au modèle TypeScript prévu pour l'explicit resource management sur un target plus ancien. + +### Défaut de la gate structurelle précédente + +La gate `alpha.4.fix.1` parcourait tous les fichiers `*.d.ts` sous `Web/`, donc aussi ceux de `node_modules`. + +Cette vérification était incorrecte : Vite doit précisément fournir ses propres déclarations de modules d'assets. + +La nouvelle gate ne vérifie que les éventuels fichiers `*.d.ts` appartenant à : + +```text +Web/knowledge-template-lab/src/ +``` + +afin d'empêcher uniquement un shim SCSS local ajouté pour masquer le problème. + +## Fichiers remplacés + +```text +VERSION +Cargo.toml +Web/knowledge-template-lab/package.json +Web/knowledge-template-lab/tsconfig.json +Web/knowledge-template-lab/tsconfig.vite.json +docs/plans/001-V0_0_1_FOUNDATION_PLAN.md +docs/validation/001-VALIDATION_MATRIX.md +``` + +## Fichier ajouté + +```text +deltas/0.0.1/alpha.4.fix.2.md +``` + +Aucun fichier n'est supprimé. + +## Lockfiles + +Le delta ne préfabrique pas `package-lock.json`. + +L'opérateur doit exécuter `npm install` pour intégrer `@types/node` au lockfile, puis `npm ci` pour vérifier la restauration reproductible. + +Le bump Cargo peut également modifier `Cargo.lock`; toute modification réelle reste versionnée. + +## Scope exclu + +Le fix n'ajoute pas : + +- Actix Web ; +- Maud ; +- crate serveur ; +- loader Rust du manifest ; +- route runtime ; +- migration PostgreSQL ; +- adapter de forge. + +## Validation attendue + +Après application du history `alpha.4.fix.1 FAIL`, commit/push de `alpha.4.fix.1`, puis extraction du présent delta, exécuter la gate opérateur fournie. + +Ne pas committe `alpha.4.fix.2` avant production de son history à partir des résultats opérateur. diff --git a/docs/plans/001-V0_0_1_FOUNDATION_PLAN.md b/docs/plans/001-V0_0_1_FOUNDATION_PLAN.md index 2e84e45..c01c235 100644 --- a/docs/plans/001-V0_0_1_FOUNDATION_PLAN.md +++ b/docs/plans/001-V0_0_1_FOUNDATION_PLAN.md @@ -1,5 +1,5 @@ - + # Plan 0.0.1 — fondation SaseDev Knowledge @@ -173,6 +173,15 @@ La gate opérateur d'`alpha.4` reste **FAIL** malgré le passage de Cargo, Clipp `alpha.4.fix.1` corrige exclusivement ces deux défauts : ajout de `vite/client` aux types TypeScript du package et hygiène EOF de la matrice. Les warnings Sass provenant de Bootstrap restent des diagnostics de dépendance tierce non bloquants. La politique npm `allowScripts` reste observée sans approbation automatique. +La gate opérateur d'`alpha.4.fix.1` reste **FAIL**. L'hygiène Git est corrigée et le build/manifest restent propres, mais le typecheck expose deux besoins supplémentaires de la toolchain : + +- les déclarations Vite et `sass-embedded` utilisent les types Node (`Buffer`, `NodeJS`, `node:*`) ; +- Rolldown utilise `Symbol.asyncDispose`, qui nécessite la bibliothèque TypeScript `ESNext.Disposable` lorsque le target reste `ES2022`. + +L'audit structurel du fix contenait également une vérification trop large de tous les `*.d.ts` sous `Web/`, incluant `node_modules`; il doit être limité aux déclarations appartenant au source du projet. + +`alpha.4.fix.2` ajoute donc `@types/node` sur la branche Node 24, expose les types `node`, ajoute `ESNext.Disposable` et corrige uniquement la gate structurelle associée. Aucun scope runtime n'est ajouté. + ### alpha.5 — composition Actix/Maud et manifest Vite Matérialiser le minimum Actix Web/Maud nécessaire pour prouver trois launchers minces et intégrer les assets produits par `alpha.4` : diff --git a/docs/validation/001-VALIDATION_MATRIX.md b/docs/validation/001-VALIDATION_MATRIX.md index 6bbcb66..6e2c5ce 100644 --- a/docs/validation/001-VALIDATION_MATRIX.md +++ b/docs/validation/001-VALIDATION_MATRIX.md @@ -1,5 +1,5 @@ - + # Matrice de validation Knowledge @@ -273,3 +273,25 @@ Le premier fix Web doit prouver : - gates Rust existantes toujours propres après le bump de version ; - aucun serveur Actix/Maud, route runtime, migration PostgreSQL ou adapter de forge ajouté ; - staging Git propre et outputs générés absents du dépôt. + +## Gate de `0.0.1-alpha.4.fix.2` + +Le second fix Web doit prouver : + +- `VERSION = 0.0.1-alpha.4.fix.2` et version workspace Cargo identique ; +- history `alpha.4.fix.1` `FAIL` committé avant application du fix ; +- `git diff --check` propre ; +- `@types/node = 24.13.6` présent dans `devDependencies` ; +- `tsconfig.json` contient `types = ["vite/client", "node"]` ; +- `tsconfig.json` conserve `ES2022`, `DOM`, `DOM.Iterable` et ajoute `ESNext.Disposable` ; +- `tsconfig.vite.json` contient `types = ["node"]` et `lib = ["ES2022", "ESNext.Disposable"]` ; +- aucun shim `*.scss` source propre au projet n'est ajouté ; +- l'audit de shims ne parcourt pas `node_modules` ; +- `npm install` met à jour `package-lock.json` avec `@types/node` puis `npm ci` `PASS` ; +- `npm run typecheck` `PASS` ; +- `npm run build` `PASS` ; +- manifest Vite parsable avec entrée `src/main.ts`, JavaScript et CSS ; +- `npm install-scripts ls` garde observable la politique `@parcel/watcher` sans approbation automatique ; +- gates Rust existantes toujours propres après le bump de version ; +- aucun serveur Actix/Maud, loader Rust du manifest, route runtime, migration PostgreSQL ou adapter de forge ajouté ; +- staging Git propre et outputs générés absents du dépôt. diff --git a/history/0.0.1/alpha.4.fix.2.md b/history/0.0.1/alpha.4.fix.2.md new file mode 100644 index 0000000..103bdcb --- /dev/null +++ b/history/0.0.1/alpha.4.fix.2.md @@ -0,0 +1,168 @@ + + + +# History 0.0.1-alpha.4.fix.2 — types Node et `ESNext.Disposable` + +## Statut + +PASS + +La gate opérateur de `0.0.1-alpha.4.fix.2` exécutée le `2026-09-28` est propre. + +## Baseline opérateur + +`alpha.4.fix.1` `FAIL` a été historisé, committé et poussé avant application du second fix : + +```text +history/0.0.1/alpha.4.fix.1.md = FAIL +commit 342befa +message 0.0.1-alpha.4.fix.1 +branch master +push origin/master PASS +status clean après push +``` + +Le push observé a avancé `origin/master` de `50599da` à `342befa`. + +## Structure + +La gate structurelle passe : + +```text +Knowledge 0.0.1-alpha.4.fix.2 structural audit: clean +``` + +Les décisions corrigées sont effectivement présentes : + +```text +@types/node = 24.13.6 +types = ["vite/client", "node"] +lib = ["ES2022", "DOM", "DOM.Iterable", "ESNext.Disposable"] +``` + +Le `tsconfig.vite.json` contient également les types Node et `ESNext.Disposable`. + +L'audit des éventuels shims SCSS est limité aux sources appartenant au projet et ne parcourt plus `node_modules`. + +## Rust + +Les audits PGR sélectionnés passent : + +```text +Rust blank-line audit: clean (8 file(s)) +Rust item-spacing audit: clean (8 file(s)) +Rust module-order audit: clean (8 file(s)) +Rust trait-import-block audit: clean (8 file(s)) +Rust re-export-block audit: clean (8 file(s)) +Rust export completeness audit: 0 candidate(s) across 3 package(s) +``` + +Les commandes suivantes passent : + +```text +cargo check --workspace PASS +cargo clippy --workspace --all-targets --all-features + -- -D warnings PASS +``` + +Tests ciblés : + +```text +knowledge-domain-lib : 3 passed; 0 failed +knowledge-git-api : 1 passed; 0 failed +knowledge-sync-api : 1 passed; 0 failed +``` + +## npm et lockfile + +`npm install` ajoute les deux packages nécessaires au graphe Node et termine avec : + +```text +43 packages audited +0 vulnerabilities +``` + +`package-lock.json` est mis à jour. + +`npm ci` restaure ensuite le graphe et termine également avec : + +```text +43 packages audited +0 vulnerabilities +``` + +La politique npm conserve un script non approuvé : + +```text +@parcel/watcher@2.6.0 +``` + +Cette observation n'empêche ni le typecheck ni le build et aucune approbation automatique n'a été effectuée. + +## Typecheck et build Web + +La commande : + +```text +npm run typecheck +``` + +passe sans diagnostic. + +La commande : + +```text +npm run build +``` + +passe avec Vite `8.3.1`. + +Les warnings de dépréciation Sass proviennent des sources Bootstrap 5.3.8 et restent non bloquants. + +Le build produit notamment : + +```text +.vite/manifest.json +index.html +assets/main-*.css +assets/template/index-*.js +assets/assets/main-*.js +``` + +L'audit du manifest passe : + +```text +Knowledge 0.0.1-alpha.4.fix.2 Vite manifest audit: clean +``` + +avec une entrée `src/main.ts`, un JavaScript hashé et un CSS hashé. + +## Hygiène Git + +Les contrôles suivants passent : + +```text +git diff --check = PASS +git diff --cached --check = PASS +``` + +Le staging observé après la gate est : + +```text +M Cargo.lock +M Cargo.toml +M VERSION +M Web/knowledge-template-lab/package-lock.json +M Web/knowledge-template-lab/package.json +M Web/knowledge-template-lab/tsconfig.json +M Web/knowledge-template-lab/tsconfig.vite.json +A deltas/0.0.1/alpha.4.fix.2.md +M docs/plans/001-V0_0_1_FOUNDATION_PLAN.md +M docs/validation/001-VALIDATION_MATRIX.md +``` + +## Décision + +`0.0.1-alpha.4.fix.2` est `PASS`. + +La fondation Web indépendante est validée. La transition autorisée est `0.0.1-alpha.5`, consacrée à la composition Actix/Maud, aux trois launchers et à la consommation réelle du manifest Vite.