+17
−1
+58
−0
Loading
Huit évolutions issues d'une analyse comparative avec cybercrise.eu. Le cahier
des charges qui les décrit est un document de travail non versionné (exclu via
`.git/info/exclude`) : rien n'est arbitré, tout est amendable.
Le découpage en un seul commit est assumé : `styles.css`, `i18n.tsx`, le client
d'API et les types partagés sont touchés par TOUTES ces évolutions. Un commit par
fonctionnalité ne compilerait pas.
PHASES DE CRISE (EV-1). Un exercice porte des phases ordonnées. Deux bornes par
phase, et c'est le point de conception : `startsAtSec` est le PLAN, `startedAtSec`
le RÉEL, renseigné quand l'animation force le passage. La phase courante se lit
sur `startedAtSec ?? startsAtSec` — l'animation avance le déroulé sans réécrire le
chronogramme, et l'écart se relit au RETEX. Forcer une phase n'avance pas les
suivantes. Le rattachement d'un inject raisonne sur le plan, jamais sur le réel :
il décrit l'intention du concepteur.
FICHES RÉFLEXES (EV-4). Mission, risques et réflexes attendus par rôle. Deux
volets INDÉPENDANTS, tous deux fermés par défaut : un briefing à l'ouverture de
l'espace, et un onglet consultable pendant la crise. Ils ne servent pas le même
public — l'un rappelle son rôle à qui ne joue pas le sien, l'autre convient à un
public débutant et donnerait les réponses à un public confirmé.
GRILLE D'OBSERVATION (EV-3). Renseignée PENDANT l'exercice, navigable par phase,
échelle courte à trois niveaux. Distincte du questionnaire de RETEX, et il fallait
la distinguer : celui-là est adressé aux joueurs après et restitué anonymement,
celle-ci est remplie par l'observation et restituée AVEC ses auteurs — une
observation vaut par qui l'a faite. Une ligne par observateur et par critère :
deux observateurs se complètent au lieu de s'écraser.
POINTS D'ATTENTION DU RAPPORT (EV-6). Cinq constats déduits des données, chacun
portant ses preuves écrites en clair — un lien ne survit pas au PDF remis. Les
pistes d'action viennent d'un référentiel écrit à la main : un rapport remis à une
direction ne peut pas contenir une phrase dont personne ne répond. Aucun constat
ne nomme de personne physique, par construction : les preuves citent le
personnage, jamais le nom affiché du joueur. Chaque seuil a son cas de silence
testé, et les stimuli non lus ont un délai de grâce — sinon tout exercice
finirait sur un faux constat.
MODE AUTONOME (EV-5). Jouer sans animateur : cadence de diffusion régulière,
clôture automatique, et c'est LE JOUEUR qui lance depuis son espace. Le
démarrage automatique au premier accès a été retiré : il faisait tourner
l'horloge avant que le joueur ait lu sa mise en situation, et son annonce partait
avant que la socket ait rejoint la salle — d'où un espace bloqué en écriture sur
un exercice pourtant lancé. La cadence ne réécrit pas le chronogramme conçu.
Les presets de cadence sont livrés SANS attribution. La valeur de 2–3 minutes
souvent citée comme recommandation ANSSI n'a pas pu être confirmée à la source ;
le défaut reste le chronogramme.
BAC À SABLE PUBLIC (EV-7). Une route publique crée une organisation ÉPHÉMÈRE,
isolée par le même mécanisme que les organisations clientes, purgée à échéance
indépendamment du visiteur. DÉSACTIVÉ par défaut, pilotable depuis la console
d'instance, chaque bascule tracée. Fermé, la route répond 404 et non 403. Liste
blanche de kits dans le code, jamais un drapeau en base : la route ne peut pas
désigner un kit privé, même par erreur de requête.
La revue de sécurité dédiée RESTE DUE. Elle n'est pas remplacée par des tests qui
passent, et l'activation en production appartient à l'équipe.
KIT VITRINE (EV-10). Contenu original de ce dépôt : PME de 70 salariés,
rançongiciel puis fuite de données, 32 stimuli sur les cinq canaux, 3 phases, 6
documents. Le scénario est écrit pour PRODUIRE des constats — sauvegardes sur le
même réseau, dernier test de restauration il y a quatorze mois, annuaire de crise
stocké sur le serveur chiffré.
PWA ET THÈME (EV-9, EV-11). Manifeste installable, icônes à la marque, résilience
à une coupure brève : au retour de connexion l'écran recharge depuis l'API, seule
source de vérité. Le bandeau distingue une coupure réseau d'une fermeture par le
serveur — Socket.IO ne retente jamais dans le second cas, annoncer une reprise
automatique serait faux. Le thème suit la préférence système au premier accès,
posé par un script en ligne avant le premier rendu : sans attribut `data-theme`,
la feuille de style ne définissait aucune variable et la page clignotait.
CORRECTIFS TROUVÉS EN CLIQUANT. La coque joueur s'allongeait à chaque message et
les barres sortaient de l'écran. Le bac à sable installait le kit sans valeurs de
mise en situation, donc affichait `{{partenaire}}` à un visiteur. Les contenus des
catalogues étaient en ASCII dans un volet de lecture. La variable `--danger` était
utilisée à quatre endroits sans jamais être définie — bouton de suppression,
pastille d'état et bordure d'organisation suspendue rendaient une couleur héritée.
`/play/start` était refusé par le garde d'écriture : l'action qui fait commencer
l'exercice, bloquée au motif qu'il n'a pas commencé.
TESTS. 180 tests unitaires (20 suites), dont 51 nouveaux sur les fonctions pures :
phases, cadence, agrégat d'observation, détection des constats. Dix suites
d'intégration ont servi à la mise au point ; elles vivent hors du dépôt faute de
harnais de test sur base, ce qui reste à décider.
NON FAIT. L'évaluation des décisions et le score attendent deux arbitrages de
doctrine : l'évaluation porte-t-elle sur les rôles ou sur les personnes, et quel
statut donner à un score remis à une direction.
Co-Authored-By: Claude (RCA)