L'alerte ProspectionBriefNotSent (prospection_brief_telegram_pushed == 0, severity info) avait trois défauts pour attraper un échec de production de la vidéo :
Elle ne couvrait que la livraison — prospection_brief_rendered == 0 (rendu vidéo KO) n'alertait nulle part en dehors du ProspectionStepError générique (info) ;
Faux positif sur skip volontaire : metrics.py émet brief_rendered=0 aussi quand l'étape est sautée (cadence/kill-switch) — seul prospection_step_status{step="brief"} distingue skip(2) d'erreur(0) ;
En-tête du groupe obsolète (« livraison AM pas câblée » — testée live le 10/07 : firing 🔥 + resolved ✅ reçus sur Telegram).
Remplacée par deux règles warning, gardées contre le skip :
Alerte
Expr
Sens
ProspectionBriefFailed
rendered == 0 and on(job) step_status{step="brief"} != 2
la production de la vidéo a échoué
ProspectionBriefNotSent
pushed == 0 and rendered == 1
vidéo produite mais pas livrée sur Telegram
Validé en live sur Prometheus avant commit : requête témoin (rendered==1 and on(job) step_status{brief}!=2) → exactement 1 série (le match vectoriel fonctionne) ; les deux expressions d'alerte → vides sur l'état sain du jour. ArgoCD (app tools, sync auto) recharge les règles au merge.
L'alerte `ProspectionBriefNotSent` (`prospection_brief_telegram_pushed == 0`, severity **info**) avait trois défauts pour attraper un échec de **production** de la vidéo :
1. Elle ne couvrait que la **livraison** — `prospection_brief_rendered == 0` (rendu vidéo KO) n'alertait nulle part en dehors du `ProspectionStepError` générique (info) ;
2. **Faux positif sur skip volontaire** : `metrics.py` émet `brief_rendered=0` aussi quand l'étape est sautée (cadence/kill-switch) — seul `prospection_step_status{step="brief"}` distingue skip(`2`) d'erreur(`0`) ;
3. En-tête du groupe obsolète (« livraison AM pas câblée » — testée live le 10/07 : firing 🔥 + resolved ✅ reçus sur Telegram).
**Remplacée par deux règles `warning`, gardées contre le skip :**
| Alerte | Expr | Sens |
|---|---|---|
| `ProspectionBriefFailed` | `rendered == 0 and on(job) step_status{step="brief"} != 2` | la **production** de la vidéo a échoué |
| `ProspectionBriefNotSent` | `pushed == 0 and rendered == 1` | vidéo produite mais **pas livrée** sur Telegram |
**Validé en live sur Prometheus** avant commit : requête témoin (`rendered==1 and on(job) step_status{brief}!=2`) → exactement 1 série (le match vectoriel fonctionne) ; les deux expressions d'alerte → vides sur l'état sain du jour. ArgoCD (app `tools`, sync auto) recharge les règles au merge.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
ProspectionBriefNotSent (pushed==0, severity info) ne couvrait que la
livraison et déclenchait à tort quand l'étape brief était volontairement
sautée (metrics.py émet brief_rendered=0 aussi sur skip — seul
step_status{step="brief"} distingue skip(2) d'erreur(0)).
Remplacé par deux règles warning, gardées contre le skip :
- ProspectionBriefFailed : rendered==0 AND step_status{brief}!=2 → la
PRODUCTION de la vidéo a échoué (TTS/ffmpeg/PIL ou erreur amont) ;
- ProspectionBriefNotSent : pushed==0 AND rendered==1 → vidéo produite
mais PAS livrée sur Telegram (token/chat_id/API).
Expressions validées en live sur Prometheus (match on(job) prouvé par
requête témoin, les deux exprs vides sur l'état sain du jour). En-tête du
groupe mis à jour : la livraison AM→Telegram est câblée et testée.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
L'alerte
ProspectionBriefNotSent(prospection_brief_telegram_pushed == 0, severity info) avait trois défauts pour attraper un échec de production de la vidéo :prospection_brief_rendered == 0(rendu vidéo KO) n'alertait nulle part en dehors duProspectionStepErrorgénérique (info) ;metrics.pyémetbrief_rendered=0aussi quand l'étape est sautée (cadence/kill-switch) — seulprospection_step_status{step="brief"}distingue skip(2) d'erreur(0) ;Remplacée par deux règles
warning, gardées contre le skip :ProspectionBriefFailedrendered == 0 and on(job) step_status{step="brief"} != 2ProspectionBriefNotSentpushed == 0 and rendered == 1Validé en live sur Prometheus avant commit : requête témoin (
rendered==1 and on(job) step_status{brief}!=2) → exactement 1 série (le match vectoriel fonctionne) ; les deux expressions d'alerte → vides sur l'état sain du jour. ArgoCD (apptools, sync auto) recharge les règles au merge.🤖 Generated with Claude Code
ProspectionBriefNotSent (pushed==0, severity info) ne couvrait que la livraison et déclenchait à tort quand l'étape brief était volontairement sautée (metrics.py émet brief_rendered=0 aussi sur skip — seul step_status{step="brief"} distingue skip(2) d'erreur(0)). Remplacé par deux règles warning, gardées contre le skip : - ProspectionBriefFailed : rendered==0 AND step_status{brief}!=2 → la PRODUCTION de la vidéo a échoué (TTS/ffmpeg/PIL ou erreur amont) ; - ProspectionBriefNotSent : pushed==0 AND rendered==1 → vidéo produite mais PAS livrée sur Telegram (token/chat_id/API). Expressions validées en live sur Prometheus (match on(job) prouvé par requête témoin, les deux exprs vides sur l'état sain du jour). En-tête du groupe mis à jour : la livraison AM→Telegram est câblée et testée. Co-Authored-By: Claude Opus 4.8 <[email protected]>