@mostajs/kind-catalog 0.1.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 +136 -0
- package/README.md +103 -0
- package/docs/00-ETAPE-INAUGURALE-KIND-CATALOG.md +105 -0
- package/docs/03bis-PROMPT-IMAGE-OBJECTIF-KIND-CATALOG.md +99 -0
- package/docs/09bis-MATRICE-SOURCING-KIND-CATALOG.md +176 -0
- package/docs/10-PRESENTATION-COMMERCIALE-KIND-CATALOG.md +140 -0
- package/docs/11-SLIDES-COMMERCIAL-KIND-CATALOG.md +154 -0
- package/docs/12-DOC-TECHNIQUE-KIND-CATALOG.md +164 -0
- package/docs/13-SLIDES-DEV-KIND-CATALOG.md +162 -0
- package/docs/14-PROMPT-IMAGE-KIND-CATALOG.md +88 -0
- package/docs/15-REVUE-SECURITE-KIND-CATALOG.md +98 -0
- package/docs/16-DPIA-CONFORMITE-KIND-CATALOG.md +100 -0
- package/docs/ARTICLE-SEO-KIND-CATALOG.md +96 -0
- package/docs/AUDIT-EXISTANT-KIND-CATALOG.md +127 -0
- package/docs/DEVTEST-PLAN.kind-catalog.json +412 -0
- package/docs/ETUDE-ETAT-ART-KIND-CATALOG-02092026.md +207 -0
- package/docs/PLAN-DEV-KIND-CATALOG.md +186 -0
- package/docs/PLAN-PUBLICATION-KIND-CATALOG.md +80 -0
- package/docs/PLAN-SUIVI-MONITORING.md +66 -0
- package/docs/PLAN-TESTS.md +79 -0
- package/docs/SEO-KEYWORDS-KIND-CATALOG.md +46 -0
- package/docs/articles/01-ARTICLE-KIND-CATALOG.md +229 -0
- package/kinds/acces.kind.mjs +48 -0
- package/kinds/apprentissage.kind.mjs +25 -0
- package/kinds/chiffres.kind.mjs +80 -0
- package/kinds/decision.kind.mjs +88 -0
- package/kinds/donnees.kind.mjs +108 -0
- package/kinds/ecran-service.kind.mjs +71 -0
- package/kinds/integration.kind.mjs +83 -0
- package/kinds/metier-optimisation.kind.mjs +210 -0
- package/kinds/traces.kind.mjs +39 -0
- package/llms.txt +34 -0
- package/package.json +46 -0
- package/src/catalogue.js +98 -0
- package/src/index.js +4 -0
- package/src/instance.js +85 -0
- package/src/kind.js +152 -0
- package/src/projection.js +76 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# @mostajs/kind-catalog — Journal des versions
|
|
2
|
+
|
|
3
|
+
**Auteur** : Dr Hamid MADANI <drmdh@msn.com>
|
|
4
|
+
|
|
5
|
+
## Non publié — 2026-09-02 (soir) · le corpus double par EXPLORATION du parc
|
|
6
|
+
|
|
7
|
+
Sept applications du parc ont été relues — CRM/TRADING, LabTrax, CollabTrax, LabTraxAdmin, SofTrax,
|
|
8
|
+
analytics, qatrax — en croisant leurs **plans DEVTEST** sur les motifs du catalogue.
|
|
9
|
+
|
|
10
|
+
### Le corpus
|
|
11
|
+
|
|
12
|
+
| | avant | après |
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| fiches | 12 | **19** |
|
|
15
|
+
| éprouvées | 6 (50 %) | **13 (68 %)** |
|
|
16
|
+
| erreurs cataloguées | 39 | **76** |
|
|
17
|
+
| domaines | 10 | **11** (`integration`) |
|
|
18
|
+
|
|
19
|
+
### Sept fiches nouvelles, toutes issues d'incidents
|
|
20
|
+
|
|
21
|
+
`KIND-ECRITURE-GARDEE-01` · `KIND-SORTIE-GENEREE-01` · `KIND-ECHEC-FOURNISSEUR-01` (CRM/TRADING) —
|
|
22
|
+
`KIND-SUPPRESSION-DATEE-01` · `KIND-CHIFFRE-SANS-SOURCE-01` · `KIND-REFUS-LISIBLE-01` ·
|
|
23
|
+
`KIND-DEPENDANCE-DISTANTE-01` (LabTrax, CollabTrax, SofTrax, qatrax).
|
|
24
|
+
|
|
25
|
+
**Chacune est portée par deux à trois projets indépendants.** Aucune fiche n'a été créée sur un
|
|
26
|
+
motif vu une seule fois : celles-là attendent un second projet.
|
|
27
|
+
|
|
28
|
+
### Ce que l'exploration a démontré, et qui vaut plus que le compte
|
|
29
|
+
|
|
30
|
+
**`KIND-PERIMETRE-01` atteint TROIS projets indépendants** — ATC, CRM/TRADING, LabTrax — qui ont
|
|
31
|
+
tous écrit la même règle sans se consulter. `T-CORP-5` porte la barre à trois, **parce que le fait
|
|
32
|
+
existe** : elle ne monte jamais par anticipation.
|
|
33
|
+
|
|
34
|
+
**CollabTrax avait déjà inventé le quatrième état** que le plan d'`assistant-pilote` présentait
|
|
35
|
+
comme une évolution à faire : *« trois états et trois seulement — non branché / branché sans
|
|
36
|
+
données / branché réel »*. Le même besoin, résolu deux fois, sans que les deux se parlent. C'est
|
|
37
|
+
exactement ce que le catalogue existe pour empêcher, et sa première démonstration.
|
|
38
|
+
|
|
39
|
+
**La « pierre tombale » était écrite trois fois** — LabTrax, qatrax, `assistant-pilote`.
|
|
40
|
+
|
|
41
|
+
### Une TENSION portée par une fiche, plutôt que tranchée
|
|
42
|
+
|
|
43
|
+
`KIND-REFUS-LISIBLE-01` tient deux exigences contraires, toutes deux vraies :
|
|
44
|
+
|
|
45
|
+
- LabTrax : *« DIRE LA VRAIE RAISON D'UN REFUS, et offrir une issue »* ;
|
|
46
|
+
- ATC : le refus ne doit **ni nommer** l'élève **ni citer** son identifiant — le confirmer
|
|
47
|
+
renseigne déjà.
|
|
48
|
+
|
|
49
|
+
La fiche ne tranche pas : elle énonce la règle **et** son exception, avec la conséquence de chaque
|
|
50
|
+
côté. Une fiche qui aurait choisi sans le dire aurait été pire qu'aucune fiche.
|
|
51
|
+
|
|
52
|
+
### Deux fiches de plus — et une erreur de comptage corrigée
|
|
53
|
+
|
|
54
|
+
`KIND-FORMULAIRE-ROUTE-01` et `KIND-CONSIGNER-APRES-SUCCES-01` avaient d'abord été écartées comme
|
|
55
|
+
« un seul projet ». **C'était faux, et la vérification l'a montré** : les deux en portent deux.
|
|
56
|
+
|
|
57
|
+
- *le formulaire rendu doit être accepté par sa route* → **LabTrax** (exigence) **+ ATC**
|
|
58
|
+
(l'écran de notation appelait `noter()` avec la seule séance ; le certificat répondait « aucun
|
|
59
|
+
niveau atteint » douze écrans plus loin) ;
|
|
60
|
+
- *ne dater, numéroter et annoncer qu'après le succès* → **LabTrax** (exigence) **+ ATC**, deux
|
|
61
|
+
fois : le numéro de certificat non attendu qui valait `{}`, puis un certificat annoncé
|
|
62
|
+
(`CERT-2026-0001`) qui n'avait jamais été persisté.
|
|
63
|
+
|
|
64
|
+
**La règle n'a pas été assouplie : le comptage était mauvais.** C'est précisément l'écart entre
|
|
65
|
+
« je crois que c'est isolé » et « je l'ai vérifié » que le champ `origine` sert à fermer.
|
|
66
|
+
|
|
67
|
+
### Ce qui reste ÉCARTÉ
|
|
68
|
+
|
|
69
|
+
« Avertir avant de dépouiller », « n'afficher que ce que l'on peut faire », « aucune permission
|
|
70
|
+
orpheline » — un seul projet chacun, vérifié cette fois. Ils attendent. Convertir tous les motifs
|
|
71
|
+
aurait dilué le corpus : c'est la leçon d'OWASP, inscrite au plan (#3, risques).
|
|
72
|
+
|
|
73
|
+
### Le corpus, au terme de l'exploration
|
|
74
|
+
|
|
75
|
+
**21 fiches · 15 éprouvées (71 %) · 84 erreurs cataloguées · 35 incidents · 11 domaines.**
|
|
76
|
+
|
|
77
|
+
## 0.1.0 — 2026-09-02
|
|
78
|
+
|
|
79
|
+
Premier jet. Livrables DEVRULES §9 produits **avant** le code : étape inaugurale (§⓪, 5 questions),
|
|
80
|
+
#1 état de l'art, #2 audit de l'existant (cas C), #3 plan de développement, #3.bis image de
|
|
81
|
+
l'OBJECTIF, #4 plan de test.
|
|
82
|
+
|
|
83
|
+
### La fiche
|
|
84
|
+
|
|
85
|
+
`enonce`, `besoins`, `utilisation`, `succes`, `erreurs`, `test`, `verdict`, `origine`.
|
|
86
|
+
**Seuls `enonce`, `succes`, `erreurs` et `origine` sont requis** — ce sont ceux qu'on omet, et ceux
|
|
87
|
+
qui servent. Chaque erreur porte sa **conséquence** : « ne pas oublier le périmètre » ne se retient
|
|
88
|
+
pas ; « sans lui, tout parent lit le dossier de tous » se retient.
|
|
89
|
+
|
|
90
|
+
### La provenance — la règle qui remplit le catalogue au lieu de le vider
|
|
91
|
+
|
|
92
|
+
Une première formulation disait « aucune fiche avant un cas réel ». Elle aurait produit un
|
|
93
|
+
catalogue vide dans tous les métiers où le savoir existe pourtant depuis des décennies.
|
|
94
|
+
|
|
95
|
+
La règle réelle est ailleurs : **toute fiche déclare d'où elle vient**, et c'est le **verdict** qui
|
|
96
|
+
dit ce qu'elle a traversé. Une `reference` — norme, guide de bonnes pratiques, problème classique —
|
|
97
|
+
suffit à entrer au catalogue en `propose`. Se dire `eprouve` exige un `incident` ou un `terrain`.
|
|
98
|
+
**La contrainte porte sur le galon, jamais sur l'entrée.**
|
|
99
|
+
|
|
100
|
+
### La projection — aucun format nouveau
|
|
101
|
+
|
|
102
|
+
`toDevtest()` produit du `mostajs-devtest/1`, et l'essai le soumet au **parseur officiel** de
|
|
103
|
+
`@mostajs/qa-engine`. C'est le seul juge qui compte : une vérification maison prouverait seulement
|
|
104
|
+
que nous sommes d'accord avec nous-mêmes.
|
|
105
|
+
|
|
106
|
+
L'exigence projetée **porte les erreurs connues** : qui la lit dans qatrax reçoit aussi ce qui a
|
|
107
|
+
mal tourné ailleurs. C'est là que le catalogue devient utile — CWE est branché aux scanners et
|
|
108
|
+
s'applique ; le catalogue de patrons d'exigences de Withall n'est branché à rien et est resté un
|
|
109
|
+
livre.
|
|
110
|
+
|
|
111
|
+
### L'affinage tracé
|
|
112
|
+
|
|
113
|
+
`instantiate()` **refuse** un affinage sans motif. Sans lui, « réutiliser » se dégrade en
|
|
114
|
+
« recopier », et l'on revient à des plans qui se ressemblent sans jamais se parler. `emplois()`
|
|
115
|
+
donne l'index inverse : qui emploie quoi, et ce que chacun a dû changer.
|
|
116
|
+
|
|
117
|
+
### Le corpus initial — 12 fiches, 39 erreurs cataloguées, 10 domaines
|
|
118
|
+
|
|
119
|
+
**6 éprouvées** (50 %), toutes tirées de défauts **constatés** cette semaine avec leur date et leur
|
|
120
|
+
fichier : périmètre pris pour capacité, écriture hors schéma, mise à jour partielle par `undefined`,
|
|
121
|
+
acquis effacé par consultation, écriture hors application sur stockage à image mémoire, calcul sur
|
|
122
|
+
données insuffisantes.
|
|
123
|
+
|
|
124
|
+
**6 proposées**, tirées de corpus établis : formulation au moindre coût (problème du régime,
|
|
125
|
+
Stigler 1945), transhumance apicole, ordonnancement de chantier sous ressources, traçabilité de lot
|
|
126
|
+
(HACCP), rotation culturale, diagnostic séquentiel de panne.
|
|
127
|
+
|
|
128
|
+
Deux enseignements que les domaines métier ont imposés, et qu'aucun domaine transverse n'aurait
|
|
129
|
+
donnés :
|
|
130
|
+
|
|
131
|
+
- **le seuil de données insuffisantes s'exprime en CYCLES, jamais en jours** — deux saisons font
|
|
132
|
+
deux semaines en restauration, deux ans en grande culture, et quelques jours par an en apiculture ;
|
|
133
|
+
- **BTP et électronique posent leurs questions là où le module ne tourne pas** (chantier, embarqué),
|
|
134
|
+
d'où le champ `seProsePose`.
|
|
135
|
+
|
|
136
|
+
Suite : **21 essais verts**, plan DEVTEST valide, trois trous qatrax à zéro.
|
package/README.md
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# @mostajs/kind-catalog
|
|
2
|
+
|
|
3
|
+
**Auteur** : Dr Hamid MADANI <drmdh@msn.com> · AGPL-3.0-or-later · couche **N1**
|
|
4
|
+
|
|
5
|
+
Un **catalogue de fiches d'exigence réutilisables**, qui se **projette** dans le plan de test du
|
|
6
|
+
projet. Chaque fiche porte la question d'un métier, ses critères de succès, **ses erreurs connues
|
|
7
|
+
avec leur conséquence**, et ses épreuves.
|
|
8
|
+
|
|
9
|
+
**Le module n'exécute rien et ne stocke rien.** Il décrit, valide et projette.
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm i @mostajs/kind-catalog
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Pourquoi
|
|
16
|
+
|
|
17
|
+
Un défaut coûte deux fois : la première pour le trouver, la seconde pour le **retrouver** dans le
|
|
18
|
+
projet suivant. La sécurité applicative a réglé cela il y a vingt ans avec CWE — un catalogue
|
|
19
|
+
d'erreurs connues, chacune portant **sa conséquence**, nourri par des faits, et **branché aux
|
|
20
|
+
outils**. L'ingénierie des exigences n'avait pas son équivalent : le meilleur catalogue de patrons
|
|
21
|
+
d'exigences existant n'est branché à rien, et il est resté un livre.
|
|
22
|
+
|
|
23
|
+
> **Une fiche qui ne descend pas dans le plan de test du projet ne sera pas appliquée**, quelle que
|
|
24
|
+
> soit sa qualité.
|
|
25
|
+
|
|
26
|
+
## En trente lignes
|
|
27
|
+
|
|
28
|
+
```js
|
|
29
|
+
import { defineKind, loadCatalogue, toDevtest, instantiate, statsCatalogue } from '@mostajs/kind-catalog';
|
|
30
|
+
|
|
31
|
+
// 1 · écrire une fiche
|
|
32
|
+
export default defineKind({
|
|
33
|
+
ref: 'KIND-PERIMETRE-01',
|
|
34
|
+
domaine: 'acces',
|
|
35
|
+
enonce: 'Une permission ouvre une CAPACITÉ, jamais un PÉRIMÈTRE.',
|
|
36
|
+
succes: ['le porteur agit sur les instances qui lui reviennent'], // REQUIS
|
|
37
|
+
erreurs: [{ // REQUIS
|
|
38
|
+
titre: 'la capacité est prise pour le périmètre',
|
|
39
|
+
consequence: 'un parent lit le dossier d’un autre enfant — mêmes droits, rien d’anormal à l’écran',
|
|
40
|
+
}],
|
|
41
|
+
test: [{ action: 'agir sur l’instance d’un autre', attendu: 'refus, sans nommer l’instance' }],
|
|
42
|
+
verdict: 'eprouve',
|
|
43
|
+
origine: [{ type: 'incident', source: 'ATC — presence.mjs, portail.mjs', date: '2026-09-01' }], // REQUIS
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// 2 · la projeter vers l'outil de suivi — AUCUN format nouveau
|
|
47
|
+
const kinds = await loadCatalogue('./node_modules/@mostajs/kind-catalog/kinds');
|
|
48
|
+
const plan = toDevtest(kinds, { project: { key: 'atc', name: 'ATC' }, prefix: 'ATC' });
|
|
49
|
+
// → { plan: 'mostajs-devtest/1', specs[], realisations[], tests[] } lu par @mostajs/qa-engine
|
|
50
|
+
|
|
51
|
+
// 3 · la reprendre, telle quelle ou AFFINÉE — l'écart est tracé
|
|
52
|
+
instantiate(kinds[0], { app: 'ATC', affine: {
|
|
53
|
+
succes: { valeur: [...], motif: 'le centre est soumis à un contrôle annuel' }, // MOTIF REQUIS
|
|
54
|
+
}});
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Ce qu'il garantit
|
|
58
|
+
|
|
59
|
+
| | |
|
|
60
|
+
|---|---|
|
|
61
|
+
| **`succes` et `erreurs` sont requis** | ce sont les champs qu'on omet, et ceux qui servent |
|
|
62
|
+
| **chaque erreur porte sa conséquence** | « ne pas oublier X » ne se retient pas ; « sans X, tout parent lit le dossier de tous » se retient |
|
|
63
|
+
| **on ne se décerne pas l'expérience** | `eprouve` exige une origine `incident` ou `terrain`. Une `reference` suffit pour entrer en `propose` — la contrainte porte sur le galon, jamais sur l'entrée |
|
|
64
|
+
| **un affinage sans motif est refusé** | sans lui, « réutiliser » se dégrade en « recopier » |
|
|
65
|
+
| **une fiche écartée reste** | avec son motif : celle qui disparaît sera réinventée |
|
|
66
|
+
| **aucun format nouveau** | la projection est validée par le parseur **officiel** de `@mostajs/qa-engine` |
|
|
67
|
+
| **il n'écrit rien** | vérifié contre un dépôt piégé (`T-KC-12`) |
|
|
68
|
+
|
|
69
|
+
## Le corpus livré
|
|
70
|
+
|
|
71
|
+
**21 fiches · 15 éprouvées (71 %) · 84 erreurs cataloguées · 35 incidents · 11 domaines.**
|
|
72
|
+
|
|
73
|
+
Transverses — `acces` · `donnees` · `apprentissage` · `decision` · `integration` — toutes issues de
|
|
74
|
+
défauts **constatés en production**, avec leur date et leur fichier.
|
|
75
|
+
|
|
76
|
+
Métier — `btp` · `alimentaire` · `elevage` · `apiculture` · `agronomie` · `electronique` — adossées
|
|
77
|
+
aux corpus établis de chaque profession (HACCP, itinéraires techniques, problème du régime de
|
|
78
|
+
Stigler 1945, CPM/PERT), en `propose`.
|
|
79
|
+
|
|
80
|
+
> Nous affichons les deux colonnes. Un catalogue qui annoncerait 100 % d'éprouvé mentirait ; celui
|
|
81
|
+
> qui annoncerait 0 % ne vaudrait rien.
|
|
82
|
+
|
|
83
|
+
## Où il s'arrête
|
|
84
|
+
|
|
85
|
+
| besoin | module |
|
|
86
|
+
|---|---|
|
|
87
|
+
| résoudre | [`@mostajs/ro-pla`](https://npmjs.com/package/@mostajs/ro-pla) — 23 dialectes, 12 familles |
|
|
88
|
+
| valider le plan projeté | [`@mostajs/qa-engine`](https://npmjs.com/package/@mostajs/qa-engine) |
|
|
89
|
+
| mémoriser l'efficacité et le retour d'usage | [`@mostajs/skill-library`](https://npmjs.com/package/@mostajs/skill-library) |
|
|
90
|
+
| activer une question sous condition de données | [`@mostajs/assistant-pilote`](https://npmjs.com/package/@mostajs/assistant-pilote) |
|
|
91
|
+
| **persister les fiches** | **personne** — ce sont des fichiers versionnés |
|
|
92
|
+
|
|
93
|
+
**Pourquoi pas une base ?** Une fiche est un document éditorial : elle se lit, se discute, se relit
|
|
94
|
+
six mois plus tard. Son historique est celui d'un fichier. Ce qui va en base, c'est ce que produit
|
|
95
|
+
son **usage** — et la fiche se relit quand le journal, lui, s'entasse.
|
|
96
|
+
|
|
97
|
+
## Documentation
|
|
98
|
+
|
|
99
|
+
`docs/` porte les 17 livrables DEVRULES : état de l'art, audit, plan de développement, plan de test,
|
|
100
|
+
revue de sécurité, DPIA, matrice de sourcing, documents et présentations.
|
|
101
|
+
|
|
102
|
+
⚠️ **Charger un corpus, c'est exécuter du code** : une fiche est un module JavaScript. Une fiche se
|
|
103
|
+
revoit **comme du code**, jamais comme un document — voir `docs/15-REVUE-SECURITE-KIND-CATALOG.md`.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# `@mostajs/kind-catalog` — Étape inaugurale (DEVRULES §⓪)
|
|
2
|
+
|
|
3
|
+
**Auteur** : Dr Hamid MADANI <drmdh@msn.com> · **Date** : 2026-09-02
|
|
4
|
+
|
|
5
|
+
> *Tant que ces 5 questions n'ont pas de réponse écrite, la spécification n'est pas réputée lue et
|
|
6
|
+
> aucun code métier ne démarre.* — DEVRULES §⓪.A
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## ⓪.A · Les 5 questions
|
|
11
|
+
|
|
12
|
+
### 1 · Quel est le problème métier exact ?
|
|
13
|
+
|
|
14
|
+
**Les exigences se réécrivent à chaque projet, et les erreurs se réapprennent à chaque projet.**
|
|
15
|
+
|
|
16
|
+
Constat mesuré dans cette seule session (01-02/09/2026), sur ATC et RestoTrax :
|
|
17
|
+
|
|
18
|
+
| défaut trouvé | où il vivait | est-il propre à l'application ? |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| une permission ouvrait une capacité, jamais un périmètre | ATC (3 écrans), RestoTrax | **non** — tout logiciel à rôles |
|
|
21
|
+
| une note enregistrée sans son niveau, découverte 12 écrans plus loin | ATC | **non** — toute chaîne écran → service |
|
|
22
|
+
| relire un acquis l'effaçait | `@mostajs/elearning` | **non** — toute progression |
|
|
23
|
+
| une écriture hors application, écrasée sans erreur (sqljs) | ATC | **non** — tout stockage à image mémoire |
|
|
24
|
+
| corriger un champ en écrasait un autre par `undefined` | `@mostajs/coaching` | **non** — toute mise à jour partielle |
|
|
25
|
+
|
|
26
|
+
Chacun a coûté une recette. Aucun n'était nouveau. **Rien ne les attendait dans le projet suivant.**
|
|
27
|
+
|
|
28
|
+
Le besoin est donc : **un catalogue de fiches d'exigence réutilisables**, portant la question, ce
|
|
29
|
+
qu'il faut pour y répondre, comment on l'éprouve, à quoi on reconnaît une bonne réponse, et
|
|
30
|
+
**surtout les façons connues de se tromper** — réutilisables ou affinables par toute application,
|
|
31
|
+
passée comme future, et **lisibles par qatrax**.
|
|
32
|
+
|
|
33
|
+
### 2 · Quelles sont les meilleures solutions mondiales ?
|
|
34
|
+
|
|
35
|
+
Développé au livrable **#1** (`ETUDE-ETAT-ART-KIND-CATALOG-02092026.md`). En résumé : le domaine
|
|
36
|
+
existe et il est mûr — patrons d'exigences (Withall), syntaxe contrainte (EARS), norme de
|
|
37
|
+
spécification (ISO/IEC/IEEE 29148), catalogues d'erreurs connues (CWE, OWASP, ATT&CK), décisions
|
|
38
|
+
d'architecture (ADR), raisonnement à partir de cas (Aamodt & Plaza), sélection d'algorithme (Rice).
|
|
39
|
+
**Ce qui n'existe nulle part, c'est leur JOINTURE** : un catalogue qui porte à la fois l'exigence,
|
|
40
|
+
son épreuve et son mode de défaillance, et qui se PROJETTE dans l'outil de suivi.
|
|
41
|
+
|
|
42
|
+
### 3 · Quels autres métiers utilisent déjà cette logique ?
|
|
43
|
+
|
|
44
|
+
- **Sécurité** : CWE/CAPEC/ATT&CK — des catalogues de **façons de se tromper**, avec conséquence,
|
|
45
|
+
réutilisés par tous les projets du monde. C'est le modèle le plus proche du champ `erreurs`.
|
|
46
|
+
- **Aéronautique et médical** : ARP4761, ISO 14971 — l'analyse de risque est **cataloguée**, pas
|
|
47
|
+
refaite ; on part d'une liste de modes de défaillance connus.
|
|
48
|
+
- **Recherche opérationnelle** : OR-Library, MIPLIB — des **jeux d'épreuve** catalogués auxquels
|
|
49
|
+
on confronte tout nouveau solveur.
|
|
50
|
+
- **Agronomie** : les itinéraires techniques sont des fiches réutilisées d'une parcelle à l'autre,
|
|
51
|
+
affinées localement — **exactement** le geste « réutiliser ou affiner » demandé.
|
|
52
|
+
- **Électronique** : les *application notes* et les *design rules* d'un fondeur sont un catalogue
|
|
53
|
+
de contraintes réutilisables, avec leurs pièges nommés.
|
|
54
|
+
|
|
55
|
+
### 4 · Quels modules MostaJS couvrent déjà le besoin ?
|
|
56
|
+
|
|
57
|
+
Développé au livrable **#2**. Aucun ne le couvre ; deux le bordent :
|
|
58
|
+
|
|
59
|
+
| module | ce qu'il porte | frontière |
|
|
60
|
+
|---|---|---|
|
|
61
|
+
| `@mostajs/qa-engine` | le format `mostajs-devtest/1`, sa validation, son import | **plan d'une application**, pas catalogue partagé |
|
|
62
|
+
| `@mostajs/skill-library` | recettes de résolution, indice d'efficacité, retour humain | *comment bien résoudre*, pas *si la question mérite d'être posée* |
|
|
63
|
+
| `@mostajs/ro-pla` | 23 dialectes, 12 `kind` **techniques** | type de problème mathématique, pas exigence métier |
|
|
64
|
+
|
|
65
|
+
### 5 · Quels sont les véritables écarts à développer ?
|
|
66
|
+
|
|
67
|
+
1. La **fiche** elle-même : `enonce`, `besoins`, `utilisation`, `test`, `succes`, `erreurs`,
|
|
68
|
+
`efficacite`, `evaluation`, `verdict`.
|
|
69
|
+
2. La **projection** vers `mostajs-devtest/1` — pour que qatrax lise sans rien apprendre.
|
|
70
|
+
3. L'**instanciation tracée** — réutiliser ou affiner, en sachant qui a affiné quoi.
|
|
71
|
+
|
|
72
|
+
Tout le reste est **composé** : la conformité du plan projeté vient de `qa-engine`, l'efficacité et
|
|
73
|
+
le retour d'usage viennent de `skill-library`, les moteurs viennent de `ro-pla`.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## ⓪.1 · Décomposition en besoins précis
|
|
78
|
+
|
|
79
|
+
| # | Besoin précis | Cas | Couverture |
|
|
80
|
+
|---|---|---|---|
|
|
81
|
+
| B1 | Décrire une exigence réutilisable, indépendante d'une application | **C** | à créer |
|
|
82
|
+
| B2 | Refuser une fiche inutilisable (sans critère de succès, sans erreur connue) | **C** | à créer |
|
|
83
|
+
| B3 | Projeter une fiche en exigences + essais lisibles par qatrax | **A** | `@mostajs/qa-engine` (`./devtest`) — on produit sa forme, il la valide |
|
|
84
|
+
| B4 | Instancier une fiche dans une application, en traçant l'affinage | **C** | à créer |
|
|
85
|
+
| B5 | Savoir quelles applications emploient une fiche | **C** | à créer (dérivé de B4) |
|
|
86
|
+
| B6 | Mémoriser l'efficacité d'une résolution et le retour d'usage | **A** | `@mostajs/skill-library` |
|
|
87
|
+
| B7 | Choisir le moteur qui répond à une question | **A** | `@mostajs/ro-pla` (`pickBest`) |
|
|
88
|
+
| B8 | Activer une question sous condition de données | **A** | `@mostajs/assistant-pilote` |
|
|
89
|
+
| B9 | Persister les fiches | — | **hors périmètre** : ce sont des fichiers versionnés (cf. #3) |
|
|
90
|
+
|
|
91
|
+
## ⓪.2 · Modules existants réutilisables (cas A/B)
|
|
92
|
+
|
|
93
|
+
`qa-engine` (B3) · `skill-library` (B6) · `ro-pla` (B7) · `assistant-pilote` (B8). **Aucun n'est
|
|
94
|
+
étendu** : tous sont composés en l'état.
|
|
95
|
+
|
|
96
|
+
## ⓪.3 · Modules à créer (cas C)
|
|
97
|
+
|
|
98
|
+
**Un seul** : `@mostajs/kind-catalog` — B1, B2, B4, B5.
|
|
99
|
+
|
|
100
|
+
**Emplacement** : `mostajs/mosta-optimization-stack/`, aux côtés de `ro-pla`
|
|
101
|
+
*(décision du 02/09/2026 : « sa place est avec les ro-pla »)*.
|
|
102
|
+
|
|
103
|
+
**Couche** : **N1** — générique transverse. Il ne dépend que de `qa-engine` (N1) pour la conformité
|
|
104
|
+
de ce qu'il projette. Aucun domaine, aucune UI, aucun stockage : la règle de dépendance
|
|
105
|
+
descendante (§5.bis) est respectée.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Prompt d'image — l'OBJECTIF de `@mostajs/kind-catalog`
|
|
2
|
+
|
|
3
|
+
**Livrable #3.bis** (DEVRULES §9) · **Auteur** : Dr Hamid MADANI <drmdh@msn.com> · **Date** : 2026-09-02
|
|
4
|
+
|
|
5
|
+
> Le **#3.bis** illustre la **cible planifiée**, et se valide **avant d'écrire le code**. Le **#14**
|
|
6
|
+
> illustrera le **résultat livré**. Les deux se comparent en fin de cycle : l'écart entre les deux
|
|
7
|
+
> images est la mesure honnête de ce qui a dérivé.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 1 · Ce que l'image doit faire comprendre en dix secondes
|
|
12
|
+
|
|
13
|
+
Un lecteur qui ne connaît pas le module doit sortir de l'image avec **quatre idées** :
|
|
14
|
+
|
|
15
|
+
1. **Une fiche naît d'un incident**, pas d'une idée.
|
|
16
|
+
2. **Elle se réutilise ou s'affine** — et l'affinage est **tracé**, jamais implicite.
|
|
17
|
+
3. **Elle descend dans le plan de test du projet** : sans cela elle ne serait jamais appliquée.
|
|
18
|
+
4. **Le module ne calcule rien et ne range rien** — il décrit, valide, projette.
|
|
19
|
+
|
|
20
|
+
Si l'image laisse croire que le module *exécute* ou *stocke*, elle est ratée.
|
|
21
|
+
|
|
22
|
+
## 2 · La composition
|
|
23
|
+
|
|
24
|
+
**Format** : 16:9, paysage, fond clair, style schéma technique sobre — **pas** d'illustration
|
|
25
|
+
métaphorique, pas de robot, pas de cerveau, pas d'ampoule.
|
|
26
|
+
|
|
27
|
+
**Un flux de gauche à droite, en quatre stations reliées par des flèches pleines :**
|
|
28
|
+
|
|
29
|
+
| station | ce qu'on voit | libellé |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| **1. L'INCIDENT** | un extrait de journal d'exécution avec une ligne en rouge sombre | « un défaut trouvé en recette » |
|
|
32
|
+
| **2. LA FICHE** | une carte-document à cases visibles : énoncé · besoins · succès · **erreurs** (case plus haute, mise en évidence) · épreuve · verdict | « KIND-… — écrite une fois » |
|
|
33
|
+
| **3. LA PROJECTION** | la fiche se dédouble en deux blocs — `exigences` et `essais` — portant la marque `mostajs-devtest/1` | « lue par qatrax, sans rien lui apprendre » |
|
|
34
|
+
| **4. LES APPLICATIONS** | trois écrans distincts (ATC, RestoTrax, un troisième vierge marqué « le prochain ») recevant chacun la même fiche | « réutilisée » |
|
|
35
|
+
|
|
36
|
+
**Sous la station 4**, une flèche de RETOUR remonte vers la station 2, plus fine, en pointillés,
|
|
37
|
+
portant le libellé : **« l'écart tracé — ce que cette application a dû affiner »**. C'est la boucle
|
|
38
|
+
qui fait vivre le catalogue ; elle doit être visible mais secondaire.
|
|
39
|
+
|
|
40
|
+
**En bas, une bande de domaines** (pastilles) : `acces` · `donnees` · `apprentissage` · `decision`
|
|
41
|
+
· `btp` · `alimentaire` · `elevage` · `agronomie` · `electronique`. Les quatre premières pleines
|
|
42
|
+
(éprouvées), les cinq dernières en contour seul (déclarées, à instruire) — **la distinction doit
|
|
43
|
+
se voir**.
|
|
44
|
+
|
|
45
|
+
**En marge droite, deux boîtes grisées, hors du flux**, reliées par des traits fins :
|
|
46
|
+
`@mostajs/ro-pla` (« les moteurs ») et `@mostajs/skill-library` (« l'efficacité mesurée »), avec la
|
|
47
|
+
mention **« composés — pas réécrits »**.
|
|
48
|
+
|
|
49
|
+
## 3 · Ce que l'image ne doit PAS montrer
|
|
50
|
+
|
|
51
|
+
- **Aucune base de données** en station 2 : les fiches sont des **fichiers versionnés**. Un cylindre
|
|
52
|
+
de base à cet endroit contredirait la décision structurante du plan (#3 §3).
|
|
53
|
+
- **Aucun engrenage ni flèche circulaire** autour du module : il **n'exécute rien**.
|
|
54
|
+
- **Aucun classement hiérarchique** des fiches (arbre, taxonomie) : le graphe de relations est
|
|
55
|
+
explicitement **hors périmètre de la 0.1.0**.
|
|
56
|
+
- **Aucun logo, aucune marque, aucun visage.**
|
|
57
|
+
|
|
58
|
+
## 4 · Le prompt
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
Schéma technique 16:9, fond blanc cassé, style diagramme d'architecture logicielle sobre,
|
|
62
|
+
traits fins, palette restreinte : gris ardoise, un bleu profond pour le flux principal,
|
|
63
|
+
un rouge sombre réservé aux erreurs. Typographie sans-serif, étiquettes courtes.
|
|
64
|
+
|
|
65
|
+
Flux horizontal de gauche à droite en quatre stations reliées par des flèches pleines :
|
|
66
|
+
(1) un extrait de journal d'exécution, une ligne surlignée en rouge sombre, légende
|
|
67
|
+
« un défaut trouvé en recette » ;
|
|
68
|
+
(2) une carte-document aux cases visibles — énoncé, besoins, succès, ERREURS (case plus
|
|
69
|
+
haute et bordée de rouge sombre), épreuve, verdict — légende « KIND — écrite une fois » ;
|
|
70
|
+
(3) la carte se dédouble en deux blocs étiquetés « exigences » et « essais », marqués
|
|
71
|
+
« mostajs-devtest/1 », légende « lue par l'outil de suivi, sans rien lui apprendre » ;
|
|
72
|
+
(4) trois fenêtres d'application alignées, la troisième vide et marquée « le prochain »,
|
|
73
|
+
recevant chacune la même carte, légende « réutilisée ».
|
|
74
|
+
|
|
75
|
+
Une flèche de retour fine, en pointillés, remonte de (4) vers (2), étiquetée
|
|
76
|
+
« l'écart tracé — ce que cette application a affiné ».
|
|
77
|
+
|
|
78
|
+
Bande inférieure de pastilles de domaines : quatre pleines (accès, données, apprentissage,
|
|
79
|
+
décision) puis cinq en contour seul (BTP, alimentaire, élevage, agronomie, électronique).
|
|
80
|
+
|
|
81
|
+
Marge droite, hors du flux, deux boîtes grisées reliées par des traits fins :
|
|
82
|
+
« ro-pla — les moteurs » et « skill-library — l'efficacité mesurée », sous-titre
|
|
83
|
+
« composés, pas réécrits ».
|
|
84
|
+
|
|
85
|
+
Pas de cylindre de base de données, pas d'engrenage, pas de flèche circulaire autour du
|
|
86
|
+
module, pas d'arbre de classement, pas de logo, pas de visage, pas de métaphore.
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## 5 · Critère de validation
|
|
90
|
+
|
|
91
|
+
L'image est acceptée si un lecteur qui ne connaît pas le module répond juste à ces trois
|
|
92
|
+
questions, sans autre indication :
|
|
93
|
+
|
|
94
|
+
1. *D'où vient une fiche ?* → d'un incident.
|
|
95
|
+
2. *Que devient-elle quand une application s'en sert ?* → elle descend dans son plan de test, et ce
|
|
96
|
+
qu'on affine remonte.
|
|
97
|
+
3. *Le module calcule-t-il quelque chose ?* → non.
|
|
98
|
+
|
|
99
|
+
Si la troisième réponse est « oui » ou « je ne sais pas », **l'image est refaite**.
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# Matrice de sourcing — d'où vient le contenu du catalogue
|
|
2
|
+
|
|
3
|
+
**Annexe au livrable #9** (plan de publication) · **Auteur** : Dr Hamid MADANI <drmdh@msn.com>
|
|
4
|
+
**Date** : 2026-09-02 · **Module** : `@mostajs/kind-catalog` 0.1.0
|
|
5
|
+
|
|
6
|
+
> **À quoi sert ce document.** Un catalogue publié sous licence libre expose son contenu au monde
|
|
7
|
+
> entier, de façon permanente. La question « d'où vient votre contenu ? » sera posée — par un
|
|
8
|
+
> investisseur, par un client, éventuellement par un ayant droit. Ce document y répond **avant**
|
|
9
|
+
> qu'elle soit posée, corpus par corpus.
|
|
10
|
+
>
|
|
11
|
+
> ⚠️ **Ce n'est pas un avis juridique.** L'auteur n'est pas juriste. Les régimes indiqués sont ceux
|
|
12
|
+
> que l'on croit applicables ; ils sont marqués **à vérifier** tant qu'ils ne l'ont pas été auprès
|
|
13
|
+
> d'un conseil, dans la juridiction de l'éditeur. Le module exige une provenance déclarée pour
|
|
14
|
+
> chaque fiche ; ce document s'applique à lui-même la même exigence.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 1 · Le principe qui commande tout le reste
|
|
19
|
+
|
|
20
|
+
**Le droit d'auteur protège l'EXPRESSION, pas les IDÉES ni les FAITS.**
|
|
21
|
+
|
|
22
|
+
| on peut | on ne peut pas |
|
|
23
|
+
|---|---|
|
|
24
|
+
| lire un ouvrage et écrire **ses** fiches ensuite | reprendre ses formulations, même reformulées de près |
|
|
25
|
+
| traiter des **mêmes sujets** — le territoire est commun | recopier gabarits, tableaux, exemples |
|
|
26
|
+
| **citer** l'ouvrage comme antériorité | reproduire la **sélection et l'agencement** de son catalogue |
|
|
27
|
+
| s'appuyer sur un **résultat** scientifique (c'est un fait) | recopier le **texte** ou les **figures** qui l'exposent |
|
|
28
|
+
|
|
29
|
+
⚠️ **Le piège réel est la compilation.** Un catalogue est protégé *en tant que liste et ordre*.
|
|
30
|
+
« Nous couvrons le même terrain parce que le terrain est le même » se défend. « Une fiche par
|
|
31
|
+
patron de l'ouvrage X, dans son ordre » ne se défend pas.
|
|
32
|
+
|
|
33
|
+
⚠️ **Notre exposition est maximale** : AGPL, publié sur npm, mondial et permanent. Ce n'est pas le
|
|
34
|
+
contexte où l'on prend une marge d'appréciation.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 2 · La matrice
|
|
39
|
+
|
|
40
|
+
### A · Corpus LIBRES — le gisement principal
|
|
41
|
+
|
|
42
|
+
| corpus | régime **présumé** | ce qu'on en tire | attribution exigée | statut |
|
|
43
|
+
|---|---|---|---|---|
|
|
44
|
+
| **CWE** (MITRE) | libre avec attribution | le **gabarit** de notre champ `erreurs` : une faiblesse, sa **conséquence**, sa détection. Le modèle le plus proche de notre besoin | « CWE™ — MITRE Corporation », mention de la version | **à vérifier** |
|
|
45
|
+
| **CAPEC** (MITRE) | idem CWE | schémas d'abus, côté attaquant | idem | **à vérifier** |
|
|
46
|
+
| **ATT&CK** (MITRE) | idem CWE | la **méthode** : ne consigner que l'observé | idem | **à vérifier** |
|
|
47
|
+
| **OWASP** | Creative Commons — souvent **BY-SA** | erreurs les plus fréquentes, déjà hiérarchisées | attribution **+ partage à l'identique** | ⚠️ **à vérifier — voir §3** |
|
|
48
|
+
| **NIST** (publications fédérales US) | domaine public aux États-Unis pour les œuvres du gouvernement | méthode, vocabulaire, RBAC | mention de la publication | **à vérifier** |
|
|
49
|
+
| **Codex Alimentarius / HACCP** (FAO-OMS) | diffusion large voulue ; conditions FAO à confirmer | dangers, limites critiques, **actions correctives** — un catalogue d'erreurs **actionnable** | « Codex Alimentarius, FAO/OMS » | **à vérifier** |
|
|
50
|
+
|
|
51
|
+
### B · Littérature scientifique — les FAITS sont libres, le texte ne l'est pas
|
|
52
|
+
|
|
53
|
+
| source | ce qu'on prend | ce qu'on ne prend pas |
|
|
54
|
+
|---|---|---|
|
|
55
|
+
| Stigler 1945 — *The Cost of Subsistence* | **le problème** (composer une ration au moindre coût sous contraintes) et ses pièges connus | le texte, les tableaux, les chiffres de l'article |
|
|
56
|
+
| Dantzig — simplexe | **la méthode**, publiée et enseignée | toute rédaction empruntée |
|
|
57
|
+
| Rice 1976 — sélection d'algorithme | **le cadre** : choisir d'après la signature du problème | idem |
|
|
58
|
+
| Aamodt & Plaza 1994 — raisonnement par cas | **le cycle** retrouver/réutiliser/réviser/retenir | idem |
|
|
59
|
+
| Mavin *et al.* — EARS | **l'idée** d'une syntaxe contrainte (que nous avons d'ailleurs **écartée**) | les cinq gabarits, mot pour mot |
|
|
60
|
+
|
|
61
|
+
> Une méthode mathématique publiée n'appartient à personne. Sa **rédaction**, si.
|
|
62
|
+
|
|
63
|
+
### C · Ouvrages commerciaux — lecture, jamais matière
|
|
64
|
+
|
|
65
|
+
| ouvrage | usage autorisé | usage interdit | statut |
|
|
66
|
+
|---|---|---|---|
|
|
67
|
+
| **Withall, *Software Requirement Patterns*, Microsoft Press, 2007** | **le lire**. Le citer comme antériorité. **Contrôler notre couverture** : s'il traite une catégorie que nos dix domaines ignorent, c'est une information gratuite | recopier ou paraphraser de près ses patrons, ses gabarits, ses « considérations » ; publier une correspondance 1:1 avec son catalogue | **achat, puis lecture — aucune reprise** |
|
|
68
|
+
|
|
69
|
+
⚠️ **Règle d'écriture, et elle est plus efficace que toute précaution juridique** :
|
|
70
|
+
**ne jamais ouvrir le livre en écrivant une fiche.** On paraphrase sans s'en apercevoir. Lire
|
|
71
|
+
d'abord, refermer, écrire ensuite depuis nos incidents et nos sources libres.
|
|
72
|
+
|
|
73
|
+
> **Ce qui nous protège le mieux est structurel** : notre fiche exige `succes`, `erreurs` **avec
|
|
74
|
+
> conséquence**, `origine` et `verdict`, et elle **se projette** en plan de test. **Aucune de ces
|
|
75
|
+
> quatre choses n'existe chez lui.** Le dérivé ne ressemble pas à la source, et cela se voit à
|
|
76
|
+
> l'œil nu.
|
|
77
|
+
|
|
78
|
+
### D · Normes et documents professionnels PAYANTS
|
|
79
|
+
|
|
80
|
+
| corpus | régime | usage | statut |
|
|
81
|
+
|---|---|---|---|
|
|
82
|
+
| **ISO/IEC/IEEE 29148, 29119** | payant, protégé | **citer par numéro et par clause**. Jamais reproduire le texte | **acquis nécessaire si l'on veut s'y conformer** |
|
|
83
|
+
| **NF DTU** (AFNOR) | payant, protégé | idem : citer la référence, jamais le contenu | **à vérifier avant toute fiche `btp`** |
|
|
84
|
+
| **CCTG / CCTP** (marchés) | selon l'émetteur | souvent publics ; **vérifier au cas par cas** | **à vérifier** |
|
|
85
|
+
| **ISO 14971, ARP4761** | payant | citation de référence seulement | **à vérifier** |
|
|
86
|
+
|
|
87
|
+
⚠️ **Le domaine `btp` est le plus exposé** : son corpus de référence est majoritairement payant et
|
|
88
|
+
protégé. Les fiches BTP doivent donc être écrites **depuis le terrain**, pas depuis les documents.
|
|
89
|
+
|
|
90
|
+
### E · Documentation technique de fabricants — au cas par cas
|
|
91
|
+
|
|
92
|
+
*Design rules*, notes d'application, tables de rationnement, guides de bonnes pratiques :
|
|
93
|
+
**chacun porte ses propres conditions**. Beaucoup autorisent la citation, peu la reproduction.
|
|
94
|
+
**À vérifier fiche par fiche**, et à défaut de certitude : **écrire depuis le terrain**.
|
|
95
|
+
|
|
96
|
+
### F · NOS incidents — le seul gisement qui ne se copie pas
|
|
97
|
+
|
|
98
|
+
| source | régime | valeur |
|
|
99
|
+
|---|---|---|
|
|
100
|
+
| défauts constatés en production (ATC, RestoTrax) | **nôtre** | les **6 fiches éprouvées** du corpus |
|
|
101
|
+
| entretiens de praticiens (`terrain`) | **nôtre**, sous réserve du #16 | à venir |
|
|
102
|
+
|
|
103
|
+
> **C'est l'actif.** Un solveur se copie en un trimestre ; une erreur payée en incident, non.
|
|
104
|
+
> Et c'est le seul gisement dont la réutilisation ne pose aucune question.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 3 · ⚠️ Le cas OWASP — le partage à l'identique
|
|
109
|
+
|
|
110
|
+
Une bonne partie du contenu OWASP est diffusée sous **Creative Commons BY-SA**. La clause de
|
|
111
|
+
**partage à l'identique** est contaminante pour les **œuvres dérivées** : un document qui reprend
|
|
112
|
+
substantiellement du contenu BY-SA doit être rediffusé sous la même licence.
|
|
113
|
+
|
|
114
|
+
| ce qu'on fait | risque |
|
|
115
|
+
|---|---|
|
|
116
|
+
| s'inspirer de la **méthode** (hiérarchiser par fréquence) | **nul** — une méthode n'est pas une œuvre |
|
|
117
|
+
| citer une entrée du Top 10 par son identifiant | **nul** — citation courte, attribuée |
|
|
118
|
+
| **reprendre le texte descriptif** d'une entrée dans une fiche | **réel** — la fiche, voire le corpus, deviendrait BY-SA |
|
|
119
|
+
|
|
120
|
+
**Décision retenue : aucun texte OWASP n'entre dans une fiche.** On y puise des sujets et une
|
|
121
|
+
méthode, jamais des phrases. Le code reste AGPL, la documentation reste nôtre.
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 4 · Comment écrire l'`origine` selon la source
|
|
126
|
+
|
|
127
|
+
Le module exige une provenance déclarée. Voici la forme, par cas :
|
|
128
|
+
|
|
129
|
+
```js
|
|
130
|
+
// corpus libre — nommer le corpus ET la version
|
|
131
|
+
origine: [{ type: 'reference', source: 'CWE-639 (MITRE, CWE 4.x) — contrôle d’accès par référence d’objet' }]
|
|
132
|
+
|
|
133
|
+
// littérature — le FAIT, avec sa paternité
|
|
134
|
+
origine: [{ type: 'reference', source: 'Problème du régime (Stigler 1945 ; résolu par le simplexe de Dantzig)' }]
|
|
135
|
+
|
|
136
|
+
// norme payante — référence SEULE, jamais le contenu
|
|
137
|
+
origine: [{ type: 'reference', source: 'ISO/IEC/IEEE 29148 — attribut de vérifiabilité (référencé, non reproduit)' }]
|
|
138
|
+
|
|
139
|
+
// ouvrage commercial — antériorité, sans reprise
|
|
140
|
+
origine: [{ type: 'reference', source: 'Withall, Software Requirement Patterns (2007) — antériorité, aucune reprise de texte' }]
|
|
141
|
+
|
|
142
|
+
// terrain — RÔLE et organisation, JAMAIS le nom (cf. #16 DPIA)
|
|
143
|
+
origine: [{ type: 'terrain', source: 'chef de culture, exploitation X, entretien du 12/09/2026' }]
|
|
144
|
+
|
|
145
|
+
// incident — fichier et date VÉRIFIABLES dans le dépôt
|
|
146
|
+
origine: [{ type: 'incident', source: 'ATC — presence.mjs, portail.mjs (3 emplois)', date: '2026-09-01' }]
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## 5 · Contrôle de revue — à passer sur toute fiche nouvelle
|
|
152
|
+
|
|
153
|
+
| # | question | si non |
|
|
154
|
+
|---|---|---|
|
|
155
|
+
| 1 | La fiche a-t-elle été écrite **livre fermé** ? | réécrire de mémoire, sans la source ouverte |
|
|
156
|
+
| 2 | Une phrase pourrait-elle être retrouvée dans la source par recherche textuelle ? | reformuler entièrement |
|
|
157
|
+
| 3 | L'`origine` nomme-t-elle le corpus **et sa version** ? | compléter |
|
|
158
|
+
| 4 | Un `terrain` cite-t-il un **rôle**, pas un nom ? | anonymiser (#16) |
|
|
159
|
+
| 5 | Un `incident` cite-t-il un fichier et une date **vérifiables** ? | compléter — sinon rétrograder en `propose` |
|
|
160
|
+
| 6 | La source est-elle **payante ou protégée** ? | ne garder que la **référence**, écrire depuis le terrain |
|
|
161
|
+
| 7 | Le corpus reprend-il la **liste et l'ordre** d'un catalogue existant ? | **arrêter** — c'est le risque de compilation |
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## 6 · Ce qui reste à faire, et qui bloque quoi
|
|
166
|
+
|
|
167
|
+
| # | action | bloque |
|
|
168
|
+
|---|---|---|
|
|
169
|
+
| 1 | **Vérifier les conditions d'utilisation** de CWE/CAPEC/ATT&CK, OWASP, Codex, NIST | l'usage de ces corpus comme matière |
|
|
170
|
+
| 2 | **Vérifier les sources** citées dans #1 et #17 (titres, années, éditeurs) | la **diffusion de l'article** #17 |
|
|
171
|
+
| 3 | Faire relire la question de la **compilation** par un conseil, dans la juridiction de l'éditeur | rien aujourd'hui ; **à faire avant une levée** |
|
|
172
|
+
| 4 | Décider pour le domaine `btp` : acquérir les DTU, ou écrire depuis le terrain | les fiches `btp` au-delà de la première |
|
|
173
|
+
|
|
174
|
+
> **Aucun de ces points ne bloque la publication du paquet** : les 12 fiches actuelles sont soit
|
|
175
|
+
> issues de nos incidents, soit adossées à des faits scientifiques ou à des corpus dont la
|
|
176
|
+
> réutilisation est largement admise, et **aucune ne reprend de texte**.
|