ADR-0192 : Navin Enterprise Agent HSE et conformité, couche produit HSE au-dessus du Control Plane
- Statut : proposé
- Date : 2026-11-04
- Références :
agent_uses_cases/10_Industrie_HSE_Conformite.md,.navin/continuity/DECISIONS.md(identités UC-06 à UC-10, gabarits de 40 caractères au plus, frontend unique), ADR-0176 (modules génériques copiés), ADR-0181 (agent courtier, motif de référence), paquet OPAeai.industrie_hse, contratsindustrie-hse-copilot-eventetindustrie-hse-action-request, gabarit Managernavin-industrie-hse-agent(published: false).
Contexte
Un site industriel veut analyser incidents, inspections et exigences applicables, repérer risques et écarts puis suivre les mesures correctives avec responsables, preuves et validation par les professionnels HSE. Le cahier des charges impose huit modules (risques, incidents, inspections, obligations, analyse des causes, actions, mesures et habilitations, vérification et reporting), trois machines à états explicites côté serveur (incident, inspection, obligation) avec 409 sur toute transition interdite, et des interdits absolus : le modèle ne déclare jamais une conformité, ne clôt jamais un incident ni une action, ne dépose jamais une déclaration réglementaire et n'accorde jamais un permis. Une mesure environnementale est un indicateur, jamais une conclusion.
Décision
- Produit
industrie-hse, dossiernavin-enterprise-industrie-hse/, paquet Pythonnavin_hse, préfixe/api/v1/industrie-hse, ports de développement 3483 / 8482 / 6403, schéma PostgreSQLhse. - Backend FastAPI dérivé par copie des modules génériques de l'agent courtier (gateway d'actions, travaux, worker, session RLS, audit, i18n, observabilité, connecteurs) en ne changeant que le nom du paquet ; seuls les modules métier sont écrits.
- Toute écriture passe par l'Action Gateway (Idempotency-Key, If-Match, maker-checker pour les opérations
sensibles, confirmation de la source EHS/ERP/GMAO, état
unknown_pending_confirmationpuis relecture). Aucun statutclosedlocal d'une action corrective n'est posé sans la confirmation du système source. - Les machines à états sont des données versionnées ; les transitions de clôture et d'efficacité exigent un second humain distinct de l'auteur.
- Une comparaison de mesure à une limite n'est faite que si unité, durée de moyenne et méthode sont équivalentes ;
sinon le résultat est
not_comparable, jamais une conclusion. - Politiques : OPA
eai.industrie_hse(matrice de délégation, opérations à second humain) et types OpenFGA additifs ; pas d'interface propre, le manifeste produit est l'interface du frontend commun. - Le gabarit Manager reste
preparedetpublished: false, jamais écrit sousnavin-manager/catalog.
Conséquences
- Les connecteurs sont exercés en bac à sable déterministe ; aucune confirmation simulée n'est présentée comme celle de la source réelle.
- Les données médicales et l'identité des témoins sont cloisonnées et absentes des tableaux de bord généraux.
- L'extraction ultérieure des modules génériques en bibliothèque commune reste mécanique.