diff --git a/AGENTS.md b/AGENTS.md index a0db066..af5eb84 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -78,6 +78,7 @@ Tout changement significatif doit être consigné dans `CHANGELOG.md`. 7. Préférer les correctifs ciblés aux régénérations massives. 8. Ne jamais supposer qu’un rôle est complet sans l’avoir inspecté. 9. Ne jamais déclarer un playbook prêt si la validation minimale échoue. +10. **Impératif : Set-OPS doit rester pleinement exploitable par un humain SANS IA.** La doc, `make` et le GUI sont l’interface primaire et complète. Ne jamais introduire de fonctionnalité qui *exige* une IA pour s’en servir. L’IA n’assiste que le mainteneur pour faire évoluer l’outil — jamais l’utilisateur final. (Le bon étalon : un sysadmin humain réussit depuis la doc. `AGENTS.md`/`CLAUDE.md` ne font pas partie de l’outil livré.) --- diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a3a6db..0b8b4ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ - **Découpage moteur/instance — Phase 1 : délier les rôles du domaine Chezlepro.** Introduction d'une variable d'identité d'instance **`domaine_interne`** (dans `inventories/*/group_vars/all.yml`). Les 13 rôles qui codaient `chezlepro.internal` en dur (zones DNS, FQDN, relais SMTP, AC, etc.) utilisent désormais `{{ domaine_interne }}` ; le `base_dn` LDAP et le domaine court sont **dérivés** (`dc={{ domaine_interne.split('.') | join(',dc=') }}` → `dc=chezlepro,dc=internal`, ou `dc=acme,dc=local` pour un autre loup). Comportement **identique** pour Chezlepro (qui pose `domaine_interne: chezlepro.internal`), mais le moteur devient générique — première brique pour partager l'outil à la meute (`docs/positionnement.md`). Ajout d'`exemples/instance.exemple.yml`. Non destructif : diff de génération vide, `ansible-lint` 0 échec. *(La marque `chezlepro` sur les noms de fichiers gérés — `99-chezlepro.conf`, `chezlepro_filter` — sera neutralisée en Phase 1b ; sortie du plan en Phase 2 ; deux dépôts en Phase 3.)* ### Ajouté +- **Principe gravé : Set-OPS exploitable par un humain SANS IA.** Ajouté comme principe #10 d'`AGENTS.md` (règle pour le mainteneur : ne jamais introduire de fonctionnalité qui exige une IA) **et** en face humaine dans le `README` (survit à la livraison sans les fichiers IA). La doc / `make` / GUI sont l'interface primaire et complète ; l'IA n'assiste que le mainteneur, jamais l'utilisateur. `AGENTS.md`/`CLAUDE.md` ne font pas partie de l'outil livré. (Souveraineté jusqu'au bout : pas de dépendance aux géants remplacée par une dépendance à une IA.) - **Accueil d'un nouvel hébergeur (parcours à froid).** Nouveau **`QUICKSTART.md`** : le chemin linéaire « de zéro à ton écosystème déployé sur ta grappe Proxmox » (cloner le moteur → choisir un modèle → créer son instance + symlink → renseigner → `make config` + secrets → **construire le golden template une fois** → `instancier` → `cloner-vm` → activer + `deployer`), honnête sur les prérequis et le seam création-de-VM. `README.md` réorienté : « moteur générique qu'un hébergeur peut utiliser » (plus « infra de Chezlepro »), avec pointeur QUICKSTART. **Garde-fou `_instance-requise`** dans le Makefile : si l'instance manque, message utile (liste des modèles + QUICKSTART) au lieu d'un faux « valide » silencieux, sur `instancier`/`instancier-appliquer`/`inventaire-ui`/`inventaire-verifier`/`deployer`. `make aide` route vers QUICKSTART. - **Catalogue de modèles d'écosystèmes prêts à déployer (`exemples/modeles/`).** Un hébergeur copie le modèle qui colle à son offre, le renseigne à ses couleurs (ou celles de son client) et instancie — plus besoin de démonstrateur. Structure **socle + modules + presets** : un socle souverain (DNS interne, AC/PKI, edge TLS, relais courriel) + des modules (web, identité, forge, observabilité, collaboration). Modèles livrés et validés (chacun génère un écosystème distinct, **zéro fuite Chezlepro**, IPs `10.10.x`) : **`socle`** (4 VM), **`presence-web`** (7), **`forge`** (6), **`identite`** (LDAP+Keycloak, 6), **`observabilite`** (Prometheus/Loki/Grafana+Icinga, 7), **`integral`** (11). **`collaboration`** (Nextcloud/Collabora) reste à construire (rôles non implémentés). `.ansible-lint` exclut `exemples/`. Remplace l'instance d'essai jetable. - **`docs/positionnement.md` — décision de positionnement vs l'existant.** Acte que le cœur de Set-OPS (plan déclaratif → génération d'inventaire) recoupe **NetBox/Nautobot** (+ `nb_inventory`), le GUI d'exécution recoupe **AWX/Semaphore**, le « la définition instancie la flotte » recoupe **NixOS+Colmena / Terraform**, et le modèle application-pivot recoupe **Backstage**. Décision en vigueur : on **garde** le plan de contrôle maison (souverain, bien dimensionné pour ~13 VM) mais on **gèle son périmètre** ; seuils explicites d'adoption de l'outil mûr (RBAC/audit → AWX ; IPAM/source de vérité partagée → NetBox). Règle ancrée dans `AGENTS.md`. diff --git a/README.md b/README.md index f98d336..b66ef7e 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ Le dépôt est le **moteur** (générique, partageable). Chaque déploiement ré > 👉 **Tu débarques avec une grappe Proxmox et tu veux monter ton écosystème ? Commence par [`QUICKSTART.md`](QUICKSTART.md).** +**Souveraineté jusqu'au bout : Set-OPS s'exploite entièrement à la main** — la doc, `make` et le GUI suffisent, **sans aucune IA**. L'outil libère de la dépendance aux géants ; il ne la remplace pas par une dépendance à une IA. + --- ## Mission (la vision derrière l'outil)