SPB Git

spb/job-ka

Public
History of data/sources.json Clear filter
page 1
  1. Sat, Oct 31, 2026 1

    1. [ka6] connecteur paythings_19f14e354a62: tenant Breezy RÉSILIÉ le 2026-10-31, verdict site_source_mort — connecteur conservé intact (1re intervention, pattern xtl c4a681e1). Le stale signalé était d'abord le profil connu « volume QC nul » (syncs VERTS ok=1 found=0 en continu depuis la dépublication légitime de l'unique offre QC le 2026-08-31, médiane 0.0, fiche stale-volume-zero-faux-positif) ; mais depuis ce matin 09:19 EDT le portail https://paythings-19f14e354a62.breezy.hr renvoie 404 « Career portal not found » (racine ET /json, persistant sur 3 essais) = tenant supprimé chez Breezy, PAS systémique (5 tenants Breezy frères sondés 200 : above-flights, ac780, adi-albert-davidson-industries, adoc-tm, agence-carrieres). Employeur VIVANT (Paythings, fintech cash management AI, paythings.com 200, partenariat KORT Payments 2026-05) et qui recrute, mais AUCUNE migration d'ATS détectable : zéro page carrières sur paythings.com (sitemap = 8 pages produit/blog), aucun slug Breezy renommé (paythings/paythings-com/paythings-inc/paythingscom 404), aucun tenant Greenhouse/Lever/Workable/BambooHR/Recruitee/Ashby/Teamtailor/JazzHR/SmartRecruiters (Serper → néant) ; les offres visibles (Senior Director of Operations, remote Canada — pas clairement QC) ne circulent que via flux payants Appcast → agrégateurs (whatjobs/jobmesh/expertini/jobrapido) et LinkedIn, sans URL de candidature directe (chaînes de redirection suivies jusqu'au bout, impasses). Aucun code de fetch modifié : base.get lève un 404 explicite immédiat, sync_log propre ; 0 offre active en base (l'unique offre historique est inactive depuis longtemps), rien à archiver. Sync isolé rejoué : échec explicite attendu « 404 Client Error ». Si le tenant revient le sync repart seul ; si la fermeture se confirme sur plusieurs semaines, retrait complet au pattern derumarketcatering/mcgillstlaurent. Artefact vague C corrigé dans sources.json : url employeur vide → https://www.paythings.com (vérifiée 200). Docstring chronologie ajoutée au connecteur. Fiches paythings_19f14e354a62.md/ats-breezy.md/INDEX.md régénérées (1132 autres restaurées, hors périmètre). Non-régression plateforme breezy : agence_carrieres vert ok=1 found=1. 108 tests pytest verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +1 −1
  2. Fri, Oct 30, 2026 4

    1. [ka6] fix connecteur valtech: restauration chirurgicale du fix 3f719c8a emporté par un rollback automatique (verdict de mission illisible), re-testé vert found=7 (= médiane 7.0) — le fix était BON, le revert 2a50302b était la panne. Chronologie : fix valtech committé à 15:13 EDT le 2026-10-30 (bascule boards-api.greenhouse.io → site carrières officiel valtech.com après disparition du board Greenhouse de l'API publique, testé vert found=7), auto-reverté par la supervision à 15:17 parce que le verdict JSON de la mission était tronqué → « inconnu » (cas identique à enercare f5248721, fiche mémoire rollback-automatique-collateral) ; retour au code boards-api → 404 « Job board not found » à chaque cycle → stale re-signalé. Prémisse du fix re-vérifiée live AVANT restauration : boards-api 404 racine (inchangé), silo EU job-boards.eu.greenhouse.io/valtech désormais 404 franc (il 500ait ?error=true le matin — le retrait du board EU s'est achevé), joblist valtech.com/joblist/getjsonresult fonctionnel. Restauration CHIRURGICALE (doctrine enercare : jamais revert du revert, les docs générées ont bougé depuis via neweratech/alliedreit) : git checkout 3f719c8a -- jobka/connectors/valtech.py + réédition careers_url dans data/sources.json + note « NE PAS RE-REVERTER » dans la docstring. Sync isolé rejoué : vert ok=1 found=7 removed=0 en 2,4 s, les MÊMES 7 offres actives (Montréal) — le revert n'avait touché que le code, pas la base. Fiches valtech.md/ats-greenhouse.md/INDEX.md régénérées (1132 autres restaurées, hors périmètre). 108 tests pytest verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200. Si valtech est re-signalé : lire la docstring du connecteur et git log d'abord.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +1 −1
    2. [ka6] fix connecteur valtech: board Greenhouse disparu de l'API publique (migration silo EU cassée) → bascule sur le site carrières officiel valtech.com, IDs Greenhouse préservés — vert found=7 (= médiane 7.0)
      …
      Chronologie : vert found=7 en continu jusqu'à 10:11 EDT le 2026-10-30, puis
      404 « Job board not found » sur boards-api.greenhouse.io/v1/boards/valtech
      dès 11:53 (2 échecs consécutifs, stale). Diagnostic : le tenant vit sur le
      silo EU de Greenhouse (les absolute_url pointaient déjà sur
      job-boards.eu.greenhouse.io/valtech) mais TOUT le board y renvoie 500
      ?error=true (liste, détail, embed — un slug bidon donne 404, donc le board
      existe mais n'est plus servi), alors que l'API globale sert d'autres
      tenants EU (riverlane, eversports vérifiés 200) et que status.greenhouse.io
      est vert : board désactivé/mal migré côté Greenhouse, aucun slug de
      remplacement (Google n'indexe que « valtech », le site de l'employeur
      génère encore ces URLs). Réparation (doctrine autodesk→eightfold : suivre
      l'employeur) : fetch() réécrit sur le site carrières officiel —
      liste JSON /joblist/getjsonresult (paginée, 147 offres monde, garde-fou
      structure = erreur franche jamais un faux 0) + pages détail SSR
      /en-ca/career/jobs/<ghid>/ (description complète dans article.rte-block,
      datePosted JSON-LD = first_published Greenhouse vérifié, cache BD). Les IDs
      Greenhouse survivent en fin d'URL → continuité totale des external_id :
      sync isolé vert ok=1 found=7 updated=7 removed=0 en 14,8 s, les MÊMES
      7 offres actives (Montréal) qu'avant la panne, URLs repointées vers
      valtech.com (les anciennes job-boards.eu 500ent), dates de parution
      intactes (ex. 4999182101 → 2026-10-07). careers_url de sources.json
      repointée. Fiches valtech.md/ats-greenhouse.md/INDEX.md régénérées (1132
      autres restaurées, hors périmètre). 108 tests pytest verts, pm2 restart
      job-ka-sync OK, site local 200, www.job-ka.com 200.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +1 −1
    3. [ka6] fix connecteur mcgillstlaurent: retrait définitif de la source (pattern derumarketcatering 6744631f) — le tenant JazzHR mcgillstlaurent.applytojob.com est fermé en PERMANENCE (« Inactive Career Page » 200, re-vérifié live le 2026-10-30, 8 jours et 67 échecs consécutifs depuis le 2026-10-22 — bien au-delà des lapses transitoires ~35 h type xtl) : 3e sortie JazzHR délibérée du groupe McGill St Laurent, migration Lever achevée. Deux missions ka6 (2026-10-22, 2026-10-23) avaient conclu site_source_mort en conservant le connecteur : la supervision le resynchronisait donc en boucle (statut broken), exactement le cas derumarketcatering. Couverture TOTALE prouvée par le frère mcgillstlaurentb8 (Lever org mcgillstlaurent, board unifié du groupe) : vert found=15 au sync du 2026-10-29 23:52, API Lever live = 16 offres dont les CWP Energy QC (Junior Power Trader, Agentic Innovation Specialist + versions FR) ; invariant « un seul connecteur Lever par org » → pas de réécriture. Les offres JazzHR résiduelles sont déjà expirées (0 active en base, expire_stale 7 j passé le 2026-10-29). Retrait complet pattern maison : suppression de jobka/connectors/mcgillstlaurent.py (registre auto-découvrant), de l'entrée data/sources.json (1108→1107 sources, employeurs_directs 1047→1046, updated 2026-10-30, /api/sources vérifié sans CWP Energy) et de la fiche docs/connecteurs/mcgillstlaurent.md ; INDEX.md et ats-jazzhr.md régénérés (28→27 tenants, 1133 autres fiches restaurées hors périmètre). run.py sync mcgillstlaurent → « connecteur inconnu » (attendu) ; non-régression plateforme jazzhr : xtltransportlogistics vert found=32 en 1,5 s. 108 tests pytest verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200. La supervision passera broken→retired d'elle-même (~14 j).
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −15
  3. Tue, Oct 27, 2026 2

    1. [ka6] fix connecteur ingeniuinc: migration d'ATS SmartRecruiters → site Odoo de l'employeur le 2026-10-27 — tenant SR vidé, nouvelle plateforme odoo.py. Diagnostic : vert found=1 en continu jusqu'à 07:32 EDT, puis ok=1 found=0 dès 10:23 (removed=1 à la règle des 2 absences) — l'unique offre, un fantôme paru le 2021-08-02, dépubliée entre les deux. Vérification live : API postings SmartRecruiters IngeniuInc 200 totalFound=0 (tenant existant mais vidé), page board 404 ; l'entreprise s'est rebaptisée Ingeniu Solutions (ingeniu.ca → www.ingeniusolutions.com) et publie désormais sur son PROPRE site Odoo (module website_hr_recruitment, /jobs) : 2 offres publiées. Nouvelle classe de plateforme jobka/connectors/odoo.py (pattern glow) : liste HTML rendue serveur (cartes jobs_grid, ancre /jobs/<slug>-<id>, titre <h3>, libellé <address>), pagination /jobs/page/N suivie, détail par MICRODONNÉES schema.org/JobPosting (meta datePosted/employmentType, div itemprop=description) — ⚠️ la div description ne porte que l'intro, le corps (responsabilités, compétences, avantages) vit dans les blocs website-builder qui la suivent : capture jusqu'au footer, CTA retiré ; cache BD + budget de re-visites (JOBKA_ODOO_DETAIL_LIMIT=60), garde-fou anti faux « 0 offre » (marqueur jobs_grid + retry). Lieux en cascade (doctrine bento_sushi, rien d'inventé) : addressLocality structurée → libellé <address> QC → ville citée dans le bloc JobPosting (« à notre bureau de Montréal », « Située à Montréal ») validée contre le référentiel des municipalités QC ; tout ce qui suit <footer> (siège en pied de page) jamais lu. ingeniuinc.py re-pointé sur OdooConnector (ids 743999764601957 → 15/38), sources.json mis à jour (url, careers_url, connector=odoo). Tests réels : fetch isolé 2 offres Montréal (teletravail/hybride, temps_plein, descriptions 2623/3633 car.), sync vert ok=1 found=2 added=2 en 0,3 s (médiane 0.5 — le nouveau board porte réellement 2 offres), 2 offres actives en base, l'ancienne offre SR inactive. 108 tests pytest verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200. Fiches ingeniuinc.md/ats-odoo.md/ats-smartrecruiters.md/INDEX.md régénérées (1132 autres restaurées, hors périmètre).
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +4 −4
    2. [ka6] fix connecteur groupepmi: migration d'ATS Zoho Recruit → Glow in the Cloud le 2026-10-27 — tenant Zoho RÉSILIÉ, nouvelle plateforme glow.py. Diagnostic : vert found=10 en continu jusqu'à 07:20 EDT, puis ok=1 found=0 dès 10:10 (retraits suspendus par le garde-fou de dérive) ; le RSS et /jobs/Careers de groupepmi.zohorecruit.com renvoient tous deux une page d'erreur Zoho « groupepmi.zohorecruit.com does not exist » (200, 2596 octets) — tenant supprimé chez Zoho, pas un blip. La page carrières officielle groupepmi.ca/carriere/ pointe désormais (4 liens) vers jobs.glowinthecloud.com/groupepmi : ATS québécois Glow in the Cloud, 10 offres publiées (= médiane historique). Nouvelle classe de plateforme jobka/connectors/glow.py (pattern JazzHR) : liste HTML rendue serveur (cartes avec adresse complète), détail JSON-LD JobPosting (tabulations littérales absorbées par _jsonld), cache BD + budget de re-visites, garde-fou anti faux « 0 offre » (marqueur jobSearch-result + retry). Lieux en cascade (doctrine bento_sushi, rien d'inventé) : adresse de liste → jobLocation JSON-LD → ville citée dans la description validée contre le référentiel des municipalités QC (« Chantier Joliette ») ; le <address> des pages détail est le SIÈGE en footer, jamais utilisé ; 1 offre sans aucun marqueur de lieu correctement écartée. groupepmi.py re-pointé sur GlowConnector (ids 717696… → 20261015002…), sources.json mis à jour (careers_url, connector=glow). Tests réels : fetch isolé 9 offres QC/10 publiées, 2 syncs verts ok=1 found=9 (médiane 10) en 1,1 s puis 1,7 s avec removed=10 (anciennes offres Zoho retirées à la règle des 2 absences), 9 offres actives en base. 108 tests pytest verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200. Fiches groupepmi.md/ats-glow.md/ats-zoho_recruit.md/INDEX.md régénérées (1131 autres restaurées, hors périmètre).
      Simon-Pierre Boucher · 1 file +4 −4
  4. Fri, Oct 23, 2026 1

    1. [ka6] connecteur mcgillstlaurent: restauration après rollback automatique (2e intervention) — le diagnostic site_source_mort du 2026-10-22 (35756e9b) reste valide, le broken actuel vient du revert cff3361f de la supervision (verdict JSON tronqué → « inconnu », même mécanique que le cas enercare f5248721), pas de la source. Re-vérifié live le 2026-10-23 : tenant JazzHR mcgillstlaurent.applytojob.com toujours 200 « Inactive Career Page » (compte résilié chez l'ATS) ; board Lever unifié du groupe jobs.lever.co/mcgillstlaurent toujours vivant (7 offres dont 3 CWP Energy : Junior Power Trader QC, Agentic Innovation Specialist QC, Power Trader US filtrée) et DÉJÀ COUVERT par le frère mcgillstlaurentb8 (sync isolé rejoué ok=1 found=6 en 1,0 s). Restauration CHIRURGICALE (pas de revert du revert, les fiches docs ayant été régénérées entre-temps par les missions sobeys/gevgroupltd) : git checkout 35756e9b -- mcgillstlaurent.py (docstring chronologie) + réédition sources.json (url https://mcgillstlaurent.com/cwp-energy/ re-vérifiée 200, sectors [Énergie, Finance]) + note 2e intervention anti-récidive dans la docstring (« ne PAS re-reverter »). Sync isolé mcgillstlaurent rejoué : échec explicite attendu « compte JazzHR désactivé » (détection adb8637, comportement conçu) — aucun code de fetch modifié, le connecteur repartira seul si le tenant revenait. Fiches mcgillstlaurent.md/ats-jazzhr.md/INDEX.md régénérées (1131 autres fiches restaurées, hors périmètre). 108 tests verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +5 −2
  5. Thu, Oct 22, 2026 6

    1. Revert "[ka6] connecteur mcgillstlaurent: compte JazzHR désactivé chez l'ATS, recrutement ABSORBÉ par le board Lever unifié du groupe déjà couvert par le frère mcgillstlaurentb8 — verdict site_source_mort, connecteur conservé intact (1re intervention). Chronologie (sync_log) : dernier sync OK 2026-10-22 12:58 EDT found=5 (médiane 5.0), puis « Inactive Career Page » à 14:44 — TOUT le tenant mcgillstlaurent.applytojob.com (CWP Energy, division trading d'énergie du groupe McGill St Laurent) fermé : liste /apply/ ET pages détail des offres en base → 200 « Inactive Career Page », vérifié live. 2e tenant JazzHR du même groupe fermé après mcgillstlaurentb8 le 2026-09-30 (93b0c2c3) : sortie de JazzHR délibérée, migration Lever achevée. REPRENEUR identifié et DÉJÀ COUVERT : cwpenergy.com redirige désormais vers mcgillstlaurent.com/cwp-energy/, la page carrières du groupe (mcgillstlaurent.com/career/) liste le board Lever unifié jobs.lever.co/mcgillstlaurent par compagnie (All 7 · CWP Energy 3 · CWP Wood 1 · GSL Grain 2 · MSL Climate 1, compagnie = categories.department côté API) ; les 3 offres CWP Energy du board (Junior Power Trader QC, Agentic Innovation Specialist QC, Power Trader US filtrée) sont déjà ingérées par le connecteur frère mcgillstlaurentb8 (found=6, sync vert). PAS de réécriture sur Lever : un 2e connecteur sur le même org violerait l'invariant « aucun autre connecteur Lever sur cet org » (93b0c2c3) et ne produirait que des doublons ; aucun ATS propre à CWP Energy (tenants cwpenergy inexistants chez Lever/Greenhouse/JazzHR/Workable/BambooHR, balayage Serper → copies agrégateurs tierces seulement). Les 3 offres JazzHR actives (Trading Risk & Performance Analyst, Risk Analyst, Electrical Engineer - Power Flow) NON reconduites sur le board Lever (postes abandonnés ou pourvus) : archivage automatique via expire_stale (7 j sans last_seen, vers le 2026-10-29), aucune purge manuelle. Sync isolé rejoué : échec explicite attendu « compte JazzHR désactivé » (détection adb8637), comportement conçu. Artefacts vague E corrigés dans sources.json (pattern xtl c4a681e1) : url vide → https://mcgillstlaurent.com/cwp-energy/ (200 vérifié live) et sectors [] → [Énergie, Finance] (vocabulaire établi : 24 et 59 sources). Docstring mcgillstlaurent.py enrichie (chronologie + re-vérifs + décision). Non-régression jazzhr sur tenant vivant motosillimitees found=2 ok=1 ; frère mcgillstlaurentb8 found=6 ok=1. Fiches docs/connecteurs/ mcgillstlaurent.md + ats-jazzhr.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1131 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 108 tests verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200."
      …
      This reverts commit 35756e9b10b910c87c5a5e0208521f2db7130c95.
      Simon-Pierre Boucher · 1 file +2 −5
    2. [ka6] connecteur mcgillstlaurent: compte JazzHR désactivé chez l'ATS, recrutement ABSORBÉ par le board Lever unifié du groupe déjà couvert par le frère mcgillstlaurentb8 — verdict site_source_mort, connecteur conservé intact (1re intervention). Chronologie (sync_log) : dernier sync OK 2026-10-22 12:58 EDT found=5 (médiane 5.0), puis « Inactive Career Page » à 14:44 — TOUT le tenant mcgillstlaurent.applytojob.com (CWP Energy, division trading d'énergie du groupe McGill St Laurent) fermé : liste /apply/ ET pages détail des offres en base → 200 « Inactive Career Page », vérifié live. 2e tenant JazzHR du même groupe fermé après mcgillstlaurentb8 le 2026-09-30 (93b0c2c3) : sortie de JazzHR délibérée, migration Lever achevée. REPRENEUR identifié et DÉJÀ COUVERT : cwpenergy.com redirige désormais vers mcgillstlaurent.com/cwp-energy/, la page carrières du groupe (mcgillstlaurent.com/career/) liste le board Lever unifié jobs.lever.co/mcgillstlaurent par compagnie (All 7 · CWP Energy 3 · CWP Wood 1 · GSL Grain 2 · MSL Climate 1, compagnie = categories.department côté API) ; les 3 offres CWP Energy du board (Junior Power Trader QC, Agentic Innovation Specialist QC, Power Trader US filtrée) sont déjà ingérées par le connecteur frère mcgillstlaurentb8 (found=6, sync vert). PAS de réécriture sur Lever : un 2e connecteur sur le même org violerait l'invariant « aucun autre connecteur Lever sur cet org » (93b0c2c3) et ne produirait que des doublons ; aucun ATS propre à CWP Energy (tenants cwpenergy inexistants chez Lever/Greenhouse/JazzHR/Workable/BambooHR, balayage Serper → copies agrégateurs tierces seulement). Les 3 offres JazzHR actives (Trading Risk & Performance Analyst, Risk Analyst, Electrical Engineer - Power Flow) NON reconduites sur le board Lever (postes abandonnés ou pourvus) : archivage automatique via expire_stale (7 j sans last_seen, vers le 2026-10-29), aucune purge manuelle. Sync isolé rejoué : échec explicite attendu « compte JazzHR désactivé » (détection adb8637), comportement conçu. Artefacts vague E corrigés dans sources.json (pattern xtl c4a681e1) : url vide → https://mcgillstlaurent.com/cwp-energy/ (200 vérifié live) et sectors [] → [Énergie, Finance] (vocabulaire établi : 24 et 59 sources). Docstring mcgillstlaurent.py enrichie (chronologie + re-vérifs + décision). Non-régression jazzhr sur tenant vivant motosillimitees found=2 ok=1 ; frère mcgillstlaurentb8 found=6 ok=1. Fiches docs/connecteurs/ mcgillstlaurent.md + ats-jazzhr.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1131 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 108 tests verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +5 −2
    3. [ka6] fix connecteur vaco: tenant Greenhouse renommé vaco → vacobyhighspring (rebranding Highspring) — stale réel, migration d'org détectée et réparée. Le board « vaco » a disparu le 2026-10-22 entre les syncs de 11:15 (found=3 ok) et 13:23 (404 « Job board not found » à la racine de l'API, pas seulement sur /jobs) : rebranding Vaco → Highspring, nouvelle org « vacobyhighspring » (name API « Vaco by Highspring »), IDs d'offres renumérotés (format …003 → IDs courts). Nouveau board vérifié live : hosted 200, API content=true 200, 36 offres mondiales dont 1 QC (8274549 « Executive Finance and Accounting Recruiter (Full Desk) », Montréal — même poste que l'ancienne 7768571003) ; les 2 autres offres QC (Consulting PS Sales Director, Senior Account Executive) non reconduites dans la migration → volume QC réel = 1 (médiane 3.0 à recalibrer). Correctifs : BOARD=vacobyhighspring + EMPLOYER=Vaco by Highspring dans vaco.py (docstring chronologie), sources.json (name, careers_url, artefact vague C url vide → https://www.vaco.com, 200 vérifié), feeds.json (org + source_id:vaco épinglé pour préserver l'identifiant à la régénération, employer). Employer harmonisé sur les 5 lignes historiques (UPDATE, gotcha orthoclinical). Syncs réels : ok=1 found=1 added=1 (0,4 s) puis ok=1 found=1 removed=3 (garde-fou 2-miss, anciennes URLs 404). Fiches vaco.md/ats-greenhouse.md/INDEX.md régénérées. Non-régression greenhouse via laportefr found=61. 108 tests verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +3 −3
    4. [ka6] connecteur cardinalcouriers: stale = faux positif volume QC nul (médiane 3.0), rien à réparer côté flux — les 3 offres QC (2023 « Chauffeur-Livreur (P&D) Classe 1 » Rivière-du-Loup, 2096 « Linehaul Nuit, Conducteur, classe 1 » et 2118 « Opérations Entrepôt, Conducteur de chariot élévateur, client » Pointe-aux-Trembles) dépubliées par l'employeur entre les syncs de 07:02 (found=3) et 09:50 (found=0) le 2026-10-22, removed=3 au garde-fou 2-miss à 11:50, marqueur Dayforce confirmé live (classe stateindustrial) : détail fr-CA = 200 + postingStatus=4 pour les trois, offre vivante = postingStatus=1. Board re-vérifié vivant : 6 offres toutes Ontario (London, Hamilton, Mississauga, Edwards), 0 QC. Pas de migration d'ATS : cardinalcouriers.com/about-us/team-cardinal/ (« Join Team Cardinal ») pointe toujours can241.dayforcehcm.com/CandidatePortal/en-US/cardinalcouriers/Site/INDEEDEXCLUDE/ — même tenant, même board. DURCISSEMENT réel : fr-CA passé à maxCount=0 (les 3 QC étaient les seules offres publiées en français) alors qu'en-CA liste le board — aveuglement de culture apparu en cours de vie (classe peaktech 6a2cebc) → converti au pattern bi-culture CULTURES fr-CA+en-CA avec fusion external_id priorité fr-CA. Sync isolé ok=1 found=0 removed=0 en 4,9 s (en-CA parcouru, 6 offres ON filtrées hors QC). Artefacts vague C : EMPLOYER/name = « Linehaul Nuit, Conducteur, classe 1 » (TITRE de l'offre 2096, classe kodify/orthoclinical) → Cardinal Couriers (employer propagé aux 7 lignes inactives par UPDATE direct, gotcha orthoclinical), url vide dans sources.json → https://www.cardinalcouriers.com (200 vérifié live, « Cardinal Couriers Ltd. – Pre 8am Package Delivery »), region « Transport Pelber, Québec » → Pointe-aux-Trembles (Montréal) / Rivière-du-Loup. Docstring chronologie 1re intervention, fiches cardinalcouriers.md/ats-dayforce.md/INDEX.md régénérées. Non-régression dayforce via benmor found=4. 108 tests verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +3 −3
  6. Wed, Oct 21, 2026 11

    1. [ka6] connecteur gdmsi: stale = faux positif volume QC nul (médiane 0.5), rien à réparer — l'unique offre QC « Ingénieur Système - Senior » (744000142912909, Sherbrooke, parue 2026-08-11) dépubliée le jour même entre les syncs de 10:48 (found=1) et 14:36 (found=0), marqueur SmartRecruiters confirmé : API détail v1 = 200 + active:false (5e confirmation après oliverbonacini/arago/cca1/nielseniq). Board v1 vivant balayé en pagination complète (110 offres, publications du jour même) : Canada = Ottawa/Calgary/Dartmouth-Cole Harbour NS, zéro QC — sites QC du tenant = Sherbrooke (805 Galt O.) et Disraeli (drones SATP/RPAS), 0-1 poste par vagues. Pas de migration d'ATS : careers.smartrecruiters.com/GDMSI/career-page-ca reste le portail du tenant ; la façade maison gdmissionsystems.ca/careers/job-search charge en XHR (juger à l'API v1) et gd.com/careers affichait encore l'offre dépubliée (cache corporate non purgé, classe Phenom). Retrait propre au garde-fou 2-miss : sync isolé ok=1 found=0 removed=1. Le trou 10:48→14:36 = restarts pm2 des missions BambooHR du jour (variante cycle interrompu). Artefact vague C : url vide dans sources.json → https://gdmissionsystems.ca (403 anti-bot direct, 200 via Scrapfly, « General Dynamics Mission Systems-Canada » ; ⚠️ gdmsi.com redirige vers massint.co.uk, homonyme britannique sans rapport). EMPLOYER conservé : « General Dynamics Missions System International » = company.name déclaré par le tenant dans l'API SR. Docstring chronologie 1re intervention, fiches gdmsi.md/ats-smartrecruiters.md/INDEX.md régénérées. Non-régression SR via cima2 found=244. 108 tests verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
    2. [ka6] connecteur broccolini: broken = PANNE MONDIALE BambooHR (incident de sécurité PHP2SHELL) DÉJÀ TERMINÉE à l'arrivée de la mission, rien à réparer côté connecteur — même panne que rethinkcanada 7b553af8, robotiq 11935dc7, scalia 43e98cae, surmesur a697cc5a, toonboom e2674f6a, triotech 14ada0c8, vicpark 8bb2d6c6, ziptrekeco e6e7608c, batimoinc f3a1dbe1, bc2 676b3898 et bigbang 9d7b528c le même jour. Le tenant était vert avec found=23 (= médiane 23.0) au sync de 07:23:19 le 2026-10-21, premier échec à 10:16:50, première rotation du scheduler après la fenêtre de mise hors ligne des portails BambooHR (08:34-08:37 EDT), 11 échecs 404 consécutifs (/careers/list = 404 Route Not Found) jusqu'à 13:37:33. Pas une migration d'ATS : www.broccolini.com/en/careers pointe toujours vers broccolini.bamboohr.com/careers (vérifié live). FIN DE PANNE constatée pendant la mission : /careers/list de nouveau 200 (totalCount=47) sur broccolini ET le frère mitacs, le sync horaire de 13:54:28 avait déjà reverdit le tenant seul (ok=1 found=23 removed=0), re-prouvé par sync isolé pendant la mission (found=23 = médiane, added=0 removed=0) — les portails BambooHR sont revenus alors que status.bamboohr.com est encore MONITORING ; les autres frères bamboohr reverdiront seuls à leur prochaine rotation horaire. Aucun retrait pendant la panne (sync échouait proprement, ok=0 raise_for_status 404) : les 23 offres QC (22 Montréal + 1 Québec, immobilier/construction Broccolini) sont restées actives en base. Artefact vague C : url vide dans sources.json → https://www.broccolini.com (broccolini.com redirige vers www.broccolini.com/fr, 200 vérifié live, « Broccolini | Investir. Développer. Construire. »). Docstring chronologie 1re intervention, fiches broccolini.md/ats-bamboohr.md/INDEX.md régénérées. 108 tests verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +1 −1
    3. [ka6] connecteur bigbang: broken = PANNE MONDIALE BambooHR (incident de sécurité PHP2SHELL), rien à réparer côté connecteur — même panne que rethinkcanada 7b553af8, robotiq 11935dc7, scalia 43e98cae, surmesur a697cc5a, toonboom e2674f6a, triotech 14ada0c8, vicpark 8bb2d6c6, ziptrekeco e6e7608c, batimoinc f3a1dbe1 et bc2 676b3898 le même jour. Le tenant était vert avec found=7 (= médiane 7.0) au sync de 07:22:01 le 2026-10-21, premier échec à 10:15:46, première rotation du scheduler après la fenêtre de mise hors ligne des portails BambooHR (08:34-08:37 EDT) : /careers/list = 404 text/plain {"error_msg":"404 Route Not Found"} sur bigbang ET le frère mitacs (vérifiés live pendant la mission), status.bamboohr.com toujours MONITORING (PHP2SHELL). Pas une migration d'ATS : bigbang360.com/careers/ pointe toujours vers ce board BambooHR. Le sync échoue proprement (ok=0, raise_for_status 404, re-vérifié par sync isolé : removed=0) donc AUCUN retrait — les 7 offres QC (Montréal, consultation ERP/CRM Big Bang) restent actives en base ; dès le retour de BambooHR (sonder /careers/list, 200 = fenêtre finie, pattern fenêtre de maintenance Workday) le sync horaire repart seul. Artefact vague C : url vide dans sources.json → https://bigbang360.com (200 vérifié live, « Big Bang 360 | ERP, CRM & Digital Transformation Experts » ; bigbangerp.com redirige vers bigbang360.com — ⚠️ PAS gobigbang.com qui redirige vers bigbangflow.com, homonyme d'email marketing). Docstring chronologie 1re intervention, fiches bigbang.md/ats-bamboohr.md/INDEX.md régénérées. 108 tests verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +1 −1
    4. [ka6] connecteur bc2: broken = PANNE MONDIALE BambooHR (incident de sécurité PHP2SHELL), rien à réparer côté connecteur — même panne que rethinkcanada 7b553af8, robotiq 11935dc7, scalia 43e98cae, surmesur a697cc5a, toonboom e2674f6a, triotech 14ada0c8, vicpark 8bb2d6c6, ziptrekeco e6e7608c et batimoinc f3a1dbe1 le même jour. Le tenant était vert avec found=1 (= médiane 1.0) au sync de 07:20:40 le 2026-10-21, premier échec à 10:14:55, première rotation du scheduler après la fenêtre de mise hors ligne des portails BambooHR (08:34-08:37 EDT) : /careers/list = 404 text/plain {"error_msg":"404 Route Not Found"} sur bc2 ET le frère mitacs (vérifiés live pendant la mission), status.bamboohr.com toujours MONITORING (PHP2SHELL, « UPDATE: We have temporarily taking BambooHR offline as a precaution »). Pas une migration d'ATS. Le sync échoue proprement (ok=0, raise_for_status 404, re-vérifié par sync isolé : removed=0) donc AUCUN retrait — l'offre QC (ARCHITECTE PAYSAGISTE, Montréal, urbanisme Groupe BC2) reste active en base ; dès le retour de BambooHR (sonder /careers/list, 200 = fenêtre finie, pattern fenêtre de maintenance Workday) le sync horaire repart seul. Artefact vague C : url vide dans sources.json → https://groupebc2.ca (200 vérifié live, « Groupe BC2 — Activer la vitalité des milieux et des communautés » ; groupebc2.com redirige vers le .ca). Docstring chronologie 1re intervention, fiches bc2.md/ats-bamboohr.md/INDEX.md régénérées. 108 tests verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +1 −1
    5. Simon-Pierre Boucher · 1 file +1 −1
    6. [ka6] connecteur triotech: stale = PANNE MONDIALE BambooHR (incident de sécurité PHP2SHELL), rien à réparer côté connecteur — même panne que rethinkcanada 7b553af8, robotiq 11935dc7, scalia 43e98cae, surmesur a697cc5a et toonboom e2674f6a le même jour. Le tenant était vert avec found=14 (= médiane 14.0) au sync de 05:55:13 le 2026-10-21, premier échec à 08:47:48, pile dans la fenêtre de mise hors ligne des portails BambooHR (08:34-08:37 EDT) : /careers/list = 404 text/plain {"error_msg":"404 Route Not Found"} sur triotech ET le frère mitacs (vérifiés live pendant la mission), status.bamboohr.com toujours MONITORING (PHP2SHELL). Pas une migration d'ATS. Le sync échoue proprement (ok=0, raise_for_status 404, re-vérifié par sync isolé : removed=0) donc AUCUN retrait — les 14 offres QC (Montréal/Joliette, attractions médiatiques Triotech) restent actives en base ; dès le retour de BambooHR (sonder /careers/list, 200 = fenêtre finie, pattern fenêtre de maintenance Workday) le sync horaire repart seul. Artefact vague C : url vide dans sources.json → https://trio-tech.com (200 vérifié live, « Interactive Dark Rides Manufacturer & Media-Based Attractions | Triotech ») — ⚠️ PAS triotech.com qui est Trio-Tech International (semi-conducteurs, US/Singapour). Docstring chronologie 1re intervention, fiches triotech.md/ats-bamboohr.md/INDEX.md régénérées. 108 tests verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +1 −1
    7. [ka6] connecteur rethinkcanada: stale = PANNE MONDIALE BambooHR (incident de sécurité PHP2SHELL), rien à réparer côté connecteur. BambooHR a mis ses portails carrières hors ligne par précaution le 2026-10-21 entre 08:34 et 08:37 EDT (dernier frère vert redbarrels 08:33:57, premier 404 rethinkcanada 08:37) : /careers/list ET la page /careers = 404 text/plain {"error_msg":"404 Route Not Found"} (Cloudflare) sur TOUS les tenants — 24 connecteurs BambooHR du repo touchés simultanément (mitacs/batimoinc/devimco… vérifiés live), status.bamboohr.com = « MONITORING — PHP2SHELL security vulnerability… temporarily take BambooHR offline », rendu Scrapfly du portail = 403 « BambooHR temporarily unavailable ». Pas une migration : found=7 encore vert à 05:31 le matin même, et rethinkideas.com/careers (Next.js) affiche « Something went wrong » car il consomme la même API BambooHR. Le sync échoue proprement (ok=0, raise_for_status 404) donc AUCUN retrait — les 7 offres QC restent actives en base ; dès le retour de BambooHR (sonder /careers/list, 200 = fenêtre finie, pattern fenêtre de maintenance Workday) le sync horaire repart seul. Artefact vague C : url vide dans sources.json → https://www.rethinkideas.com (200 vérifié live). Docstring chronologie 1re intervention, fiches rethinkcanada.md/ats-bamboohr.md/INDEX.md régénérées. 108 tests verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +1 −1
  7. Tue, Oct 20, 2026 2

    1. [ka6] connecteur makeitbloom: stale = angle mort JazzHR réel — page détail sans JSON-LD JobPosting, repli HTML générique dans jazzhr.py (found 0→1). Les 3 offres SEO (UhDHyS6fne/xvSwVILniQ/qdFba5tbN5, Montréal) dépubliées le jour même entre les syncs de 06:38 (found=3) et 15:37 (found=0) du 2026-10-20, détails confirmés 410 Gone (marqueur JazzHR, cf. geox). MAIS le board n'était PAS vide : l'offre neuve dVcAlVM7ko « Spécialiste des médias payants » (republication du poste de sept. sous un id neuf, pattern du tenant) était rejetée par le filtre QC car sa page détail ne porte AUCUN bloc JSON-LD JobPosting (seul un Organization) — une première sur ce tenant, alors que le frère playground est toujours balisé. Vrai angle mort corrigé dans jazzhr.py : _detail_fields_from_html, repli quand extract_jobposting échoue — titre via h2 du job-header, lieu « Ville, QC, Canada » via le bloc job-attributes title=Location, type via resumator-job-employment, description via #job-description borné par resumator-mobile-apply-wrapper ; validé sur les pages live makeitbloom (sans LD → Montreal/QC) et playground (avec LD → chemin JSON-LD inchangé). Test de régression ajouté (QC gardée, ON lâchée, LD prioritaire). Sync isolé rejoué : found=1 added=1 ok=1 en 2,3 s, offre en base Montréal active. Artefact vague C : url vide dans sources.json → https://www.makeitbloom.com (200 vérifié live). Docstring chronologie 1re intervention, fiches makeitbloom.md/ats-jazzhr.md/INDEX.md régénérées. 108 tests verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +1 −1
  8. Mon, Oct 19, 2026 4

    1. [ka6] connecteur nutreco: stale = faux positif volume QC nul (médiane 1.0) — vague d'embauche QC (16 offres Trouw Nutrition/Shur-Gain) dépubliée progressivement 17→19 oct (16→11→2→1→0), dernière offre VAC30066-1 « Assistant(e) aux opérations — Œufs de vaccin » (Notre-Dame-des-Prairies, parue 2026-10-08) retirée entre les syncs de 08:49 (found=1) et 11:22 (found=0); détail cxs = 404 HTTP_404 SANS sous-code (variante reddyice, 2e confirmation — offre vivante répond 200 au même format), board live 200 avec 129 offres monde, facette Country Canada=4 (Skretting NB/BC), searchText Quebec/Montréal/Berthierville/Saint-Hyacinthe=0, 6 multi-lieux tous Europe/LatAm. Pas de migration d'ATS: façades officielles careers.nutreco.com (EN) et carrieres.nutreco.com (FR, liée depuis trouwnutrition.ca/fr-ca/Carrieres/) = miroirs du même vivier (sitemaps 129-130 postes identiques, 0 QC, l'offre St-Hyacinthe /vacancy/3942 indexée par Google y est 404); aucun signal M&A/fermeture QC 2026. VRAI bug latent corrigé: ce tenant met la RÉGION dans bulletFields[0] (['São Paulo'], ['Guayas']…) → external_id « Quebec » partagé par TOUTES les offres QC qui s'écrasaient sur un seul uid en base (16 trouvées, 1 affichée pendant la vague) — hook _external_id pattern altusgroup (bullet VACnnnnn sinon suffixe du chemin). Artefact vague C: url vide dans sources.json → https://www.nutreco.com (200 vérifié live). Sync isolé rejoué: found=0 ok=1 removed=1 (retrait propre de l'uid fantôme « Quebec ») en 10 s. Docstring chronologie 1re intervention, fiches nutreco.md/INDEX.md régénérées. 107 tests verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +1 −1
  9. Sat, Oct 17, 2026 8

    1. Simon-Pierre Boucher · 1 file +1 −1
    2. Simon-Pierre Boucher · 1 file +1 −1
    3. Simon-Pierre Boucher · 1 file +2 −2
  10. Fri, Oct 16, 2026 1

    1. Simon-Pierre Boucher · 1 file +2 −2
Menu

Theme