@mostajs/kind-catalog
v0.4.0
Published
Catalogue de KINDS — fiches d'exigence réutilisables, projetables en plan mostajs-devtest/1 lisible par qatrax. N'exécute rien, ne stocke rien.
Maintainers
Readme
@mostajs/kind-catalog
Auteur : Dr Hamid MADANI [email protected] · AGPL-3.0-or-later · couche N1
Un catalogue de fiches d'exigence réutilisables, qui se projette dans le plan de test du projet. Chaque fiche porte la question d'un métier, ses critères de succès, ses erreurs connues avec leur conséquence, et ses épreuves.
Le module n'exécute rien et ne stocke rien. Il décrit, valide et projette.
npm i @mostajs/kind-catalogPourquoi
Un défaut coûte deux fois : la première pour le trouver, la seconde pour le retrouver dans le projet suivant. La sécurité applicative a réglé cela il y a vingt ans avec CWE — un catalogue d'erreurs connues, chacune portant sa conséquence, nourri par des faits, et branché aux outils. L'ingénierie des exigences n'avait pas son équivalent : le meilleur catalogue de patrons d'exigences existant n'est branché à rien, et il est resté un livre.
Une fiche qui ne descend pas dans le plan de test du projet ne sera pas appliquée, quelle que soit sa qualité.
En trente lignes
import { defineKind, loadCatalogue, toDevtest, instantiate, statsCatalogue } from '@mostajs/kind-catalog';
// 1 · écrire une fiche
export default defineKind({
ref: 'KIND-PERIMETRE-01',
domaine: 'acces',
enonce: 'Une permission ouvre une CAPACITÉ, jamais un PÉRIMÈTRE.',
succes: ['le porteur agit sur les instances qui lui reviennent'], // REQUIS
erreurs: [{ // REQUIS
titre: 'la capacité est prise pour le périmètre',
consequence: 'un parent lit le dossier d’un autre enfant — mêmes droits, rien d’anormal à l’écran',
}],
test: [{ action: 'agir sur l’instance d’un autre', attendu: 'refus, sans nommer l’instance' }],
verdict: 'eprouve',
origine: [{ type: 'incident', source: 'ATC — presence.mjs, portail.mjs', date: '2026-09-01' }], // REQUIS
});
// 2 · la projeter vers l'outil de suivi — AUCUN format nouveau
const kinds = await loadCatalogue('./node_modules/@mostajs/kind-catalog/kinds');
const plan = toDevtest(kinds, { project: { key: 'atc', name: 'ATC' }, prefix: 'ATC' });
// → { plan: 'mostajs-devtest/1', specs[], realisations[], tests[] } lu par @mostajs/qa-engine
// 3 · la reprendre, telle quelle ou AFFINÉE — l'écart est tracé
instantiate(kinds[0], { app: 'ATC', affine: {
succes: { valeur: [...], motif: 'le centre est soumis à un contrôle annuel' }, // MOTIF REQUIS
}});Ce qu'il garantit
| | |
|---|---|
| succes et erreurs sont requis | ce sont les champs qu'on omet, et ceux qui servent |
| 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 |
| 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 |
| un affinage sans motif est refusé | sans lui, « réutiliser » se dégrade en « recopier » |
| une fiche écartée reste | avec son motif : celle qui disparaît sera réinventée |
| aucun format nouveau | la projection est validée par le parseur officiel de @mostajs/qa-engine |
| il n'écrit rien | vérifié contre un dépôt piégé (T-KC-12) |
Le corpus livré
21 fiches · 15 éprouvées (71 %) · 84 erreurs cataloguées · 35 incidents · 11 domaines.
Transverses — acces · donnees · apprentissage · decision · integration — toutes issues de
défauts constatés en production, avec leur date et leur fichier.
Métier — btp · alimentaire · elevage · apiculture · agronomie · electronique — adossées
aux corpus établis de chaque profession (HACCP, itinéraires techniques, problème du régime de
Stigler 1945, CPM/PERT), en propose.
Nous affichons les deux colonnes. Un catalogue qui annoncerait 100 % d'éprouvé mentirait ; celui qui annoncerait 0 % ne vaudrait rien.
Où il s'arrête
| besoin | module |
|---|---|
| résoudre | @mostajs/ro-pla — 23 dialectes, 12 familles |
| valider le plan projeté | @mostajs/qa-engine |
| mémoriser l'efficacité et le retour d'usage | @mostajs/skill-library |
| activer une question sous condition de données | @mostajs/assistant-pilote |
| persister les fiches | personne — ce sont des fichiers versionnés |
Pourquoi pas une base ? Une fiche est un document éditorial : elle se lit, se discute, se relit six mois plus tard. Son historique est celui d'un fichier. Ce qui va en base, c'est ce que produit son usage — et la fiche se relit quand le journal, lui, s'entasse.
Documentation
docs/ porte les 17 livrables DEVRULES : état de l'art, audit, plan de développement, plan de test,
revue de sécurité, DPIA, matrice de sourcing, documents et présentations.
⚠️ Charger un corpus, c'est exécuter du code : une fiche est un module JavaScript. Une fiche se
revoit comme du code, jamais comme un document — voir docs/15-REVUE-SECURITE-KIND-CATALOG.md.
