0.0.1-alpha.1.fix.1

This commit is contained in:
2026-09-27 21:42:49 +02:00
parent 116219f860
commit d632afe11e
14 changed files with 768 additions and 155 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/001-V0_0_1_FOUNDATION_PLAN.md -->
<!-- version: 1 -->
<!-- version: 2 -->
# Plan 0.0.1 — fondation SaseDev Knowledge
@@ -25,6 +25,7 @@ La release doit établir :
- la gouvernance PGR locale ;
- la composition des owners/skeletons réellement applicables ;
- la topologie du workspace à trois applications Actix Web distinctes ;
- les frontières Git générique / forge optionnelle / PostgreSQL ;
- les frontières PGR / HOWTO / snippet / project-local ;
- un workspace Rust minimal strict et reproductible ;
@@ -34,29 +35,33 @@ La release doit établir :
## État acquis et questions ouvertes
Acquis par le cadrage `alpha.1` :
Acquis par le cadrage `alpha.1.fix.1` :
- dépôt applicatif `sasedev-knowledge`, nom court `knowledge` ;
- dépôt applicatif/workspace `sasedev-knowledge`, nom court `knowledge` ;
- trois launchers publics retenus : `knowledge-pgr-server`, `knowledge-howtos-server`, `knowledge-snippets-server` ;
- au moins trois sources Git indépendantes : `pgr`, `howtos`, `snippets` ;
- Git autoritaire pour le contenu ;
- forge facultative derrière adapter ;
- PostgreSQL pour l'état applicatif/projections ;
- monolithe modulaire comme baseline de déploiement ;
- PGR, HOWTOs et snippets dans des dépôts séparés ;
- une base PostgreSQL logique partagée pour l'état transversal et les projections ;
- crates communes privilégiées à la duplication entre launchers ;
- Rust stable/édition 2024 ;
- Actix Web, Maud, Vite, TypeScript, Sass, Bootstrap et PostgreSQL retenus comme intentions locales conformes aux owners applicables ;
- préférence Eclipse UTF-8 versionnée conformément à la politique PGR ;
- aucun override PGR nécessaire.
Restent volontairement ouverts jusqu'à la tranche qui les consomme :
- package manager et lockfile frontend ;
- `Cargo.lock` ;
- racine/configuration concrète du frontend ;
- racine(s) et partage concret du frontend entre les trois applications ;
- driver/ORM et migrations PostgreSQL ;
- éventuel découpage en schémas PostgreSQL ;
- moteur de recherche ;
- fournisseur d'identité ;
- adapter forge réel ;
- formats finaux HOWTO/snippet ;
- liste définitive des crates.
- topologie d'administration ;
- liste définitive des crates de bibliothèque.
## Scope
@@ -65,6 +70,7 @@ Restent volontairement ouverts jusqu'à la tranche qui les consomme :
- documentation de gouvernance et architecture ;
- workspace Rust/Cargo minimal ;
- configuration de toolchain/lints proportionnée ;
- trois packages serveur distincts uniquement lorsque leur composition devient utile ;
- premiers types/traits de boundary lorsque leur responsabilité est claire ;
- baseline Web minimale et reproductible ;
- validation indépendante backend/frontend ;
@@ -83,7 +89,8 @@ Restent volontairement ouverts jusqu'à la tranche qui les consomme :
- authentification complète ;
- production multi-domaines ;
- moteur de rendu final de tous les formats ;
- architecture microservices.
- architecture de microservices distribués ;
- quatrième application d'administration sans besoin démontré.
## Stratégie de validation
@@ -91,12 +98,13 @@ Les gates suivent [`../validation/001-VALIDATION_MATRIX.md`](../validation/001-V
Principes :
- gate documentaire pour `alpha.1` ;
- gate documentaire pour `alpha.1` et ses fixes ;
- politique Eclipse explicitement contrôlée ;
- Cargo officiel dès matérialisation Rust ;
- audits Rust structurels PGR seulement s'ils apportent une preuve distincte ;
- package manager/TypeScript/Vite/Sass officiels dès matérialisation Web ;
- backend et frontend validables séparément ;
- smoke seulement pour une propriété runtime réellement introduite ;
- chaque launcher serveur reçoit un smoke seulement lorsqu'une propriété runtime réelle est introduite ;
- aucune prévalidation assistant ne vaut `PASS` opérateur.
## Trajectoire prévisionnelle
@@ -105,31 +113,43 @@ Principes :
Matérialiser la fondation locale : version, règles, objectifs, profil PGR, architecture, plan, validation, roadmap/changelog et prompt de démarrage.
Le résultat opérateur initial est `FAIL`. Le fix `alpha.1.fix.1` corrige la politique Eclipse, la gate de fichiers et la topologie produit à trois applications sans ouvrir le scope `alpha.2`.
Aucun code fonctionnel n'est ajouté.
### alpha.2 — workspace Rust/Cargo minimal
Instancier le skeleton `002-RUST_CARGO_WORKSPACE` sur la fondation : manifest workspace, toolchain/configuration durable réellement nécessaire, premier package possédant une responsabilité claire et gates Cargo officielles.
Instancier le skeleton `002-RUST_CARGO_WORKSPACE` sur la fondation : manifest workspace, toolchain/configuration durable réellement nécessaire et premier package de bibliothèque possédant une responsabilité claire.
Décider explicitement `Cargo.lock`, outputs de build et premier sous-ensemble de crates réellement matérialisé.
Les trois packages serveur sont connus architecturalement mais ne sont pas obligatoirement tous créés dans cette tranche si leur seule existence serait un placeholder.
### alpha.3 — contrats domaine/Git/synchronisation
Introduire uniquement les premiers contrats/types nécessaires aux frontières `GitRepository`, contenu et synchronisation, avec tests ciblés. Ne pas ajouter d'API Gitea ni de persistance PostgreSQL par anticipation.
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.
Les noms conceptuels du cadrage peuvent être adaptés si l'implémentation montre un meilleur owner ; toute modification du plan est tracée dans le delta correspondant.
Ne pas ajouter d'API Gitea ni de persistance PostgreSQL par anticipation.
### alpha.4 — baseline Web indépendante
Instancier le skeleton `003-WEB_FRONTEND` : choisir package manager et lockfile, TypeScript strict, Vite, Sass et Bootstrap réellement nécessaires, avec typecheck/build indépendants du backend.
Ne pas faire de la présence d'Actix/Maud une excuse pour coupler la gate frontend au serveur.
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.
### alpha.5 — composition serveur minimale
### alpha.5 — composition des trois serveurs minimale
Matérialiser le minimum Actix Web/Maud nécessaire pour prouver la composition avec les contrats et assets de fondation, sans admin complète, auth complète, persistence métier complète ni forge.
Matérialiser le minimum Actix Web/Maud nécessaire pour prouver trois launchers minces :
Cette tranche peut être réduite ou reportée si `alpha.2` à `alpha.4` montrent qu'une stable de fondation plus petite est suffisante.
```text
knowledge-pgr-server
knowledge-howtos-server
knowledge-snippets-server
```
Ils doivent composer les mêmes contrats/bibliothèques lorsque la responsabilité est partagée et rester capables de recevoir des configurations de sources Git distinctes.
La tranche ne doit pas introduire admin complète, auth complète, persistance métier complète ni forge obligatoire.
### beta.1 — réconciliation de fondation
@@ -151,8 +171,10 @@ REPLAN obligatoire si :
- une tranche nécessite plusieurs responsabilités non prévues qui ne peuvent plus être validées proprement ensemble ;
- un choix de crate impose un couplage du domaine à Actix/Gitea/PostgreSQL ;
- les trois launchers entraînent une duplication de logique qui devrait être possédée par une crate commune ;
- le frontend ne peut pas être validé indépendamment du host sans raison architecturale réelle ;
- le choix Git impose une API de forge pour une opération fondamentale ;
- la base PostgreSQL partagée impose un couplage de contenu qui contredit l'autorité Git ;
- le format de contenu doit être figé sans corpus représentatif ;
- trois fixes ou plus apparaissent sur une même tranche ;
- un prérequis externe invalide la mission de fondation.