198 lines
8.6 KiB
Markdown
198 lines
8.6 KiB
Markdown
|
|
# 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 @ <sha>
|
||
|
|
- **Matériel** : grappe Proxmox de l'opérateur, <n> nœud(s), plage VMID <…>
|
||
|
|
- **Début / fin** : <hh:mm> → <hh:mm> (<durée>)
|
||
|
|
- **Consentement de nommage** : obtenu / en attente / anonymat demandé
|
||
|
|
|
||
|
|
## Verdict
|
||
|
|
|
||
|
|
<Réussite démontrée | Réussite avec défauts | Échec>
|
||
|
|
|
||
|
|
| 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** : <n> · **Démangeaisons N0** : <n> · **N2** : <n>
|
||
|
|
|
||
|
|
## 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
|
||
|
|
|
||
|
|
<modèles assemblés, services hors socle, GUI, tenue dans la durée…>
|
||
|
|
|
||
|
|
## Suites
|
||
|
|
|
||
|
|
- [ ] Corriger D<n> …
|
||
|
|
- [ ] Mettre à jour AFF-002 dans `affirmations.md` (→ ✅ confirmée / 🟡 / ❌)
|
||
|
|
- [ ] Entrée `CHANGELOG.md`
|
||
|
|
- [ ] Re-test des étapes touchées par les correctifs
|
||
|
|
```
|