Aller au contenu

Note d'amendement de conception – modules, règles et normes

02/10/2026. Statut : relue par l’équipe le 02/10/2026, décisions AM-01 à AM-17 décidées. Source de rang 0 (EC-088). Identifiants de permission en anglais, préfixés par le code du module (EC-092).

BioTrace est un outil de préparation et de preuve, pas un auditeur. Il enregistre fidèlement ce qui se passe, garde les preuves, signale les écarts et produit le dossier d’audit. L’organisme de certification reste seul juge.

Cette note amende les décisions du Lot 0, du découpage en lots, du plan du Lot 1 et du cahier des charges v1.2. Elle remplace aussi une partie de la note d’analyse critique du même jour : les douze archétypes, les quatre couches de référentiels et le moteur de combinaison sont abandonnés.

Ce qu’elle retient tient en six points :

  1. Quatre familles de règles : les invariants (code figé), les règles de processus (code avec réglages bornés), les grilles de conformité (données) et les documents (modèles).
  2. Cinq vrais invariants seulement. Tout le reste est paramétrable, si le besoin existe.
  3. Un arbre d’activités typé (activités, sous-activités, étapes), chargé par défaut depuis les packs filière. Chaque nœud se paramètre et s’active par organisation, et les activités actives ouvrent les modules.
  4. Des normes juxtaposées, jamais combinées. Chaque norme est une grille de points de contrôle. Être conforme UE et NOP, c’est satisfaire les deux grilles. Seule une courte liste fermée de paramètres se combine, comme l’exige RG-301.
  5. Un seul moteur de règles, volontairement simple : un dictionnaire de données, des points d’accroche, des tables de décision et six issues possibles. Chaque évaluation produit un constat d’écart.
  6. Des procédés exécutés étape par étape, avec des sorties typées : produit, coproduit, sous-produit, rebut, perte.

Les identifiants AM-01 à AM-17 désignent les décisions de cette note. Elles ont été relues par l’équipe le 02/10/2026 et ont le statut « Décidé ».

Ces principes s’ajoutent à ceux du découpage en lots. En cas de conflit, ce sont eux qui s’appliquent.

Code Principe Conséquence
P1 Le programme signale, la personne décide (RG-308, généralisé) On ne bloque que ce qui rendrait le registre faux ou ce qu’un texte interdit sans exception
P2 La complexité est absorbée par l’équipe BioTrace, jamais par l’utilisateur Pas de vocabulaire technique à l’écran (« pack », « table de décision », « point d’accroche ») ; un écran montre seulement ce qui s’applique ici et maintenant
P3 Une norme se juxtapose, elle ne se combine pas Une grille par référentiel ; pas de calcul de priorité entre normes, sauf sur une liste fermée de clés (AM-08)
P4 Le mécanisme est dans le code, le contenu dans les données Une évolution de norme se fait sans code, tant qu’elle porte sur des données connues du dictionnaire
P5 Une règle ne lit que ce que le dictionnaire expose Un besoin nouveau se traduit par l’ajout d’une variable ou d’un indicateur, qui sert ensuite à toutes les normes
P6 On paramètre ce qui varie réellement, pas ce qui pourrait varier Un réglage n’est ajouté que lorsqu’on a constaté deux besoins différents
P7 Chaque écart laisse une trace explicable Toute évaluation qui produit une issue crée un constat : règle, version, source, valeur constatée, valeur attendue
P8 Le hors-ligne reste la contrainte qui tranche Une règle doit pouvoir s’évaluer sur le téléphone ; sinon, elle est marquée « évaluée au serveur » et son issue n’est jamais un rejet du fait saisi

Sur 34 décisions existantes relues, 12 sont maintenues, 20 amendées et 2 remplacées. Aucune décision structurante du Lot 0 n’est remise en cause : partie double, synchronisation, RLS, packages/domain et vecteurs de tests restent tels quels. Les amendements portent sur le paramétrage, les rôles, la qualité biologique et le périmètre du noyau.

Décision existante Source Statut Amendement Réf.
PC-01 Formules dans le code, valeurs dans des règles Paramètres contextuels Maintenu Les formules deviennent les indicateurs du dictionnaire AM-09
PC-02 Catalogue de facteurs fermé Paramètres contextuels Amendé Ajout des facteurs activite, type_etape, nature_sortie, marche_destination AM-09, AM-12
PC-03 Facteurs numériques en classes Paramètres contextuels Maintenu Sans changement –
PC-04 La règle la plus précise l’emporte Paramètres contextuels Maintenu Vaut pour les paramètres ; les tables de décision appliquent toutes les lignes vraies AM-09
PC-05 La couche organisation l’emporte Paramètres contextuels Amendé Vaut pour les clés filière. Une clé citée par une grille ou une table réglementaire est non surchargeable ; l’organisation peut seulement la durcir, dans les bornes AM-06
PC-06 Refus des ambiguïtés à la publication Paramètres contextuels Amendé Étendu aux tables de décision : une ligne sans source, sans issue ou sans date d’effet est refusée AM-09
PC-07 Aucune valeur inventée Paramètres contextuels Maintenu Une variable manquante produit l’issue « à vérifier », jamais une valeur par défaut AM-09
PC-08 Instantané de la règle appliquée Paramètres contextuels Amendé Étendu aux règles évaluées et à leurs constats AM-15
Chaque campagne fige la version du pack Découpage Amendé Le pack filière reste figé par campagne ; grilles et tables réglementaires sont résolues à la date de référence de chaque ligne AM-11
Expressions des packs en CEL (Recommandé, ADR avant le Lot 4) Découpage Amendé ADR avancée au Lot 0, car le moteur de règles en dépend AM-09
Formulaires JSON Schema, éditeur borné Découpage Amendé Étendu : une grille peut ajouter des champs exigés à un registre, par surcouche versionnée AM-06
Front organisé en modules par domaine Découpage Amendé Chaque domaine devient un module activable, avec un manifeste AM-05
Mouvements en partie double Découpage, schéma Maintenu Devient l’invariant I1 ; chaque mouvement de transformation est rattaché à son étape AM-03, AM-12
Rôle technique unique equipe_biotrace Keycloak Amendé Scindé en rédacteur, relecteur, publieur et support. Amendé par EC-099 : trois rôles génériques de l’éditeur, sans séparation des tâches AM-14
Ensembles de permissions par défaut Keycloak Amendé Permissions préfixées par module ; ensembles filtrés selon les modules actifs AM-05
Séparations des tâches figées (droits) Paquet domain Maintenu Restent des règles de processus codées ; RG-304 et RG-305 s’ajoutent à la liste AM-02
QualiteLot : union de quatre états figée Paquet domain Amendé États et ordre définis par référentiel ; l’algorithme d’intersection ne change pas AM-16
expressions : interface réservée Paquet domain Amendé Implémentée au Lot 0 AM-09
Tables pack, pack_version Schéma Amendé Type de pack filiere ou referentiel ; un pack référentiel porte grilles et tables de décision AM-06
EC-011 Tolérance de bilan par produit Écarts Amendé Étendue à l’étape et au procédé AM-12
EC-012 Double validation par auteurs distincts Écarts Maintenu Règle de processus, sans changement AM-02
EC-013 Trois issues d’une commande Écarts Maintenu Une issue « bloquer » évaluée au serveur sur un fait déjà saisi devient « acceptée en file de contrôle » AM-09
EC-015 Intrants dans le bilan Écarts Maintenu Intrants rattachés à l’étape qui les consomme AM-12
EC-024 Certification portée par le certificat Écarts Amendé Le certificat reçoit une portée : activités, produits, sites, unités AM-07
A6 statut_conformite à six états, peutRevendiquer Plan du Lot 1 Amendé États fournis par le référentiel ; peutRevendiquer reste une fonction, paramétrée par ces états AM-16
Producteurs et foncier dans le noyau Plan du Lot 1 Amendé Passent au module Membres et foncier AM-05
Recettes de transformation paramétrables Plan du Lot 1 Remplacé Remplacées par l’arbre d’activités du pack filière (AM-04) AM-12
RG-300 Profil à l’ouverture Cahier v1.2 Maintenu Le profil est un préréglage de l’arbre d’activités AM-04
RG-301 Standards cochés, règle la plus restrictive Cahier v1.2 Amendé Les standards cochés ouvrent des grilles ; « la plus restrictive » ne vaut que pour la liste fermée AM-08 AM-06, AM-08
RG-302 Producteur individuel sans SCI Cahier v1.2 Maintenu Se traduit par le module SCI non activé AM-05
RG-308 Le programme signale, la personne décide Cahier v1.2 Maintenu Fonde l’issue « exiger une note » AM-09
§2.2 Cinq activités élémentaires Cahier v1.2 Amendé Deviennent les regroupements du premier niveau de l’arbre d’activités AM-04
Archétypes, quatre couches, moteur de combinaison Note d’analyse critique Remplacé Remplacés par les grilles juxtaposées et le moteur simple AM-06, AM-09
Pack référentiel, qualification calculée Note d’analyse critique Amendé Pack conservé et simplifié ; la qualification devient un filtre AM-06, AM-07

Les nouvelles décisions AM-01 à AM-17 sont détaillées dans les sections suivantes et récapitulées ici :

Réf. Décision Statut
AM-01 BioTrace prépare et prouve ; il ne certifie pas Décidé
AM-02 Quatre familles de règles Décidé
AM-03 Cinq invariants figés Décidé
AM-04 Arbre d’activités typé : types fermés, instances dans les packs, activation par nœud Décidé
AM-05 Modules activables, avec manifeste et activation datée Décidé
AM-06 Une grille de conformité par référentiel, juxtaposée Décidé
AM-07 Qualification par filtre et portée du certificat Décidé
AM-08 Combinaison limitée à une liste fermée de clés Décidé
AM-09 Moteur de règles par tables de décision Décidé
AM-10 Rayon de lecture d’une règle et évaluation au serveur Décidé
AM-11 Date de référence par ligne réglementaire Décidé
AM-12 Exécution des procédés, sorties typées et suivi par étape Décidé
AM-13 Atelier de publication ; Git en attendant Décidé
AM-14 Rôles de l’équipe BioTrace séparés Décidé
AM-15 Constat d’écart enregistré à chaque issue Décidé
AM-16 États de qualité définis par référentiel Décidé
AM-17 Tri des 957 exigences en quatre familles à l’import Décidé

Les quatre familles de règles et les cinq invariants (AM-02, AM-03)

Section intitulée « Les quatre familles de règles et les cinq invariants (AM-02, AM-03) »

Toute règle de BioTrace appartient à l’une des quatre familles ci-dessous. Lors de chaque ajout, on commence par déterminer sa famille, car c’est elle qui fixe où la règle vit et qui peut la modifier.

Famille Définition Où elle vit Qui la modifie Exemples
Invariants Règles dont la violation rendrait le registre faux Code et contraintes de la base Personne, sauf décision d’architecture Voir le tableau suivant
Règles de processus Comportement propre au produit BioTrace, défini par le cahier Code, avec réglages bornés Le comportement : un développeur, après mise à jour du cahier. Les réglages : la direction ou le RSCI RG-230 (circuit de validation), RG-032 (dévalidation), RG-172 (quarantaine au-delà du seuil), RG-304 et RG-305 (signature et zones), EC-012
Grilles de conformité Ce qu’une norme demande de prouver, et les contrôles qui en découlent Données : packs référentiel Équipe BioTrace Points UE, NOP, CCPB, Naturland
Documents et rapports Ce qui est produit pour un tiers Modèles en données, moteur de génération en code Client (modèles personnalisés, RG-104) et équipe BioTrace Reçu, fiche de transformation, rapport « prêt pour l’audit »
Code Invariant Mise en œuvre actuelle Ce qui reste paramétrable autour
I1 Chaque gramme est compté : toute entrée et toute sortie est un mouvement équilibré, et un écart est un mouvement déclaré Partie double, SB-06, SB-07 Tolérance d’écart, issue en cas de dépassement
I2 Rien ne s’efface : une correction est un nouvel événement, avec son auteur et sa date Ajout seul, journal, SB-04, SB-05, SB-08 Qui peut corriger ou dévalider
I3 Un identifiant officiel est unique et n’est jamais réutilisé Numérotation (EC-009, EC-010) Gabarit affiché (RG-303)
I4 Tout lot a une origine enregistrée Mouvement de création obligatoire Niveau de détail exigé sur l’origine
I5 Un lot en quarantaine ne sort pas tant qu’il y est RG-161 Ce qui déclenche la quarantaine, qui la lève

Sont requalifiées en règles de processus des règles jusque-là présentées comme intangibles : le blocage de la réception sur certificat expiré (RG-014), car le NOP accepte un fournisseur exempté avec preuves renforcées ; la vente limitée aux lots validés (RG-081) ; la séparation des fonctions. Elles restent codées, et leur réglage éventuel passe par une option prévue dans le produit.

  • Les ensembles de permissions : qui crée, valide, dévalide, lève un contrôle (matrice §2.6 du cahier).
  • Les seuils filière dans leurs bornes : humidité, impuretés, tolérances de rendement (moteur de paramètres).
  • Le mode d’issue, quand le cahier laisse le choix : signaler avec une note, ou bloquer.
  • L’activation d’un circuit : pas de circuit de validation pour le producteur individuel (RG-302).
  • Les listes de contrôle du SCI et les modèles de documents.

Activités, modules et activation par organisation (AM-04, AM-05)

Section intitulée « Activités, modules et activation par organisation (AM-04, AM-05) »

L’opérateur déclare ce qu’il fait. BioTrace en déduit les modules à proposer et les grilles qui le concernent. C’est un monolithe modulaire : toutes les tables sont déployées pour tous, et l’activation se fait à l’exécution, par organisation.

Activités élémentaires et étapes de procédé ne forment plus qu’une seule notion : un arbre d’activités. Chaque nœud de l’arbre se déclare, se paramètre et s’active de la même façon, quel que soit son niveau.

Le type est fermé, l’instance est ouverte. Le type de chaque nœud est pris dans un catalogue fermé et versionné, défini par BioTrace : séchage, exportation, fumigation… C’est le type que les normes, les portées de certificat et les modules utilisent. L’instance est définie par le pack filière, par exemple « séchage solaire des noix de cajou », avec ses propres mesures et ses propres seuils. Un pack peut créer autant d’instances qu’il le souhaite, mais jamais de nouveau type.

Niveau Exemple (cajou) Origine
Activité Transformation Catalogue BioTrace
Sous-activité Décorticage Pack filière, typée par le catalogue
Étape Cuisson à la vapeur, décorticage, séchage, dépelliculage, calibrage Pack filière, typée par le catalogue

L’arbre est limité à trois niveaux. Au-delà, il devient illisible pour l’opérateur, et les rendements ne sont plus interprétables par l’auditeur.

Les cinq activités du cahier (§2.2) restent les regroupements affichés à l’écran. Le premier niveau du catalogue les détaille :

Regroupement (cahier) Activités de premier niveau
Production Production végétale, cueillette sauvage, collecte auprès de membres
Achat Achat auprès de tiers, importation
Nettoyage / triage Nettoyage et triage, stockage
Transformation Transformation, conditionnement et étiquetage, sous-traitance
Vente / export Vente nationale, exportation, transport et distribution

Ce que porte chaque nœud, à tous les niveaux :

  • son type et son libellé ;
  • ses entrées, ses sorties typées et ses intrants ;
  • ses mesures, qui entrent dans le dictionnaire de données ;
  • ses paramètres, c’est-à-dire des clés du moteur de paramètres, résolues avec le facteur activite ou type_etape ;
  • ses points d’accroche ;
  • son caractère : obligatoire ou facultatif, critique ou non (OSP-05), sous-traitable ou non ;
  • son ordre parmi ses frères, avec des branches possibles ;
  • les modules qu’il propose, le cas échéant.

L’utilisateur ouvre n’importe quel nœud et voit ses paramètres, avec leur valeur, leur origine (pack ou organisation) et leurs bornes. La présentation est la même au niveau « Transformation » et au niveau « Séchage ».

Chargement et activation

  1. Le pack filière propose un arbre par défaut. Par exemple, le pack cajou charge collecte, séchage, stockage, décorticage et exportation, avec leurs étapes.
  2. À l’ouverture du compte, l’opérateur part de l’arbre du ou des packs choisis. Il décoche ce qu’il ne fait pas, et peut ajouter une activité du catalogue que le pack n’a pas prévue. Le profil (RG-300) n’est qu’un préréglage de cet arbre.
  3. Ensuite, la direction active ou désactive un nœud. Chaque changement est daté, journalisé et motivé, par organisation et, si besoin, par site.
  4. Garde-fous :
    • un nœud obligatoire ou critique ne se désactive pas tant que son parent est actif ;
    • désactiver un nœud désactive ses enfants ;
    • les données passées restent en lecture seule ;
    • les points de grille liés à un nœud désactivé deviennent « non applicables ».
  5. Les paramètres d’un nœud se surchargent dans les bornes du pack (PC-05). Une clé réglementaire ne peut qu’être durcie.

Un seul mécanisme pour trois usages. Les activités actives de premier niveau déterminent les modules proposés. Les nœuds actifs, à tous les niveaux, déterminent les points de grille applicables. Les étapes actives déterminent ce que l’ordre de transformation déroule (AM-12).

Couche Contenu Proposé par
Noyau, toujours actif Organisation et sites, tiers, produits, lots et mouvements, stocks, documents et preuves, traçabilité et rappel, campagnes, référentiels et grilles, file de contrôle, journal, administration –
Membres et foncier Producteurs, groupements, parcelles, cartographie, capacité Production végétale, collecte, cueillette
Collecte Collecte, reçus, agents acheteurs Collecte auprès de membres
SCI Inspections internes, non-conformités, comité, conflits d’intérêts Collecte auprès de membres, si certification de groupe
Planification, intrants et avances, paiements Modules du Lot 4 Collecte auprès de membres
Réception Réception de fournisseurs, contrôle à réception Achat, importation
Préparation Nettoyage, transformation par procédés, laboratoire Nettoyage, transformation
Commercialisation Ventes, exportation (COI, NOP Import Certificate), transport Vente, exportation
EUDR Diligence raisonnée, export GeoJSON Exportation vers l’UE, si le produit est concerné

Chaque module déclare dans le code :

  • son code et les activités qui le proposent ;
  • ses dépendances (SCI → Membres et foncier ; paiements → Collecte) ;
  • ses permissions, préfixées par son code (collection.record, inspection.record, EC-092) ;
  • ses écrans, ses routes d’API et ses commandes hors-ligne ;
  • ses types de mouvements ;
  • ses points d’accroche et les variables qu’il ajoute au dictionnaire (AM-09) ;
  • ses modèles de documents.

Le manifeste pilote quatre filtres : les gardes de l’API et des commandes, les menus, les règles de synchronisation PowerSync, et les permissions proposées dans les ensembles.

  • La table organisation_module enregistre chaque activation et désactivation, avec la date, l’auteur et le motif.
  • La direction active les modules. BioTrace propose ceux qui correspondent aux activités déclarées, sans les imposer.
  • Un module désactivé passe en lecture seule : ses données restent visibles et exportables.
  • On ne peut pas désactiver un module dont dépend un module actif.
  • Un point de grille qui porte sur un module inactif est marqué non applicable, jamais « non conforme ».

Normes : grilles de conformité juxtaposées (AM-06, AM-07, AM-08, AM-11, AM-16)

Section intitulée « Normes : grilles de conformité juxtaposées (AM-06, AM-07, AM-08, AM-11, AM-16) »

Une norme est décrite comme le fait un auditeur : une grille de points de contrôle. Chaque référentiel coché par l’opérateur (UE, NOP, CCPB, Naturland…) ouvre sa grille. Les grilles ne se combinent pas : chacune est évaluée et affichée pour elle-même.

Un pack de type referentiel contient :

  • l’identité du référentiel : code, nature (norme publique, organisme de certification, standard privé), textes sources ;
  • ses états de qualité et leur ordre (AM-16) ;
  • sa grille de points de contrôle ;
  • ses tables de décision (AM-09) ;
  • ses paramètres réglementaires, non surchargeables par l’organisation sauf pour les durcir ;
  • ses surcouches de registres et ses modèles de documents propres ;
  • ses vecteurs de tests.

Un organisme ou un standard privé est un pack comme un autre. Naturland est une grille de plus, pas une couche au-dessus de l’UE. Quand un standard privé renvoie à la norme publique, sa grille ne reprend que ses exigences propres, et l’opérateur coche les deux.

Champ Contenu Exemple
Code et libellé Identifiant stable, libellé lisible CER-39 · Opérations dans la portée du certificat
Source Texte, article, citation courte 7 CFR 205, portée de la certification
Activités concernées Liste d’activités élémentaires Toutes
Objet Ce sur quoi porte le point Opération, lot, site
Preuve attendue Type de pièce ou d’enregistrement Certificat avec portée
Échéance ou fréquence Le cas échéant Annuelle
Mode Automatique (une règle du moteur) ou manuel (coché, avec pièce) Automatique
Dates Date d’effet, date de fin, date de référence (AM-11) Date de l’opération

Un point a cinq statuts possibles par organisation : satisfait, preuve manquante, écart ouvert, à vérifier, non applicable. Le tableau « prêt pour l’audit » les affiche par référentiel et par thème.

Il n’y a pas de calcul de qualification. L’écran affiche les points dont les activités recoupent celles qui sont déclarées. Deux contrôles s’y ajoutent :

  • un écart de portée : une activité déclarée qui n’est pas couverte par la portée du certificat, pour un référentiel coché ;
  • une condition d’éligibilité : la certification de groupe UE, ou les opérations exemptées NOP, exprimées comme des points ordinaires.

Le certificat reçoit pour cela une portée : référentiel, activités, catégories de produits, sites, unités incluses et exclues. Elle s’applique aussi aux fournisseurs et aux clients.

La plupart des cas de « règle la plus restrictive » (RG-301) se règlent d’eux-mêmes : chaque grille applique ses propres seuils. Par exemple, les seuils de taille du groupe n’existent que dans la grille UE. Une combinaison n’est nécessaire que lorsque BioTrace doit calculer une seule valeur pour agir. Ces clés sont listées et codées une par une :

Clé Stratégie Raison
Durée de conservation avant purge Date la plus tardive Une seule purge possible
Taux de ré-inspection et de contrôles non annoncés Valeur la plus haute Un seul programme d’inspection
Taille d’échantillon d’inspection Valeur la plus haute Un seul tirage
Délai de réponse à une demande d’information Délai le plus court Une seule échéance affichée

Ajouter une clé à cette liste est une décision de produit, prise en code, avec ses vecteurs de tests.

  • Le pack filière reste figé par la campagne, comme aujourd’hui. Cela protège les rendements et les calibrations.
  • Chaque point de grille et chaque ligne de table réglementaire porte une date d’effet, une date de fin éventuelle et une date de référence : opération, récolte, création du lot ou émission du certificat. C’est le choix de la date de référence qui exprime une disposition transitoire du texte.
  • Une nouvelle version ne remet jamais en cause une opération passée. Elle peut ouvrir des constats sur l’existant, par exemple sur des lots encore en stock.

Le type QualiteLot, qui fige aujourd’hui quatre états, devient une donnée du référentiel : la liste des états et leur ordre. Par exemple, l’UE définit bio, conversion A2+, conversion A1 et conventionnel. Le NOP a sa propre liste. Les catégories d’étiquetage NOP (100 % organic, organic, made with organic) sont calculées à partir de la composition, par un indicateur du dictionnaire. intersectionQualites et peutRevendiquer gardent leur algorithme, mais lisent l’ordre fourni par le référentiel.

Un seul mécanisme sert aux contrôles des normes, aux points automatiques des grilles et aux seuils filière qui déclenchent une action. Il repose sur quatre éléments : un dictionnaire de données, des points d’accroche, des tables de décision et une liste fermée d’issues. Ce n’est pas un moteur BPMN : il ne dessine ni n’orchestre aucun processus. Il évalue des conditions à des moments définis.

C’est la liste des variables qu’une règle a le droit de lire, avec pour chacune son nom, son type, son unité et sa disponibilité hors-ligne. Les variables ont trois origines :

Origine Exemples Ajout
Noyau lot.quantite_g, lot.qualite[UE], operation.date, fournisseur.certificat.statut, utilisateur.roles Code, par l’équipe de développement
Pack filière etape.mesures.humidite_pm, etape.mesures.temperature_dc, attributs typés du produit Données : toute mesure déclarée par une étape devient une variable
Indicateurs calculés indicateur.rendement_pm, indicateur.pourcentage_bio, indicateur.lignee.qualite_min, indicateur.jours_depuis(evenement) Code, une fois, puis réutilisé partout

Le dictionnaire est généré à partir des manifestes des modules et des packs publiés. Les valeurs suivent la convention du Lot 0 : entiers, grammes, centièmes de point.

Un point d’accroche est un moment où des règles sont évaluées. Chaque module déclare les siens, et chaque étape d’un procédé en hérite automatiquement.

  • reception.avant_validation, collecte.avant_validation
  • etape.avant_validation (pour toute étape de procédé), transformation.avant_cloture
  • vente.avant_expedition, document.avant_emission
  • certificat.changement_statut, campagne.avant_cloture
  • periodique.quotidien, pour les échéances et la surveillance

Chaque ligne d’une table a la forme suivante.

Point d’accroche Contexte (facteurs) Condition Issue Source Date d’effet
Réception, avant validation Produit soja etape.mesures.humidite_pm > param('humidite_max') Quarantaine et non-conformité RG-172 Campagne
Réception, avant validation Référentiel NOP Fournisseur exempté et pièce d’origine absente Bloquer 7 CFR 205.101 Date de l’opération
Étape « mûrissement » NOP, hors fruits tropicaux et agrumes Éthylène utilisé Bloquer TRF-52 Date de l’opération
Clôture de campagne Référentiel UE Surface d’un membre > param('surface_max_membre') Signaler, note exigée RG-301, RG-308 Date de clôture

Règles d’écriture :

  • Le contexte utilise les facteurs existants (produit, référentiel, activité, type d’étape…). La condition utilise les variables du dictionnaire.
  • Les seuils ne sont jamais écrits en dur dans une ligne : la ligne appelle param('…'), résolu par le moteur de paramètres existant. Le seuil se règle donc à un seul endroit.
  • Toutes les lignes vraies s’appliquent. Il n’y a pas de priorité entre lignes : chaque ligne vraie produit son issue et son constat, et l’issue la plus forte détermine ce que l’utilisateur peut faire.
  • Une condition simple (variable, comparaison, valeur) se saisit par formulaire. CEL n’est utilisé que pour une condition composée, avec des vecteurs de tests obligatoires.
  • La table est stockée en données et compilée en CEL, que le téléphone et le serveur évaluent avec la même bibliothèque.

Les six issues, de la plus faible à la plus forte

Section intitulée « Les six issues, de la plus faible à la plus forte »
  1. Signaler : alerte visible, sans action requise.
  2. Exiger une note : l’utilisateur continue après avoir justifié (RG-308).
  3. Exiger une pièce : l’action attend une preuve jointe.
  4. Créer une non-conformité ou une tâche, assignée au RSCI ou à un rôle.
  5. Mettre en quarantaine l’objet (RG-172, invariant I5).
  6. Bloquer l’action : validation, expédition, signature ou émission.

« Bloquer » vise toujours une action, jamais l’enregistrement d’un fait. Une collecte déjà réalisée est toujours enregistrée. Si une règle évaluée au serveur la met en défaut, elle est « acceptée en file de contrôle » (EC-013). Une variable manquante ne produit jamais d’issue silencieuse : elle produit un constat « à vérifier » (PC-07).

Une règle lit l’objet en cours, ses entrées directes, l’étape précédente et les indicateurs de lignée préparés par le noyau. Elle ne parcourt pas librement la base.

Le serveur compile pour chaque organisation un livret de règles : les lignes applicables pour la période, sans le texte inutile au téléphone. Ce livret descend par PowerSync. Une ligne qui a besoin de données absentes du téléphone est marquée « évaluée au serveur » : son issue apparaît à la synchronisation. Chaque commande porte la version du livret, et le serveur réévalue à la synchronisation.

Chaque ligne vraie crée un constat, dans une table en ajout seul. Il contient :

  • la règle, sa version et sa source ;
  • l’objet concerné ;
  • la valeur constatée, la valeur attendue et l’écart ;
  • l’issue ;
  • le statut : ouvert, justifié par une note, levé, clos ;
  • l’auteur et la date de chaque changement de statut.

Les constats alimentent les alertes, la file de contrôle, les points automatiques des grilles et le tableau « prêt pour l’audit ». C’est ainsi que l’application « sait » qu’il y a un écart, et peut expliquer pourquoi.

Exécution des procédés et sorties typées (AM-12)

Section intitulée « Exécution des procédés et sorties typées (AM-12) »

Les « recettes de transformation paramétrables » du Lot 1 sont remplacées par l’arbre d’activités (AM-04). Une sous-activité de transformation, avec ses étapes, joue le rôle de procédé. Cette section décrit comment ce procédé s’exécute, et ce que deviennent ses sorties. Le même modèle sert au nettoyage et au triage, et pourra servir aux cycles de production du pack fruits.

Nature Devient un lot ? Qualité biologique
Produit principal Oui, avec un numéro officiel Héritée des entrées, par intersection
Coproduit Oui, à séquence héritée (RG-303) Héritée
Sous-produit valorisé Oui, s’il est vendu, cédé ou stocké Héritée, et peut être revendiquée
Rebut Non : sortie typée, avec sa destination Sort des flux biologiques
Perte déclarée Non : mouvement de sortie typé Sans objet

Un produit intermédiaire entre deux étapes est un en-cours, sans numéro. Il devient un lot dès qu’il est stocké, change de site ou dépasse la durée paramétrée (TRA-01).

Le bilan matière se vérifie à chaque étape enregistrée et sur l’ensemble du procédé : sorties + pertes ≤ entrées + intrants (EC-015, invariant I1).

Les normes visent des types, pas des étapes précises

Section intitulée « Les normes visent des types, pas des étapes précises »

Une ligne de table réglementaire ne cite jamais l’identifiant d’un nœud d’un pack filière. Elle cite un type du catalogue (AM-04), une nature de sortie ou une catégorie de produit. Ainsi, un nouveau pack filière ne demande pas de réécrire les normes. Exemples : le mûrissement à l’éthylène (TRF-52), une étape critique sans procédure en vigueur (OSP-06), un rebut qui réintègre un flux bio.

  • Un ordre de transformation déroule le procédé. Chaque étape a son statut : à faire, en cours, réalisée, validée.
  • À chaque étape, l’écran montre ses entrées, ses sorties, les mesures à saisir et les constats éventuels, avec leur source.
  • Le niveau de suivi est un réglage de l’organisation, par procédé. En suivi global, une seule saisie couvre tout le procédé. En suivi détaillé, chaque étape a sa saisie. Une étape critique, ou une étape qui produit un lot, est toujours saisie à part.
  • La fiche de transformation montre le rendement par étape et le rendement global, ainsi que la destination de chaque sous-produit et de chaque rebut.
Qui Modifie Ne modifie pas
Rédacteur réglementaire (équipe BioTrace) Grilles, tables de décision, listes, paramètres réglementaires, vecteurs de tests, en brouillon Il ne publie pas
Relecteur expert (équipe BioTrace) Valide le fond et les tests Il ne relit pas son propre brouillon
Publieur (équipe BioTrace) Fixe la date d’effet, publie, notifie les clients Il ne publie rien sans relecture validée
Support (équipe BioTrace) Assiste un client, avec accès journalisé (RG-309) Il ne modifie pas le contenu des packs
Développeur Code : invariants, règles de processus, variables et indicateurs du dictionnaire, points d’accroche, stratégies AM-08 Il ne modifie pas le contenu d’un pack publié
Direction, RSCI (client) Réglages bornés : permissions, seuils dans les bornes, modes d’issue, activation des modules, listes de contrôle du SCI, modèles de documents Ils ne peuvent assouplir aucune règle réglementaire

Le rôle technique equipe_biotrace de Keycloak est scindé en quatre rôles plateforme. La séparation entre rédacteur et relecteur est vérifiée par la base, avec le même mécanisme que EC-012 (AM-14).

Amendé le 02/10/2026 par EC-099 : BioTrace est l’éditeur, et l’on n’audite pas son équipe. Trois rôles génériques du super back-office (editeur_admin, editeur_parametrage, editeur_support), sans séparation des tâches entre eux. Le tableau ci-dessus garde la répartition du travail, pas des contrôles.

Cycle de publication d’un pack référentiel (AM-13)

Section intitulée « Cycle de publication d’un pack référentiel (AM-13) »
  1. Fiche de changement : la source (texte, liste, demande d’un organisme) et la date d’effet prévue.
  2. Brouillon édité par formulaires, avec ses vecteurs de tests.
  3. Validation automatique : facteurs et variables connus, absence d’ambiguïté, une source, une issue et une date de référence par ligne.
  4. Simulation sur les données réelles des organisations concernées. Elle liste les constats que la nouvelle version ouvrirait, client par client.
  5. Relecture par une seconde personne. Pour la grille d’un organisme, la relecture peut inclure l’organisme lui-même.
  6. Publication : la version est figée et une correction passe par une nouvelle version. Le statut « retiré » existe déjà.
  7. Notification : chaque client reçoit une note de changement, avec l’impact sur ses données. La direction ou le RSCI en accuse réception, et cet accusé est journalisé.

En attendant l’atelier, les packs sont écrits dans packs/ du dépôt Git, au même format. L’intégration continue exécute les étapes 3 et 6, et la relecture passe par la revue de code. Quand l’atelier arrive, il devient la source de vérité et Git n’en est plus que le miroir. Il n’y a rien à réécrire, car le format est le même.

Amorçage depuis le registre des exigences (AM-17)

Section intitulée « Amorçage depuis le registre des exigences (AM-17) »

Le registre Excel (957 exigences) est importé une fois, ligne par ligne, en brouillon. Chaque ligne est d’abord triée dans l’une des quatre familles :

  • un point de grille, avec ou sans ligne de table de décision, va dans les données ;
  • une règle de processus va au backlog du produit, puis au cahier ;
  • un invariant est vérifié contre I1 à I5 ;
  • un document va au catalogue des modèles.

Le tri est fait par le rédacteur, puis relu. Il sert aussi d’indicateur : si beaucoup de lignes réclament une variable ou un indicateur absent du dictionnaire, c’est là qu’il faut investir en code. Comme le registre n’a pas encore été vérifié de façon contradictoire, aucune ligne importée n’est publiée sans relecture.

Toutes les nouvelles tables suivent les conventions du Lot 0 : identifiants UUID v7, ajout seul, journalisation, RLS sur organisation_id pour les tables propres à une organisation (EC-022, EC-032). Les tables « globales » sont partagées entre organisations, comme pack aujourd’hui.

Table Portée Contenu Lot
activite Globale Catalogue fermé des types d’activité et d’étape, sur trois niveaux, et regroupements 0
organisation_activite Organisation Activation et désactivation de chaque nœud de l’arbre, à tous les niveaux, par site si besoin : date, auteur, motif 0
module Globale Modules issus des manifestes : code, dépendances 0
organisation_module Organisation Activations et désactivations datées, auteur, motif 0
pack (amendée) Globale Colonne type : filiere ou referentiel 0
variable_dictionnaire Globale Variables générées depuis le code et les packs publiés : nom, type, unité, origine, disponibilité hors-ligne 0
regle_decision Globale Lignes de tables de décision publiées, rattachées à une version de pack 0
constat Organisation Écarts constatés : règle et version, objet, valeurs, issue, statut 0
referentiel (amendée) Globale Nature, états de qualité et leur ordre 1
point_controle Globale Points de grille publiés, rattachés à une version de pack 1
evaluation_point Organisation Statut d’un point pour une organisation, preuves liées, date 1
preuve Organisation Lien entre un fichier, un objet et un point de contrôle 1
certificat_portee Organisation Référentiel, activités, catégories de produits, sites, unités incluses et exclues 1
ordre_transformation Organisation Instance d’un procédé, niveau de suivi 2
etape_realisee Organisation Étape réalisée : statut, mesures, auteur ; référencée par chaque mouvement de l’étape 2

L’arbre par défaut et ses nœuds ne sont pas des tables : ils font partie du contenu JSON d’une version de pack filière, validé par JSON Schema comme le reste des packs.

Le test de catalogue SB-13 s’étend aux nouvelles tables. Trois tests s’ajoutent : une ligne de regle_decision publiée ne peut plus être modifiée (même principe que SB-10) ; un constat ne se modifie que par changement de statut ; un mouvement de transformation sans etape_realisee est refusé lorsque le procédé est en suivi détaillé.

Module Évolution
regles (nouveau) evaluerPoint(accroche, contexte, livret) : sélection des lignes par facteurs et dates, évaluation, liste des issues et des constats ; issueLaPlusForte(issues)
dictionnaire (nouveau) Types des variables, construction du contexte d’évaluation depuis un objet, contrôle des variables manquantes
indicateurs (nouveau) Rendement par étape et global, pourcentage bio d’une composition, agrégats de lignée, délais
combinaison (nouveau) Les stratégies codées de la liste fermée AM-08, clé par clé
modules (nouveau) verifierDependances, moduleActif(organisation, code, date), arbreActif(organisation, site, date), peutDesactiver(noeud)
qualite (amendé) QualiteLot lit les états et l’ordre du référentiel ; algorithme d’intersection inchangé
rendement, bilan (étendus) Contrôle par étape et par procédé
droits (étendu) Ajout de RG-304 et RG-305 aux séparations figées
expressions (implémenté) Bibliothèque CEL retenue par ADR au Lot 0

Chaque nouveau module reçoit ses vecteurs de tests dans testdata/, exécutés à l’identique côté téléphone et côté serveur.

Le jalon Naturland reste tenable à une condition : le Lot 0 ne pose que les structures et le moteur minimal. L’atelier de publication, la simulation et la grille NOP complète passent après le jalon. Le chemin critique ne change pas : protocole de synchronisation (Lot 0), puis son implémentation (Lot 3).

Lot Ajouts et changements Hors du jalon
0 – Socle Tables activite, module, organisation_*, variable_dictionnaire, regle_decision, constat ; type de pack ; manifestes et gardes de modules ; module regles avec ses six issues ; ADR CEL ; permissions préfixées ; rôles plateforme scindés Atelier, simulation
1 – Référentiels Module Membres et foncier sorti du noyau ; états de qualité par référentiel ; certificat_portee ; point_controle, evaluation_point, preuve ; arbre d’activités chargé depuis le pack filière et réglé à l’ouverture du compte (RG-300) –
2 – Flux et preuve Procédés, ordre_transformation, etape_realisee ; points d’accroche réception, étape, vente, document ; constats dans les flux ; fiche de transformation par étape –
3 – Terrain Livret de règles synchronisé ; évaluation locale ; affichage des constats sur le téléphone –
4 – Jalon Naturland Grilles UE et CCPB pour le périmètre du pilote ; grille Naturland si la question Q3 est tranchée en ce sens ; tableau « prêt pour l’audit » ; procédés du pack fruits Grilles complètes
5 – Export et portails Grille NOP ; lignes d’export (IMP-20, IMP-28) ; portail auditeur en lecture des grilles –
6 et 7 Atelier de publication, simulation, notifications aux clients ; tri complet des 957 exigences terminé –
  • Les ajouts au Lot 0 représentent environ une semaine-personne. C’est une estimation à confirmer par l’équipe. Ils doivent être confiés à une autre personne que celle qui porte la synchronisation.
  • Le contenu avance en parallèle du code, sans développeur : le tri du registre et la rédaction des grilles UE et CCPB du pilote commencent dès la première semaine, au format des packs.
  • Les documents du Lot 0 sont à mettre à jour : paramètres contextuels (PC-02, PC-05, PC-08), schéma de base (§4, §8, §9), Keycloak (§6), paquet domain (§3.6, §3.10, §3.11), plan du Lot 1 (A6, référentiels), décisions techniques du découpage (paramétrage, expressions, organisation du front).
  • Q1 – Activités élémentaires. Valider le catalogue des types d’activité et d’étape avec l’organisme de certification, en particulier le stockage, la sous-traitance, le transport et la fumigation.
  • Q2 – Bibliothèque CEL. Choisir la bibliothèque, par une ADR au Lot 0, sur deux critères : un comportement identique dans le navigateur et dans Node, et la taille du paquet sur le téléphone.
  • Q3 – Naturland. Modéliser sa grille dès le jalon, ou seulement après la réponse à l’appel d’offres.
  • Q4 – Rôles plateforme. Désigner, dans l’équipe BioTrace, le rédacteur réglementaire et le relecteur expert, et dire s’il faut un appui extérieur pour le NOP.
  • Q5 – Modes d’issue réglables. Dresser la liste exacte des règles de processus pour lesquelles le client peut choisir entre « signaler avec une note » et « bloquer ».
  • Q6 – Liste AM-08. Confirmer que les quatre clés combinées suffisent. Toute autre clé doit être justifiée par un calcul unique que BioTrace effectue pour agir.
  • Q7 – Cahier v1.3. Reporter dans le cahier les amendements de RG-300, RG-301 et §2.2, ainsi que les règles de processus issues du tri du registre.
  • Q8 – Note d’analyse critique. Marquer comme remplacées ses sections sur les archétypes, les couches et la combinaison, en renvoyant à la présente note.