Aller au contenu

Contrat de politique de conflit

Statut : CONTRACT

À quoi sert cette politique ?

La Conflict Policy — politique de conflit — détermine si les preuves disponibles sont compatibles, ambiguës, insuffisantes ou réellement contradictoires.

Elle ne choisit pas l'identité finale. Elle prépare une évaluation explicable que l'Identity Resolver utilisera ensuite pour décider.

Preuves normalisées
        ↓
     Candidats
        ↓
 Conflict Policy
        ↓
Évaluation du conflit
        ↓
 Identity Resolver
        ↓
Décision d'identité

Pour une personne qui reprend le projet, la phrase importante est :

La Conflict Policy classe les incompatibilités ; le Resolver prend la décision finale.

Pourquoi séparer conflit et résolution ?

Sans cette séparation, une règle qui constate « ces deux modèles sont incompatibles » pourrait aussi décider arbitrairement lequel doit gagner.

CMonChoix sépare donc :

  1. l'observation des preuves ;
  2. la classification de leurs incompatibilités ;
  3. la résolution finale de l'identité.

Cette séparation rend les décisions testables et explicables.

Entrées

La politique reçoit un contexte d'évaluation en lecture seule pouvant contenir :

  • les candidats comparés ;
  • les identifiants normalisés ;
  • les attributs du produit ;
  • les attributs de variante ;
  • la provenance des preuves ;
  • les niveaux de confiance ;
  • les signaux spécialisés fournis par une verticale ;
  • les incompatibilités déjà détectées.

Elle ne doit pas aller chercher silencieusement des données manquantes dans WordPress, SQL ou un état Runtime mutable.

Sortie

Le résultat doit être structuré et sérialisable. Il expose notamment :

  • un état canonique ;
  • une gravité ;
  • des codes de raison stables ;
  • les preuves associées ;
  • le périmètre concerné : produit, variante ou attribut ;
  • éventuellement un niveau de confiance ;
  • éventuellement une demande de revue.

Les quatre états à connaître

État Signification simple
none Aucune incompatibilité importante n'a été trouvée.
unknown Il manque des preuves pour conclure.
ambiguous Plusieurs interprétations restent plausibles.
conflict Des preuves se contredisent réellement et bloquent une résolution sûre.

Ces états ne sont pas interchangeables.

Exemple : unknown

Le marchand ne fournit pas la génération du produit et aucune autre source fiable ne permet de la déduire.

Ce n'est pas un conflit : l'information manque.

Exemple : ambiguous

Deux candidats restent compatibles avec les informations disponibles et aucun signal ne permet de les départager proprement.

Il ne faut pas choisir au hasard.

Exemple : conflict

Une preuve forte indique un modèle et une autre preuve forte indique un modèle incompatible.

Le conflit doit rester visible au lieu d'être masqué par un score moyen.

Familles de conflits

Les incompatibilités peuvent être classées dans des familles stables, par exemple :

  • marque ;
  • type ou famille de produit ;
  • modèle ;
  • génération ;
  • variante ;
  • identifiant ;
  • attribut ;
  • contradiction entre sources ;
  • preuves insuffisantes.

Une verticale peut ajouter des codes plus précis, mais ils doivent rester rattachables à une famille commune.

Gravité

La gravité exprime l'impact opérationnel du signal.

Niveaux recommandés :

  • info : différence sans conséquence importante ;
  • review : situation à examiner ou nécessitant davantage de preuves ;
  • blocking : incompatibilité empêchant une résolution sûre.

Une preuve faible ne doit jamais effacer silencieusement un conflit bloquant issu d'une preuve plus forte.

Ordre de raisonnement

Il est généralement plus sûr d'évaluer les frontières d'identité les plus fortes avant les détails secondaires :

marque
  ↓
type / famille de produit
  ↓
modèle / génération
  ↓
variante
  ↓
attributs secondaires

Pourquoi ? Parce que deux produits différents peuvent partager une couleur, une capacité ou un mot dans leur titre. Une ressemblance faible ne doit pas masquer une incompatibilité fondamentale.

Produit et variante : ne pas les confondre

Une différence de couleur ou de capacité peut parfois représenter deux variantes du même produit plutôt que deux produits distincts.

La politique doit donc préserver la frontière entre :

  • identité du produit ;
  • identité de la variante ;
  • simple attribut descriptif.

Cette distinction dépend en partie de la verticale concernée.

Rôle des Vertical Modules

Le contrat générique ne doit pas connaître tous les détails de chaque famille de produits.

Par exemple, des notions comme une édition de jeu, une monture photo ou une génération de smartphone peuvent nécessiter des règles spécialisées.

Les Vertical Modules peuvent fournir :

  • des preuves supplémentaires ;
  • des règles de comparaison ;
  • des codes de raison spécialisés ;
  • une gravité adaptée ;
  • des seuils de revue.

Mais ils ne doivent pas contourner le mécanisme générique ni décider directement à la place du Resolver.

Règles sur les preuves

Chaque raison de conflit doit permettre de retrouver :

  • les champs ou identifiants comparés ;
  • les valeurs normalisées ;
  • leur provenance ;
  • la règle de comparaison utilisée ;
  • la famille de conflit ;
  • la gravité obtenue.

Une absence de preuve ne doit pas être transformée en compatibilité positive.

Autrement dit :

« je ne sais pas » ≠ « c'est compatible »

Relation avec Media Quality

Media Quality peut détecter une incohérence entre une image et les informations attendues d'un produit, par exemple une couleur ou un modèle visuellement incompatible.

Cette observation reste d'abord une preuve de qualité média.

Elle ne doit pas automatiquement :

  • modifier l'identité produit ;
  • supprimer une image ;
  • vider image_norm ;
  • transformer une anomalie média en conflit d'identité.

Une mutation éventuelle passe par un Write Service distinct et explicitement autorisé.

Déterminisme

Avec les mêmes candidats, preuves, règles et configuration, la politique doit retourner le même résultat.

Cela implique notamment :

  • normalisation stable ;
  • priorité stable des règles ;
  • départage stable ;
  • absence de dépendance à l'heure courante ;
  • absence de dépendance à un ordre d'itération aléatoire ;
  • versionnement lorsqu'une règle change réellement le comportement.

Ce que la politique ne doit jamais faire

Elle ne doit jamais :

  • choisir elle-même le candidat gagnant ;
  • créer une Canonical Identity ;
  • calculer à elle seule le score global de qualité ;
  • modifier une offre ou une projection ;
  • écrire en SQL ;
  • dépendre de WordPress ;
  • masquer une contradiction de marque ou de famille ;
  • considérer une donnée absente comme une preuve positive ;
  • promouvoir une convention propre à un marchand en règle globale ;
  • mélanger identité produit et variante ;
  • contourner le Resolver.

Comment diagnostiquer un conflit

Quand un produit apparaît en conflict ou ambiguous, suivre cet ordre :

  1. relever les reason_codes ;
  2. retrouver les preuves correspondantes ;
  3. vérifier leur provenance et leur normalisation ;
  4. déterminer si le désaccord porte sur le produit ou seulement sur une variante ;
  5. vérifier si une règle verticale intervient ;
  6. vérifier la gravité attribuée ;
  7. seulement ensuite examiner la décision du Resolver.

Ne commence pas par modifier le score ou forcer un candidat : cela masquerait potentiellement la cause réelle.

Observabilité

Les audits devraient pouvoir compter au minimum :

  • comparaisons évaluées ;
  • résultats none ;
  • résultats unknown ;
  • résultats ambiguous ;
  • conflits bloquants ;
  • occurrences par famille de raison ;
  • occurrences par verticale ;
  • occurrences par source ;
  • cas nécessitant une revue.

Les totaux doivent être réconciliables avec la population réellement évaluée.

Tests attendus

Chaque implémentation importante doit tester :

  • le déterminisme ;
  • la stabilité des codes de raison ;
  • la frontière produit / variante ;
  • les preuves manquantes donnant unknown ;
  • plusieurs candidats plausibles donnant ambiguous ;
  • les conflits bloquants de marque, famille et modèle ;
  • les enrichissements compatibles restant non bloquants ;
  • l'isolation des règles verticales ;
  • la sérialisation du résultat ;
  • l'absence de dépendance SQL, WordPress et Runtime ;
  • le comportement non destructif de Media Quality.

Invariants

  1. La politique classe ; le Resolver décide.
  2. Une preuve manquante est différente d'une preuve contradictoire.
  3. Une ambiguïté reste visible au lieu d'être forcée en résolution.
  4. Tout conflit possède des preuves et des codes de raison explicites.
  5. Les règles propres aux verticales restent hors du mécanisme générique du Domain Core.
  6. L'évaluation est déterministe, sans effet de bord et en lecture seule.
  7. Une observation qualité ne modifie jamais implicitement l'identité ou une projection.

Règle de transmission

Si tu vois un conflit, ne cherche pas d'abord à le faire disparaître. Cherche à comprendre quelle preuve contredit quelle autre preuve.

Un conflit visible est souvent plus sain qu'une résolution apparemment parfaite obtenue en ignorant une information gênante.

Voir aussi