Réflexion Yatai — 2026-07-10

Vendredi · Semaine ISO W28 (J5)  ·  22:00 Paris  ·  Stack 15/15 MCPs · 1 exit=1 (whatsapp-ocr)

TL;DR

KPI snapshot W28 (au 10/07)

RestaurantS Net HTS-1 Net HTvs S-1N-1 Net HTvs N-1
CDN€3 869€7 896−51%€13 523−71%
FSH€4 564€10 702−57%€15 606−71%
Groupe€8 432€18 598−55%€29 129−71%

W28 partielle (Lun-Jeu CDN, Lun-Mer FSH). Juillet MTD (J10) : €22 189 vs M-1 €35 167 (−37%) vs N-1 €42 186 (−47%).

Timeline du jour

Heure ParisAgent / SourceÉvénementRésultat
01:05disputes-dailyScan litiges Uber/Deliverooexit=0 · 0 soumissions · 0 disputables
04:01justifs-sweeperScan + fetch facturesexit=0
04:49amazon-justifsBackfill Amazon → Pennylaneexit=0 · uploads/rapprochements réussis (ychateaudun historique)
06:02hermes-resto-briefBrief matinal restosexit=0
07:01hermes-managerMonitoring stack 15/15 MCPsexit=0 · 0 restart · 0 FAILED
07:04daily-kpiKPI W28 J5 publiéexit=0 · CDN Jeu 9 = €875 (carryover J+1 révèle faux-négatif hier) · artifact "Thu 14" J5
07:04–07:05whatsapp-bridgeKPI PDFs envoyés à JamesKPI_Yatai_2026-07-10.pdf ✓ · KPI_Yatai_2026-07-08.pdf ⚠️ (renvoi J+2 inattendu)
08:00zelty-watchCatchup 630min démarrage0 orders · catchup-silent
08:00–22:00zelty-watch47 cycles toutes les 15min0 orders CDN/FSH · api_fail=0 → Ven W28 = sans service (normal)
10:23WA James"Tas pas de commande pr 11e?"Question Bastille 11e — commande arrivée peu après
12:26 Paris (10:26 UTC)rekki-poll-todayTrigger recap J11 détectéChoiseul + Bastille ont commandé pour 2026-07-11
12:26 Parisrekki-recap-13hRecap J11 event-drivenProbablement envoyé juste avant l'annulation James
12:28 Paris (10:26 UTC)rekki-recap-13hRecap J10 idempotentFlag J10 existant → skip correct
~12:31WA James"Tu peux annuler la commande de demain pour 2e?"Annulation Choiseul 2e pour J11 — recap J11 probablement déjà envoyé ⚠️
10:00–14:45combo-retardCycles Labo (22 shifts)0 alert → 1 alerte retard à 14h45 · WA James ✓
16:31WA James"Il me faut un plaquette"Demande carte de visite pour prospection (Asian Smash)
17:05WA JamesMessage incident voie taxi périphériqueInfo passage (hors scope ops)
17:34WA JamesSollicitation logiciel restauration 199€Prospection externe reçue
19:33WA Jameso-ven.com partagéPiste concurrente / partenaire potentiel
19:59hermes-yatai-waMonitoring WhatsAppexit=0
20:00whatsapp-ocrRun nightly médiasexit=1 — J6 consécutif (timeout structurel)
22:00yatai-reflectCe rapport

Patterns détectés

1. Zelty carryover J+1 — pattern universel (4 faux-négatifs confirmés)

Le carryover zelty J+1 ne se limite pas aux Ven/Sam. Il affecte tous les jours de la semaine :

Pattern stable (4 data points) : jamais conclure "fermé" à 22h, quel que soit le jour de la semaine. La seule exception fiable : zelty 0 orders + combo-retard 0 shifts service = fermeture confirmable.

2. Trigger recap Choiseul+Bastille — 7ème data point à 12h26 Paris

Triggers observés à ce jour : 11h22 (×3) · 11h06 · 11h21 · 10h52 · 12h26 (aujourd'hui, J10/07). La fenêtre CLAUDE.md indique 10h45–12h00, mais ce point est à 12h26 — légèrement hors fenêtre. Hypothesis : James a commandé plus tard un vendredi (jours sans service → commandes anticipées différemment). À noter mais pas suffisant pour réviser la fenêtre seul.

3. Schedule réduit W28 (juillet) vs W25 (juin)

Réduction significative : −2j CDN, −2j FSH. Possible schedule estival juillet. 1 data point uniquement — à confirmer W29 avant toute règle.

4. whatsapp-ocr timeout structurel — J6 (depuis 05/07)

Dernier exit=0 : dim 05/07 19:39. Depuis 6 jours consécutifs exit=1. Backlog médias en croissance (53 au 27/06, tendance ascendante). Situation non résolue depuis la proposition envoyée à James.

5. Annulation Choiseul J11 post-recap

Trigger recap J11 détecté à 12h26 Paris (10h26 UTC). James demande annulation Choiseul à 12h31 (+5min). Si le recap a été envoyé entre 12h26 et 12h31, le Labo a déjà reçu le PDF avec la commande Choiseul 2e. Race condition opérationnelle : annulation manuelle auprès du fournisseur nécessaire.

Anomalies

🔴 [HAUTE] Révocation urgente — "Jeudi = sans service CDN+FSH — CONFIRMÉ"
Auto-applied 04/06 (première version) + "CONFIRMÉ" dans la réflexion 09/07.
KPI 10/07 montre CDN Jeu 9 W28 = €875 / 32 cmds — zelty carryover J+1, pas une fermeture.
FSH Jeu 9 = "(fermé)" dans ce KPI — possible schedule réduit estival FSH (fermé jeu-dim en W28), à ne pas confondre avec CDN.
Action : révoquer la règle dans CLAUDE.md (même pattern que Lundi/Mardi/Mercredi).
🔴 [HAUTE] KPI_Yatai_2026-07-08.pdf renvoyé J+2 (09:05 Paris)
Bridge log : [2026-07-10 09:05:09] → 241519030194389: [document: KPI_Yatai_2026-07-08.pdf]
Le KPI du 08/07 était déjà publié et envoyé le 08/07 (AGENTS.md). Cause du renvoi inconnue — possible mécanisme "rattrapage" dans daily-kpi runner, ou bug d'idempotency.
À investiguer : chercher dans daily-kpi-runner.sh le mécanisme de resend.
🟡 [MÉDIUM] Race condition annulation Choiseul J11
Recap J11 triggeré à 12:26 Paris. James demande annulation Choiseul 2e à 12:31 (+5min).
Si le PDF recap a été envoyé au Labo avant 12:31, la commande Choiseul figure dans le recap déjà reçu par le staff. Vérification manuelle requise auprès du Labo / fournisseur.
🟡 [MÉDIUM] whatsapp-ocr exit=1 — J6 consécutifs (05/07 → 10/07)
Backlog médias croissant. Dernier succès : dim 05/07 19:39. Proposition envoyée mais pas de décision James reçue. ODR backlog médias : inconnu (était 53 au 27/06).
🟡 [MÉDIUM] Artifact "Thu 14 evening data" — J5 consécutifs (06/07→10/07)
FSH: Brut HT €160 · Net HT €130 · ~81.8% livraison (only Thu 14 evening data) dans daily-kpi.log.
Rapport HTML correct. Bug structural dans ~/yatai/scripts/fetch_kpi_data.py — requête résiduelle sur créneau 14h du jeu W27 (03/07). Déjà dans open issues (auto-applied 08/07), aucune action à ce jour.
🟡 [MÉDIUM] justifs-free/edenred J36 consécutifs (05/06→10/07)
rc=1 toutes les nuits depuis 36 jours. Fetch_free : RuntimeError "liste factures Sosh introuvable". Fetch_edenred : timeout wait_for_selector. Diag inchangé — run headed requis (James "go" attendu).
🟡 [MÉDIUM] ODR SFR — deadline J−12 (22/07/2026)
Déjà dans open issues (auto-applied 05/07). Aucune action visible dans les logs. Action manuelle requise.
🟢 [INFO] FSH schedule réduit W28 — seulement Lun+Mar+Mer (3 jours)
W25 : FSH Lun-Ven (5j). W28 : FSH Lun-Mer (3j). Possible schedule estival juillet. 1 data point — à confirmer W29 avant règle.
🟢 [INFO] Prospection Asian Smash — James demande "plaquette" (carte de visite)
Message 16:31 Paris : "Il me faut un plaquette / Jai besoin pr laisser mes contacts qd je prospect". Cohérent avec le projet "Asian Smash Escale Bastille" (suivi depuis 24/06). Aucune action agent requise.

Propositions CLAUDE.md

Proposition #1 — RÉVOQUER "Jeudi = sans service CDN+FSH — CONFIRMÉ" (CRITIQUE)
Section : Auto-applied propositions (2026-06-04) + (2026-06-29 confirmation)
Justification : CDN Jeu 9 W28 = €875 (zelty carryover J+1) — même piège que Lundi/Mardi/Mercredi, 4ème occurrence.
### RÉVOCATION — règle "Jeudi = sans service CDN+FSH — CONFIRMÉ" (auto-applied 2026-06-04 + confirmée 2026-07-09)

KPI 2026-07-10 montre CDN Jeu 9 W28 = €875 / 32 cmds — zelty carryover J+1.
La règle était basée sur 3 data points W21+W23+W28, mais W28 (09/07) était un faux-négatif :
zelty 0 orders à 22h du 09/07 → CDN Jeu 9 visible seulement le 10/07 matin (carryover J+1).

FSH Jeu 9 W28 = fermé dans le KPI 10/07 : possible schedule réduit estival FSH
(FSH ouvert seulement Lun-Mer en W28), à confirmer W29.

Action : retirer les deux paragraphes "Jeudi = sans service CDN+FSH" et "Jeudi CONFIRMÉ"
de CLAUDE.md. Retenir uniquement : FSH Jeu = fermé en W28 (1 data point estival, à confirmer).
Proposition #2 — Renforcer règle anti-faux-négatif : carryover J+1 universel
Section : 3. Zelty — gotchas API → "Délai d'ingestion Zelty"
Justification : 4 faux-négatifs sur 4 jours différents de la semaine — le carryover J+1 est universel.
### Zelty carryover J+1 — universel (tous jours de semaine)
- Lundi W23, Mardi W21, Mercredi W28, Jeudi W28 : 4 faux-négatifs confirmés
- Le carryover J+1 n'est PAS limité aux Ven/Sam — il s'applique à TOUS les jours mid-semaine
- Règle absolue : JAMAIS conclure "fermé" à 22h sur la base de zelty 0 orders, quel que soit le jour
- Seul signal fiable : zelty 0 orders + combo-retard 0 shifts SERVICE (pas Labo) = fermeture confirmable
- "0 shifts service" ≠ "0 shifts total" (Labo a des shifts tous les jours)
Proposition #3 — Trigger recap fenêtre élargie (7ème data point)
Section : section 1 → "Timing commandes Choiseul + Bastille"
Justification : trigger 10/07 à 12h26 Paris (10h26 UTC) dépasse la fenêtre 10h45-12h00. Vendredi W28.
### Timing commandes Choiseul + Bastille — mise à jour (7ème data point 10/07)
Trigger 2026-07-10 : 12h26 Paris (10h26 UTC, vendredi W28)
Fenêtre révisée : 10h45–12h30 Paris (vs 10h45-12h00 précédemment)
Cas limite vendredi (jour sans service) : commandes plus tardives que les jours service
Données : 11h22 (×3) · 11h06 · 11h21 · 10h52 (lundi Pentecôte) · 12h26 (vendredi W28)

Agents — état global

AgentExitStatut
disputes-daily0✓ nominal · 0 soumissions
amazon-justifs0✓ uploads réussis
justifs-sweeper0✓ scan OK · free/edenred J36 toujours cassés
hermes-resto-brief0✓ nominal
hermes-manager0✓ 15/15 MCPs · 0 restart · 0 FAILED
daily-kpi0✓ publié · artifact "Thu 14" J5 · resend KPI 08/07 inattendu
rekki-recap-13h0✓ recap J10 envoyé (5 orders) · J11 triggeré 12h26
hermes-yatai-wa0✓ nominal
whatsapp-ocr1🔴 J6 timeout structurel · backlog croissant
zelty-watch47 cycles · 0 orders · api_fail=0 · normal (vendredi)
combo-retard1 alerte retard 14h45 · 22 shifts Labo