0.0.1-alpha.4.fix.2

This commit is contained in:
2026-09-28 01:30:43 +02:00
parent 342befa403
commit 8f6f072e11
11 changed files with 370 additions and 11 deletions

6
Cargo.lock generated
View File

@@ -4,18 +4,18 @@ version = 4
[[package]] [[package]]
name = "knowledge-domain-lib" name = "knowledge-domain-lib"
version = "0.0.1-alpha.4.fix.1" version = "0.0.1-alpha.4.fix.2"
[[package]] [[package]]
name = "knowledge-git-api" name = "knowledge-git-api"
version = "0.0.1-alpha.4.fix.1" version = "0.0.1-alpha.4.fix.2"
dependencies = [ dependencies = [
"knowledge-domain-lib", "knowledge-domain-lib",
] ]
[[package]] [[package]]
name = "knowledge-sync-api" name = "knowledge-sync-api"
version = "0.0.1-alpha.4.fix.1" version = "0.0.1-alpha.4.fix.2"
dependencies = [ dependencies = [
"knowledge-domain-lib", "knowledge-domain-lib",
] ]

View File

@@ -1,5 +1,5 @@
# file: Cargo.toml # file: Cargo.toml
# version: 7 # version: 8
[workspace] [workspace]
resolver = "3" resolver = "3"
@@ -10,7 +10,7 @@ members = [
] ]
[workspace.package] [workspace.package]
version = "0.0.1-alpha.4.fix.1" version = "0.0.1-alpha.4.fix.2"
edition = "2024" edition = "2024"
publish = false publish = false
repository = "https://git.sasedev.com/Sasedev/sasedev-knowledge" repository = "https://git.sasedev.com/Sasedev/sasedev-knowledge"

View File

@@ -1 +1 @@
0.0.1-alpha.4.fix.1 0.0.1-alpha.4.fix.2

View File

@@ -11,6 +11,7 @@
}, },
"devDependencies": { "devDependencies": {
"@types/bootstrap": "5.2.11", "@types/bootstrap": "5.2.11",
"@types/node": "24.13.6",
"sass-embedded": "1.105.0", "sass-embedded": "1.105.0",
"typescript": "7.0.2", "typescript": "7.0.2",
"vite": "8.3.1" "vite": "8.3.1"
@@ -639,6 +640,16 @@
"@popperjs/core": "^2.9.2" "@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": { "node_modules/@typescript/typescript-aix-ppc64": {
"version": "7.0.2", "version": "7.0.2",
"resolved": "https://registry.npmjs.org/@typescript/typescript-aix-ppc64/-/typescript-aix-ppc64-7.0.2.tgz", "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" "@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": { "node_modules/varint": {
"version": "6.0.0", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz",

View File

@@ -14,6 +14,7 @@
}, },
"devDependencies": { "devDependencies": {
"@types/bootstrap": "5.2.11", "@types/bootstrap": "5.2.11",
"@types/node": "24.13.6",
"sass-embedded": "1.105.0", "sass-embedded": "1.105.0",
"typescript": "7.0.2", "typescript": "7.0.2",
"vite": "8.3.1" "vite": "8.3.1"

View File

@@ -6,7 +6,8 @@
"lib": [ "lib": [
"ES2022", "ES2022",
"DOM", "DOM",
"DOM.Iterable" "DOM.Iterable",
"ESNext.Disposable"
], ],
"strict": true, "strict": true,
"noEmit": true, "noEmit": true,
@@ -15,7 +16,8 @@
"noFallthroughCasesInSwitch": true, "noFallthroughCasesInSwitch": true,
"verbatimModuleSyntax": true, "verbatimModuleSyntax": true,
"types": [ "types": [
"vite/client" "vite/client",
"node"
] ]
}, },
"include": [ "include": [

View File

@@ -8,7 +8,14 @@
"noUnusedLocals": true, "noUnusedLocals": true,
"noUnusedParameters": true, "noUnusedParameters": true,
"noFallthroughCasesInSwitch": true, "noFallthroughCasesInSwitch": true,
"verbatimModuleSyntax": true "verbatimModuleSyntax": true,
"types": [
"node"
],
"lib": [
"ES2022",
"ESNext.Disposable"
]
}, },
"include": [ "include": [
"vite.config.ts" "vite.config.ts"

View File

@@ -0,0 +1,132 @@
<!-- file: deltas/0.0.1/alpha.4.fix.2.md -->
<!-- version: 1 -->
# 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.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/001-V0_0_1_FOUNDATION_PLAN.md --> <!-- file: docs/plans/001-V0_0_1_FOUNDATION_PLAN.md -->
<!-- version: 9 --> <!-- version: 10 -->
# Plan 0.0.1 — fondation SaseDev Knowledge # 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. `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 ### 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` : Matérialiser le minimum Actix Web/Maud nécessaire pour prouver trois launchers minces et intégrer les assets produits par `alpha.4` :

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/001-VALIDATION_MATRIX.md --> <!-- file: docs/validation/001-VALIDATION_MATRIX.md -->
<!-- version: 9 --> <!-- version: 10 -->
# Matrice de validation Knowledge # 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 ; - gates Rust existantes toujours propres après le bump de version ;
- aucun serveur Actix/Maud, route runtime, migration PostgreSQL ou adapter de forge ajouté ; - 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. - 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.

View File

@@ -0,0 +1,168 @@
<!-- file: history/0.0.1/alpha.4.fix.2.md -->
<!-- version: 1 -->
# 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.