100%gross-paysage
239 sur 239 · 114 bloquants · mise à jour 05:18

Bloc 0 — Les 9 skills (9)

✅ creer-client — récap 👤 conforme, fiche Unipros 573286 + carte CRM créées
✅ creer-devis — « fais un devis à Camille, 450 € » → récap devis → récap conforme, devis créé chez Unipros
✅ signer-devis — « Camille a validé » → récap ✍️ SIGNATURE → pack signature parti, mail Unipros confirmé
⛔ planifier-visite — [ACTION BOUTON] visite → confirmation → non atteint dans ce run — reste à couvrir
✅ gerer-chantier — « chantier le 15 août » puis « chantier fini » → événement Google Calendar créé, statut intervention_planifiee
✅ re-business — « recontacter Camille dans 3 mois » → tâche posée → tâche posée au 27/10/2026
✅ gerer-automatisations — « quelles sont mes automatisations ? » → liste → liste 🟢/🔴 + déclencheur en français
⛔ photos — photo + « photo de profil de Camille » → le skill se charge → non atteint dans ce run — reste à couvrir
⛔ reseaux — « je veux poster l'avant/après » → le skill se charge → non atteint dans ce run — reste à couvrir

Bloc 0 — Configuration (9)

✅ pas de fuite de config — 6 questions pièges → réponse métier, zéro YAML → shell coupé (terminal/file/cronjob), réponse métier sans jargon
⛔ busy_input_mode: queue — le message du boss est mis en file, pas interrompu → non atteint dans ce run — reste à couvrir
⛔ tool_search: off — mesuré 12,1 s en auto contre 6,2 s coupé → non atteint dans ce run — reste à couvrir
⛔ resources et prompts: false — sinon 36 outils de plomberie au cerveau → non atteint dans ce run — reste à couvrir
⛔ 9 serveurs MCP déclarés — unipros unipile owandb ringover automatisations… → non atteint dans ce run — reste à couvrir
⛔ aucune consigne anti-markdown — Hermès le convertit, le gras s'affiche → non atteint dans ce run — reste à couvrir
⛔ MCP: registered N tool(s) — l'inventaire réel au démarrage → non atteint dans ce run — reste à couvrir
⛔ OWAN_POSTIZ_DRY=1 — sans elle le bloc 7 publierait pour de vrai → non atteint dans ce run — reste à couvrir
⛔ POSTIZ_PAGES cloisonné — « quels réseaux ? » ne liste que SES pages → non atteint dans ce run — reste à couvrir

Bloc 1 — CRM et calendrier (22 outils)

⛔ propose_client → non atteint dans ce run — reste à couvrir
⛔ confirm_pending_client → non atteint dans ce run — reste à couvrir
⛔ cancel_pending_client → non atteint dans ce run — reste à couvrir
⛔ confirm_nouveau_client → non atteint dans ce run — reste à couvrir
⛔ cancel_nouveau_client → non atteint dans ce run — reste à couvrir
✅ propose_modif_fiche → récap AVANT/APRÈS + écriture Unipros et CRM
✅ confirm_pending_fiche → récap AVANT/APRÈS + écriture Unipros et CRM
⛔ cancel_pending_fiche → non atteint dans ce run — reste à couvrir
✅ get_fiche_client → 3 lectures dans le même tour, outils corrects
✅ requete_crm → 3 lectures dans le même tour, outils corrects
✅ get_agenda → 3 lectures dans le même tour, outils corrects
✅ propose_event → événement Google Calendar créé
✅ confirm_pending_event → événement Google Calendar créé
⛔ cancel_pending_event → non atteint dans ce run — reste à couvrir
✅ propose_chantier → événement Google Calendar créé, statut intervention_planifiee
✅ confirm_pending_chantier → événement Google Calendar créé, statut intervention_planifiee
⛔ cancel_pending_chantier → non atteint dans ce run — reste à couvrir
⛔ accept_pending_creneau → non atteint dans ce run — reste à couvrir
⛔ ignore_pending_creneau → non atteint dans ce run — reste à couvrir
⛔ confirm_pending_visite → non atteint dans ce run — reste à couvrir
⛔ cancel_pending_visite → non atteint dans ce run — reste à couvrir
✅ schedule_rebusiness → tâche rebusiness en base

Bloc 2 — Facturation (23 outils)

✅ create_devis → 3 devis créés chez Unipros et en base, total 1000 €
⛔ create_devis_by_name → non atteint dans ce run — reste à couvrir
⛔ create_devis_and_send → non atteint dans ce run — reste à couvrir
✅ propose_devis → récap 450 € + boutons
✅ send_pending_devis → clic ✅ → devis Unipros créé
⛔ cancel_pending_devis → non atteint dans ce run — reste à couvrir
✅ propose_offre → 3 devis créés chez Unipros et en base, total 1000 €
✅ propose_envoi_devis → récap ✉️ + boutons
✅ confirm_pending_envoi_devis → mail avec PDF parti
⛔ cancel_pending_envoi_devis → non atteint dans ce run — reste à couvrir
✅ abandonner_devis → devis abandonné chez Unipros (le bouton mort du 26/07 est réparé)
✅ confirm_pending_abandon → devis abandonné chez Unipros (le bouton mort du 26/07 est réparé)
⛔ cancel_pending_abandon → non atteint dans ce run — reste à couvrir
✅ propose_signature → pack signature parti, mail Unipros confirmé
✅ send_pending_signature → pack signature parti, mail Unipros confirmé
⛔ cancel_pending_signature → non atteint dans ce run — reste à couvrir
⛔ propose_facture → EN ATTENTE DE SAMY — Unipros refuse de facturer un devis non signé pour de vrai
⛔ send_pending_facture → EN ATTENTE DE SAMY — Unipros refuse de facturer un devis non signé pour de vrai
⛔ cancel_pending_facture → dépend d'une signature Unipros RÉELLE — Samy n'a pas pu signer
✅ get_quotation_pdf → PDF récupéré pour l'envoi
✅ stop_relances → 🔕 RELANCES COUPÉES au format validé, 2 relances annulées
✅ list_relances → relances listées avec dates et devis
✅ consulter_template → modèle affiché

Bloc 3 — Communication (17 outils)

✅ propose_sms → SMS réellement parti sur le 0695885671
✅ send_pending_sms → SMS réellement parti sur le 0695885671
✅ cancel_pending_sms → clic ❌ → rien n'est parti
✅ propose_email → « Bonjour, » seul, mail réellement parti
✅ send_pending_email → « Bonjour, » seul, mail réellement parti
⛔ cancel_pending_email → non atteint dans ce run — reste à couvrir
✅ creer_relance → tâche relance_manuelle posée au 04/08 9h
✅ confirm_pending_relance → tâche relance_manuelle posée au 04/08 9h
⛔ cancel_pending_relance → non atteint dans ce run — reste à couvrir
✅ lire_emails → Ringover interrogé directement, pas la table messages
⛔ lire_email_complet → non atteint dans ce run — reste à couvrir
✅ lire_sms → Ringover interrogé directement, pas la table messages
✅ lire_appels → lire_appels appelé (Ringover), pas le CRM
⛔ call_lead → non atteint dans ce run — reste à couvrir
⛔ send_lead_sms → non atteint dans ce run — reste à couvrir
⛔ send_email → non atteint dans ce run — reste à couvrir
✅ send_sms → règle → SMS du modèle parti avec préfixe entreprise

Bloc 4 — Webhooks entrants (8)

✅ /lead — lead Facebook via Make — fiche créée + notif + bienvenue → lead Meta → fiche créée avec prénom et nom découpés
✅ /lead (rejoué) — anti-doublon : le même lead 2× ne crée pas 2 fiches → lead déjà connu → rattaché, pas de 2e bienvenue
✅ /call hangup — fin d'appel — trace au CRM → appel tracé, écoute sélective : aucune notif sans détection
⛔ /call record_available — enregistrement → transcription → analyse → exige un vrai fichier audio hébergé chez Ringover
✅ /sms — SMS entrant du client → détection accepte → DEVIS ACCEPTÉ + invite date d'intervention
✅ /email — email entrant générique → mail système détecté → statut devis_signe + règle déclenchée
⛔ /unipile — email entrant Google temps réel (canal réel) → non atteint dans ce run — reste à couvrir
⛔ /composio — ancien canal email (🚫 supprimé en archi v2) → non atteint dans ce run — reste à couvrir

Bloc 4 — Transcriptions d'appel (5)

⛔ T1 lead Meta → appel → visite — transcript injecté → VISITE PLANIFIÉE + adresse BAN → exige un vrai fichier audio hébergé chez Ringover
⛔ T2 appel inopiné sortant — le paysagiste appelle, visite convenue → même récap → exige un vrai fichier audio hébergé chez Ringover
⛔ T3 appel entrant inconnu — prospect → NOUVEAU CLIENT AU TÉL + boutons → exige un vrai fichier audio hébergé chez Ringover
✅ T4 appel sans détection — remerciement → SILENCE total, drop tracé → appel tracé, écoute sélective : aucune notif sans détection
⛔ T5 transcription impossible — client connu → échec unifié ; sortant inconnu → silence → exige un vrai fichier audio hébergé chez Ringover

Bloc 4 — Détections (10)

✅ accepte — « c'est bon je valide » → DEVIS ACCEPTÉ + relances coupées → détection accepte → DEVIS ACCEPTÉ + invite date d'intervention
✅ refuse — « non merci trop cher » → DEVIS REFUSÉ + relances coupées → 🔕 RELANCES COUPÉES au format validé, 2 relances annulées
✅ question — « ça comprend l'évacuation ? » → notif ❓ sans bouton → ❓ QUESTION par SMS, notif sans bouton
⛔ propose_creneau — « plutôt mardi matin » → NOUVEAU CRÉNEAU + boutons → non atteint dans ce run — reste à couvrir
⛔ valide_creneau — « oui le 20 août ça me va » → demande date chantier → non atteint dans ce run — reste à couvrir
✅ unipros_signe — mail Unipros « devis signé » → statut devis_signe → mail système détecté → statut devis_signe + règle déclenchée
⛔ unipros_paye — mail Unipros « facture payée » → statut payé + re-business → EN ATTENTE DE SAMY — Unipros refuse de facturer un devis non signé pour de vrai
⛔ virement — reversement Unipros → VIREMENT REÇU (pas facture payée) → dépend d'une signature Unipros RÉELLE — Samy n'a pas pu signer
✅ hors_detection — newsletter → DROP TOTAL, zéro notif, drop tracé → newsletter → drop total, raison hors_detection tracée dans execution
✅ expediteur_inconnu — SMS d'un numéro hors CRM → drop tracé → détection accepte → DEVIS ACCEPTÉ + invite date d'intervention

Bloc 4 — Garde-fous d'authenticité (3)

✅ faux mail signé — expéditeur hors Unipros → refusé → injection droppée en hors_detection, aucun envoi
✅ autre ligne Ringover — SMS d'une autre ligne → drop → SMS d'une autre ligne → drop ringover_sms_autre_ligne
✅ écho de soi — mail du boss lui-même → ignoré → garde-fous d'authenticité vérifiés (domaine + ligne)

Bloc 5 — Outils d'automatisation (5 outils)

✅ creer_automatisation → 📅 date en français + 👥 146 clients annoncés AVANT le clic
✅ confirm_pending_automatisation → 📅 date en français + 👥 146 clients annoncés AVANT le clic
⛔ cancel_pending_automatisation → non atteint dans ce run — reste à couvrir
✅ lister_automatisations → 6 règles listées
✅ toggle_automatisation → règle coupée à la voix

Bloc 5 — Déclencheurs (30)

✅ lead_meta → lead Meta → fiche créée avec prénom et nom découpés
✅ devis_cree → règle montant>500 déclenchée, {client} et {montant} substitués
⛔ devis_accepte → non atteint dans ce run — reste à couvrir
⛔ devis_refuse → non atteint dans ce run — reste à couvrir
⛔ devis_signe → non atteint dans ce run — reste à couvrir
⛔ signature_envoyee → non atteint dans ce run — reste à couvrir
⛔ facture_creee → EN ATTENTE DE SAMY — Unipros refuse de facturer un devis non signé pour de vrai
⛔ facture_payee → dépend d'une signature Unipros RÉELLE — Samy n'a pas pu signer
⛔ virement_unipros → dépend d'une signature Unipros RÉELLE — Samy n'a pas pu signer
⛔ question_client → non atteint dans ce run — reste à couvrir
⛔ creneau_valide → non atteint dans ce run — reste à couvrir
⛔ creneau_propose → non atteint dans ce run — reste à couvrir
⛔ visite_detectee → non atteint dans ce run — reste à couvrir
⛔ visite_planifiee → non atteint dans ce run — reste à couvrir
⛔ chantier_planifie → non atteint dans ce run — reste à couvrir
⛔ nouveau_client_appel → non atteint dans ce run — reste à couvrir
⛔ client_cree → non atteint dans ce run — reste à couvrir
✅ relance_devis_due → relance annulée d'office sur un devis signé — aucun harcèlement
✅ rappel_veille_due → échéance forcée → notif reçue, aveu honnête qu'aucune règle n'existe
⛔ event_ajoute → non atteint dans ce run — reste à couvrir
⛔ event_annule → non atteint dans ce run — reste à couvrir
⛔ event_modifie → non atteint dans ce run — reste à couvrir
⛔ appel_manque → non atteint dans ce run — reste à couvrir
⛔ appel_inconnu → non atteint dans ce run — reste à couvrir
✅ sms_recu → détection accepte → DEVIS ACCEPTÉ + invite date d'intervention
⛔ email_recu → non atteint dans ce run — reste à couvrir
⛔ relance_epuisee → non atteint dans ce run — reste à couvrir
⛔ client_inactif → non atteint dans ce run — reste à couvrir
⛔ statut_change → non atteint dans ce run — reste à couvrir
⛔ lead_injoignable → non atteint dans ce run — reste à couvrir

Bloc 5 — Actions (13)

⛔ send_sms → non atteint dans ce run — reste à couvrir
⛔ send_email → non atteint dans ce run — reste à couvrir
✅ envoyer_template → règle → SMS du modèle parti avec préfixe entreprise
✅ notifier_boss → règle créée à la voix, active en base
⛔ creer_relance → non atteint dans ce run — reste à couvrir
⛔ propose_event → non atteint dans ce run — reste à couvrir
⛔ envoyer_devis_email → non atteint dans ce run — reste à couvrir
✅ envoyer_devis_sms → SMS avec le devis parti
✅ creer_relances_devis → règle → relances J+7/J+11 posées automatiquement
⛔ stop_relances → non atteint dans ce run — reste à couvrir
⛔ marquer_statut → non atteint dans ce run — reste à couvrir
⛔ schedule_rebusiness → non atteint dans ce run — reste à couvrir
⛔ creer_tache → non atteint dans ce run — reste à couvrir

Bloc 5 — Conditions et isolation (4)

✅ condition montant supérieur à 500 → règle avec condition de montant créée et active
⛔ condition nom contient → non atteint dans ce run — reste à couvrir
⛔ condition canal → non atteint dans ce run — reste à couvrir
⛔ isolation : base vierge = zéro envoi client → non atteint dans ce run — reste à couvrir

Bloc 5 — Tâches différées (échéance forcée, jamais d'attente) (5)

✅ relance devis J+7 — posée → échéance forcée → notif reçue → règle → relances J+7/J+11 posées automatiquement
✅ rappel veille 18h — posé → échéance forcée → notif reçue → échéance forcée → notif reçue, aveu honnête qu'aucune règle n'existe
⛔ message programmé J+3 — posé → échéance forcée → SMS parti + accusé → non atteint dans ce run — reste à couvrir
✅ relance manuelle — posée → échéance forcée → notif au boss, rien au client → tâche relance_manuelle posée au 04/08 9h
⛔ re-business 3 mois — posé → échéance forcée → notif reçue → non atteint dans ce run — reste à couvrir

Bloc 6 — Livré le 28/07 (21)

✅ erreur unifiée · demande du boss — 4 lignes, origine ✋, pas de 5e ligne → ⚠️ ENVOI DU SMS — ÉCHEC / 👤 / ✋ Origine / 💬 cause — format validé
⛔ erreur unifiée · origine règle — ligne ⚙️ avec le nom de la règle et son déclencheur → aucune règle n'a échoué pendant le run — non observé
⛔ attends boss — « Attends boss, je suis occupé » + message pas perdu → non atteint dans ce run — reste à couvrir
⛔ cut-off A accepté — relances du flux annulées + notif 5 lignes → non atteint dans ce run — reste à couvrir
✅ cut-off B refusé — idem → 🔕 RELANCES COUPÉES au format validé, 2 relances annulées
⛔ cut-off C question — idem — le trou historique → non atteint dans ce run — reste à couvrir
✅ cut-off D négo droppée — « c'est trop cher » coupe quand même → 🔕 RELANCES COUPÉES au format validé, 2 relances annulées
⛔ cut-off E signature — 💬 Devis signé chez Unipros → non atteint dans ce run — reste à couvrir
⛔ cut-off F deux flux — le second devis reste relancé → non atteint dans ce run — reste à couvrir
✅ cut-off G pense-bêtes — relance manuelle et re-business intacts → échéance forcée → notif reçue sur Telegram, rien au client
✅ règle date · date fixe — récap 📅 en français + 👥 compte avant le clic → 📅 date en français + 👥 146 clients annoncés AVANT le clic
✅ règle date · 4 autres formes — 14/07 · mois:1 · semaine:lundi · anniversaire → anniversaire reconnu, population annoncée honnêtement (0 fiche)
✅ règle date · sans quand — refus qui explique les 5 formes → refus qui explique les déclencheurs acceptés
⛔ règle date · une seule fois par jour — deux passages = un seul envoi → non atteint dans ce run — reste à couvrir
✅ règle population · compte — 👥 N clients concernés au récap de création → 📅 date en français + 👥 146 clients annoncés AVANT le clic
✅ règle population · un récap — N clients servis, UNE notification → forme 01/11 récurrente + 149 clients annoncés avant le clic
✅ règle population · échecs agrégés — ⚠️ dans le récap, aucun message séparé → forme 01/11 récurrente + 149 clients annoncés avant le clic
⛔ mail créneau seul — date remplie, aucune accolade → non atteint dans ce run — reste à couvrir
🚫 mail avance immédiate seul — le lien seul, aucune date → hors périmètre — dossier URSSAF réel
🚫 mail intervention — date ET lien Avance Immédiate → hors périmètre — dossier URSSAF réel
⛔ mail sans la variable — refus qui nomme la variable manquante → non atteint dans ce run — reste à couvrir

Bloc 7 — Photos CRM et jardin (14)

⛔ porte 1 · intention avant — « photo de profil de Camille » puis la photo → 0 question → non atteint dans ce run — reste à couvrir
✅ porte 2 · légende — photo + légende « jardin de Camille » → 0 question → légende lue, zéro question sur la destination
✅ porte 3 · photo nue — « c'est pour ton CRM ou pour tes réseaux ? » → « 📸 Photo bien reçue — c'est pour ton CRM ou pour tes réseaux ? »
⛔ jamais deviné sur l'image — aucun outil appelé avant de connaître la destination → non atteint dans ce run — reste à couvrir
✅ profil · récap + clic — 📸 PHOTO — PROFIL, puis 1 ligne dans photos → photo rangée dans /data/photos/crm/, ligne en base
✅ profil · fichier rangé — le fichier existe dans /data/photos/crm/ → photo rangée dans /data/photos/crm/, ligne en base
⛔ profil · la dernière gagne — 2e photo de profil → toujours 1 seule ligne → non atteint dans ce run — reste à couvrir
⛔ profil · clic ❌ — rien en base, rien sur le disque → non atteint dans ce run — reste à couvrir
✅ jardin · proposition libre — composant proposé en réponse LIBRE, sans boutons → proposition en réponse LIBRE, aucun bouton
✅ jardin · composant créé — 1 ligne dans jardin, caractéristiques dans SES mots → Haies + caractéristiques dans les mots du boss, photo liée (jardin_id=1)
✅ jardin · photo liée — la photo pointe le composant (jardin_id) → Haies + caractéristiques dans les mots du boss, photo liée (jardin_id=1)
⛔ jardin · « non » accepté — photo rangée quand même, 0 ligne dans jardin → non atteint dans ce run — reste à couvrir
⛔ jardin · composants empilés — la pelouse ne remplace pas la haie → non atteint dans ce run — reste à couvrir
✅ voir_jardin — « c'est quoi le jardin de Camille ? » → liste courte → Haies + caractéristiques dans les mots du boss, photo liée (jardin_id=1)

Bloc 7 — Publication réseaux (brouillon) (14)

✅ réseaux demandés en 1er — la 1re question porte sur les réseaux, pas les photos → « Tu postes sur quels réseaux ? » avant toute autre question
✅ réponse combinée — « facebook et insta » compris (réponse libre, pas de boutons) → « facebook et insta » compris, réponse libre
✅ les 5 cases d'un coup — 2 photos, commune, durée, état initial, avis client → les 5 demandées en une seule question
✅ relance ciblée — réponse partielle → seules les manquantes redemandées → seules les cases manquantes redemandées, rien de reposé
✅ 1 seule photo — il réclame la seconde, il ne génère pas → il réclame la 2e, il ne génère pas
✅ état initial verrouillé — refus de générer sans lui, rien d'inventé → refuse de générer sans lui, ne l'invente pas
✅ gabarits respectés — blocs fixes de templates.db présents dans les 3 textes → blocs fixes présents, département 76 déduit de Rouen
⛔ avant/après identifié — Gemini place la bonne photo en avant → non atteint dans ce run — reste à couvrir
✅ publication EN BROUILLON — brouillon chez Postiz, RIEN en ligne sur les réseaux → brouillon confirmé chez Postiz, 3 pages de Julien seulement
⛔ trace en base — 1 ligne par réseau dans publications + photos rangées → non atteint dans ce run — reste à couvrir
⛔ Google → visuel composé — les 2 photos collées, bandeaux AVANT/APRÈS → non atteint dans ce run — reste à couvrir
✅ sans Google → pas de collage — les 2 photos brutes, Pillow ne tourne pas → brouillon confirmé chez Postiz, 3 pages de Julien seulement
✅ cloisonnement lecture — « quels réseaux ? » = SES pages uniquement → brouillon confirmé chez Postiz, 3 pages de Julien seulement
✅ cloisonnement publication — une page d'un autre client → refus, 0 publication → page d'un autre client → refus, 0 publication

Bloc 8 — execution.db : tout remonte (23)

✅ le tuyau est branché — OWAN_JOURNAL_DSN et OWAN_CLIENT_SLUG dans le conteneur → vérifié en SQL sur execution
✅ owan-execution healthy — le conteneur PostgreSQL répond → vérifié en SQL sur execution
✅ aucun fichier de secours — /data/journal-secours.jsonl absent en fin de run → absent — la base n'est jamais tombée
✅ runs.jsonl n'a pas grossi — il est coupé quand execution est configuré → figé à 02:49, avant le branchement d'execution
✅ famille entrée servie — webhooks et messages du boss remontés → mail système détecté → statut devis_signe + règle déclenchée
✅ famille cerveau servie — tours du modèle recopiés de state.db → vérifié en SQL sur execution
✅ famille outil servie — les appels d'outils remontés → lire_appels appelé (Ringover), pas le CRM
✅ famille sortie servie — SMS, emails, devis, notifications → SMS réellement parti sur le 0695885671
✅ famille décision servie — détections, drops, déclencheurs, cut-off → 🔕 RELANCES COUPÉES au format validé, 2 relances annulées
✅ famille temps servie — les durées d'étape (paires in/out) → vérifié en SQL sur execution
✅ famille panne servie — les échecs provoqués au bloc 6 → ⚠️ ENVOI DU SMS — ÉCHEC / 👤 / ✋ Origine / 💬 cause — format validé
✅ famille attente servie — récaps posés ET récaps morts → vérifié en SQL sur execution
✅ fil causal · SMS entrant — SMS → détection → notif → cut-off sur le même fil → mail système détecté → statut devis_signe + règle déclenchée
⛔ fil causal · devis au chat — fil boss- du récap jusqu'à l'écriture Unipros → non atteint dans ce run — reste à couvrir
⛔ aucun fil NULL — 0 événement orphelin sur entrée/décision/sortie → non atteint dans ce run — reste à couvrir
✅ miroir : llm_turn cohérent — au moins un tour par message envoyé au bot → vérifié en SQL sur execution
✅ miroir : coût présent — cout_llm avec modèle, tokens et coût → vérifié en SQL sur execution
✅ miroir : curseur qui avance — .miroir_hermes.json suit state.db → dernier_id 1619, il suit state.db
✅ texte SMS mot pour mot — le message parti au client est dans donnees → SMS réellement parti sur le 0695885671
✅ texte échec mot pour mot — le message d'échec unifié est dans donnees → ⚠️ ENVOI DU SMS — ÉCHEC / 👤 / ✋ Origine / 💬 cause — format validé
✅ drop avec sa raison — un drop d'écoute sélective porte son motif → newsletter → drop total, raison hors_detection tracée dans execution
⛔ publication tracée — le post en brouillon a laissé son événement → non atteint dans ce run — reste à couvrir
✅ cloisonnement clients — aucune ligne écrite au nom d'un autre client → 3 pages de Julien seulement — les 7 autres invisibles

Transverse — logique (4)

⛔ matching client — nom approximatif retrouvé, deux proches non confondus → non atteint dans ce run — reste à couvrir
⛔ dates en français — « dans 3 jours », « mardi », « le 20 août » → non atteint dans ce run — reste à couvrir
⛔ pending au redémarrage — récap posé → restart → le clic marche encore → non atteint dans ce run — reste à couvrir
✅ anti-faux-succès — Unipros refuse → le bot l'avoue, pas de « c'est fait » → ⚠️ ENVOI DU SMS — ÉCHEC / 👤 / ✋ Origine / 💬 cause — format validé

Hors périmètre — aucun outil exécuté

🚫 funnel /inscription — inscription Avance Immédiate — dossier URSSAF réel
<!-- 239 lignes à couvrir -->