@mostajs/kind-catalog 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +120 -0
- package/docs/DEVTEST-PLAN.kind-catalog.json +255 -0
- package/docs/EPREUVE-01-RESTOTRAX-06092026.md +177 -0
- package/docs/EPREUVE-02-LABTRAX-06092026.md +152 -0
- package/docs/PLAN-DEV-KIND-CATALOG.md +52 -1
- package/docs/PROPOSITION-REGLE-RELIRE-LE-PLAN.md +210 -0
- package/kinds/chiffres.kind.mjs +8 -1
- package/kinds/decision.kind.mjs +1 -0
- package/kinds/integration.kind.mjs +1 -0
- package/kinds/traces.kind.mjs +13 -0
- package/llms.txt +11 -0
- package/package.json +1 -1
- package/src/diagnostic.js +209 -0
- package/src/index.js +1 -0
- package/src/kind.js +12 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Épreuve rétrospective n° 2 — LabTrax
|
|
2
|
+
|
|
3
|
+
**Auteur** : Dr Hamid MADANI <drmdh@msn.com>
|
|
4
|
+
**Date** : 06/09/2026 · **Objet** : `@mostajs/kind-catalog` 0.4.0 · **Statut** : essai, la règle n'est **pas** adoptée
|
|
5
|
+
|
|
6
|
+
> Deuxième passage de la moulinette prévue au §5.bis de
|
|
7
|
+
> [`PROPOSITION-REGLE-RELIRE-LE-PLAN.md`](PROPOSITION-REGLE-RELIRE-LE-PLAN.md). L'essai n° 1
|
|
8
|
+
> ([RestoTrax](EPREUVE-01-RESTOTRAX-06092026.md)) a buté sur un défaut d'objet : le plan jugé était
|
|
9
|
+
> déjà l'état final, il n'y avait donc **aucun écart** à mesurer. Celui-ci en a un.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. L'objet — et pourquoi il vaut mieux que le premier
|
|
14
|
+
|
|
15
|
+
| | |
|
|
16
|
+
|---|---|
|
|
17
|
+
| plan initial | `docs/DEVTEST-PLAN.labtrax.json`, commit `4571c7a` du **27/07/2026** — « parcours réglementaire, arrêté 1275 » |
|
|
18
|
+
| plan atteint | même fichier aujourd'hui, après six semaines de travail |
|
|
19
|
+
| **écart** | **16 exigences → 49** · 24 essais → 85 · 16 réalisations → 59 |
|
|
20
|
+
|
|
21
|
+
**33 exigences ont été ajoutées après le plan initial.** C'est la seule chose qui rende l'épreuve
|
|
22
|
+
possible : ces 33 exigences sont ce que le projet a **découvert en le faisant**, et donc exactement
|
|
23
|
+
ce qu'une relecture du plan initial aurait eu la chance — ou non — de signaler d'avance.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 2. La double borne — 11 fiches sur 21 sont interdites
|
|
28
|
+
|
|
29
|
+
Corpus complet : 21 fiches. **Retenues : 10. Écartées : 11.**
|
|
30
|
+
|
|
31
|
+
| motif d'exclusion | fiches |
|
|
32
|
+
|---|---|
|
|
33
|
+
| **origine dans le projet jugé** (9) | `PERIMETRE`, `CHIFFRE-SANS-SOURCE`, `REFUS-LISIBLE`, `DONNEE-INSUFFISANTE`, `FORMULAIRE-ROUTE`, `CONSIGNER-APRES-SUCCES`, `DEPENDANCE-DISTANTE`, `SUPPRESSION-DATEE` |
|
|
34
|
+
| **postérieure au plan** (3) | `ACQUIS` (01/09), `MAJ-PARTIELLE` (01/09), `ECRITURE-HORS-APPLICATION` (02/09) |
|
|
35
|
+
|
|
36
|
+
Sur les 10 retenues, **6 sont métier** — élevage, apiculture, BTP, alimentaire, agronomie,
|
|
37
|
+
électronique — et n'ont aucun rapport avec une application universitaire. **L'outil disposait donc
|
|
38
|
+
de quatre fiches transverses**, portant 18 erreurs connues, et de rien d'autre.
|
|
39
|
+
|
|
40
|
+
> ### ⚠️ Le fait le plus instructif de cet essai est dans le tableau ci-dessus
|
|
41
|
+
>
|
|
42
|
+
> Les fiches qui auraient **touché** sont précisément celles que la borne interdit. Six des neuf
|
|
43
|
+
> fiches nées de LabTrax retombent, mot pour mot, sur des exigences que LabTrax a dû écrire :
|
|
44
|
+
>
|
|
45
|
+
> | fiche écartée (née de LabTrax) | exigence ajoutée par LabTrax |
|
|
46
|
+
> |---|---|
|
|
47
|
+
> | `PERIMETRE-01` — une permission ouvre une capacité, jamais un périmètre | **SPEC-APP-31** — faire dériver la lecture d'une séance du **mandat**, comme le vote |
|
|
48
|
+
> | `REFUS-LISIBLE-01` — un refus nomme sa cause et offre une issue | **SPEC-APP-35** — dire la **vraie raison** d'un refus, et offrir une issue |
|
|
49
|
+
> | `FORMULAIRE-ROUTE-01` — le formulaire rendu et sa route s'accordent | **SPEC-APP-33** — vérifier l'IHM **telle qu'elle est servie** |
|
|
50
|
+
> | `CONSIGNER-APRES-SUCCES-01` — on ne date qu'après le succès | **SPEC-APP-38** — ne dater qu'**après** l'envoi ; `notifyDecision` n'enregistrait qu'une date |
|
|
51
|
+
> | `SUPPRESSION-DATEE-01` — retirer, c'est dater | **SPEC-APP-26** — pierre tombale **datée, attribuée et motivée** |
|
|
52
|
+
> | `DONNEE-INSUFFISANTE-01` — un calcul insuffisant refuse et chiffre son manque | **SPEC-APP-41** — désigner ce qui bloque **réellement** *(rapprochement plausible, non exact)* |
|
|
53
|
+
>
|
|
54
|
+
> Ce n'est **pas** une mesure de l'outil : ces fiches ont été écrites **depuis** ces exigences,
|
|
55
|
+
> l'ordre causal est inversé. C'est la démonstration que la borne fait son travail — sans elle,
|
|
56
|
+
> j'aurais publié un taux de réussite de 18 % au lieu de 9 %, et il aurait été faux.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 3. Ce que l'outil aurait dit le 27/07/2026
|
|
61
|
+
|
|
62
|
+
**11 erreurs connues sur 4 règles.** Classement selon les quatre classes du protocole — il n'y a
|
|
63
|
+
**pas de classe « faux »** : l'écart entre un avertissement et ce qu'a fait le projet n'est ni bon
|
|
64
|
+
ni mauvais, le besoin du commanditaire est le seul arbitre.
|
|
65
|
+
|
|
66
|
+
| # | avertissement | classe | ce qu'a fait LabTrax |
|
|
67
|
+
|---|---|---|---|
|
|
68
|
+
| 1 | *l'aperçu écrit déjà quelque chose* | **divergent** | **SPEC-APP-25** exige le décompte et le quorum **visibles avant** l'action — même territoire, autre forme : l'**inertie** de l'aperçu n'est écrite nulle part (`aperçu` : 0 occurrence dans le plan final) |
|
|
69
|
+
| 2 | *la garde est posée dans la VUE* | **anticipé** | **SPEC-APP-31** fait dériver la garde du mandat ; **SPEC-APP-32** fait déclarer le catalogue par les modules. Le plan initial ne posait la garde sur la séance que pour le pointage (SPEC-APP-07) |
|
|
70
|
+
| 3 | *seuls les succès sont audités* | **divergent** | 50 occurrences de « refus » dans le plan final, **toutes** du côté de l'écran (SPEC-APP-24, SPEC-APP-35). Aucune ne **compte** les refus. Pour une université, le refus lisible primait le refus dénombrable — et l'avertissement reste ouvert |
|
|
71
|
+
| 4 | *l'action exécutée n'est pas celle prévisualisée* | **sans objet** | LabTrax n'a jamais construit de couple aperçu/appliquer |
|
|
72
|
+
| 5 | *l'essai tourne en mémoire, la production sur schéma* | **anticipé** | **SPEC-APP-33**, écrite après le correctif `da228ce` du 27/07 : « *un test qui fabrique lui-même sa requête ne teste pas l'écran — il teste l'idée qu'on s'en fait* ». L'IHM postait `identifier`, la route lisait `email` |
|
|
73
|
+
| 6 | *le champ est ajouté au code sans l'être au schéma* | **anticipé** | **SPEC-APP-27** — le numéro d'inscription saisi à la candidature **doit être conservé** dans un champ déclaré (`User.externalRef`) |
|
|
74
|
+
| 7 | *la migration n'ALTÈRE pas une table existante* | **sans objet** | aucune migration au plan (`migration` : 0 occurrence) |
|
|
75
|
+
| 8 | *on fait confiance au texte produit* | **sans objet** | aucune sortie générative — le « Service IA » de la commission est un service **humain** |
|
|
76
|
+
| 9 | *clé valide sans crédit confondue avec clé invalide* | **divergent** | **SPEC-APP-38** répond à la même racine — le résultat du fournisseur doit gouverner ce qu'on écrit — par « dater après l'envoi » et « pouvoir renvoyer ». Le **classement** des échecs n'a jamais été écrit |
|
|
77
|
+
| 10 | *un quota temporaire traité comme une panne définitive* | **sans objet** | `quota` : 0 occurrence |
|
|
78
|
+
| 11 | *l'ordre de repli est figé dans la configuration* | **sans objet** | `repli` : 0 occurrence |
|
|
79
|
+
|
|
80
|
+
### Le couple
|
|
81
|
+
|
|
82
|
+
| mesure | valeur | lecture |
|
|
83
|
+
|---|---|---|
|
|
84
|
+
| **rappel utile** | **3 / 33** = **9 %** | trois des 33 exigences ajoutées étaient signalées d'avance |
|
|
85
|
+
| **coût de lecture** | **11 lignes, dont 5 sans objet** | moins d'une minute de lecture, 45 % de bruit |
|
|
86
|
+
| divergents | 3 | à consigner : ils désignent trois besoins réels que LabTrax a servis autrement |
|
|
87
|
+
| contredits | **0** | aucune fiche n'a été prise en défaut |
|
|
88
|
+
|
|
89
|
+
**9 % est un chiffre faible, et il faut le dire tel quel.** Sa cause est mesurable et n'est pas
|
|
90
|
+
dans le rapprochement : le corpus admissible au 27/07/2026 comptait **quatre** fiches transverses.
|
|
91
|
+
Un rappel de 3 sur 33 avec quatre fiches, c'est **0,75 exigence gagnée par fiche disponible** —
|
|
92
|
+
c'est ce ratio-là, et non le pourcentage, qui se projette.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## 4. La mesure du CORPUS — à ne pas confondre avec la précédente
|
|
97
|
+
|
|
98
|
+
Le même plan initial, passé au corpus d'**aujourd'hui** (21 fiches, borne levée) :
|
|
99
|
+
**42 erreurs sur 14 règles** au lieu de 11 sur 4.
|
|
100
|
+
|
|
101
|
+
Ce chiffre ne mesure **pas** l'outil au 27/07 — il est circulaire pour les neuf fiches nées de
|
|
102
|
+
LabTrax. Il mesure deux autres choses, et deux seulement :
|
|
103
|
+
|
|
104
|
+
1. **la visée** — les fiches nées de LabTrax retombent sur les exigences qui les ont engendrées, et
|
|
105
|
+
nulle part ailleurs. C'est une vérification de justesse du rapprochement, pas de prédiction ;
|
|
106
|
+
2. **une prédiction, falsifiable** — un projet frère qui démarrerait aujourd'hui recevrait 14 règles
|
|
107
|
+
et 42 erreurs, dont sept correspondent à des exigences que LabTrax a payées de six semaines de
|
|
108
|
+
découverte. **Cette prédiction ne vaut rien tant qu'elle n'a pas été vérifiée sur un projet qui
|
|
109
|
+
n'a pas nourri le catalogue.** C'est l'essai n° 3, et il ne peut pas être fait sur l'existant.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 5. Ce que l'essai a corrigé dans l'outil
|
|
114
|
+
|
|
115
|
+
Le faux positif relevé par l'essai n° 1 — `SUPPRESSION-DATEE-01` signalée 5 fois sur 5 alors que
|
|
116
|
+
`PIL-14`/`TPIL-14` la portaient explicitement — a été poursuivi jusqu'au bout. Trois causes
|
|
117
|
+
distinctes, trouvées dans cet ordre :
|
|
118
|
+
|
|
119
|
+
| correctif | cause | RestoTrax | la règle |
|
|
120
|
+
|---|---|---|---|
|
|
121
|
+
| départ | — | 35 erreurs | 5/5 |
|
|
122
|
+
| **couverture sur le TITRE seul** | la `consequence` est **notre** prose ; un plan n'a aucune raison de la contenir, et l'inclure pénalisait les erreurs **bien expliquées** | **27** | 3/5 |
|
|
123
|
+
| **synonymes au RADICAL** | écrits en mots entiers, ils demandaient d'énumérer toutes les flexions du français — la liste tenait neuf mots pour un groupe et laissait passer `supprimée` | **26** | 2/5 |
|
|
124
|
+
| **seuil des mots-clés à 4 lettres** | `date`, `note`, `vote`, `lieu`, `taux` étaient écartés — et avec eux **le mot qui distingue** : « le retrait est un simple drapeau, sans **date** » ne retenait que `retrait`, `simple`, `drapeau` | **23** | **1/5** |
|
|
125
|
+
|
|
126
|
+
La seule erreur qui subsiste — *« la restauration recrée un objet neuf »* — est un **vrai manque** :
|
|
127
|
+
le plan de RestoTrax ne dit rien d'une restauration. LabTrax reste à 11 erreurs après les trois
|
|
128
|
+
correctifs : **le seuil à 4 lettres n'a ajouté aucun bruit**.
|
|
129
|
+
|
|
130
|
+
Six essais gardent ces décisions : `T-KC-22` (la conséquence hors couverture), `T-KC-23` (les
|
|
131
|
+
radicaux), `T-KC-24` (un groupe d'un mot ne relie rien), `T-KC-25` (un radical de moins de quatre
|
|
132
|
+
lettres est écarté), `T-KC-26` (les mots de quatre lettres portent le sens).
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 6. Verdict provisoire — deux essais sur sept
|
|
137
|
+
|
|
138
|
+
**La règle n'est toujours pas adoptable, et l'essai dit maintenant pourquoi.**
|
|
139
|
+
|
|
140
|
+
Ce qui est acquis :
|
|
141
|
+
- la **double borne** fonctionne, et elle est indispensable : elle divise le résultat par deux ;
|
|
142
|
+
- l'outil ne s'est fait **contredire par aucun** des deux projets — 0 contredit sur 37 erreurs signalées ;
|
|
143
|
+
- le **coût de lecture est négligeable** : une minute, pour un plan de 16 à 49 exigences ;
|
|
144
|
+
- la porte **informative** est le bon choix : sur 11 avertissements, 5 étaient sans objet. Une porte
|
|
145
|
+
bloquante aurait arrêté un projet juste pour parler de quotas d'API à une université.
|
|
146
|
+
|
|
147
|
+
Ce qui manque :
|
|
148
|
+
- **cinq projets** — ATC, CollabTrax, qatrax, SofTrax, CRM/TRADING ;
|
|
149
|
+
- surtout, **un projet qui n'a pas nourri le catalogue**. Les deux essais faits mesurent un catalogue
|
|
150
|
+
écrit en grande partie *depuis* les projets qu'il juge. Tant que ce troisième essai n'existe pas,
|
|
151
|
+
le seul chiffre honnête reste **0,75 exigence gagnée par fiche transverse disponible**, et il
|
|
152
|
+
n'autorise aucune promesse.
|
|
@@ -100,7 +100,9 @@ ce sont ceux qu'on omet, et ce sont ceux qui servent.
|
|
|
100
100
|
|---|---|---|
|
|
101
101
|
| **0.1.0** | fiche + validation + projection + instanciation + corpus initial (5 fiches tirées d'incidents réels) | §11.1 : essais mjs-unit verts, plan DEVTEST à trois trous nuls |
|
|
102
102
|
| 0.2.0 | index inverse des emplois (B5), `findKinds` enrichi, premières fiches **agronomie** et **électronique** | corpus ≥ 15 fiches, ≥ 2 applications instanciées |
|
|
103
|
-
| 0.3.0 |
|
|
103
|
+
| **0.3.0-a** | **AMÉLIORER** — `diagnostiquer(plan, kinds)` : rapproche les exigences d'une application des fiches, **propose** la correspondance, et NOMME les erreurs connues qu'aucune exigence ne mentionne | un audit rendu sur le plan d'une application tierce, sans toucher au code |
|
|
104
|
+
| **0.3.0-b** | **BÂTIR** — `demarrer({ domaines, project, prefix })` : plan de départ complet, épreuves **manuelles** | un projet neuf démarre sur un plan qu'il n'a pas écrit |
|
|
105
|
+
| 0.4.0 | pont `assistant-pilote` : une fiche déclare son `kind` ro-pla et devient une question activable | une question née d'une fiche, activée en production |
|
|
104
106
|
|
|
105
107
|
### Le corpus initial de 0.1.0 — **des incidents réels, pas des suppositions**
|
|
106
108
|
|
|
@@ -112,6 +114,55 @@ ce sont ceux qu'on omet, et ce sont ceux qui servent.
|
|
|
112
114
|
| `KIND-ACQUIS-01` — consulter un acquis ne doit pas l'effacer | `@mostajs/elearning` | `apprentissage` |
|
|
113
115
|
| `KIND-DONNEE-INSUFFISANTE-01` — un calcul sur trop peu de données doit REFUSER, en chiffrant ce qui manque | RestoTrax, ATC | `decision` |
|
|
114
116
|
|
|
117
|
+
## 4.bis · L'OUTIL À DOUBLE TRANCHANT *(orientation produit, 03/09/2026)*
|
|
118
|
+
|
|
119
|
+
Le critère « duplication au référentiel / occurrence à l'application » a séparé deux fonctions.
|
|
120
|
+
Elles ne sont pas deux options techniques : ce sont **deux produits, pour deux marchés**.
|
|
121
|
+
|
|
122
|
+
| | **BÂTIR** | **AMÉLIORER** |
|
|
123
|
+
|---|---|---|
|
|
124
|
+
| fonction | `toDevtest` | `enrichir` |
|
|
125
|
+
| à qui | un projet qui **commence** | un projet qui **tourne** |
|
|
126
|
+
| ce qu'il reçoit | ses exigences de départ, avec leurs épreuves | les erreurs connues, dans ses exigences à lui |
|
|
127
|
+
| ce qu'il évite | écrire un plan de test depuis une page blanche | repayer un défaut qu'un autre a déjà payé |
|
|
128
|
+
| valeur perçue | « on démarre juste » | **« vous avez six erreurs connues que votre plan ne mentionne nulle part »** |
|
|
129
|
+
| marché | projets neufs | **le parc existant — bien plus vaste** |
|
|
130
|
+
|
|
131
|
+
### Ce que chaque tranchant exige encore
|
|
132
|
+
|
|
133
|
+
**BÂTIR — il manque la SÉLECTION.** Aujourd'hui l'application nomme ses fiches une par une. Un
|
|
134
|
+
assistant de démarrage part du **domaine** : *« un logiciel de gestion d'élèves »* → les fiches
|
|
135
|
+
`acces`, `donnees`, `decision`, plus le métier. `findKinds({ domaine })` existe ; ce qui manque est
|
|
136
|
+
un `demarrer({ domaines, project, prefix })` qui rende un plan de départ complet, dont les épreuves
|
|
137
|
+
sont **manuelles** — un travail à faire, honnêtement affiché, jamais un plan qui prétend être tenu.
|
|
138
|
+
|
|
139
|
+
**AMÉLIORER — il manque le DIAGNOSTIC, et c'est le vrai produit.** Aujourd'hui l'humain déclare la
|
|
140
|
+
correspondance (`occurrences: ['SPEC-POR-01', …]`). Ce qui a de la valeur, c'est l'inverse : **lire
|
|
141
|
+
le plan d'une application et lui dire ce qui lui manque**.
|
|
142
|
+
|
|
143
|
+
> *« Votre plan porte quatre exigences de périmètre. La fiche en connaît six erreurs. Trois ne sont
|
|
144
|
+
> mentionnées nulle part chez vous — voici lesquelles, et ce qu'elles coûtent. »*
|
|
145
|
+
|
|
146
|
+
C'est un audit livrable **en une heure**, sur un plan qu'on nous donne, sans toucher au code.
|
|
147
|
+
|
|
148
|
+
### ⚠️ Le diagnostic PROPOSE, il n'applique pas
|
|
149
|
+
|
|
150
|
+
Un rapprochement automatique entre les exigences d'une application et les fiches du catalogue **se
|
|
151
|
+
trompera** : les intitulés varient, les métiers diffèrent, une ressemblance de mots n'est pas une
|
|
152
|
+
identité de règle. Un outil qui appliquerait ses rapprochements tout seul poserait des blocs
|
|
153
|
+
d'erreurs sur des exigences qui n'ont rien à voir, et ruinerait la confiance dans les blocs justes.
|
|
154
|
+
|
|
155
|
+
**Il propose une correspondance ; l'humain confirme.** C'est `KIND-ECRITURE-GARDEE-01`, appliqué à
|
|
156
|
+
l'outil lui-même — et c'est la meilleure démonstration possible du catalogue : il tient sa propre
|
|
157
|
+
règle sur son propre produit.
|
|
158
|
+
|
|
159
|
+
### Ce que cela change à la feuille de route
|
|
160
|
+
|
|
161
|
+
Le jalon **0.3.0** devient double, et la partie « améliorer » passe devant : c'est elle qui se vend
|
|
162
|
+
sans qu'un projet ait besoin de commencer.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
115
166
|
## 5.bis · Les DOMAINES du catalogue
|
|
116
167
|
|
|
117
168
|
Un `domaine` regroupe les fiches d'un même métier. Le vocabulaire est **ouvert** — un domaine
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# Proposition de règle — faire relire le plan par l'outil, avant d'écrire le code
|
|
2
|
+
|
|
3
|
+
**Statut : PROPOSITION, en attente de validation.** Ce document n'est pas une règle DEVRULES : il
|
|
4
|
+
en propose une. Rien ne s'y applique tant qu'elle n'est pas validée.
|
|
5
|
+
|
|
6
|
+
**Auteur** : Dr Hamid MADANI <drmdh@msn.com> · **Date** : 2026-09-05
|
|
7
|
+
**À reprendre** : à la fin du développement et des essais d'`@mostajs/auto-pilot` en mode
|
|
8
|
+
« assistant par catalogue éprouvé ».
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1 · L'idée
|
|
13
|
+
|
|
14
|
+
Une fois les trois outils développés — **`auto-pilot`** (la modélisation), **`assistant-pilote`**
|
|
15
|
+
(la garde et le journal), **`kind-catalog`** (les fiches et le diagnostic) —, **leur invocation
|
|
16
|
+
devient une étape de la méthode** :
|
|
17
|
+
|
|
18
|
+
> **Après avoir écrit le plan de développement (#3) et le plan de test (#4), et AVANT d'écrire la
|
|
19
|
+
> première ligne de code, on fait relire ces plans par l'outil** — pour y déceler les manques, les
|
|
20
|
+
> erreurs et les pièges déjà payés ailleurs — **puis on itère** jusqu'à ce qu'il n'ait plus rien à
|
|
21
|
+
> dire.
|
|
22
|
+
|
|
23
|
+
La boucle se referme sur elle-même : les incidents produisent des fiches, les fiches diagnostiquent
|
|
24
|
+
les plans, et les plans corrigés évitent les incidents suivants.
|
|
25
|
+
|
|
26
|
+
## 2 · Pourquoi maintenant, et pas plus tôt
|
|
27
|
+
|
|
28
|
+
Cette session en a fourni la preuve, deux fois, **contre l'auteur** :
|
|
29
|
+
|
|
30
|
+
- le diagnostic d'ATC a trouvé **5 erreurs sur 5** non mentionnées pour `KIND-ECRITURE-GARDEE-01` —
|
|
31
|
+
sur une application dont le comportement est bon et le plan dense. *Le comportement était juste,
|
|
32
|
+
le raisonnement n'était pas consigné.*
|
|
33
|
+
- l'instanciation dans ATC a révélé, **après** la poussée à qatrax, que la projection créait des
|
|
34
|
+
cas inexécutables. Un diagnostic du plan avant le code l'aurait dit.
|
|
35
|
+
|
|
36
|
+
**Et ce chantier même en aurait profité** : le #3 du port `modeleur` a été écrit sans passer les
|
|
37
|
+
fiches `KIND-ECRITURE-GARDEE-01`, `KIND-REFUS-LISIBLE-01` et `KIND-CHIFFRE-SANS-SOURCE-01` en
|
|
38
|
+
revue. Elles y sont, mais parce que l'auteur les avait en tête — pas parce qu'un outil les a
|
|
39
|
+
rappelées. **Ce qui dépend d'une mémoire attentive finit par échouer une fois** (§5.bis.4).
|
|
40
|
+
|
|
41
|
+
## 3 · Sur quoi porte la relecture
|
|
42
|
+
|
|
43
|
+
| lu | forme | déjà possible ? |
|
|
44
|
+
|---|---|---|
|
|
45
|
+
| le plan Dev+Test structuré | `mostajs-devtest/1` | **oui** — `diagnostiquer(plan, kinds)` le fait déjà |
|
|
46
|
+
| le plan de développement (#3) | Markdown en prose | **non** — à instruire |
|
|
47
|
+
| le plan de test (#4) | Markdown en prose | **non** — à instruire |
|
|
48
|
+
|
|
49
|
+
⚠️ **Le lien existe déjà et il est documenté.** `@mostajs/qa-engine` décrit `mostajs-devtest/1`
|
|
50
|
+
comme le *« jumeau structuré des livrables DEVRULES #3 et #4 »*. La relecture porte donc d'abord
|
|
51
|
+
sur le jumeau — c'est le chemin court, et il ne demande rien de neuf. Lire la prose vient ensuite,
|
|
52
|
+
pour ce qu'elle porte et que le jumeau ne porte pas : les **risques**, les **jalons**, les
|
|
53
|
+
**portes de sortie**.
|
|
54
|
+
|
|
55
|
+
## 4 · Les quatre gardes que cette règle exige
|
|
56
|
+
|
|
57
|
+
Sans elles, la règle produirait exactement ce qu'elle prétend éviter.
|
|
58
|
+
|
|
59
|
+
### a) L'outil PROPOSE un écart, il ne réécrit pas le plan
|
|
60
|
+
|
|
61
|
+
`T-KC-20` l'impose déjà : *le diagnostic ne modifie pas le plan qu'il lit*. Un outil qui réécrirait
|
|
62
|
+
son objet ferait perdre la distinction entre ce que l'auteur a pensé et ce que l'outil a suggéré —
|
|
63
|
+
et le plan cesserait d'être une décision pour devenir une sortie.
|
|
64
|
+
|
|
65
|
+
### b) L'itération doit CONVERGER, et se borner
|
|
66
|
+
|
|
67
|
+
Un optimiseur qui propose sans fin ne termine jamais. Règle d'arrêt : **on s'arrête quand un
|
|
68
|
+
passage n'apporte aucun manque nouveau**, avec un plafond de passages, et **chaque passage consigne
|
|
69
|
+
ce qu'il a fait changer**. Sans le journal des passages, on ne saura pas si le plan s'est amélioré
|
|
70
|
+
ou s'il a seulement absorbé les remarques.
|
|
71
|
+
|
|
72
|
+
### c) L'AUTORITÉ d'un manque dépend de l'ORIGINE de la fiche
|
|
73
|
+
|
|
74
|
+
⚠️ **C'est le point le moins évident, et le plus important.**
|
|
75
|
+
|
|
76
|
+
Une fiche dont la seule origine est **le projet qu'on diagnostique** ne prouve rien : on se cite
|
|
77
|
+
soi-même. Le rapport doit donc **distinguer** :
|
|
78
|
+
|
|
79
|
+
| force du signal | condition |
|
|
80
|
+
|---|---|
|
|
81
|
+
| **fort** | la fiche porte des incidents de **plusieurs projets, dont pas celui-ci** — un autre a déjà payé |
|
|
82
|
+
| moyen | la fiche est adossée à un corpus établi (`reference`) |
|
|
83
|
+
| **faible** | l'unique origine de la fiche est ce projet même |
|
|
84
|
+
|
|
85
|
+
**Un diagnostic est d'autant plus fort que ses fiches viennent d'ailleurs.** C'est mesurable, et
|
|
86
|
+
cela doit figurer au rapport.
|
|
87
|
+
|
|
88
|
+
### d) Un outil ne se certifie pas lui-même
|
|
89
|
+
|
|
90
|
+
Diagnostiquer le plan de `kind-catalog` avec le corpus de `kind-catalog` est légitime — mais le
|
|
91
|
+
rapport doit le **dire**. Une auto-certification silencieuse vaut moins que rien : elle donne à un
|
|
92
|
+
lecteur pressé l'impression d'un contrôle indépendant.
|
|
93
|
+
|
|
94
|
+
## 5 · Où cela s'insérerait dans les DEVRULES
|
|
95
|
+
|
|
96
|
+
**Après #4, avant le code** — dans la §1 (procédure obligatoire), comme un point 5.bis :
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
4. Trancher parmi les trois cas (§2)
|
|
100
|
+
5. Si proposer : produire les livrables §4 AVANT la première ligne de code
|
|
101
|
+
5.bis ⟵ FAIRE RELIRE #3 et #4 par le catalogue de kinds, et itérer jusqu'à convergence
|
|
102
|
+
6. Ne jamais sauter cette procédure « pour gagner du temps »
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Porte bloquante ou informative ?** À trancher. L'argument pour la rendre **informative** : un
|
|
106
|
+
manque signalé peut légitimement ne pas concerner le projet, et une porte bloquante pousserait à
|
|
107
|
+
écrire des lignes d'exigence pour faire taire l'outil — ce qui dégraderait les plans au lieu de les
|
|
108
|
+
améliorer. L'argument pour la rendre **bloquante** : ce qui n'est pas bloquant est sauté.
|
|
109
|
+
|
|
110
|
+
**Tranché le 06/09/2026 : INFORMATIVE, mais le rapport est un LIVRABLE** — versionné à côté de #3
|
|
111
|
+
et #4. On n'ignore pas ce qui est écrit dans le dépôt.
|
|
112
|
+
|
|
113
|
+
### Le livrable est un TRIPTYQUE, et son dernier état porte une signature
|
|
114
|
+
|
|
115
|
+
| état | ce qu'il est | qui l'écrit |
|
|
116
|
+
|---|---|---|
|
|
117
|
+
| **plan initial** | le #3 / #4 tels qu'écrits, avant toute relecture | l'auteur |
|
|
118
|
+
| **plan amélioré** | ce que l'outil propose — manques, erreurs, pièges | **l'outil** |
|
|
119
|
+
| **plan révisé et approuvé** | ce que l'humain retient, écarte, et pourquoi | **l'humain, nommément** |
|
|
120
|
+
|
|
121
|
+
⚠️ **Les trois états sont CONSERVÉS, pas remplacés.** Un plan amélioré qui écraserait le plan
|
|
122
|
+
initial rendrait la comparaison impossible — et c'est précisément la comparaison qui dira, dans six
|
|
123
|
+
mois, si l'outil a servi. C'est la même raison qui fait conserver `#3.bis` (l'objectif) **et** `#14`
|
|
124
|
+
(le résultat) : **l'écart entre les deux est la mesure honnête de ce qui a dérivé.**
|
|
125
|
+
|
|
126
|
+
⚠️ **Le troisième état exige un nom.** Un plan « approuvé » sans approbateur n'est pas approuvé :
|
|
127
|
+
c'est un plan que personne n'a refusé. L'état porte donc le nom de l'humain qui l'a arrêté, et la
|
|
128
|
+
liste de ce qu'il a **écarté** — écarter est une décision, pas une omission.
|
|
129
|
+
|
|
130
|
+
## 5.bis · ⚠️ AVANT toute intégration aux DEVRULES — l'épreuve rétrospective
|
|
131
|
+
|
|
132
|
+
**Décision du 06/09/2026 : la règle ne s'intègre pas avant d'avoir été éprouvée sur les projets
|
|
133
|
+
DÉJÀ RÉALISÉS.** On passe leurs plans à la moulinette, et l'on compare au résultat atteint.
|
|
134
|
+
|
|
135
|
+
C'est la transposition de la paire `#3.bis` / `#14` des DEVRULES — l'objectif et le résultat —
|
|
136
|
+
appliquée non à une image, mais à un plan.
|
|
137
|
+
|
|
138
|
+
### La condition qui rend l'épreuve honnête, et sans laquelle elle est truquée
|
|
139
|
+
|
|
140
|
+
⚠️ **Une fiche née d'un incident du projet X ne peut PAS servir à juger le plan initial du projet
|
|
141
|
+
X.** Elle connaît la réponse : elle a été écrite depuis la réponse. L'employer produirait un score
|
|
142
|
+
flatteur et faux — l'outil « prédirait » ce dont il est issu.
|
|
143
|
+
|
|
144
|
+
**Le corpus doit donc être borné dans le TEMPS et par l'ORIGINE** :
|
|
145
|
+
|
|
146
|
+
> Pour diagnostiquer le plan initial du projet X daté du J, on n'emploie que les fiches
|
|
147
|
+
> **dont aucune origine ne vient de X**, et **dont les origines sont antérieures à J**.
|
|
148
|
+
|
|
149
|
+
Sans cette double borne, l'épreuve ne mesure rien. Avec elle, elle mesure quelque chose de réel :
|
|
150
|
+
*ce qu'un autre projet avait déjà payé, et que celui-ci allait payer à son tour.*
|
|
151
|
+
|
|
152
|
+
### Le protocole, pour chaque projet réalisé
|
|
153
|
+
|
|
154
|
+
| # | geste | source |
|
|
155
|
+
|---|---|---|
|
|
156
|
+
| 1 | retrouver le **plan initial** — première version du #3/#4, ou du plan Dev+Test | historique git |
|
|
157
|
+
| 2 | borner le corpus (temps + origine, ci-dessus) | `kind-catalog` |
|
|
158
|
+
| 3 | **diagnostiquer** ce plan initial | `diagnostiquer()` |
|
|
159
|
+
| 4 | relever ce que le projet a **réellement** ajouté ensuite | exigences, essais et **bugs** sur qatrax |
|
|
160
|
+
| 5 | **classer** chaque manque signalé | ci-dessous |
|
|
161
|
+
|
|
162
|
+
### Le classement — et il ne comporte AUCUN « faux »
|
|
163
|
+
|
|
164
|
+
⚠️ **C'est le point le plus important de tout ce document.** Un manque signalé que le projet n'a pas
|
|
165
|
+
suivi **n'est pas une erreur de l'outil**. Le besoin du commanditaire est le seul arbitre, et il
|
|
166
|
+
peut légitimement aller ailleurs.
|
|
167
|
+
|
|
168
|
+
| classe | ce qu'elle dit | lecture |
|
|
169
|
+
|---|---|---|
|
|
170
|
+
| **anticipé** | le projet a ajouté plus tard, de lui-même, ce que l'outil signalait | **l'outil aurait fait gagner du temps** — c'est la mesure utile |
|
|
171
|
+
| **divergent** | le projet est allé ailleurs | **ni faux ni bon** : le commanditaire avait un autre besoin. À consigner, pas à compter comme échec |
|
|
172
|
+
| **sans objet** | jamais devenu pertinent | bruit. À compter honnêtement — c'est le coût de la relecture |
|
|
173
|
+
| **contredit** | le projet a explicitement écarté le point, avec motif | **le plus instructif** : la fiche doit peut-être porter une exception, comme `KIND-REFUS-LISIBLE-01` porte la sienne |
|
|
174
|
+
|
|
175
|
+
**La mesure retenue n'est donc pas un taux de justesse.** C'est un couple :
|
|
176
|
+
|
|
177
|
+
- **combien de ce qui a fini par compter était signalé d'avance** (rappel utile) ;
|
|
178
|
+
- **combien de bruit il a fallu écarter pour l'obtenir** (coût de lecture).
|
|
179
|
+
|
|
180
|
+
Un outil qui signale tout a un rappel parfait et un coût insupportable. C'est ce couple qu'il faut
|
|
181
|
+
publier, jamais un chiffre unique.
|
|
182
|
+
|
|
183
|
+
### Les projets candidats à l'épreuve
|
|
184
|
+
|
|
185
|
+
Ceux qui ont **un plan initial daté** et **un résultat mesuré sur qatrax** : ATC Smart Campus,
|
|
186
|
+
RestoTrax, LabTrax, CollabTrax, qatrax lui-même, SofTrax, CRM/TRADING.
|
|
187
|
+
|
|
188
|
+
⚠️ **Et l'épreuve dira peut-être que la règle ne vaut pas.** C'est une issue possible, et elle doit
|
|
189
|
+
rester ouverte : si le rappel utile est faible et le bruit élevé sur sept projets, la règle est
|
|
190
|
+
écartée — **avec son motif**, comme une fiche.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## 6 · Ce qu'il reste à faire pour que la règle soit applicable
|
|
195
|
+
|
|
196
|
+
| # | à faire | où |
|
|
197
|
+
|---|---|---|
|
|
198
|
+
| 1 | lire un plan de dev **en prose** (risques, jalons, portes de sortie) | `kind-catalog` — extraction, à instruire |
|
|
199
|
+
| 2 | pondérer un manque par l'**origine** de sa fiche (garde c) | `kind-catalog` — `diagnostiquer` |
|
|
200
|
+
| 3 | consigner les **passages** d'itération et ce qu'ils ont changé | à décider : un journal, ou le dépôt git suffit-il ? |
|
|
201
|
+
| 4 | signaler l'**auto-diagnostic** (garde d) | `kind-catalog` — `rapportDiagnostic` |
|
|
202
|
+
| 5 | **borner un corpus dans le temps et par l'origine** (§5.bis) — sans quoi l'épreuve est truquée | `kind-catalog` — `diagnostiquer` |
|
|
203
|
+
| 6 | conduire l'**épreuve rétrospective** sur les sept projets | une session dédiée |
|
|
204
|
+
| 7 | proposer la règle §1 point 5.bis à la validation — **ou l'écarter avec son motif** | DEVRULES |
|
|
205
|
+
|
|
206
|
+
## 7 · Le nom
|
|
207
|
+
|
|
208
|
+
« Assistant par catalogue éprouvé » — c'est ainsi que l'idée a été formulée le 05/09/2026, et le
|
|
209
|
+
nom dit l'essentiel : **l'assistant ne conseille pas depuis un modèle de langage, il conseille
|
|
210
|
+
depuis un catalogue dont chaque entrée a été payée.**
|
package/kinds/chiffres.kind.mjs
CHANGED
|
@@ -16,6 +16,7 @@ export const kinds = [
|
|
|
16
16
|
'chaque valeur affichée provient d’une source RÉELLEMENT interrogée',
|
|
17
17
|
'chaque compteur est cliquable vers la liste qui le compose',
|
|
18
18
|
'la fraîcheur de chaque valeur est visible, et au-delà du seuil la valeur bascule en « sans données »',
|
|
19
|
+
'un affichage périmé AVOUE SON ÂGE — « au 04/09 à 11h12 » — plutôt que de présenter un chiffre comme actuel',
|
|
19
20
|
'trois états, et trois seulement : non branché · branché sans données · branché réel',
|
|
20
21
|
],
|
|
21
22
|
erreurs: [
|
|
@@ -25,6 +26,10 @@ export const kinds = [
|
|
|
25
26
|
consequence: 'zéro est un FAIT ; « je ne sais pas » n’en est pas un. On lit une chute d’activité là où il y a une panne de collecte' },
|
|
26
27
|
{ titre: 'la valeur périmée continue d’être servie',
|
|
27
28
|
consequence: 'le tableau de bord affiche avec le même aplomb une mesure d’hier et une d’il y a six mois' },
|
|
29
|
+
{ titre: 'la valeur périmée est présentée SANS SON ÂGE',
|
|
30
|
+
consequence: 'elle a l’air normale, donc personne ne la vérifie. **Un affichage périmé qui a l’air normal coûte plus cher qu’un affichage qui avoue son âge** — le second se corrige, le premier se propage en décision' },
|
|
31
|
+
{ titre: 'la valeur périmée est simplement effacée au profit de « sans données »',
|
|
32
|
+
consequence: 'on perd la dernière valeur CONNUE, qui reste souvent utile — mieux vaut « au 04/09 à 11h12 » que rien du tout. Les deux remèdes ne se valent pas : DATER conserve l’information, BASCULER la jette' },
|
|
28
33
|
{ titre: 'le compteur ne mène nulle part',
|
|
29
34
|
consequence: 'un chiffre qu’on ne peut pas ouvrir ne se conteste pas — donc il ne se corrige jamais' },
|
|
30
35
|
{ titre: 'un second tableau de suivi est tenu à la main à côté',
|
|
@@ -32,7 +37,7 @@ export const kinds = [
|
|
|
32
37
|
],
|
|
33
38
|
test: [
|
|
34
39
|
{ action: 'couper une source, puis afficher', attendu: '« sans données », jamais zéro' },
|
|
35
|
-
{ action: 'vieillir une valeur au-delà du seuil de fraîcheur', attendu: 'elle bascule en « sans données »
|
|
40
|
+
{ action: 'vieillir une valeur au-delà du seuil de fraîcheur', attendu: 'son ÂGE est affiché — « au 04/09 à 11h12 » — ou elle bascule en « sans données » ; jamais présentée comme actuelle' },
|
|
36
41
|
{ action: 'chercher dans le rendu un nombre absent des sources', attendu: 'aucun' },
|
|
37
42
|
{ action: 'suivre un compteur', attendu: 'il ouvre la liste filtrée qui le compose' },
|
|
38
43
|
],
|
|
@@ -40,6 +45,8 @@ export const kinds = [
|
|
|
40
45
|
origine: [
|
|
41
46
|
{ type: 'incident', source: 'CollabTrax — « N’afficher aucune valeur sans source interrogée : jamais de nombre en dur, jamais de valeur d’exemple » ; trois états ; fraîcheur ; compteur cliquable', date: '2026-08-03' },
|
|
42
47
|
{ type: 'incident', source: 'ATC — le pilotage compose @mostajs/reporting ; la vue ne recalcule aucun total (T-PIL-10)', date: '2026-09-01' },
|
|
48
|
+
{ type: 'incident', source: 'TicketFlow 2.0 — la page affiche l’ÂGE de la donnée : « file au 04/09 à 11h12 » quand le site est déconnecté, et non un chiffre présenté comme actuel', date: '2026-09-04' },
|
|
49
|
+
{ type: 'incident', source: '@mostajs/paiement-tpe — `sonder()` rend « inconnu », jamais `false`, qui ferait croire l’appareil en panne alors qu’on n’en sait rien', date: '2026-08-20' },
|
|
43
50
|
],
|
|
44
51
|
}),
|
|
45
52
|
|
package/kinds/decision.kind.mjs
CHANGED
|
@@ -83,6 +83,7 @@ export const kinds = [
|
|
|
83
83
|
{ type: 'incident', source: 'CRM/TRADING — copilote : transitions et réassignations, aperçu sans --confirm puis exécution (CARNET motif #2)', date: '2026-06-13' },
|
|
84
84
|
{ type: 'incident', source: 'RestoTrax — l’assistant-pilote n’a que deux écritures, et ce sont des DÉCISIONS (TPIL-7)', date: '2026-08-30' },
|
|
85
85
|
{ type: 'incident', source: 'ATC — l’écran de l’assistant ne porte aucune action métier (T-ASS-9)', date: '2026-09-01' },
|
|
86
|
+
{ type: 'incident', source: '@mostajs/auto-pilot — `propose()` rend un brouillon INERTE (« modèle + aperçu, rien n’est résolu/agi ») avant que `solve()` n’engage quoi que ce soit', date: '2026-08-10' },
|
|
86
87
|
],
|
|
87
88
|
}),
|
|
88
89
|
];
|
|
@@ -78,6 +78,7 @@ export const kinds = [
|
|
|
78
78
|
{ type: 'incident', source: 'LabTrax — « Fonctionner central injoignable : la perte du lien n’empêche NI le pointage, NI la délibération »', date: '2026-08-31' },
|
|
79
79
|
{ type: 'incident', source: 'SofTrax — « La révocation est signée donc opposable hors ligne, et coupe l’activation »', date: '2026-08-20' },
|
|
80
80
|
{ type: 'incident', source: 'LabTraxAdmin — même exigence, côté central : la licence ne se demande pas depuis l’instance', date: '2026-08-25' },
|
|
81
|
+
{ type: 'incident', source: 'TicketFlow 2.0 — site déconnecté : la page le DIT et date la donnée, au lieu de servir un chiffre d’allure normale', date: '2026-09-04' },
|
|
81
82
|
],
|
|
82
83
|
}),
|
|
83
84
|
];
|
package/kinds/traces.kind.mjs
CHANGED
|
@@ -8,6 +8,19 @@ export default defineKind({
|
|
|
8
8
|
enonce: 'Retirer une chose, c’est la DATER — jamais la détruire.',
|
|
9
9
|
utilisation: 'Toute entité qu’un utilisateur peut « supprimer » : dossier, projet, compte, rôle, activation, solveur.',
|
|
10
10
|
besoins: [{ nom: 'champs de retrait', forme: '{ retireA, retirePar, motif }' }],
|
|
11
|
+
// ⚠️ DÉCLARÉS après l'épreuve rétrospective n° 1 (06/09/2026) : le plan de RestoTrax couvrait
|
|
12
|
+
// cette règle par « la désactivation est DATÉE, pas effacée » — et le diagnostic signalait
|
|
13
|
+
// 5 erreurs sur 5 comme absentes, faute de reconnaître « désactivation » dans « retrait ».
|
|
14
|
+
// Des RADICAUX, rapprochés par préfixe (voir `canonique` dans src/diagnostic.js) : c'est le
|
|
15
|
+
// vocabulaire du domaine, qu'aucun rapprochement lexical ne peut deviner, et il se déclare.
|
|
16
|
+
synonymes: [
|
|
17
|
+
['retrait', 'retir', 'supprim', 'desactiv', 'archiv', 'effac'],
|
|
18
|
+
['datee', 'date', 'horodat'],
|
|
19
|
+
['conservee', 'conserv', 'survi', 'tombale', 'restaur'],
|
|
20
|
+
['attribuee', 'attribu', 'nominat', 'auteur'],
|
|
21
|
+
['ligne', 'entree', 'enregistr'],
|
|
22
|
+
['motive', 'motif', 'raison', 'justifi'],
|
|
23
|
+
],
|
|
11
24
|
succes: [
|
|
12
25
|
'la ligne SURVIT au retrait et porte sa date, son auteur et son motif',
|
|
13
26
|
'ce qui est retiré n’apparaît plus dans les listes courantes',
|
package/llms.txt
CHANGED
|
@@ -9,14 +9,21 @@ EXPORTS
|
|
|
9
9
|
toDevtest(kinds, { project, prefix }) -> plan mostajs-devtest/1 ; PLAN_VERSION
|
|
10
10
|
instantiate(kind, { app, prefix, affine }) -> Instance ; diffInstance(i) ; emplois(instances) ; AFFINABLES
|
|
11
11
|
loadCatalogue(dir) ; findKinds(kinds, {domaine,verdict,texte}) ; auditCatalogue(kinds) ; statsCatalogue(kinds)
|
|
12
|
+
diagnostiquer(plan, kinds, {minCommuns}) -> candidats ; rapportDiagnostic(...) ; TRANSVERSES
|
|
13
|
+
motsCles(texte) -> Set (mots de 4 lettres et plus, hors mots vides) ; normaliser(texte)
|
|
12
14
|
CHAMPS DE LA FICHE
|
|
13
15
|
ref (KIND-…) · enonce · domaine · version · besoins · utilisation · succes* · erreurs* · test
|
|
16
|
+
synonymes groupes de RADICAUX du domaine, rapproches par prefixe (4 lettres mini, groupe de 2 mini)
|
|
14
17
|
efficacite · evaluation · verdict · motif · origine* · seProsePose (* = requis)
|
|
15
18
|
VERDICTS propose | eprouve | retenu | ecarte
|
|
16
19
|
PROVENANCES reference (norme, litterature) | terrain (praticien nomme) | incident (defaut constate)
|
|
17
20
|
DOMAINES acces donnees apprentissage decision integration · btp alimentaire elevage apiculture agronomie electronique
|
|
18
21
|
PIÈGES
|
|
19
22
|
- `succes` ET `erreurs` sont REQUIS : ce sont les champs qu'on omet, et ceux qui servent.
|
|
23
|
+
- La COUVERTURE se juge sur le `titre` d'une erreur, jamais sur sa `consequence` : la
|
|
24
|
+
consequence est NOTRE prose, un plan n'a aucune raison de la contenir.
|
|
25
|
+
- Sans `synonymes`, deux textes qui disent la meme chose avec d'autres mots ne se reconnaissent
|
|
26
|
+
PAS : « retrait » ne vaut pas « desactivation » pour une machine. Cela se declare.
|
|
20
27
|
- Chaque erreur porte sa CONSEQUENCE : « ne pas oublier X » ne se retient pas (lecon CWE/OWASP).
|
|
21
28
|
- `eprouve`/`retenu` EXIGENT une origine `incident` ou `terrain` : on ne se decerne pas
|
|
22
29
|
l'experience. Une `reference` suffit pour ENTRER au catalogue en `propose` — la contrainte
|
|
@@ -35,4 +42,8 @@ PIÈGES
|
|
|
35
42
|
- loadCatalogue() fait un import() : charger un corpus, c'est EXECUTER du code. Une fiche se revoit
|
|
36
43
|
comme du code, jamais comme un document (docs/15-REVUE-SECURITE).
|
|
37
44
|
- validateKind() applique les memes defauts que defineKind : on peut lui passer un objet BRUT.
|
|
45
|
+
- DIAGNOSTIC : les deux sorties sont DECOUPLEES. Occurrences = precision (seuil 5 ; a 2 il en proposait
|
|
46
|
+
27 pour une regle). Erreurs non couvertes = rappel, cherchees dans TOUT le plan, rendues meme sans
|
|
47
|
+
occurrence. Regle TRANSVERSE parle toujours ; regle METIER seulement si reconnue.
|
|
48
|
+
- Le diagnostic PROPOSE, il n'applique pas, et il ne modifie pas le plan qu'il lit.
|
|
38
49
|
CORPUS LIVRE 21 fiches · 15 eprouvees (71 %) · 84 erreurs cataloguees · 35 incidents · 11 domaines.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mostajs/kind-catalog",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Catalogue de KINDS — fiches d'exigence réutilisables, projetables en plan mostajs-devtest/1 lisible par qatrax. N'exécute rien, ne stocke rien.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "AGPL-3.0-or-later",
|