Épreuve empirique de l'affirmation **AFF-002** : *« Set-OPS s'exploite entièrement à la
main — la doc, `make` et le GUI suffisent, sans aucune IA »* (README:9 ; `AGENTS.md`
principe 10).
> **Pourquoi cette épreuve existe.** En phase 5, AFF-002 est passée 🟡 → ✅ **par
> inspection** : ses écarts bloquants ont été soldés et le parcours relu de bout en bout.
> Aucun opérateur indépendant ne l'a jamais exécuté. Tant que ce test n'a pas eu lieu,
> ✅ signifie « plus aucun défaut connu », pas « démontré ». C'est la seule affirmation
> du registre qu'aucune commande locale ne peut prouver : elle exige un humain qui n'est
> pas l'auteur.
## Ce que l'épreuve mesure
**Mesuré** : ce que le dépôt public transmet, seul, à un sysadmin compétent qui ne
connaît pas Set-OPS — depuis `QUICKSTART.md`, sur sa propre grappe Proxmox, du dépôt nu
jusqu'à un socle déployé.
**Non mesuré** : les modèles assemblés (dépôt privé `Set-OPS-modeles`), les services
hors socle, l'ergonomie du GUI au-delà de son ouverture, la tenue en exploitation dans
la durée.
## Rôles
| Rôle | Qui | Mandat |
|---|---|---|
| **Opérateur** | un sysadmin qui n'est pas l'auteur | Seul acteur. Exécute, décide, se débloque. |
| **Observateur** | l'auteur / mainteneur du dépôt | Journalise. **N'aide pas.** Ne touche à rien. |
Le protocole est **réutilisable** : il ne nomme personne. L'identité de l'opérateur d'une
session donnée est portée par son rapport, sous la réserve de consentement ci-dessous.
## La règle du silence
C'est le cœur du protocole, et la partie difficile.
> **Chaque fois que l'observateur a envie d'intervenir, c'est un défaut de
> documentation. Il le note, il se tait.**
Un opérateur débloqué par l'auteur ne prouve rien — sinon que l'auteur sait. Ce qu'on
mesure est exactement ce qui reste quand l'auteur est absent.
Trois niveaux d'intervention, décidés d'avance :
| Niveau | Déclencheur | Effet |
|---|---|---|
| **N0 — silence** | Défaut. C'est l'état par défaut. | Rien n'est dit. Le chrono du blocage tourne. |
| **N1 — déblocage minimal** | L'opérateur est bloqué **> 30 min** sur une même étape et le demande. | Réponse la plus courte possible, sans contexte ni leçon. **Consigné comme défaut**, gravité proportionnelle au temps perdu. |
| **N2 — arrêt sécurité** | Risque de détruire quelque chose de réel (VM, données, réseau hors périmètre). | Interruption immédiate. **N'est pas un défaut.** |
L'observateur journalise aussi ses **démangeaisons** : chaque fois qu'il a voulu parler
mais que l'opérateur s'est débloqué seul. Même sans N1, c'est un signal de faiblesse
documentaire.
## Interdits pour l'opérateur
- **Aucune IA** — pas de Claude, ChatGPT, Copilot ou équivalent, à aucune étape.
- **Aucune question à l'auteur**, hors N1 formalisé et N2.
- **Aucun accès** aux dépôts privés (`Set-OPS-modeles`, `OPS-*`).
- **Aucune lecture de `docs/audit/`** — le registre décrit les pièges connus. Le lire,
c'est connaître les réponses de l'examen.
**Autorisé** : toute la documentation publique du dépôt, `man`, et le web pour ce qui
n'est pas Set-OPS (Debian, Ansible, Proxmox, nginx…). C'est le comportement réel d'un
sysadmin.
## Ce que l'auteur fournit
**Uniquement l'URL du dépôt public**, et ce protocole.
Rien d'autre. En particulier, l'auteur ne prépare **ni** le jeton API Proxmox, **ni** les
clés SSH, **ni** le mot de passe Vault, **ni** le moindre fichier d'instance : ce sont
les prérequis de `QUICKSTART.md` §0, et savoir les produire fait partie de l'épreuve.
## Périmètre matériel et sécurité
L'opérateur part sur **sa propre grappe Proxmox**.
- [ ] Confirmer **avant de commencer** que le périmètre n'est pas de la production
Technolibre : nœud dédié, ou à défaut plage VMID + stockage réservés à l'épreuve.
- [ ] Noter la plage VMID retenue : `____________`
- [ ]`make nettoyer-modele CONFIRMER=true` est **destructif** — il s'applique à la VM
modèle, jamais à autre chose. Vérifier la cible avant.
- [ ] Prévoir la remise en état : suppression des VM créées en fin d'épreuve.
## Critères de réussite — fixés d'avance
Binaires, vérifiables, définis **avant** le début. On ne les renégocie pas en cours.
| # | Critère | Vérification |
|---|---|---|
| **R1** | Instance créée depuis `socle`, plan renseigné à ses valeurs | `make inventaire-verifier` → rc=0 |
| **R2** | Golden template Debian 13 construit et converti en template Proxmox | `make verifier-modele` OK ; template `modele-debian13` visible dans Proxmox |
| **R3** | Au moins une VM créée depuis le plan | `make creer-vm HOTE=…` OK ; VM jointe par Ansible (`ansible -m ping`) |
| **R4** | Cet hôte déployé selon ses groupes | `make deployer HOTE=…` → rc=0 |
| **R5** | Validation globale du dépôt passée par l'opérateur | `make verifier` → rc=0 |
| **R6** | Socle complet déployé (tous les hôtes du modèle `socle` actifs et déployés) | `make deployer` sur chaque hôte → rc=0 |