Files
sasedev-knowledge/docs/architecture/001-PROJECT_PROFILE.md
2026-09-27 21:04:10 +02:00

11 KiB

Profil du projet Knowledge

Baseline autoritaire

Le cadrage initial repose sur :

PGR stable tag      v0.1.1
PGR archive SHA-256 caaf8f456f7f8520172ea7705fd0cf5c5bf0e942dc4a773410bcbe7fe4ce243a
PGR publish report  pgr-0.1.1-publish.001-report.md = PASS
Knowledge prompt     prompts/001-V0_0_1_START_PROMPT.md

L'archive PGR observée possède VERSION = 0.1.1, 292 entrées ZIP, 256 fichiers, 36 répertoires, une racine unique pgr/, aucun symlink et aucun .git. Les 48 tests Python et les audits Markdown headers/tables/links de la stable ont été rejoués avant préparation de cette tranche et sont propres.

Cette constatation de prévalidation ne remplace aucune gate opérateur Knowledge.

Nature de l'instanciation

Knowledge est un nouveau projet. La procédure normative d'adoption d'un dépôt existant 230-ADOPTION.md n'est donc pas activée comme owner de migration.

Le prompt de démarrage exige néanmoins une matrice ADOPT / KEEP-LOCAL / OVERRIDE / DEFER. Les mêmes libellés sont utilisés ci-dessous pour rendre explicite la relation entre PGR et les décisions fondatrices Knowledge :

  • ADOPT — contrat PGR applicable retenu ;
  • KEEP-LOCAL — choix propre à Knowledge, non possédé par un owner PGR plus spécifique et compatible avec les contrats adoptés ;
  • OVERRIDE — règle PGR applicable remplacée localement ;
  • DEFER — choix volontairement reporté avec condition de reprise.

Owners et skeletons applicables

Élément Décision Matérialisation Motif
200-GOVERNANCE ADOPT alpha.1 lifecycle/version locale
210-WORKFLOW ADOPT alpha.1 plan/delta/history/handoff
220-SKELETONS ADOPT pour l'instanciation alpha.1 composition explicite sans copie mécanique
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
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

Les profils Java/Maven/Gradle, Android et autres technologies absentes ne sont pas sélectionnés.

Matrice des décisions importantes

Décision Classification Contrat retenu / condition de reprise
Dépôt applicatif KEEP-LOCAL sasedev-knowledge ; explicite le produit et évite un nom générique knowledge au niveau forge
Nom court / préfixe crates KEEP-LOCAL knowledge / knowledge-
Dépôt normatif KEEP-LOCAL dépôt existant pgr, jamais fusionné dans le dépôt applicatif
Dépôt HOWTO KEEP-LOCAL dépôt séparé howtos
Dépôt snippets KEEP-LOCAL dépôt séparé snippets
Git comme backend du contenu KEEP-LOCAL invariant d'architecture Knowledge
Forge KEEP-LOCAL capacité optionnelle derrière adapter ; aucune API de forge dans le domaine
Gitea DEFER premier adapter candidat ; reprendre lorsque des capacités forge-only sont implémentées
Synchronisation sans webhook KEEP-LOCAL explicite/polling constituent le socle ; hooks/webhooks sont des accélérateurs
PostgreSQL KEEP-LOCAL état applicatif et projections ; jamais vérité du contenu Git publié
Rust stable / édition 2024 ADOPT profil Rust/Cargo PGR
Workspace Cargo ADOPT skeleton Rust/Cargo ; matérialisation alpha.2
Cargo.lock DEFER décider lors de la matérialisation selon le rôle application/workspace et 510
Actix Web KEEP-LOCAL framework HTTP initial ; PGR ne possède pas de profil Actix dédié
Maud KEEP-LOCAL rendu SSR initial lorsque pertinent
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
Vite KEEP-LOCAL + owner 550 adopté choix local cohérent avec la recommandation PGR ; configuration à décider dans la tranche Web
Sass KEEP-LOCAL + owner 560 adopté choix local ; compilation intégrée à la chaîne Web si elle apporte la valeur attendue
Bootstrap KEEP-LOCAL framework CSS local, jamais règle PGR/Tauri/Web universelle
Racine frontend DEFER décider dans la tranche Web ; frontend/ reste candidat mais non figé par PGR
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é
Fournisseur d'auth externe DEFER reprendre lorsque le workflow utilisateur l'exige
Topologie de déploiement DEFER monolithe modulaire par défaut ; séparer seulement sur contrainte observée
Formats finaux HOWTO/snippet DEFER définir avec corpus réel ; ne pas figer un schéma sans contenu représentatif
Noms définitifs de toutes les crates DEFER seules les responsabilités et le préfixe sont cadrés ; créer une crate uniquement avec ownership réel

Aucun OVERRIDE n'est requis à ce stade.

Nomenclature de crates candidate

Le projet n'instancie pas toutes les crates suivantes en alpha.1. Elles décrivent des boundaries candidats et ne deviennent des packages que lorsque leur responsabilité est matérialisée :

knowledge-domain-lib          contrats et types métier stables
knowledge-app-lib             orchestration des use cases, si une séparation dédiée devient utile
knowledge-git-lib             implémentation Git générique
knowledge-store-postgres-lib  état applicatif PostgreSQL
knowledge-forge-gitea-lib     adapter Gitea optionnel
knowledge-server              composition HTTP/SSR et point d'entrée exécutable

Règles de création :

  • ne pas créer une crate uniquement pour refléter un diagramme ;
  • ne pas utiliser -api sans frontière de contrat indépendante réellement nécessaire ;
  • garder le domaine indépendant d'Actix, Gitea et PostgreSQL ;
  • garder les adapters dépendants des contrats, jamais l'inverse.

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.