# Protocole — épreuve de l'opérateur indépendant É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 | **Verdict :** - **Réussite démontrée** — R1→R6 atteints, **zéro N1**. - **Réussite avec défauts** — R1→R5 atteints, avec N1 consignés. ← *résultat attendu* - **Échec** — blocage qu'aucune documentation ni l'opérateur seul ne résout. > Un test où l'opérateur ne bloque jamais est un test mal conçu ou mal observé. Les > défauts sont le produit livrable, pas l'accident. ## Cadence Deux séances d'environ 4 h, ou une journée. **Plafond horaire fixé d'avance** pour que l'épreuve ne s'étire pas : au-delà, on arrête et on consigne l'état atteint — un plafond dépassé est lui-même un résultat. ## Conséquence sur le registre Le registre doit pouvoir **perdre**. C'est la condition pour qu'il vaille quelque chose. | Verdict | Effet sur AFF-002 | |---|---| | Réussite démontrée | ✅ **confirmée empiriquement** — la mention « par inspection » tombe | | Réussite avec défauts | **✅ → 🟡** jusqu'à correction des défauts consignés, puis re-test des étapes touchées | | Échec | **✅ → ❌**, avec le blocage nommé comme écart | Le rapport rejoint `docs/audit/` et devient la preuve rejouable d'AFF-002 : *rejouer* signifie ici refaire passer l'épreuve à un nouvel opérateur indépendant. ## Nommage et consentement « Volontaire pour participer » ne vaut pas « d'accord pour être nommé ». **Avant toute publication** du rapport, valider avec l'opérateur **et** avec Technolibre ce qui peut être cité : nom, organisation, ou anonymat (« un sysadmin indépendant »). Par défaut, et tant que la réponse n'est pas obtenue : anonyme. --- # Annexe — gabarit de rapport À copier vers `docs/audit/operateur-independant-AAAA-MM-JJ.md` et remplir pendant l'épreuve, pas après. ```markdown # Épreuve de l'opérateur indépendant — AAAA-MM-JJ - **Opérateur** : (nom ou « sysadmin indépendant » — cf. consentement) - **Observateur** : Daniel Allaire - **Dépôt testé** : Set-OPS-public @ - **Matériel** : grappe Proxmox de l'opérateur, nœud(s), plage VMID <…> - **Début / fin** : () - **Consentement de nommage** : obtenu / en attente / anonymat demandé ## Verdict | Critère | Atteint | Note | |---|---|---| | R1 inventaire-verifier | ☐ | | | R2 golden template | ☐ | | | R3 VM créée | ☐ | | | R4 hôte déployé | ☐ | | | R5 make verifier | ☐ | | | R6 socle complet | ☐ | | **Interventions N1** : · **Démangeaisons N0** : · **N2** : ## Grille d'observation | # | Heure | Étape QUICKSTART | Attendu par l'opérateur | Survenu | Débloqué seul ? | Blocage | Fichier à corriger | |---|---|---|---|---|---|---|---| | 1 | | §_ | | | O / N / **N1** | __ min | | | 2 | | | | | | | | ## Défauts consignés | ID | Gravité | Étape | Description | Correctif proposé | Fichier | |---|---|---|---|---|---| | D1 | bloquant / majeur / mineur | | | | | Gravité : **bloquant** = N1 nécessaire ou critère non atteint · **majeur** = > 15 min perdues, débloqué seul · **mineur** = friction, hésitation, formulation trompeuse. ## Verbatim de l'opérateur > (citations brutes — les hésitations à voix haute valent de l'or ; ne pas les lisser) ## Ce que l'épreuve n'a pas couvert ## Suites - [ ] Corriger D … - [ ] Mettre à jour AFF-002 dans `affirmations.md` (→ ✅ confirmée / 🟡 / ❌) - [ ] Entrée `CHANGELOG.md` - [ ] Re-test des étapes touchées par les correctifs ```