0.0.1-beta.1

This commit is contained in:
2026-09-28 10:37:50 +02:00
parent 515f8153a4
commit 7c0048b6a7
15 changed files with 767 additions and 42 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/000-README.md -->
<!-- version: 3 -->
<!-- version: 4 -->
# Documentation SaseDev Knowledge
@@ -16,6 +16,7 @@
- [`studies/001-AUTH_ADMIN_CORPUS_STUDY.md`](studies/001-AUTH_ADMIN_CORPUS_STUDY.md) — analyse des fonctionnalités auth/admin présentes ou seulement préparées dans deux archives historiques inachevées.
- [`studies/002-ACTIX_MAUD_VITE_CORPUS_STUDY.md`](studies/002-ACTIX_MAUD_VITE_CORPUS_STUDY.md) — analyse du pattern Vite manifest / Actix / Maud de `actix-auth-app` et contrat de reprise ciblée pour Knowledge.
- [`studies/003-V0_0_1_FOUNDATION_RECONCILIATION.md`](studies/003-V0_0_1_FOUNDATION_RECONCILIATION.md) — réconciliation beta de la fondation, DEFER conservés et revue d'horizon engageant uniquement `0.0.2`.
## Plans
@@ -26,3 +27,7 @@
- [`validation/001-VALIDATION_MATRIX.md`](validation/001-VALIDATION_MATRIX.md) — preuves proportionnées par scope.
Les deltas et histories sont des artefacts de workflow, pas des substituts à cette documentation durable.
## Handoff
- [`../prompts/002-V0_0_2_START_PROMPT.md`](../prompts/002-V0_0_2_START_PROMPT.md) — prompt de reprise préparé pour `0.0.2`, non exécutable avant publication et vérification post-tag de `0.0.1`.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/architecture/001-PROJECT_PROFILE.md -->
<!-- version: 7 -->
<!-- version: 8 -->
# Profil du projet Knowledge
@@ -39,16 +39,16 @@ Le prompt de démarrage exige néanmoins une matrice `ADOPT / KEEP-LOCAL / OVERR
| `300-DOCUMENTATION` | `ADOPT` | `alpha.1` | rôles documentaires et taxonomie utile |
| `400-VALIDATION` | `ADOPT` | `alpha.1` | preuves proportionnées et autorité opérateur |
| `500-LANGUAGES` + `510-RUST_CARGO` | `ADOPT` | `alpha.2+` | backend Rust/workspace Cargo contrôlé |
| `530-TYPESCRIPT` | `ADOPT` | tranche Web | frontend durable TypeScript |
| `540-JAVASCRIPT_PACKAGE_ECOSYSTEM` | `ADOPT` | tranche Web | package manager/lockfile/scripts explicites |
| `550-VITE` | `ADOPT` puisque Vite est retenu | tranche Web | dev server/build/cache/outputs |
| `560-CSS_SASS` | `ADOPT` | tranche Web | CSS/Sass et outputs |
| `700-FRAMEWORKS` | `ADOPT` | avec Actix/Maud | cadre générique des frameworks |
| `530-TYPESCRIPT` | `ADOPT` | `alpha.4` | frontend durable TypeScript |
| `540-JAVASCRIPT_PACKAGE_ECOSYSTEM` | `ADOPT` | `alpha.4` | package manager/lockfile/scripts explicites |
| `550-VITE` | `ADOPT` puisque Vite est retenu | `alpha.4` | dev server/build/cache/outputs |
| `560-CSS_SASS` | `ADOPT` | `alpha.4` | CSS/Sass et outputs |
| `700-FRAMEWORKS` | `ADOPT` | `alpha.5` | cadre générique des frameworks |
| `710-TAURI` | `DEFER` / non applicable | hors `0.0.1` | aucun host desktop/mobile Tauri |
| skeleton `001-PROJECT_GOVERNANCE_FOUNDATION` | `ADOPT` | `alpha.1` | fondation locale PGR |
| skeleton `002-RUST_CARGO_WORKSPACE` | `ADOPT` | `alpha.2` | workspace Rust contrôlé |
| skeleton `003-WEB_FRONTEND` | `ADOPT` | tranche Web | frontend indépendant du host |
| validation `005-WEB_FRONTEND_VALIDATION` | `ADOPT` | tranche Web | restore/typecheck/build/smoke proportionnés |
| skeleton `003-WEB_FRONTEND` | `ADOPT` | `alpha.4` | frontend indépendant du host |
| validation `005-WEB_FRONTEND_VALIDATION` | `ADOPT` | `alpha.4+` | restore/typecheck/build/smoke proportionnés |
Les profils Java/Maven/Gradle, Android et autres technologies absentes ne sont pas sélectionnés.
@@ -79,7 +79,7 @@ Les profils Java/Maven/Gradle, Android et autres technologies absentes ne sont p
| 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 | `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 |
| 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` | matérialisée dans `knowledge-web-lib` en `alpha.5`, avec dev-origin/manifest/base-path configurables |
| Driver/ORM PostgreSQL | `DEFER` | reprendre à la première implémentation persistante réelle |
| Migrations PostgreSQL | `DEFER` | reprendre avec le choix de driver/tooling et le premier schéma réel |
| Moteur de recherche | `DEFER` | commencer par capacités PostgreSQL/index applicatif ; réévaluer sur besoin mesuré |
@@ -94,7 +94,7 @@ 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
Les trois packages exécutables sont des boundaries produit retenus :
@@ -104,7 +104,7 @@ knowledge-howtos-server launcher Actix Web de la façade HOWTOs
knowledge-snippets-server launcher Actix Web de la façade snippets
```
Ils ne sont pas encore matérialisés en `alpha.3`. Lorsqu'ils le seront, leurs `main.rs` resteront minces et composeront les bibliothèques réutilisables. Chacun doit pouvoir protéger sa propre surface d'administration métier.
Ils sont matérialisés depuis `alpha.5`. Leurs `main.rs` restent minces et délèguent à `knowledge-web-lib`. Chacun conserve le contrat de pouvoir protéger sa propre surface d'administration métier lorsque cette surface sera implémentée.
Les responsabilités matérialisées sont :
@@ -112,6 +112,10 @@ Les responsabilités matérialisées sont :
knowledge-domain-lib types métier stables de famille/source ; aucune dépendance Actix/Git-provider/forge/PostgreSQL
knowledge-git-api contrat passif GitRepository ; implémentations génériques remplaçables derrière cette frontière
knowledge-sync-api contrat passif RepositoryEventSource et signaux de réconciliation ; plusieurs mécanismes producteurs prévus
knowledge-web-lib composition Actix/Maud partagée, résolution Vite dev/manifest et service des assets
knowledge-pgr-server launcher PGR mince
knowledge-howtos-server launcher HOWTOs mince
knowledge-snippets-server launcher snippets mince
```
Les responsabilités suivantes restent candidates et ne deviennent des packages que lorsqu'elles possèdent un ownership réel :
@@ -121,7 +125,6 @@ knowledge-app-lib orchestration des use cases transversaux, si la s
knowledge-git-lib implémentation Git générique de knowledge-git-api
knowledge-store-postgres-lib état applicatif PostgreSQL partagé
knowledge-forge-gitea-lib adapter Gitea optionnel
knowledge-web-lib composition Web réellement partagée, seulement si les trois serveurs dupliqueraient sinon du code
knowledge-logging-lib diagnostics partagés, seulement lorsque plusieurs runtimes en ont effectivement besoin
```
@@ -148,4 +151,8 @@ Elles ne justifient pas encore de créer une crate auth, de figer `/admin` ou `/
## Décisions à rouvrir
Les `DEFER` sont réexaminés dans la tranche qui consomme réellement la décision. Un changement de scope produit, l'ajout d'un host natif ou une contrainte externe peut déclencher un REPLAN ; il ne justifie pas un choix anticipé dans `alpha.1.fix.1`.
La réconciliation `beta.1` confirme que les `DEFER` suivants restent légitimes : adapter Gitea, driver/migrations PostgreSQL, moteur de recherche, fournisseur d'identité externe, quatrième application d'administration, modèle détaillé rôles/capabilities, formats finaux HOWTO/snippet et noms de crates non encore possédés par une responsabilité réelle.
La prochaine release engagée `0.0.2` rouvre uniquement l'implémentation Git générique et la synchronisation réelle de lecture. Elle ne lève aucun des `DEFER` ci-dessus par elle-même.
Un changement de scope produit, l'ajout d'un host natif ou une contrainte externe peut déclencher un REPLAN ; il ne justifie pas un choix anticipé.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/architecture/002-KNOWLEDGE_ARCHITECTURE.md -->
<!-- version: 7 -->
<!-- version: 8 -->
# Architecture de fondation Knowledge
@@ -23,8 +23,19 @@ knowledge-git-api GitRepository provider-neutral
knowledge-sync-api RepositoryEventSource et signal de réconciliation
```
`alpha.5` complète la fondation avec :
```text
knowledge-web-lib composition Actix/Maud et assets Vite
knowledge-pgr-server launcher PGR
knowledge-howtos-server launcher HOWTOs
knowledge-snippets-server launcher snippets
```
Les deux crates `-api` sont justifiées par des implémentations réellement remplaçables ou multiples. Elles restent sans runtime, sans logging propre et sans dépendance à Actix, Gitea ou PostgreSQL.
Les tests unitaires Rust sont désormais placés hors de `src/` sous `unit_tests/`, conformément à la convention locale Knowledge sélectionnée sur l'option permise par PGR.
Le workspace est une application déployable à train de release unique ; `Cargo.lock` est donc versionné pour conserver la résolution effectivement vérifiée. Les artefacts Cargo sont dirigés hors du dépôt vers `../builds/sasedev-knowledge/target/`.
## Vue de responsabilités
@@ -270,6 +281,18 @@ En particulier, Knowledge ne doit pas hériter mécaniquement :
Les trois packages `knowledge-pgr-server`, `knowledge-howtos-server` et `knowledge-snippets-server` sont des launchers minces : chacun sélectionne `ServerSite` et le nom de sa variable de bind, puis délègue au runtime commun. Ils ne possèdent aucune logique de rendu ou de manifest dupliquée.
## Réconciliation `0.0.1-beta.1`
La fondation matérialisée est cohérente avec les objectifs `0.0.1` :
- trois launchers séparés, sans duplication de runtime ;
- Git encore contractuel et provider-neutral, sans adapter de forge ;
- synchronisation encore contractuelle, sans worker artificiel ;
- frontend de référence indépendant et rendu runtime Maud effectivement relié au manifest Vite ;
- aucune persistance PostgreSQL, auth complète, UI admin complète, forge spécifique ou format final HOWTO/snippet introduit par anticipation.
Les prochaines capacités sont donc reprises par releases séparées. `0.0.2` engage uniquement le chemin Git générique de lecture et la synchronisation réelle ; les autres axes restent différés.
## 10. Administration
L'administration Web est une interface vers les mêmes cas d'usage que l'édition locale Git, pas une deuxième source de vérité.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/001-V0_0_1_FOUNDATION_PLAN.md -->
<!-- version: 13 -->
<!-- version: 14 -->
# Plan 0.0.1 — fondation SaseDev Knowledge
@@ -221,9 +221,31 @@ Le snapshot `alpha.5.fix.1` committé après history contient donc déjà la nor
### beta.1 — réconciliation de fondation
Rejouer les gates pertinentes, réconcilier docs/architecture avec ce qui existe réellement, traiter les décisions devenues nécessaires et effectuer la revue d'horizon.
Réconcilier la fondation réellement matérialisée sans expansion fonctionnelle.
Aucune nouvelle grande fonctionnalité ne doit être introduite en beta par défaut.
La tranche doit :
- confirmer les sept packages Rust et le package Web de référence ;
- corriger les formulations documentaires devenues obsolètes après `alpha.4`/`alpha.5` ;
- confirmer que `knowledge-git-api` et `knowledge-sync-api` restent passifs ;
- confirmer le layout `unit_tests/` comme convention locale ;
- confirmer que PostgreSQL, forge, auth/admin complète, formats finaux et workflow d'écriture restent différés ;
- réaliser la revue d'horizon ;
- préparer un handoff uniquement si une prochaine mission est suffisamment décidée.
La revue d'horizon engage uniquement :
```text
0.0.2 — Git générique et synchronisation de lecture
```
Aucun numéro ultérieur n'est réservé.
La mission et ses non-objectifs sont possédés par `../studies/003-V0_0_1_FOUNDATION_RECONCILIATION.md`.
Le prompt `../../prompts/002-V0_0_2_START_PROMPT.md` est préparé mais reste bloqué jusqu'à publication stable et rapport post-tag `PASS` de `0.0.1`.
Aucun nouveau crate runtime, contrat métier, dépendance, route, schéma SQL ou comportement Git n'entre dans `beta.1`.
### rc.1 — candidate stable
@@ -259,7 +281,13 @@ REPLAN obligatoire si :
## Revue d'horizon
- état : requise en `beta.1` ;
- raison : aucune version après `0.0.1` n'est suffisamment cadrée pour être réservée aujourd'hui ;
- sorties autorisées : engager une prochaine version avec mission réelle, laisser l'horizon ouvert ou différer la suite ;
- interdiction : fabriquer un numéro uniquement pour satisfaire une cadence documentaire.
État à l'entrée de `beta.1` : **instruite par la tranche, en attente de gate opérateur**.
Décision matérialisée :
- engager `0.0.2` pour l'implémentation Git générique et la synchronisation réelle de lecture ;
- ne réserver aucun numéro après `0.0.2` ;
- conserver PostgreSQL, parsing/index, propositions/admin/auth, forge et publication en domaines futurs non numérotés ;
- préparer le prompt `002-V0_0_2_START_PROMPT.md`, exécutable seulement après publication vérifiée de `0.0.1`.
La revue complète et les critères de reprise sont possédés par `../studies/003-V0_0_1_FOUNDATION_RECONCILIATION.md`.

View File

@@ -0,0 +1,177 @@
<!-- file: docs/studies/003-V0_0_1_FOUNDATION_RECONCILIATION.md -->
<!-- version: 1 -->
# Réconciliation de fondation et revue d'horizon 0.0.1
## Objet
Cette étude appartient à `0.0.1-beta.1`.
Elle réconcilie les objectifs de fondation, l'architecture réellement matérialisée après les tranches alpha, les décisions différées et l'horizon de roadmap.
Elle ne crée aucune fonctionnalité runtime.
## Baseline de gouvernance
La fondation reste gouvernée par PGR stable `v0.1.1`, vérifiée au démarrage de `0.0.1`.
Aucun `OVERRIDE` PGR n'a été nécessaire.
Knowledge a sélectionné localement une convention plus stricte pour les tests unitaires Rust : `unit_tests/` séparé de `src/`, avec `tests/` réservé aux tests d'intégration Cargo. Cette sélection reste compatible avec le `MAY` générique de PGR `0.1.1`.
## État matérialisé
### Workspace Rust
Sept packages existent :
```text
knowledge-domain-lib
knowledge-git-api
knowledge-sync-api
knowledge-web-lib
knowledge-pgr-server
knowledge-howtos-server
knowledge-snippets-server
```
Les trois launchers sont des unités de déploiement distinctes.
`knowledge-web-lib` possède la composition Actix/Maud réellement partagée.
`knowledge-git-api` et `knowledge-sync-api` restent des frontières passives, sans implémentation provider/forge/persistence.
### Web
Le package :
```text
Web/knowledge-template-lab/
```
possède npm, lockfile versionné, TypeScript strict, Vite, Sass et Bootstrap.
Le build produit un manifest avec l'entrée stable :
```text
src/main.ts
```
`knowledge-web-lib` consomme réellement ce contrat :
- dev : `KNOWLEDGE_VITE_DEV_ORIGIN` ;
- production : `KNOWLEDGE_VITE_MANIFEST_PATH` ;
- préfixe : `KNOWLEDGE_ASSET_BASE_PATH`.
Les trois launchers reçoivent leur bind via configuration.
### Tests
Les tests unitaires sont hors de `src/` sous `unit_tests/`.
L'audit `audit_rust_test_layout.py` empêche le retour du layout historique.
Les tests d'intégration Cargo futurs restent propriétaires de `tests/`.
## Décisions de fondation confirmées
| Domaine | Décision beta |
|-----------------------------------------------|-----------------------------------------|
| Git autoritaire pour le contenu publié | `CONFIRM` |
| forge optionnelle | `CONFIRM` |
| plusieurs sources Git possibles par famille | `CONFIRM` |
| trois launchers Web séparés | `CONFIRM` |
| logique Web partagée dans `knowledge-web-lib` | `CONFIRM` |
| PostgreSQL logique partagé pour l'état futur | `CONFIRM`, non matérialisé |
| templates statiques comme laboratoire | `CONFIRM` |
| Maud comme rendu runtime actuel | `CONFIRM` |
| manifest Vite comme mapping production | `CONFIRM` |
| surfaces admin protégées localement | `CONFIRM` comme contrat, non implémenté |
| quatrième admin app | `DEFER` |
| Gitea | `DEFER` |
| formats finaux HOWTO/snippet | `DEFER` |
## DEFER conservés
Les choix suivants ne sont pas devenus nécessaires pendant `0.0.1` :
- adapter Gitea ou autre forge ;
- driver/ORM PostgreSQL ;
- migrations PostgreSQL ;
- moteur de recherche externe ;
- fournisseur d'identité externe ;
- modèle final de rôles/capabilities ;
- routes admin/login ;
- quatrième application d'administration ;
- formats finaux HOWTO/snippet ;
- workflow complet de propositions ;
- écriture Git, branches de proposition, rebase/merge/push ;
- déploiement multi-domaines de production.
Les maintenir différés réduit le couplage et ne bloque aucune preuve de fondation.
## Incohérences documentaires corrigées en beta
La réconciliation corrige les formulations historiques devenues obsolètes :
- owners Web encore indiqués comme « tranche Web » alors qu'ils ont été matérialisés en `alpha.4` ;
- launchers décrits comme non matérialisés alors qu'ils existent depuis `alpha.5` ;
- `knowledge-web-lib` encore listée comme crate candidate ;
- API du loader Vite encore décrite comme différée alors qu'elle est maintenant possédée par `knowledge-web-lib`.
Les références aux tranches alpha restent autorisées lorsqu'elles expliquent l'historique réel, mais ne doivent plus contredire l'état courant.
## Revue d'horizon
La fondation possède maintenant assez de contrats pour engager une seule prochaine release sans inventer le reste de la trajectoire.
### Release engagée
```text
0.0.2 — Git générique et synchronisation de lecture
```
Mission :
- matérialiser une implémentation provider-neutral derrière `knowledge-git-api` ;
- gérer des sources Git locales et remotes génériques ;
- maintenir une matérialisation locale contrôlée ;
- rafraîchir/fetcher lorsque nécessaire ;
- résoudre une référence vers une révision autoritaire ;
- exposer un snapshot/worktree de lecture déterministe aux futurs parseurs ;
- faire converger déclenchement explicite et périodique vers un même cas d'usage de synchronisation ;
- détecter le changement de révision sans dépendre d'une forge.
Non-objectifs de `0.0.2` :
- pull/merge requests ou webhooks forge-specific ;
- publication Git en écriture ;
- workflow complet de propositions ;
- PostgreSQL ;
- parsing final HOWTO/snippet ;
- recherche ;
- auth/admin ;
- déploiement production.
Le choix technique d'implémentation Git — processus `git`, `gix`, autre crate ou combinaison justifiée — reste à étudier au démarrage de `0.0.2`. La mission est décidée, pas la bibliothèque.
### Horizon laissé ouvert
Aucun numéro n'est réservé après `0.0.2`.
Les thèmes PostgreSQL, parsing/index, propositions/admin/auth, forge et publication seront ordonnés après retour réel du chemin Git/synchronisation.
## Handoff
`prompts/002-V0_0_2_START_PROMPT.md` prépare la reprise.
Il ne devient exécutable qu'après :
```text
0.0.1 rel.N PASS
commit produit 0.0.1
tag v0.0.1 publié
rapport post-tag Knowledge PASS
```
Si la publication stable révèle un défaut, le handoff `0.0.2` reste bloqué jusqu'à résolution.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/001-VALIDATION_MATRIX.md -->
<!-- version: 13 -->
<!-- version: 14 -->
# Matrice de validation Knowledge
@@ -381,3 +381,27 @@ Le second fix de clôture doit prouver :
- smoke HTTP de `knowledge-pgr-server`, `knowledge-howtos-server` et `knowledge-snippets-server` `PASS` ;
- aucune modification fonctionnelle du runtime Actix/Maud/Vite ;
- `git diff --cached --check` propre.
## Gate de `0.0.1-beta.1`
La réconciliation beta doit prouver :
- `VERSION = 0.0.1-beta.1` et version workspace identique ;
- history `alpha.5.fix.2` `PASS` committé avant application de beta ;
- aucun nouveau package Cargo, package npm ou comportement runtime introduit ;
- workspace Cargo toujours composé exactement de sept packages ;
- `knowledge-web-lib` et les trois launchers documentés comme matérialisés ;
- aucune formulation durable ne décrit encore `knowledge-web-lib` comme candidate ou les launchers comme non matérialisés ;
- owners Web PGR réconciliés avec `alpha.4`/`alpha.5` ;
- `unit_tests/` confirmé comme convention locale et audit associé toujours propre ;
- étude `003-V0_0_1_FOUNDATION_RECONCILIATION.md` présente ;
- roadmap engage uniquement `0.0.2` et ne réserve aucun numéro supplémentaire ;
- prompt `002-V0_0_2_START_PROMPT.md` présent et explicitement bloqué jusqu'au post-tag `0.0.1 PASS` ;
- DEFER PostgreSQL/forge/auth/admin/formats finaux conservés ;
- `CHANGELOG.md` ne contient plus le détail interne du fix rustfmt comme changement utilisateur ;
- audits Markdown headers/tables/links propres ;
- `cargo fmt --check`, audits Rust, `cargo check`, Clippy strict et tests workspace propres ;
- baseline Web `npm ci`, typecheck et build propre ;
- manifest Vite parsable ;
- smoke HTTP des trois launchers propre ;
- `git diff --cached --check` propre.