0.0.1-alpha.4
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: CHANGELOG.md -->
|
<!-- file: CHANGELOG.md -->
|
||||||
<!-- version: 5 -->
|
<!-- version: 6 -->
|
||||||
|
|
||||||
# Changelog SaseDev Knowledge
|
# Changelog SaseDev Knowledge
|
||||||
|
|
||||||
@@ -18,6 +18,7 @@ Ce fichier décrit les changements utiles des releases publiées. Les détails d
|
|||||||
- introduit les premiers contrats provider-neutral de source, Git et synchronisation sans dépendance à une forge ni à PostgreSQL ;
|
- introduit les premiers contrats provider-neutral de source, Git et synchronisation sans dépendance à une forge ni à PostgreSQL ;
|
||||||
- active les audits Rust PGR de structure et de façade au moment où des API publiques réelles apparaissent ;
|
- active les audits Rust PGR de structure et de façade au moment où des API publiques réelles apparaissent ;
|
||||||
- fixe le frontend Web PGR comme laboratoire de validation des templates statiques et des assets avant adaptation du markup runtime en Maud ;
|
- fixe le frontend Web PGR comme laboratoire de validation des templates statiques et des assets avant adaptation du markup runtime en Maud ;
|
||||||
|
- matérialise ce laboratoire sous `Web/knowledge-template-lab/` avec npm, TypeScript strict, Vite, Sass, Bootstrap et manifest Vite ;
|
||||||
- retient l’intégration production Actix/Maud via le manifest Vite comme contrat d’asset mapping à réimplémenter proprement, sans copier mécaniquement le corpus historique ;
|
- retient l’intégration production Actix/Maud via le manifest Vite comme contrat d’asset mapping à réimplémenter proprement, sans copier mécaniquement le corpus historique ;
|
||||||
- conserve comme corpus d'inspiration séparé les archives historiques `actix-auth-app` et `amahil-project`, sans importer leurs fonctionnalités inachevées comme exigences ;
|
- conserve comme corpus d'inspiration séparé les archives historiques `actix-auth-app` et `amahil-project`, sans importer leurs fonctionnalités inachevées comme exigences ;
|
||||||
- prépare un workspace Rust et une baseline Web composables sans construire prématurément la plateforme complète.
|
- prépare un workspace Rust et une baseline Web composables sans construire prématurément la plateforme complète.
|
||||||
|
|||||||
6
Cargo.lock
generated
6
Cargo.lock
generated
@@ -4,18 +4,18 @@ version = 4
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "knowledge-domain-lib"
|
name = "knowledge-domain-lib"
|
||||||
version = "0.0.1-alpha.3.fix.3"
|
version = "0.0.1-alpha.4"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "knowledge-git-api"
|
name = "knowledge-git-api"
|
||||||
version = "0.0.1-alpha.3.fix.3"
|
version = "0.0.1-alpha.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"knowledge-domain-lib",
|
"knowledge-domain-lib",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "knowledge-sync-api"
|
name = "knowledge-sync-api"
|
||||||
version = "0.0.1-alpha.3.fix.3"
|
version = "0.0.1-alpha.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"knowledge-domain-lib",
|
"knowledge-domain-lib",
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# file: Cargo.toml
|
# file: Cargo.toml
|
||||||
# version: 5
|
# version: 6
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "3"
|
resolver = "3"
|
||||||
@@ -10,7 +10,7 @@ members = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.0.1-alpha.3.fix.3"
|
version = "0.0.1-alpha.4"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
publish = false
|
publish = false
|
||||||
repository = "https://git.sasedev.com/Sasedev/sasedev-knowledge"
|
repository = "https://git.sasedev.com/Sasedev/sasedev-knowledge"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: README.md -->
|
<!-- file: README.md -->
|
||||||
<!-- version: 5 -->
|
<!-- version: 6 -->
|
||||||
|
|
||||||
# SaseDev Knowledge
|
# SaseDev Knowledge
|
||||||
|
|
||||||
@@ -35,9 +35,11 @@ Le workspace Rust matérialise désormais trois frontières passives avant toute
|
|||||||
|
|
||||||
## Frontend de référence et rendu Maud
|
## Frontend de référence et rendu Maud
|
||||||
|
|
||||||
Knowledge adopte le profil Web PGR comme partie obligatoire de la fondation : Vite, TypeScript, Sass et Bootstrap servent à développer, prévisualiser et valider les assets et templates statiques de référence indépendamment des serveurs Actix.
|
Knowledge adopte le profil Web PGR comme partie obligatoire de la fondation. `alpha.4` matérialise un package partagé de laboratoire sous `Web/knowledge-template-lab/` avec npm, TypeScript strict, Vite, Sass et Bootstrap.
|
||||||
|
|
||||||
Ces templates statiques sont un **harness de conception/validation**, pas le moteur de rendu de production. Le markup runtime des trois applications sera adapté en Maud. Les assets produits par Vite restent consommables par les pages Maud. En production, l’intégration devra résoudre les sorties hashées depuis le manifest Vite ; en développement, un dev server Vite peut fournir les entrées directement. Les URL, ports, chemins de ressources et API Rust exacts restent différés jusqu’aux tranches Web/serveur.
|
Ce package sert à développer, prévisualiser et valider les assets et templates statiques de référence indépendamment des serveurs Actix. Il n'est pas une quatrième application produit ni une UI de production.
|
||||||
|
|
||||||
|
Les templates statiques sont un **harness de conception/validation**, pas le moteur de rendu de production. Le markup runtime des trois applications sera adapté en Maud. Le build Vite active un manifest et possède une entrée stable `src/main.ts` dont les assets hashés seront résolus plus tard par l'intégration Maud. Les URL publiques finales, routes admin/login et API Rust du loader restent différées jusqu'aux tranches serveur.
|
||||||
|
|
||||||
Le mécanisme observé dans `actix-auth-app` est documenté comme corpus technique à adapter, pas comme code autoritaire à copier.
|
Le mécanisme observé dans `actix-auth-app` est documenté comme corpus technique à adapter, pas comme code autoritaire à copier.
|
||||||
|
|
||||||
|
|||||||
12
RULES.md
12
RULES.md
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: RULES.md -->
|
<!-- file: RULES.md -->
|
||||||
<!-- version: 5 -->
|
<!-- version: 6 -->
|
||||||
|
|
||||||
# Règles SaseDev Knowledge
|
# Règles SaseDev Knowledge
|
||||||
|
|
||||||
@@ -159,6 +159,16 @@ Ces choix ne sont pas présentés comme des règles PGR universelles.
|
|||||||
|
|
||||||
## Contrat frontend statique / Maud
|
## Contrat frontend statique / Maud
|
||||||
|
|
||||||
|
La baseline Web de `0.0.1` est matérialisée sous :
|
||||||
|
|
||||||
|
```text
|
||||||
|
Web/knowledge-template-lab/
|
||||||
|
```
|
||||||
|
|
||||||
|
Le package manager sélectionné est npm. Le fichier `package-lock.json` produit par npm est versionné dès la première restauration de dépendances. `node_modules/`, le cache Vite et les outputs de build restent générés/hors Git.
|
||||||
|
|
||||||
|
Le package utilise TypeScript strict, Vite, Sass et Bootstrap. Bootstrap est un choix local Knowledge ; il ne devient pas une règle PGR universelle.
|
||||||
|
|
||||||
Le skeleton Web PGR `003-WEB_FRONTEND` et sa validation associée sont obligatoires pour `0.0.1`. Le frontend contrôlé doit utiliser la chaîne réellement sélectionnée TypeScript + Vite + Sass + Bootstrap pour valider indépendamment du backend les assets, comportements client et templates statiques de référence.
|
Le skeleton Web PGR `003-WEB_FRONTEND` et sa validation associée sont obligatoires pour `0.0.1`. Le frontend contrôlé doit utiliser la chaîne réellement sélectionnée TypeScript + Vite + Sass + Bootstrap pour valider indépendamment du backend les assets, comportements client et templates statiques de référence.
|
||||||
|
|
||||||
Les templates statiques servent de support de conception, prévisualisation et validation navigateur. Ils MUST NOT devenir silencieusement une seconde implémentation runtime divergente : le HTML servi en production par les applications Actix est rendu avec Maud, et toute adaptation depuis le template de référence doit préserver explicitement les contrats utiles de structure, classes, attributs et assets.
|
Les templates statiques servent de support de conception, prévisualisation et validation navigateur. Ils MUST NOT devenir silencieusement une seconde implémentation runtime divergente : le HTML servi en production par les applications Actix est rendu avec Maud, et toute adaptation depuis le template de référence doit préserver explicitement les contrats utiles de structure, classes, attributs et assets.
|
||||||
|
|||||||
52
Web/knowledge-template-lab/README.md
Normal file
52
Web/knowledge-template-lab/README.md
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
<!-- file: Web/knowledge-template-lab/README.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Knowledge template lab
|
||||||
|
|
||||||
|
Ce package Web est un laboratoire de référence commun aux façades PGR, HOWTOs et snippets.
|
||||||
|
|
||||||
|
Il possède :
|
||||||
|
|
||||||
|
- les templates HTML statiques utilisés pour concevoir et valider le markup ;
|
||||||
|
- les interactions TypeScript nécessaires aux références statiques ;
|
||||||
|
- la chaîne Sass/Bootstrap ;
|
||||||
|
- le build Vite et son manifest d'assets.
|
||||||
|
|
||||||
|
Il ne constitue ni une quatrième application produit, ni le renderer de production.
|
||||||
|
|
||||||
|
Le HTML runtime sera adapté en Maud dans les applications Actix Web. Les classes, attributs, composants visuels et clés d'assets validés ici constituent la référence à préserver lors de cette adaptation.
|
||||||
|
|
||||||
|
## Toolchain
|
||||||
|
|
||||||
|
Le package utilise npm avec `package-lock.json` versionné.
|
||||||
|
|
||||||
|
Scripts :
|
||||||
|
|
||||||
|
```text
|
||||||
|
npm run typecheck
|
||||||
|
npm run dev
|
||||||
|
npm run build
|
||||||
|
npm run preview
|
||||||
|
```
|
||||||
|
|
||||||
|
`typecheck` reste indépendant du build Vite.
|
||||||
|
|
||||||
|
Le cache et les outputs Vite sont placés hors du dépôt sous `../builds/sasedev-knowledge/`.
|
||||||
|
|
||||||
|
## Manifest
|
||||||
|
|
||||||
|
Le build de production active le manifest Vite.
|
||||||
|
|
||||||
|
L'entrée stable de départ est :
|
||||||
|
|
||||||
|
```text
|
||||||
|
src/main.ts
|
||||||
|
```
|
||||||
|
|
||||||
|
Cette entrée importe également la chaîne Sass. L'intégration Maud prévue en `alpha.5` devra résoudre les fichiers hashés depuis le manifest plutôt que coder leurs noms.
|
||||||
|
|
||||||
|
## Routes et administration
|
||||||
|
|
||||||
|
Ce laboratoire ne fixe aucune route runtime.
|
||||||
|
|
||||||
|
Les chemins `/admin`, `/login`, `/adminapi` ou autres restent hors de son contrat. Ils appartiendront aux applications Actix lorsque le routage et l'autorisation seront matérialisés.
|
||||||
61
Web/knowledge-template-lab/index.html
Normal file
61
Web/knowledge-template-lab/index.html
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
<!-- file: Web/knowledge-template-lab/index.html -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<title>SaseDev Knowledge — template lab</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main class="container py-5 knowledge-template-shell">
|
||||||
|
<header class="mb-5">
|
||||||
|
<p class="text-body-secondary mb-2">SaseDev Knowledge</p>
|
||||||
|
<h1 class="display-5">Laboratoire de templates statiques</h1>
|
||||||
|
<p class="lead mb-0">
|
||||||
|
Référence commune avant adaptation du markup runtime en Maud.
|
||||||
|
</p>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section class="row g-4" aria-label="Familles de contenu de référence">
|
||||||
|
<div class="col-12 col-md-4">
|
||||||
|
<article class="card knowledge-family-card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h2 class="h4">PGR</h2>
|
||||||
|
<p class="card-text">Référence normative de gouvernance.</p>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-md-4">
|
||||||
|
<article class="card knowledge-family-card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h2 class="h4">HOWTOs</h2>
|
||||||
|
<p class="card-text">Guides procéduraux et explicatifs.</p>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-md-4">
|
||||||
|
<article class="card knowledge-family-card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h2 class="h4">Snippets</h2>
|
||||||
|
<p class="card-text">Fragments courts et contextualisés.</p>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="mt-5">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="btn btn-primary"
|
||||||
|
data-bs-toggle="tooltip"
|
||||||
|
data-bs-title="Validation du JavaScript Bootstrap dans le template lab"
|
||||||
|
>
|
||||||
|
Smoke Bootstrap
|
||||||
|
</button>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<script type="module" src="/src/main.ts"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
2094
Web/knowledge-template-lab/package-lock.json
generated
Normal file
2094
Web/knowledge-template-lab/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
21
Web/knowledge-template-lab/package.json
Normal file
21
Web/knowledge-template-lab/package.json
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"name": "sasedev-knowledge-template-lab",
|
||||||
|
"private": true,
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"typecheck": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.vite.json",
|
||||||
|
"dev": "vite",
|
||||||
|
"build": "vite build",
|
||||||
|
"preview": "vite preview"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@popperjs/core": "2.11.8",
|
||||||
|
"bootstrap": "5.3.8"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/bootstrap": "5.2.11",
|
||||||
|
"sass-embedded": "1.105.0",
|
||||||
|
"typescript": "7.0.2",
|
||||||
|
"vite": "8.3.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
10
Web/knowledge-template-lab/src/main.ts
Normal file
10
Web/knowledge-template-lab/src/main.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
// file: Web/knowledge-template-lab/src/main.ts
|
||||||
|
// version: 1
|
||||||
|
|
||||||
|
import { Tooltip } from "bootstrap";
|
||||||
|
|
||||||
|
import "./styles/main.scss";
|
||||||
|
|
||||||
|
for (const element of document.querySelectorAll<HTMLElement>('[data-bs-toggle="tooltip"]')) {
|
||||||
|
new Tooltip(element);
|
||||||
|
}
|
||||||
12
Web/knowledge-template-lab/src/styles/main.scss
Normal file
12
Web/knowledge-template-lab/src/styles/main.scss
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
// file: Web/knowledge-template-lab/src/styles/main.scss
|
||||||
|
// version: 1
|
||||||
|
|
||||||
|
@use "bootstrap/scss/bootstrap";
|
||||||
|
|
||||||
|
.knowledge-template-shell {
|
||||||
|
max-width: 72rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.knowledge-family-card {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
21
Web/knowledge-template-lab/tsconfig.json
Normal file
21
Web/knowledge-template-lab/tsconfig.json
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "ES2022",
|
||||||
|
"module": "ESNext",
|
||||||
|
"moduleResolution": "Bundler",
|
||||||
|
"lib": [
|
||||||
|
"ES2022",
|
||||||
|
"DOM",
|
||||||
|
"DOM.Iterable"
|
||||||
|
],
|
||||||
|
"strict": true,
|
||||||
|
"noEmit": true,
|
||||||
|
"noUnusedLocals": true,
|
||||||
|
"noUnusedParameters": true,
|
||||||
|
"noFallthroughCasesInSwitch": true,
|
||||||
|
"verbatimModuleSyntax": true
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"src/**/*.ts"
|
||||||
|
]
|
||||||
|
}
|
||||||
16
Web/knowledge-template-lab/tsconfig.vite.json
Normal file
16
Web/knowledge-template-lab/tsconfig.vite.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "ES2022",
|
||||||
|
"module": "ESNext",
|
||||||
|
"moduleResolution": "Bundler",
|
||||||
|
"strict": true,
|
||||||
|
"noEmit": true,
|
||||||
|
"noUnusedLocals": true,
|
||||||
|
"noUnusedParameters": true,
|
||||||
|
"noFallthroughCasesInSwitch": true,
|
||||||
|
"verbatimModuleSyntax": true
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"vite.config.ts"
|
||||||
|
]
|
||||||
|
}
|
||||||
31
Web/knowledge-template-lab/vite.config.ts
Normal file
31
Web/knowledge-template-lab/vite.config.ts
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
// file: Web/knowledge-template-lab/vite.config.ts
|
||||||
|
// version: 2
|
||||||
|
|
||||||
|
import { defineConfig } from "vite";
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
root: ".",
|
||||||
|
base: "/",
|
||||||
|
cacheDir: "../../../builds/sasedev-knowledge/vite-cache/template-lab",
|
||||||
|
server: {
|
||||||
|
host: "127.0.0.1",
|
||||||
|
port: 5173,
|
||||||
|
strictPort: true,
|
||||||
|
},
|
||||||
|
preview: {
|
||||||
|
host: "127.0.0.1",
|
||||||
|
port: 4173,
|
||||||
|
strictPort: true,
|
||||||
|
},
|
||||||
|
build: {
|
||||||
|
outDir: "../../../builds/sasedev-knowledge/web/template-lab",
|
||||||
|
emptyOutDir: true,
|
||||||
|
manifest: true,
|
||||||
|
rollupOptions: {
|
||||||
|
input: {
|
||||||
|
"template/index": "index.html",
|
||||||
|
"assets/main": "src/main.ts",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
126
deltas/0.0.1/alpha.4.md
Normal file
126
deltas/0.0.1/alpha.4.md
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
<!-- file: deltas/0.0.1/alpha.4.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# 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.
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/architecture/001-PROJECT_PROFILE.md -->
|
<!-- file: docs/architecture/001-PROJECT_PROFILE.md -->
|
||||||
<!-- version: 5 -->
|
<!-- version: 6 -->
|
||||||
|
|
||||||
# Profil du projet Knowledge
|
# Profil du projet Knowledge
|
||||||
|
|
||||||
@@ -73,11 +73,11 @@ Les profils Java/Maven/Gradle, Android et autres technologies absentes ne sont p
|
|||||||
| Actix Web | `KEEP-LOCAL` | trois launchers serveur distincts ; PGR ne possède pas de profil Actix dédié |
|
| Actix Web | `KEEP-LOCAL` | trois launchers serveur distincts ; PGR ne possède pas de profil Actix dédié |
|
||||||
| Maud | `KEEP-LOCAL` | rendu SSR initial lorsque pertinent |
|
| Maud | `KEEP-LOCAL` | rendu SSR initial lorsque pertinent |
|
||||||
| TypeScript | `ADOPT` | conforme au owner `530` et à l'intention locale |
|
| TypeScript | `ADOPT` | conforme au owner `530` et à l'intention locale |
|
||||||
| Package manager frontend | `DEFER` | choisir dans la tranche Web avant création du manifest/lockfile |
|
| Package manager frontend | `KEEP-LOCAL` | npm sélectionné en `alpha.4` ; `package-lock.json` versionné |
|
||||||
| Vite | `KEEP-LOCAL` + owner `550` adopté | build/preview des templates et assets de référence ; manifest de production consommé par l’intégration Maud |
|
| Vite | `KEEP-LOCAL` + owner `550` adopté | build/preview des templates et assets de référence ; manifest de production consommé par l’intégration Maud |
|
||||||
| Sass | `KEEP-LOCAL` + owner `560` adopté | styles source de la chaîne de validation Web et des assets réellement servis par les pages Maud |
|
| Sass | `KEEP-LOCAL` + owner `560` adopté | styles source de la chaîne de validation Web et des assets réellement servis par les pages Maud |
|
||||||
| Bootstrap | `KEEP-LOCAL` | framework CSS retenu pour les templates de référence et le rendu Maud ; jamais règle PGR universelle |
|
| Bootstrap | `KEEP-LOCAL` | framework CSS retenu pour les templates de référence et le rendu Maud ; jamais règle PGR universelle |
|
||||||
| Racine(s) frontend | `DEFER` | décider en `alpha.4` selon le partage réel entre les trois applications et leurs templates de référence |
|
| Racine(s) frontend | `KEEP-LOCAL` | package partagé `Web/knowledge-template-lab/` pour les références statiques et assets communs |
|
||||||
| Templates statiques Web | `KEEP-LOCAL` | harness de conception/validation ; le markup runtime est adapté et servi par Maud |
|
| Templates statiques Web | `KEEP-LOCAL` | harness de conception/validation ; le markup runtime est adapté et servi par Maud |
|
||||||
| Intégration manifest Vite / Maud | `KEEP-LOCAL` | mapping d’assets hashés requis en production ; API Rust exacte différée jusqu’à la composition serveur |
|
| Intégration manifest Vite / Maud | `KEEP-LOCAL` | mapping d’assets hashés requis en production ; API Rust exacte différée jusqu’à la composition serveur |
|
||||||
| Driver/ORM PostgreSQL | `DEFER` | reprendre à la première implémentation persistante réelle |
|
| Driver/ORM PostgreSQL | `DEFER` | reprendre à la première implémentation persistante réelle |
|
||||||
@@ -92,6 +92,8 @@ Les profils Java/Maven/Gradle, Android et autres technologies absentes ne sont p
|
|||||||
|
|
||||||
Aucun `OVERRIDE` n'est requis à ce stade.
|
Aucun `OVERRIDE` n'est requis à ce stade.
|
||||||
|
|
||||||
|
La sélection Web `alpha.4` conserve une seule baseline partagée tant qu'aucune divergence réelle entre les trois façades ne justifie plusieurs packages. Les entrées spécifiques pourront être ajoutées dans ce package avant toute duplication de toolchain.
|
||||||
|
|
||||||
## Nomenclature de crates candidate
|
## Nomenclature de crates candidate
|
||||||
|
|
||||||
Les trois packages exécutables sont des boundaries produit retenus :
|
Les trois packages exécutables sont des boundaries produit retenus :
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/architecture/002-KNOWLEDGE_ARCHITECTURE.md -->
|
<!-- file: docs/architecture/002-KNOWLEDGE_ARCHITECTURE.md -->
|
||||||
<!-- version: 5 -->
|
<!-- version: 6 -->
|
||||||
|
|
||||||
# Architecture de fondation Knowledge
|
# Architecture de fondation Knowledge
|
||||||
|
|
||||||
@@ -236,7 +236,7 @@ Pour HOWTOs/snippets :
|
|||||||
|
|
||||||
Actix Web et Maud sont des choix de composition/rendu locaux. Vite gère les assets/interactions frontend lorsqu'il est matérialisé.
|
Actix Web et Maud sont des choix de composition/rendu locaux. Vite gère les assets/interactions frontend lorsqu'il est matérialisé.
|
||||||
|
|
||||||
La stratégie exacte de partage des assets/frontend entre les trois applications reste `DEFER` jusqu'à la tranche Web : un package commun n'est créé que si du code/assets sont réellement communs.
|
La baseline `alpha.4` retient un package de laboratoire partagé `Web/knowledge-template-lab/` pour les assets et templates statiques de référence communs. Cette décision évite trois toolchains identiques ; une divergence réelle pourra introduire ultérieurement des entrées ou packages supplémentaires.
|
||||||
|
|
||||||
### Pipeline Web de référence et rendu runtime
|
### Pipeline Web de référence et rendu runtime
|
||||||
|
|
||||||
@@ -264,7 +264,7 @@ En particulier, Knowledge ne doit pas hériter mécaniquement :
|
|||||||
- d’une arborescence d’assets spécifique au corpus ;
|
- d’une arborescence d’assets spécifique au corpus ;
|
||||||
- de dépendances TypeScript `@types/*` non justifiées par les packages réellement consommés.
|
- de dépendances TypeScript `@types/*` non justifiées par les packages réellement consommés.
|
||||||
|
|
||||||
`alpha.4` possède le frontend indépendant et la production du manifest. `alpha.5` possède l’intégration Actix/Maud et doit décider si le loader d’assets devient une crate/lib partagée entre les trois serveurs.
|
`alpha.4` possède le frontend indépendant et la production du manifest. La clé stable `src/main.ts` constitue l'entrée d'asset commune de départ ; son entrée de manifest doit référencer les sorties JavaScript et CSS générées. `alpha.5` possède l’intégration Actix/Maud et doit décider si le loader d’assets devient une crate/lib partagée entre les trois serveurs.
|
||||||
|
|
||||||
## 10. Administration
|
## 10. Administration
|
||||||
|
|
||||||
|
|||||||
@@ -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: 7 -->
|
<!-- version: 8 -->
|
||||||
|
|
||||||
# Plan 0.0.1 — fondation SaseDev Knowledge
|
# Plan 0.0.1 — fondation SaseDev Knowledge
|
||||||
|
|
||||||
@@ -134,7 +134,7 @@ La gate valide la structure et les audits puis échoue dans `knowledge-domain-li
|
|||||||
|
|
||||||
`alpha.3.fix.2` corrige exclusivement cette dette de documentation publique et rejoue la gate Rust complète sans modifier les contrats domaine/Git/synchronisation ni le cadrage Web/Maud. Sa gate opérateur reste toutefois **FAIL** malgré le passage de `cargo check`, Clippy strict et des trois suites ciblées : `git diff --check` détecte une ligne vide supplémentaire en fin de `docs/validation/001-VALIDATION_MATRIX.md`.
|
`alpha.3.fix.2` corrige exclusivement cette dette de documentation publique et rejoue la gate Rust complète sans modifier les contrats domaine/Git/synchronisation ni le cadrage Web/Maud. Sa gate opérateur reste toutefois **FAIL** malgré le passage de `cargo check`, Clippy strict et des trois suites ciblées : `git diff --check` détecte une ligne vide supplémentaire en fin de `docs/validation/001-VALIDATION_MATRIX.md`.
|
||||||
|
|
||||||
`alpha.3.fix.3` corrige exclusivement cette anomalie documentaire de fin de fichier, conserve les corrections Rust déjà validées et rejoue la gate complète avant clôture d'`alpha.3`.
|
`alpha.3.fix.3` corrige exclusivement cette anomalie documentaire de fin de fichier, conserve les corrections Rust déjà validées et rejoue la gate complète avant clôture d'`alpha.3`. Sa gate opérateur est **PASS**.
|
||||||
|
|
||||||
Le scope fonctionnel de `alpha.3` reste : introduire uniquement les premiers contrats/types nécessaires aux frontières `GitRepository`, source/famille de contenu et synchronisation, avec tests ciblés. Le modèle doit supporter au moins les trois sources initiales sans coder une limite à trois.
|
Le scope fonctionnel de `alpha.3` reste : introduire uniquement les premiers contrats/types nécessaires aux frontières `GitRepository`, source/famille de contenu et synchronisation, avec tests ciblés. Le modèle doit supporter au moins les trois sources initiales sans coder une limite à trois.
|
||||||
|
|
||||||
@@ -146,13 +146,25 @@ Ne pas ajouter d'API Gitea ni de persistance PostgreSQL par anticipation.
|
|||||||
|
|
||||||
### alpha.4 — baseline Web indépendante et templates de référence
|
### alpha.4 — baseline Web indépendante et templates de référence
|
||||||
|
|
||||||
Instancier obligatoirement le skeleton `003-WEB_FRONTEND` : choisir package manager et lockfile, TypeScript strict, Vite, Sass et Bootstrap, avec typecheck/build indépendants du backend.
|
Instancier obligatoirement le skeleton `003-WEB_FRONTEND` avec les décisions désormais résolues :
|
||||||
|
|
||||||
Le frontend sert d’abord de laboratoire de templates statiques : développer et valider indépendamment le markup de référence, les comportements TypeScript, le responsive Bootstrap et les styles Sass avant adaptation du markup runtime en Maud. Les pages statiques ne deviennent pas une seconde UI de production.
|
```text
|
||||||
|
package Web/knowledge-template-lab/
|
||||||
|
package manager npm
|
||||||
|
lockfile package-lock.json versionné
|
||||||
|
TypeScript strict
|
||||||
|
Vite build + dev server + manifest
|
||||||
|
styles Sass
|
||||||
|
framework CSS Bootstrap
|
||||||
|
```
|
||||||
|
|
||||||
Activer le manifest de build Vite et définir des clés d’entrée stables pour les assets réellement destinés aux pages Maud. Les outputs restent générés/hors Git conformément à PGR.
|
Le package reste partagé entre les trois façades tant qu'aucune divergence réelle ne justifie une séparation. Il sert d’abord de laboratoire de templates statiques : développer et valider indépendamment le markup de référence, les comportements TypeScript, le responsive Bootstrap et les styles Sass avant adaptation du markup runtime en Maud. Les pages statiques ne deviennent pas une seconde UI de production.
|
||||||
|
|
||||||
Décider à cette tranche si les trois applications partagent un package d'assets/frontend ou possèdent des entrées séparées. Ne pas dupliquer par défaut, ne pas imposer non plus un frontend unique sans preuve de réutilisation. Définir également une preuve minimale contre la dérive entre templates statiques de référence et future adaptation Maud.
|
Le build Vite active le manifest et matérialise une entrée stable `src/main.ts`. Cette entrée importe la chaîne Sass afin que le manifest relie l'entrée logique aux sorties JavaScript/CSS hashées consommables plus tard par Maud.
|
||||||
|
|
||||||
|
Les outputs et caches restent sous `../builds/sasedev-knowledge/` et hors Git. La gate doit prouver une restauration reproductible depuis `package-lock.json`, un typecheck séparé, le build Vite, un manifest parsable et la présence des assets attendus.
|
||||||
|
|
||||||
|
La preuve contre la dérive statique/Maud reste volontairement limitée à cette tranche : le package de référence documente les invariants de classes/attributs/assets, tandis que la comparaison runtime réelle n'existe qu'après matérialisation Maud en `alpha.5`.
|
||||||
|
|
||||||
### alpha.5 — composition Actix/Maud et manifest Vite
|
### alpha.5 — composition Actix/Maud et manifest Vite
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/validation/001-VALIDATION_MATRIX.md -->
|
<!-- file: docs/validation/001-VALIDATION_MATRIX.md -->
|
||||||
<!-- version: 7 -->
|
<!-- version: 8 -->
|
||||||
|
|
||||||
# Matrice de validation Knowledge
|
# Matrice de validation Knowledge
|
||||||
|
|
||||||
@@ -231,3 +231,27 @@ Le troisième fix doit prouver :
|
|||||||
- aucune modification fonctionnelle des contrats domaine/Git/synchronisation ;
|
- aucune modification fonctionnelle des contrats domaine/Git/synchronisation ;
|
||||||
- aucun frontend, serveur Actix, schéma PostgreSQL ou adapter de forge ajouté ;
|
- aucun frontend, serveur Actix, schéma PostgreSQL ou adapter de forge ajouté ;
|
||||||
- staging Git propre à la tranche.
|
- staging Git propre à la tranche.
|
||||||
|
|
||||||
|
## Gate de `0.0.1-alpha.4`
|
||||||
|
|
||||||
|
La tranche Web doit prouver :
|
||||||
|
|
||||||
|
- `VERSION = 0.0.1-alpha.4` et version workspace Cargo identique ;
|
||||||
|
- history `alpha.3.fix.3` `PASS` committé avant application d'`alpha.4` ;
|
||||||
|
- package unique `Web/knowledge-template-lab/` et absence des trois launchers Actix encore différés ;
|
||||||
|
- npm sélectionné comme package manager ;
|
||||||
|
- `package-lock.json` généré par npm, versionné et non ignoré ;
|
||||||
|
- dépendances réelles et versions explicites pour TypeScript, Vite, Sass, Bootstrap, Popper et types nécessaires ;
|
||||||
|
- `npm ci` `PASS` depuis le lockfile ;
|
||||||
|
- `npm run typecheck` indépendant `PASS` ;
|
||||||
|
- `npm run build` `PASS` ;
|
||||||
|
- cache Vite et `build.outDir` hors dépôt sous `../builds/sasedev-knowledge/` ;
|
||||||
|
- manifest Vite de production parsable ;
|
||||||
|
- entrée stable `src/main.ts` présente dans le manifest et associée à un asset JavaScript ;
|
||||||
|
- au moins un asset CSS associé à l'entrée ou à son graphe de build ;
|
||||||
|
- page statique de référence incluse dans le build Vite sans route Actix/Maud ;
|
||||||
|
- aucun chemin `/admin`, `/login` ou hostname de production figé dans le package de laboratoire ;
|
||||||
|
- aucune crate serveur, dépendance Actix/Maud, migration PostgreSQL ou adapter de forge ajouté ;
|
||||||
|
- gates Rust existantes toujours propres après le bump de version ;
|
||||||
|
- `git diff --cached --check` propre et outputs générés absents du staging.
|
||||||
|
|
||||||
|
|||||||
94
history/0.0.1/alpha.4.md
Normal file
94
history/0.0.1/alpha.4.md
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
<!-- file: history/0.0.1/alpha.4.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# History 0.0.1-alpha.4 — baseline Web indépendante et template lab
|
||||||
|
|
||||||
|
## Statut
|
||||||
|
|
||||||
|
FAIL
|
||||||
|
|
||||||
|
La gate opérateur de `0.0.1-alpha.4` exécutée le `2026-09-28` valide la majorité de la tranche Web, mais deux défauts du delta empêchent sa clôture : le typecheck TypeScript ne connaît pas l'import Sass et `git diff --check` détecte une ligne vide supplémentaire en fin de matrice de validation.
|
||||||
|
|
||||||
|
## Baseline opérateur
|
||||||
|
|
||||||
|
`alpha.3.fix.3` `PASS` a été historisé, committé et poussé avant application d'`alpha.4` :
|
||||||
|
|
||||||
|
```text
|
||||||
|
history/0.0.1/alpha.3.fix.3.md = PASS
|
||||||
|
commit 91e596e
|
||||||
|
message 0.0.1-alpha.3.fix.3
|
||||||
|
branch master
|
||||||
|
push origin/master PASS
|
||||||
|
status clean après push
|
||||||
|
```
|
||||||
|
|
||||||
|
Le push observé a avancé `origin/master` de `3802476` à `91e596e`.
|
||||||
|
|
||||||
|
## Structure et Rust
|
||||||
|
|
||||||
|
La gate structurelle passe :
|
||||||
|
|
||||||
|
```text
|
||||||
|
Knowledge 0.0.1-alpha.4 structural audit: clean
|
||||||
|
```
|
||||||
|
|
||||||
|
Les six audits Rust PGR, `cargo check`, Clippy strict et les trois suites ciblées passent.
|
||||||
|
|
||||||
|
Résultats tests :
|
||||||
|
|
||||||
|
```text
|
||||||
|
knowledge-domain-lib : 3 passed; 0 failed
|
||||||
|
knowledge-git-api : 1 passed; 0 failed
|
||||||
|
knowledge-sync-api : 1 passed; 0 failed
|
||||||
|
```
|
||||||
|
|
||||||
|
## Environnement Web observé
|
||||||
|
|
||||||
|
```text
|
||||||
|
node v24.21.0
|
||||||
|
npm 11.19.0
|
||||||
|
```
|
||||||
|
|
||||||
|
`npm install` puis `npm ci` passent et npm annonce `0 vulnerabilities`.
|
||||||
|
|
||||||
|
npm signale toutefois `@parcel/watcher@2.6.0` comme package avec script d'installation non encore couvert par `allowScripts`. Cette observation n'est pas la cause du `FAIL`.
|
||||||
|
|
||||||
|
## Défaut TypeScript
|
||||||
|
|
||||||
|
`npm run typecheck` échoue avec :
|
||||||
|
|
||||||
|
```text
|
||||||
|
TS2882: Cannot find module or type declarations for side-effect import of './styles/main.scss'.
|
||||||
|
```
|
||||||
|
|
||||||
|
Le package n'a pas encore déclaré les types client Vite qui fournissent les shims d'assets.
|
||||||
|
|
||||||
|
## Build Vite
|
||||||
|
|
||||||
|
`npm run build` passe avec Vite `8.3.1`.
|
||||||
|
|
||||||
|
Le build produit le manifest, `index.html`, un CSS hashé et les bundles JavaScript.
|
||||||
|
|
||||||
|
L'audit manifest passe :
|
||||||
|
|
||||||
|
```text
|
||||||
|
Knowledge 0.0.1-alpha.4 Vite manifest audit: clean
|
||||||
|
```
|
||||||
|
|
||||||
|
avec une entrée `src/main.ts`, un asset JavaScript et un asset CSS.
|
||||||
|
|
||||||
|
Les warnings Sass proviennent des sources Bootstrap et n'empêchent pas le build.
|
||||||
|
|
||||||
|
## Défaut d'hygiène Git
|
||||||
|
|
||||||
|
`git diff --check` signale avant et après staging :
|
||||||
|
|
||||||
|
```text
|
||||||
|
docs/validation/001-VALIDATION_MATRIX.md:257: new blank line at EOF.
|
||||||
|
```
|
||||||
|
|
||||||
|
## Décision
|
||||||
|
|
||||||
|
`0.0.1-alpha.4` est `FAIL`.
|
||||||
|
|
||||||
|
La transition autorisée est `0.0.1-alpha.4.fix.1`, limitée aux types client Vite et à l'hygiène EOF de la matrice.
|
||||||
Reference in New Issue
Block a user