SPB Git

spb/job-ka

Public
History of data Clear filter
page 1
  1. Thu, Oct 8, 2026 5

    1. [ka6] fix connecteur alliedreit: faux positif supervision « volume QC nul » (55e cas du pattern, 1re intervention) — le connecteur est SAIN, found=0 est le comportement CORRECT. Allied Properties REIT (alliedreit.com, FPI de bureaux urbains basée à Toronto, portefeuille montréalais réel d'où une présence QC récurrente mais modeste, médiane historique 4.0 = 2 paires FR/EN) : ses 4 offres QC (paires FR/EN « Gestionnaire, Services Techniques » 43e09e30/082fca35 et « Superviseur, Services Techniques » 9541f0be/3137968d, Montréal, parues 2026-09-09 et 2026-09-17) ont été DÉPUBLIÉES par l'employeur entre 17:35 et 19:41 EDT le 2026-10-08 (found 4 → 0, missed=4, puis removed=4 via le garde-fou 2-miss à 22:12), sync_log VERT en continu (ok=1). VARIANTE NEUVE du marqueur Lever documentée (≠ quenchwater f1b4e0a où page ET API v0 étaient 404) : le détail dépublié reste servi en 200 avec contenu complet et bouton Apply sur jobs.lever.co/alliedreit/<id>, alors que l'API v0 /postings/<org>/<id> répond 404 et que l'offre est absente du board — purge de page différée ou offre « unlisted » ; trancher à l'API v0 + présence au board, jamais au code HTTP de la page détail. Board re-vérifié vivant : API v0 200, 8 offres toutes Toronto (Building Operator, comptables CPA, Manager Portfolio Operations…), 0 lieu QC. Pas de migration d'ATS : alliedreit.com/company/careers/ (403 anti-bot au curl direct, sondé via Scrapfly asp+render_js) embarque toujours jobs.lever.co/alliedreit. Artefact vague C comblé dans sources.json : url employeur vide → https://www.alliedreit.com (vérifié 200 via Scrapfly, redirige vers l'apex alliedreit.com ; édition chirurgicale 1 ligne, JSON valide). Tant qu'Allied ne republie pas de poste au Québec, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que gevgroupltd 8ff81d0 / studiokraftonboard 164d701 / national 7dca64d / arago f697ca8). Docstring alliedreit.py enrichie (chronologie + nature du volume + variante du marqueur Lever). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,6-0,7 s ; non-régression plateforme lever sur tenant vivant bhvr : found=26, ok. Fiches docs/connecteurs/ alliedreit.md + ats-lever.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). 107 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. [ka6] fix connecteur gevgroupltd: faux positif supervision « volume QC nul » (54e cas du pattern, 1re intervention) — le connecteur est SAIN, found=0 est le comportement CORRECT. GEV Wind Power (gevwindpower.com, maintenance/réparation de turbines éoliennes, HQ Hessle R.-U. + Fort Worth Texas) est un employeur international à présence québécoise occasionnelle (médiane historique 0.5) ; son unique offre QC jamais vue (2661606 « Superviseur de construction de parc éolien (titulaire d'une licence RBQ) », Québec, parue 2026-06-30, ~3 mois d'affichage) a été DÉPUBLIÉE par l'employeur entre 14:13 et 16:36 EDT le 2026-10-08 (found 1 → 0, missed=1, puis removed=1 via le garde-fou 2-miss à 17:57), sync_log VERT en continu (ok=1). Marqueur Recruitee confirmé live : détail dépublié = 404 sur la page /o/<slug> ET sur l'API /api/offers/<id>. Board re-vérifié vivant : API 200, 10 offres (Fort Worth/Dallas/Abilene US, Hull/Hessle UK, Taichung TW, Calgary AB), is_quebec_location False sur tous les libellés, AUCUN lieu QC. Pas de migration d'ATS : gevwindpower.com/careers/ (200) embarque toujours gevgroupltd.recruitee.com. DOUBLE artefact vague C corrigé : EMPLOYER/name « Siemens Gamesa Certified Wind Turbine Troubleshooters » était le TITRE de l'offre 2740886 (Calgary) pris pour un nom d'entreprise (gotcha Recruitee vague C documenté) → GEV Wind Power (gevgroupltd.py + sources.json) ; url employeur vide → https://www.gevwindpower.com (vérifié 200, JSON valide). Tant que GEV ne republie pas de poste au Québec, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que studiokraftonboard 164d701 / national 7dca64d / arago f697ca8). Docstring gevgroupltd.py enrichie (chronologie + nature du volume + artefacts). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,2-0,3 s ; non-régression plateforme recruitee sur tenant vivant anciapersonnelinc : found=57, ok. Fiches docs/connecteurs/ gevgroupltd.md + ats-recruitee.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). 107 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 +2 −2
    3. [ka6] fix connecteur studiokraftonboard: faux positif supervision « volume QC nul » (53e cas du pattern, 1re intervention) — le connecteur est SAIN, found=0 est le comportement CORRECT. KRAFTON Montréal Studio (kraftonmontreal.com, studio AAA de KRAFTON Inc./PUBG ouvert en 2023, développe « Project Windless » annoncé au State of Play de février 2026) publie peu (médiane 1.0, 4 offres distinctes vues depuis la création du connecteur). Son unique offre QC restante « Writer - Scenariste Senior » (8773420002, Montréal, parue 2026-09-03) a été DÉPUBLIÉE par l'employeur entre 12:36 et 14:59 EDT le 2026-10-08 (found 1 → 0, missed=1, puis removed=1 via le garde-fou 2-miss au re-test), sync_log VERT en continu (ok=1) ; le statut stale vient du trou de cadence du cycle complet des 1100+ sources + restart pm2 de 17:08 (mission national), pas d'une panne. Marqueurs Greenhouse confirmés live (4e confirmation, après gearboxquebec/reallygreatreading/national) : détail dépublié = 302 → /studiokraftonboard?error=true + API détail 404. Particularité : board re-vérifié VIVANT (API 200) mais ENTIÈREMENT VIDE (0 offre toutes régions) — dépublication complète, PAS une migration d'ATS : kraftonmontreal.com (200) est un frontend WordPress maison dont la section carrières, rendue côté serveur depuis le MÊME tenant Greenhouse, est vide elle aussi ; le portail corporate krafton.com/en/careers/jobs/ (403 au curl direct, sondé via Scrapfly render_js) ne mentionne « Montréal » que comme option de filtre studio/bureau — aucune offre montréalaise orpheline. Studio bien vivant (LinkedIn « actively recruiting », jeu en développement) : creux d'embauche, même classe que ghgsat 5e2c122 (board vidé sans migration) / national 7dca64d / pokafr 035acb7. Artefact vague B comblé dans sources.json : url employeur vide → https://kraftonmontreal.com (vérifié 200, édition chirurgicale 1 ligne, JSON valide). Tant que le studio ne republie pas de poste, ce connecteur sera re-signalé périodiquement : structurel, pas une panne. Docstring studiokraftonboard.py enrichie (chronologie + nature du volume + topologie frontend WP→Greenhouse). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,1 s ; non-régression plateforme greenhouse sur tenant vivant laportefr : found=61, ok. Fiches docs/connecteurs/ studiokraftonboard.md + ats-greenhouse.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). 107 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
    4. [ka6] fix connecteur national: faux positif supervision « volume QC nul » (52e cas du pattern, 1re intervention) — le connecteur est SAIN, found=0 est le comportement CORRECT. NATIONAL (national.ca, cabinet de relations publiques fondé à Montréal, bureaux pan-canadiens, groupe AVENIR GLOBAL) publie peu : volume historique = UNE offre QC (5151496007 « Conseiller(ère), Relations médias, positionnement corporatif et produits (Remplacement de congé de maternité) », Montréal, parue 2026-06-02, médiane 1.0), DÉPUBLIÉE par l'employeur entre 12:24 et 14:45 EDT le 2026-10-08 (found 1 → 0, missed=1, puis removed=1 via le garde-fou 2-miss au re-test), sync_log VERT en continu (ok=1). Marqueurs Greenhouse confirmés live : détail dépublié = 302 → /national?error=true (3e confirmation, après gearboxquebec et reallygreatreading) + API détail 404 "Job not found". Board re-vérifié vivant : API 200, 3 offres (Director Corporate Communications Toronto, Director Public Affairs T.-N.-L., Senior Consultant Public Affairs Toronto), is_quebec_location False sur tous les libellés, AUCUN lieu QC. Pas de migration d'ATS : www.national.ca/en/careers/ (200) est un frontend maison branché sur le MÊME tenant Greenhouse — les liens /en/careers/detail/<id>/ reprennent exactement les 3 ids du board, l'offre dépubliée en est absente aussi. Artefact vague C comblé dans sources.json : url employeur vide → https://www.national.ca (vérifié 200, édition chirurgicale 1 ligne, JSON valide). Tant que NATIONAL ne republie pas de poste au Québec, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que arago f697ca8 / trener_robotics 8d6ceb7 / pokafr 035acb7 / blockstream e270bec). Docstring national.py enrichie (chronologie + nature du volume + topologie frontend maison→Greenhouse). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,1 s ; non-régression plateforme greenhouse sur tenant vivant laportefr : found=61, ok. Fiches docs/connecteurs/ national.md + ats-greenhouse.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 ; gotcha restauration : hubinternational.md/msxinternational.md matchent le grep « national.md »). 107 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
    5. [ka6] fix connecteur arago: faux positif supervision « volume QC nul » (51e cas du pattern, 1re intervention) — le connecteur est SAIN, found=0 est le comportement CORRECT. Arago (aragoconsulting.com, intégrateur SAP SuccessFactors basé à Paris — bureaux Bordeaux, Genève, Porto — qui a absorbé l'équipe Rhaegal de rhaegal.com, d'où la redirection du portail public jobs.smartrecruiters.com/Arago vers rhaegal.com : URL custom du tenant, sans effet sur le connecteur qui lit l'API JSON) est un employeur européen à présence montréalaise occasionnelle ; sa paire FR/EN « Business Manager - Québec (Canada) » (744000139003289 / 744000139000904, Montréal, parue 2026-07-22, médiane historique 1.0) a été DÉPUBLIÉE par l'employeur entre 03:13 et 06:43 EDT le 2026-10-08 (found 2 → 0, missed=2, puis removed=2 via le garde-fou 2-miss à 08:07), sync_log VERT en continu (ok=1). Marqueur SmartRecruiters confirmé live (2e confirmation après oliverbonacini d461e83) : détail API dépublié = HTTP 200 + active:false — trancher sur active, jamais sur le code HTTP. Board re-vérifié vivant et activement utilisé : API 200, 7 offres (Paris ×4, Bordeaux, Genève, Porto), dernière publication 2026-10-06, is_quebec_location False sur tous les libellés, AUCUN lieu QC. Pas de migration d'ATS : le tenant publie encore activement sur SmartRecruiters (aucun autre ATS référencé par aragoconsulting.com/en/careers, page vitrine rendue via Scrapfly). Artefact vague C comblé dans sources.json : url employeur vide → https://www.aragoconsulting.com (vérifié 200, édition chirurgicale 1 ligne, JSON valide). Tant qu'Arago ne republie pas de poste au Québec, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que trener_robotics 8d6ceb7 / pokafr 035acb7 / blockstream e270bec / reallygreatreading 8d4d3df). Docstring arago.py enrichie (chronologie + nature du volume + acquisition Rhaegal). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,5 s ; non-régression plateforme smartrecruiters sur tenant vivant cima2 : found=243, ok. Fiches docs/connecteurs/ arago.md + ats-smartrecruiters.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). 107 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
  2. Wed, Oct 7, 2026 3

    1. [ka6] fix connecteur trener_robotics: faux positif supervision « volume QC nul » (50e cas du pattern, 1re intervention) — le connecteur est SAIN, found=0 est le comportement CORRECT. Trener Robotics (trener.ai, « physical AI » pour robots industriels, plateforme Acteris) est un employeur international (HQ San Jose CA, bureaux Trondheim Norvège et Barcelone) à présence montréalaise occasionnelle ; son unique offre QC jamais vue (c9446546 « Senior Software Engineer, Integration Suite », parue 2026-06-30, médiane historique 0.5) était MULTI-LIEUX « San Jose OR Montreal OR Trondheim » — c'est le lieu SECONDAIRE Montréal qui passait le filtre _keep (lieu principal donc location_label/city en base = « Trondheim, Norway », ce qui intriguait au premier regard : le filtre est sain, is_quebec_location re-testé False sur tous les libellés non-QC). Elle a été DÉPUBLIÉE par l'employeur entre 10:34 et 12:53 EDT le 2026-10-07 (found 1 → 0, missed=1, puis removed=1 via le garde-fou 2-miss à 15:08), sync_log VERT en continu (ok=1). Marqueur Ashby confirmé live (2e confirmation après blockstream e270bec) : détail dépublié = HTTP 200 (SPA) + window.__appData.posting = null. Board re-vérifié vivant : API 200, 4 offres (San Jose US-HQ ×3, Trondheim+Barcelone), is_quebec_location False sur tous les libellés, AUCUN lieu QC. Pas de migration d'ATS : trener.ai/company#careers (200) embarque toujours jobs.ashbyhq.com/Trener-Robotics (slug insensible à la casse, mêmes ids d'offres que l'API). Artefact vague C comblé dans sources.json : url employeur vide → https://trener.ai (vérifié 200, édition chirurgicale 1 ligne, JSON valide). Tant que Trener ne republie pas d'offre avec un lieu québécois, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que blockstream e270bec / pokafr 035acb7 / reallygreatreading 8d4d3df / jove 8c2fc01). Docstring trener_robotics.py enrichie (chronologie + nature du volume + mécanique multi-lieux). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,1 s ; non-régression plateforme ashby sur tenant vivant lightspeedhq : found=62, ok=1, 0,4 s. Fiches docs/connecteurs/ trener_robotics.md + ats-ashby.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). 107 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
    2. [ka6] fix connecteur pokafr: faux positif supervision « volume QC nul » (49e cas du pattern, 1re intervention) — le connecteur est SAIN, found=0 est le comportement CORRECT. Poka FR est le board Greenhouse MIROIR FRANÇAIS de Poka (poka.io, SaaS manufacturier de Québec ; frère EN = connecteur poka, 3e board pokaeu Europe non couvert) ; l'employeur publie peu et par paires FR/EN appariées. Sa dernière offre QC (6204969004 « Stratège de contenu et communications », parue 2026-09-28, médiane historique 0.5) a été DÉPUBLIÉE par l'employeur entre 10:20 et 12:40 EDT le 2026-10-07 (found 1 → 0, missed=1, puis removed=1 via le garde-fou 2-miss à 14:54), et sa JUMELLE EN 6204970004 « Content and Communications Strategist » a disparu du board frère poka au même sync (found 2 → 1) — dépublication de paire synchronisée, sync_log VERT en continu (ok=1). Marqueur Greenhouse confirmé live : détail dépublié = 302 → /pokafr?error=true. Board re-vérifié vivant et activement utilisé : API 200, 1 offre « Stratège Web SEO et AEO » (6210186004, jumelle FR de 6210184004 côté poka) localisée « Canada - Remote » SANS province → exclue par design (is_quebec_location testé : False — même règle que reallygreatreading 8d4d3df), AUCUN lieu QC. Le frère poka (sain, found=1) couvre l'offre « Sales Development Representative | Montreal/Toronto » : aucune offre montréalaise orpheline. Pas de migration d'ATS : poka.io/en/careers (200) référence toujours Greenhouse (boards poka + pokaeu). Artefact vague C comblé dans sources.json : url employeur vide → https://www.poka.io (vérifié 200, édition chirurgicale 1 ligne, JSON valide). Tant que Poka ne republie pas d'offre localisée au Québec sur son board FR, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que blockstream e270bec / reallygreatreading 8d4d3df / strongtie a295929 / jove 8c2fc01). Docstring pokafr.py enrichie (chronologie + nature du volume + topologie des 3 boards). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,1 s ; non-régression plateforme greenhouse sur tenant vivant laportefr : found=61, ok=1, 0,2 s. Fiches docs/connecteurs/ pokafr.md + ats-greenhouse.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). 107 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
    3. [ka6] fix connecteur blockstream: faux positif supervision « volume QC nul » (48e cas du pattern, 1re intervention) — le connecteur est SAIN, found=0 est le comportement CORRECT. Blockstream (blockstream.com, infrastructure Bitcoin) est un employeur international (Menlo Park, Zurich/Genève/Lugano, New York, remote) ; son unique offre QC (a25901c4 « Staff Accountant & Accounts Payable », Montréal, parue 2026-06-18, médiane historique 1.0) a été DÉPUBLIÉE par l'employeur entre 09:26 et 11:51 EDT le 2026-10-07 (found 1 → 0, missed=1, puis removed=1 via le garde-fou 2-miss), sync_log VERT en continu (ok=1). Marqueur Ashby confirmé live (1re confirmation de ce marqueur dans le repo) : détail dépublié = HTTP 200 (SPA) avec window.__appData.posting = null — trancher sur l'absence de l'offre dans le JSON posting-api, jamais sur le code HTTP (même classe de marqueur que Breezy). Board re-vérifié vivant : API 200, 46 offres, is_quebec_location négatif sur les 11 libellés de lieux distincts (APAC, Geneva, HQ, Lugano, Menlo Park, New York, Remote, Remote (GH), Switzerland, United States, Zurich), AUCUN lieu QC. Pas de migration d'ATS : blockstream.com/careers (200) embarque toujours jobs.ashbyhq.com (46 références). Artefact vague C comblé dans sources.json : url employeur vide → https://blockstream.com (vérifié 200, édition chirurgicale 1 ligne, JSON valide). Tant que Blockstream ne republie pas de poste au Québec, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que strongtie a295929 / reworld c59448d / jove 8c2fc01 / reallygreatreading 8d4d3df). Docstring blockstream.py enrichie (chronologie + nature du volume). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,1-0,2 s ; non-régression plateforme ashby sur tenant vivant lightspeedhq : found=62, ok=1, 0,5 s. Fiches docs/connecteurs/ blockstream.md + ats-ashby.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). 107 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
  3. Tue, Oct 6, 2026 8

    1. [ka6] fix connecteur reallygreatreading: faux positif supervision « volume QC nul » (47e cas du pattern, 1re intervention) — le connecteur est SAIN, found=0 est le comportement CORRECT. Really Great Reading (reallygreatreading.com, EdTech littératie basée aux É.-U., équipe majoritairement remote) avait publié à l'été 2026 une grappe de 4 postes TI « Quebec, Canada » (parus 2026-07-09 → 2026-07-28, dépubliés au fil d'août-septembre) ; la dernière survivante (4313417009 « Senior Software Developer », médiane historique 1.0) a été DÉPUBLIÉE par l'employeur entre 15:56 et 18:17 EDT le 2026-10-06 (found 1 → 0, missed=1, puis removed=1 via le garde-fou 2-miss), sync_log VERT en continu (ok=1). Marqueur Greenhouse confirmé live : détail = 302 → /reallygreatreading?error=true. Board re-vérifié vivant : API 200, 9 offres, toutes « Remote » US/régions US — les libellés « Remote US or Canada » sans province sont exclus par design (is_quebec_location testé : False), AUCUN lieu QC. Pas de migration d'ATS : reallygreatreading.com/careers (200) redirige directement vers ce même board Greenhouse. Artefact vague C comblé dans sources.json : url employeur vide → https://www.reallygreatreading.com (vérifié 200, édition chirurgicale 1 ligne, JSON valide). Tant que l'employeur ne republie pas de poste localisé au Québec, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que strongtie a295929 / reworld c59448d / jove 8c2fc01 / industrialelectricmanufacturing fa64460 / postmediadistributionsolutions 66e17c5). Docstring reallygreatreading.py enrichie (chronologie + nature du volume). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,1 s ; non-régression plateforme greenhouse sur tenant vivant laportefr : found=61, ok=1, 0,2 s. Fiches docs/connecteurs/ reallygreatreading.md + ats-greenhouse.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). 107 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
    2. [ka6] fix connecteur postmediadistributionsolutions: faux positif supervision « volume QC nul » (46e cas du pattern, 1re intervention) — le connecteur est SAIN, found=0 est le comportement CORRECT. Postmedia Distribution Solutions (division logistique « source-to-shelf » de Postmedia lancée 2026-07, postmedia.com/postmedialogistics/) publie ses postes terrain ville par ville sur un board Breezy pan-canadien ; son unique offre QC (dbf5f01158a2 « Part-Time Merchandiser », Gatineau, 16,60 $/h) a été DÉPUBLIÉE par l'employeur entre 15:53 et 18:14 EDT le 2026-10-06 (found 1 → 0, miss_count=1, puis removed=1 via le garde-fou 2-miss au sync rejoué), sync_log VERT en continu (ok=1). Marqueur Breezy confirmé live (2e confirmation après telus_health 5134fa5) : détail = 200 + « Position Closed », offre absente du /json — trancher sur l'absence dans /json, pas sur le code HTTP. Board re-vérifié vivant et ACTIVEMENT utilisé : /json 200, 18 offres (publications 2026-09-29 et 2026-10-02), réparties AB/SK/BC/NB/ON/NS, multi-lieux inspectés (Fort Frances/Emo tous deux ON), AUCUN lieu QC — « Ottawa, ON » est côté ontarien, pas Gatineau. Pas de migration d'ATS : le Dayforce de postmedia.com/careers (can63/jobs.dayforcehcm.com ns postmedia, site PostmediaCareers) est le portail CORPORATE Postmedia Network, entité distincte — sondé via la mécanique DayforceConnector du repo : 25 offres en-CA, 0 QC (fr-CA aveugle maxCount=0, pattern partition-culture connu) → aucune récupération par portail frère possible (angle dentons/pwc vérifié négatif). Particularité du tenant : les Merchandiser sont republiés en CYCLE par ville avec un id Breezy neuf à chaque cycle (l'offre Gatineau avait déjà vu sa date_posted rafraîchie 2026-09-17 → 2026-10-02) — elle peut réapparaître sous un autre id ; tant que la division ne republie pas de poste au Québec, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que strongtie a295929 / reworld c59448d / jove 8c2fc01 / industrialelectricmanufacturing fa64460). Artefact vague C comblé dans sources.json : url employeur vide → https://www.postmedia.com/postmedialogistics/ (vérifié 200, édition chirurgicale 1 ligne, JSON valide). Docstring postmediadistributionsolutions.py enrichie (chronologie + nature du volume). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,1 s, removed=1 au 1er replay (garde-fou 2-miss) ; non-régression plateforme breezy sur tenant vivant recruiting : found=86, ok=1, 0,4 s. Fiches docs/connecteurs/ postmediadistributionsolutions.md + ats-breezy.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). 107 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
    3. [ka6] fix connecteur industrialelectricmanufacturing: faux positif supervision « volume QC nul » (45e cas du pattern, 1re intervention) — le connecteur est SAIN, found=0 est le comportement CORRECT. IEM (iemfg.com, fabricant d'équipement de distribution électrique) est basé aux É.-U. (Jacksonville FL, San Antonio TX…) avec une usine canadienne à Surrey (C.-B.) ; son unique offre QC (4031922009 « Field Service Technician - Montreal, CAN », parue 2025-09-29) a été DÉPUBLIÉE par l'employeur entre 15:37 et 17:59 EDT le 2026-10-06 (found 1 → 0, missed=1, puis removed=1 via le garde-fou 2-miss au sync rejoué), sync_log VERT en continu (ok=1). Marqueur Greenhouse confirmé live : détail = 302 → /industrialelectricmanufacturing?error=true. Board re-vérifié vivant : API 200, 133 offres (US + Surrey BC), remote « US - Remote » uniquement, multi-lieux inspectés, AUCUN lieu QC/Montréal. Pas de migration d'ATS : iemfg.com/careers/ (200) embarque toujours l'embed Greenhouse de ce même org (le portail JazzHR applytojob.com référencé par Google est un vestige). Artefact vague C comblé dans sources.json : url employeur vide → https://www.iemfg.com (vérifié 200, édition chirurgicale 1 ligne, JSON valide). Tant qu'IEM ne republie pas de poste au Québec, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que strongtie a295929 / reworld c59448d / ghgsat 5e2c122 / jove 8c2fc01). Docstring industrialelectricmanufacturing.py enrichie (chronologie + nature du volume). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,1-0,2 s ; non-régression plateforme greenhouse sur tenant vivant laportefr : found=61, ok=1, 0,2 s. Fiches docs/connecteurs/ industrialelectricmanufacturing.md + ats-greenhouse.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). 107 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
    4. [ka6] fix connecteur jove: faux positif supervision « volume QC nul » (44e cas du pattern, 1re intervention) — le connecteur est SAIN, found=0 est le comportement CORRECT. JoVE (jove.com, EdTech/vidéos scientifiques) est un employeur 100 % remote international ; le widget Workable v1 répète le même shortcode par location, donc le found=3 historique = UNE seule vraie offre QC (E8F7F209B4 « Sales Account Executive, EdTech - Canada », 3 locations QC, parue 2026-06-27). Elle a été DÉPUBLIÉE par l'employeur entre 13:30 et 15:45 EDT le 2026-10-06 (found 3 → 0, missed=1, puis removed=1 via le garde-fou 2-miss), sync_log VERT en continu (ok=1). Marqueur Workable confirmé live : détail = 301 → /jove/j/… → 302 → /jove/?not_found=true, API v2 = 404. Board re-vérifié vivant : 200, 108 lignes job×location (~28 postes mondiaux US/Inde/LATAM/Europe/Asie, tous remote), AUCUNE entrée CA/QC ; recherche v3 Canada/Quebec/Montreal = 0 partout. Pas de migration d'ATS : Google référence toujours apply.workable.com/jove comme portail officiel (jove.com/careers = 404, homepage 200 via Scrapfly « Peer Reviewed Video Platform… | JoVE », curl direct = 202 anti-bot). Artefact vague C comblé dans sources.json : url employeur vide → https://www.jove.com (édition chirurgicale 1 ligne, JSON valide). Tant que JoVE ne republie pas de rôle Canada, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que strongtie a295929 / reworld c59448d / ghgsat 5e2c122). Docstring jove.py enrichie (chronologie + nature du volume). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,2 s ; non-régression plateforme workable sur tenant vivant genetec_inc : found=103, ok=1, 0,6 s. Fiches docs/connecteurs/ jove.md + ats-workable.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). 107 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
    5. [ka6] fix connecteur dentons: stale causé par un ROLLBACK AUTOMATIQUE COLLATÉRAL — réapplication du commit 89aedd9 (revert du revert c52c1eb). Le connecteur dentons (SuccessFactors careers.dentons.com, créé le 2026-10-06 matin par la mission dentons_europe) était SAIN et VERT (syncs found=2 à 10:10 et 10:14), mais le commit entier 89aedd9 a été reverté à 10:20 par le rollback automatique de la supervision (vraisemblablement déclenché par le volet dentons_europe found=0 du même commit — un found=0 pourtant structurel et documenté). Le revert a supprimé jobka/connectors/dentons.py et son entrée sources.json → plus aucun sync depuis 10:14 → stale 7.7 h. La source est re-vérifiée VIVANTE : sitemap 200, ~140 offres, les 2 offres QC toujours présentes (1362877757 « Accounts Payable Lead » + 1362980357 « Responsable, Comptes fournisseurs », paire FR/EN, Montréal). Réparation minimale : git revert --no-commit c52c1eb — restaure le connecteur dentons, l'entrée registre, les 3 fixes génériques successfactors.py (_balanced_itemprop, titre via itemprop=title, garde QC sur addressLocality multi-villes), parse_date java.util.Date dans normalize.py + son test, et les fiches docs/connecteurs/. Tests réels : sync dentons ×2 → found=2 (= médiane 2.0), ok=1, 0,4 s, les 2 offres réactivées ; non-régression plateforme SF sur alstom → found=247 (médiane ~224), ok=1, 8,6 s ; 107 tests pytest verts. Leçon pour la supervision : un rollback de commit multi-volets peut tuer un connecteur frère sain — si dentons_europe est re-signalé avec found=0, c'est STRUCTUREL (board Europe sans offre QC), ne pas re-reverter ce commit.
      Simon-Pierre Boucher · 1 file +14 −1
    6. Revert "[ka6] fix connecteur dentons_europe: faux positif « volume QC nul » (43e cas du pattern, 1re intervention) + RÉCUPÉRATION RÉELLE par portail frère inter-ATS — variante pwc 8d150eb sur un AUTRE ATS. Le connecteur dentons_europe (Workable, org dentons-europe) est SAIN : son unique offre QC (1454A1A702 « Global Value Pricing and Project Manager », Montréal, parue 2026-05-06) a été DÉPUBLIÉE entre 05:09 et 08:08 EDT (found 1 → 0, missed=1, puis removed=1 via le garde-fou 2-miss au sync rejoué), sync_log VERT en continu (ok=1). Marqueur Workable confirmé live : détail = 302 → /oops. Board re-vérifié : 200, 64 offres mondiales (Pologne/Italie/Tchéquie/Afrique), 0 lieu CA/QC (multi-lieux et 23 remote inspectés), recherche v3 Montreal/Quebec/Canada = 0 ; orgs frères Workable « dentons » et « dentons-global » = 200 mais 0 offre ; pas de migration (board vivant, c'est le portail EUROPE du cabinet). MAIS le vrai board des postes du bureau de Montréal est ailleurs : careers.dentons.com = SuccessFactors CSB (141 offres mondiales, sitemap urlset), 2 offres QC VIVANTES (paire FR/EN « Responsable, Comptes fournisseurs / Accounts Payable Lead », Montréal, multi-villes Ottawa/Toronto/Montréal) non couvertes par job-ka → NOUVEAU connecteur frère dentons (SuccessFactorsConnector, 4 lignes), volume employeur 0 → 2 (médiane historique 1.0). Ce tenant SF a exposé 3 angles morts GÉNÉRIQUES de la plateforme, corrigés dans successfactors.py : (1) description vide — le span itemprop=description enveloppe des span/p imbriqués et la capture non gourmande _ITEMPROP_RE s'arrêtait au premier </p> → extraction ÉQUILIBRÉE _balanced_itemprop (compte d'imbrication du même tag, ancien regex en repli) → descriptions 10 937/8 141 car.; (2) titre tronqué — slug terminé par la province abrégée seule (« …-Payable-Lead-Queb/ », marqueur Kiewit) alors que l'heuristique [:-3] suppose une queue -Prov-CP1-CP2 → le titre de la page détail (itemprop=title) fait désormais autorité; (3) offre multi-villes — meta addressLocality répétée (Ottawa/Toronto/Montreal, dernière gagnante) pouvait écraser la ville QC du slug par une ville hors QC → garde-fou is_quebec_location sur l'override. Bonus normalize.py : parse_date apprend le format java.util.Date.toString() (« Sun Oct 04 02:00:00 UTC 2026 », émis par les meta datePosted des sites SF CSB) qui rendait date_posted NULL — + test test_date_java_tostring. Artefact vague C comblé dans sources.json : url employeur vide → https://www.dentons.com (vérifié 200 via Scrapfly, « Dentons - Home », curl direct = 403 anti-bot) + entrée registre du nouveau connecteur dentons. Docstrings dentons_europe.py (chronologie) et dentons.py (généalogie du portail) écrites. Tests réels : sync dentons ×2 → found=2, ok=1, 2,9-3,0 s, fiches complètes (titres entiers, dates 2026-10-04, fr/en, GPS-ready) ; sync dentons_europe rejoué → found=0 stable, ok=1, 0,3 s (structurel tant que le board Europe ne republie pas de rôle Global à Montréal — même classe que strongtie a295929 / reworld c59448d) ; non-régression plateforme SF sur tenant vivant alstom : found=245 (médiane ~224), ok=1, 8,6 s. Fiches docs/connecteurs/ dentons.md (nouvelle) + dentons_europe.md + ats-successfactors.md + ats-workable.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1129 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 107 tests pytest verts (106 + 1 nouveau). pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200."
      …
      This reverts commit 89aedd99e79c43621f55e258f9e2cb5f055e347b.
      Simon-Pierre Boucher · 1 file +1 −14
    7. [ka6] fix connecteur dentons_europe: faux positif « volume QC nul » (43e cas du pattern, 1re intervention) + RÉCUPÉRATION RÉELLE par portail frère inter-ATS — variante pwc 8d150eb sur un AUTRE ATS. Le connecteur dentons_europe (Workable, org dentons-europe) est SAIN : son unique offre QC (1454A1A702 « Global Value Pricing and Project Manager », Montréal, parue 2026-05-06) a été DÉPUBLIÉE entre 05:09 et 08:08 EDT (found 1 → 0, missed=1, puis removed=1 via le garde-fou 2-miss au sync rejoué), sync_log VERT en continu (ok=1). Marqueur Workable confirmé live : détail = 302 → /oops. Board re-vérifié : 200, 64 offres mondiales (Pologne/Italie/Tchéquie/Afrique), 0 lieu CA/QC (multi-lieux et 23 remote inspectés), recherche v3 Montreal/Quebec/Canada = 0 ; orgs frères Workable « dentons » et « dentons-global » = 200 mais 0 offre ; pas de migration (board vivant, c'est le portail EUROPE du cabinet). MAIS le vrai board des postes du bureau de Montréal est ailleurs : careers.dentons.com = SuccessFactors CSB (141 offres mondiales, sitemap urlset), 2 offres QC VIVANTES (paire FR/EN « Responsable, Comptes fournisseurs / Accounts Payable Lead », Montréal, multi-villes Ottawa/Toronto/Montréal) non couvertes par job-ka → NOUVEAU connecteur frère dentons (SuccessFactorsConnector, 4 lignes), volume employeur 0 → 2 (médiane historique 1.0). Ce tenant SF a exposé 3 angles morts GÉNÉRIQUES de la plateforme, corrigés dans successfactors.py : (1) description vide — le span itemprop=description enveloppe des span/p imbriqués et la capture non gourmande _ITEMPROP_RE s'arrêtait au premier </p> → extraction ÉQUILIBRÉE _balanced_itemprop (compte d'imbrication du même tag, ancien regex en repli) → descriptions 10 937/8 141 car.; (2) titre tronqué — slug terminé par la province abrégée seule (« …-Payable-Lead-Queb/ », marqueur Kiewit) alors que l'heuristique [:-3] suppose une queue -Prov-CP1-CP2 → le titre de la page détail (itemprop=title) fait désormais autorité; (3) offre multi-villes — meta addressLocality répétée (Ottawa/Toronto/Montreal, dernière gagnante) pouvait écraser la ville QC du slug par une ville hors QC → garde-fou is_quebec_location sur l'override. Bonus normalize.py : parse_date apprend le format java.util.Date.toString() (« Sun Oct 04 02:00:00 UTC 2026 », émis par les meta datePosted des sites SF CSB) qui rendait date_posted NULL — + test test_date_java_tostring. Artefact vague C comblé dans sources.json : url employeur vide → https://www.dentons.com (vérifié 200 via Scrapfly, « Dentons - Home », curl direct = 403 anti-bot) + entrée registre du nouveau connecteur dentons. Docstrings dentons_europe.py (chronologie) et dentons.py (généalogie du portail) écrites. Tests réels : sync dentons ×2 → found=2, ok=1, 2,9-3,0 s, fiches complètes (titres entiers, dates 2026-10-04, fr/en, GPS-ready) ; sync dentons_europe rejoué → found=0 stable, ok=1, 0,3 s (structurel tant que le board Europe ne republie pas de rôle Global à Montréal — même classe que strongtie a295929 / reworld c59448d) ; non-régression plateforme SF sur tenant vivant alstom : found=245 (médiane ~224), ok=1, 8,6 s. Fiches docs/connecteurs/ dentons.md (nouvelle) + dentons_europe.md + ats-successfactors.md + ats-workable.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1129 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 107 tests pytest verts (106 + 1 nouveau). 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 +14 −1
    8. [ka6] fix connecteur strongtie: faux positif de supervision « volume QC nul » (42e cas du pattern, 1re intervention sur cette source) — le connecteur est SAIN, found=0 est le comportement CORRECT (médiane historique 1.0, Simpson Strong-Tie siège Pleasanton CA, seul site québécois = le centre de distribution de Châteauguay qui publie 0-1 poste par vagues). Le stale de 4,1 h vient de la définition de succès de la supervision (dernier sync found>0 = 2026-10-05 21:48) : l'unique offre QC en base (R7985 « Warehouse Supervisor », Châteauguay, parue 2026-09-05) a été DÉPUBLIÉE par l'employeur entre 21:48 et 23:56 EDT (found 1 → 0, miss_count=1, puis removed=1 via le garde-fou 2-miss au sync rejoué). sync_log VERT en continu (ok=1). Marqueur Workday classique confirmé live : détail cxs R7985 = 403 S22 « permission denied ». Board re-vérifié live : 200, 102 offres mondiales vivantes, facette pays Canada = 2 (Pitt Meadows BC + Brampton ON), AUCUN lieu QC dans la facette locations ; les 2 offres canadiennes inspectées au détail cxs = mono-lieu BC/ON, additionalLocations vides (angle mort rbc c095c66 exclu) ; searchText Quebec/Québec/Chateauguay/Montreal = 0 partout (les 3 hits « Canada » restants = Ho Chi Minh City, correspondances texte). Aucun site frère sur le tenant : sondage de 8 noms de sites candidats → tous 404 (leçon pwc/silabs appliquée, External est le seul site). Aucune migration d'ATS : strongtie.com/about/jobs (200) référence toujours myworkdayjobs.com/External (même tenant wd1). Artefact vague D comblé dans sources.json : url employeur vide → https://www.strongtie.com (vérifié 200, « Simpson Strong-Tie – Structural Connectors, Fasteners & Hardware »), JSON valide. Tant que Châteauguay ne republie rien, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que reworld c59448d / peaktech 6a2cebc / mitacs a49f7a5 / zoetis 78938c3). Docstring strongtie.py enrichie (chronologie + nature du volume). Sync isolé rejoué ×2 : found=0 stable, ok=1, 7,0-7,2 s ; non-régression plateforme workday sur tenant vivant cineplex : found=1, ok=1, 2,5 s. Fiches docs/connecteurs/ strongtie.md + ats-workday.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
  4. Mon, Oct 5, 2026 6

    1. [ka6] fix connecteur reworld: faux positif de supervision « volume QC nul » (41e cas du pattern, 1re intervention sur cette source) — le connecteur est SAIN, found=0 est le comportement CORRECT (médiane historique 0.5, Reworld ex-Covanta, valorisation énergétique des déchets, seul site québécois = l'usine de Chambly qui publie 0-1 poste par vagues). Le stale de 4,4 h vient de la définition de succès de la supervision (dernier sync found>0 = 2026-10-05 13:29) : l'unique offre QC en base (JR13561 « Waste Processing Tech II », Chambly, parue 2026-09-05) a été DÉPUBLIÉE par l'employeur entre 13:29 et 15:45 EDT (found 1 → 0, missed=1, puis removed=1 via le garde-fou 2-miss). sync_log VERT en continu (ok=1). Marqueur Workday classique confirmé live : détail cxs JR13561 = 403 S22 « permission denied ». Board re-vérifié live : 200, 160 offres mondiales vivantes, facette pays Canada = 4 (Kitchener ON ×3 + ON Works from home ×1), AUCUN lieu QC dans la facette locations ; les 4 offres canadiennes inspectées au détail cxs = mono-lieu Ontario, additionalLocations vides (angle mort rbc c095c66 exclu) ; le hit searchText « Quebec » (1) = « AZ Driver - Regional » basé à Kitchener dont la description mentionne le Québec comme destination de ROUTE, pas comme lieu de poste. Aucun site frère sur le tenant : sondage de 9 noms de sites candidats → tous 404 (leçon pwc/silabs appliquée, External est le seul site). Aucune migration d'ATS : reworldwaste.com/careers (200) référence toujours myworkdayjobs.com/External (même tenant wd5). Artefact vague C comblé dans sources.json : url employeur vide → https://www.reworldwaste.com (vérifié 200, « A Leader in Sustainable Waste Solutions | Reworld® »), JSON valide. Tant que l'usine de Chambly ne republie rien, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que peaktech 6a2cebc / mitacs a49f7a5 / rbc edde0ca / zoetis 78938c3). Docstring reworld.py enrichie (chronologie + nature du volume). Sync isolé rejoué ×2 : found=0 stable, ok=1, 10,7-11,4 s ; non-régression plateforme workday sur tenant vivant cineplex : found=1, ok=1, 2,5 s. Fiches docs/connecteurs/ reworld.md + ats-workday.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
    2. [ka6] fix connecteur peaktech: stale « volume QC nul » (40e cas du pattern, 1re intervention sur cette source) — found=0 est CORRECT (médiane historique 0.5, Peak Technologies siège US, le bureau de Montréal 9066 Pascal-Gagnon n'a que 0-1 poste par vagues) : l'unique offre QC en base (3870 « Technicien de service sur le terrain », Montréal, parue 2026-07-30) a été DÉPUBLIÉE par l'employeur entre 13:25 et 15:40 EDT le 2026-10-05 (found 1 → 0, missed=1 puis removed=1 via le garde-fou 2-miss), sync_log VERT en continu (ok=1). MAIS vrai angle mort découvert et corrigé au passage : la recherche Dayforce de ce tenant est PARTITIONNÉE par culture — fr-CA renvoie désormais maxCount=0 (plus aucune offre traduite FR) alors qu'en-CA liste les 37-38 offres du board ; une future offre QC publiée seulement en anglais aurait été invisible. FIX : peaktech.py converti au pattern bi-culture CULTURES=('fr-CA','en-CA') avec fusion par external_id, version fr-CA prioritaire (même pattern que challenger/fnfmb/euromoneyplc). Board re-vérifié live : 38 offres toutes HORS QC (US ×~35, Toronto ON, GB, BE, IE) — zéro angle mort restant. Aucune migration d'ATS : peaktech.com/about-peak-technologies/careers/ (200) référence toujours dayforcehcm.com/CandidatePortal/en-CAN/peaktech (même tenant). Artefact vague C comblé dans sources.json : url employeur vide → https://www.peaktech.com (vérifié 200, « Digital Supply Chain & Mobility Solutions - Peak Technologies »), JSON valide. Tant que Peak Technologies ne republie rien au Québec, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que mitacs a49f7a5 / rbc edde0ca / zoetis 78938c3). Preuve du fetch bi-culture : fr-CA voit 0, en-CA voit 37, merge filtré QC → 0. Sync isolé rejoué ×3 : found=0 stable, ok=1, 4,4-4,8 s ; non-régression du pattern bi-culture Dayforce sur challenger : found=2, ok=1. Fiches docs/connecteurs/ peaktech.md + ats-dayforce.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les ~1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
    3. Revert "[ka6] fix connecteur mitacs: faux positif de supervision « volume QC nul » (39e cas du pattern, 1re intervention sur cette source) — le connecteur est SAIN, found=0 est le comportement CORRECT (médiane historique 0.5, Mitacs OBNL national de recherche publiant surtout hors Québec sur son board BambooHR, le bureau de Montréal n'y a que 0-1 poste par vagues). Le stale de 4,9 h vient de la définition de succès de la supervision (dernier sync found>0 = 2026-10-05 11:02) : l'unique offre QC en base (1823 « Directeur ou directrice, Programmes et Expériences de services », Montréal, parue 2026-09-16) a été DÉPUBLIÉE par Mitacs entre 11:02 et 13:22 EDT (found 1 → 0, missed=1, puis removed=1 via le garde-fou 2-miss). sync_log VERT en continu (ok=1). Marqueur BambooHR « dépublié » confirmé live pour la 1re fois du repo : détail /careers/<id>/detail = 404 + JSON {"type":"not_found"} (offre vivante 1825 = 200 + jobOpeningStatus « Open »). Re-vérification live du board mitacs.bamboohr.com/careers/list : 200, 3 offres toutes HORS QC (Kelowna BC ×2, Lethbridge AB), libellés city/state propres, aucun remote ambigu — zéro angle mort. Aucune migration d'ATS : www.mitacs.ca/careers/ (200) référence toujours mitacs.bamboohr.com/careers (tenant unique, pas de sites frères sur BambooHR). Au passage, artefact vague C comblé dans sources.json (pattern zoetis 78938c3) : url employeur vide → https://www.mitacs.ca (vérifié 200) — édition ciblée 1 ligne, JSON valide. Tant que Mitacs ne republie rien au Québec, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que rbc edde0ca / zoetis 78938c3 / ghgsat 5e2c122 / poolcorp 3e3fd59). Docstring mitacs.py enrichie (chronologie + marqueur BambooHR + nature du volume). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,3 s ; non-régression plateforme bamboohr sur tenant vivant broccolini : found=23, ok=1. Fiches docs/connecteurs/ mitacs.md + ats-bamboohr.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200."
      …
      This reverts commit a49f7a57fe726acb9128168dec936c09556c0c12.
      Simon-Pierre Boucher · 1 file +1 −1
    4. [ka6] fix connecteur mitacs: faux positif de supervision « volume QC nul » (39e cas du pattern, 1re intervention sur cette source) — le connecteur est SAIN, found=0 est le comportement CORRECT (médiane historique 0.5, Mitacs OBNL national de recherche publiant surtout hors Québec sur son board BambooHR, le bureau de Montréal n'y a que 0-1 poste par vagues). Le stale de 4,9 h vient de la définition de succès de la supervision (dernier sync found>0 = 2026-10-05 11:02) : l'unique offre QC en base (1823 « Directeur ou directrice, Programmes et Expériences de services », Montréal, parue 2026-09-16) a été DÉPUBLIÉE par Mitacs entre 11:02 et 13:22 EDT (found 1 → 0, missed=1, puis removed=1 via le garde-fou 2-miss). sync_log VERT en continu (ok=1). Marqueur BambooHR « dépublié » confirmé live pour la 1re fois du repo : détail /careers/<id>/detail = 404 + JSON {"type":"not_found"} (offre vivante 1825 = 200 + jobOpeningStatus « Open »). Re-vérification live du board mitacs.bamboohr.com/careers/list : 200, 3 offres toutes HORS QC (Kelowna BC ×2, Lethbridge AB), libellés city/state propres, aucun remote ambigu — zéro angle mort. Aucune migration d'ATS : www.mitacs.ca/careers/ (200) référence toujours mitacs.bamboohr.com/careers (tenant unique, pas de sites frères sur BambooHR). Au passage, artefact vague C comblé dans sources.json (pattern zoetis 78938c3) : url employeur vide → https://www.mitacs.ca (vérifié 200) — édition ciblée 1 ligne, JSON valide. Tant que Mitacs ne republie rien au Québec, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que rbc edde0ca / zoetis 78938c3 / ghgsat 5e2c122 / poolcorp 3e3fd59). Docstring mitacs.py enrichie (chronologie + marqueur BambooHR + nature du volume). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,3 s ; non-régression plateforme bamboohr sur tenant vivant broccolini : found=23, ok=1. Fiches docs/connecteurs/ mitacs.md + ats-bamboohr.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 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
    5. [ka6] fix connecteur ten_canada: MIGRATION D'ATS Breezy → Greenhouse (1re intervention sur cette source, 1re migration vers Greenhouse du repo) — le board Breezy ten-canada.breezy.hr/json vidé en bloc le 2026-10-05 (~11:16 EDT) répondait 200 + [] toutes régions, détail = 200 + « Position Closed » (marqueur telus_health 5134fa5) ; chronologie sync_log VERTE en continu : found=6 stable → 0 ×3 (removed=6 au 2e sync, garde-fou 2-miss). PAS une dépublication légitime : la page carrières officielle tenleasing.com/en/careers/ (403 anti-bot direct, 200 via Scrapfly ; l'ancien /en-ca/careers/job-listings/ redirige vers la homepage) pointe désormais vers 2 boards Greenhouse — transportationequipmentnetworkca (Canada, 19 offres dont 6 QC = les MÊMES postes que les 6 ex-offres Breezy : Shunt Driver/Operations Coordinator/Mobile Trailer Technician/Parts Technician/Regional Maintenance Manager à Lachine + Technician Apprentice « Quebec; St Laurent ») et transportationequipmentnetwork (US, 30 offres, 0 QC, hors périmètre). FIX : ten_canada.py converti BreezyConnector → GreenhouseConnector (BOARD transportationequipmentnetworkca, pattern mcgillstlaurentb8 93b0c2c) + gotcha lieux : les libellés Greenhouse de ce board sont des villes NUES sans province (« Lachine »), le filtre Breezy passait par state.id==QC — ajout générique « lachine » à _QC_CITIES (normalize.py, pattern dorval ; regions-qc.json mappait déjà lachine → région Montréal, homonyme « Lachine, MI » rejeté par _NON_QC_REGION_RE, vérifié). Pas de continuité d'IDs (hex Breezy → numériques Greenhouse) : les 6 offres Breezy restent archivées, les 6 Greenhouse ajoutées à neuf. sources.json : connector breezy→greenhouse, careers_url → job-boards.greenhouse.io/transportationequipmentnetworkca, artefact vague C comblé url vide → https://tenleasing.com. Sync isolé rejoué ×2 : found=6 stable (= volume d'avant-panne), ok=1, 0.1-0.2 s, 6 actives en base (Lachine/Montréal ×5, St-Laurent ×1) ; non-régression greenhouse (pcm found=1 ok) ET breezy (technica_mining found=10 ok — l'ajout _QC_CITIES ne perturbe pas les voisins). Fiches docs/connecteurs/ ten_canada.md + ats-greenhouse.md + ats-breezy.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les ~1129 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 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 +3 −3
    6. [ka6] fix connecteur pwc: « broken » 3 syncs à 0 — le volet campus était un faux positif structurel (dépublication en bloc à l'échéance des candidatures), RÉPARATION RÉELLE par couverture du site frère Global_Experienced_Careers (1re intervention sur cette source). Chronologie (sync_log VERT en continu ok=1) : found 61 → 10 → 5 (08:41) → 0 ×3 (11:08/13:28/15:44) le 2026-10-05 — les ~65 offres campus QC (Montréal + Ville de Québec, parues fin août-début sept., cohortes janvier/mai/sept. 2027-2028) dépubliées EN BLOC par PwC à la date limite des candidatures universitaires d'automne. Marqueur vérifié live : détail cxs = 403 S22 (dépublié) sur 4 offres échantillonnées ; gotcha neuf sur ce tenant : le détail cxs exige l'externalPath COMPLET avec suffixe d'anchor (…_753347WD-2) — slug arbitraire + id nu → 404 S21 trompeur (testé contre une offre vivante). Board campus re-vérifié : 200, 1350 offres mondiales vivantes, facette locations SANS aucune ville QC (seul Canada : Vaughan ON count=1 — la facette couvre aussi les lieux secondaires des offres multi-lieux, donc zéro angle mort rbc c095c66) ; searchText Montreal/Montréal/Quebec/Québec → 0 ; façade Phenom jobs-ca.pwc.com/campus → totalHits=0 pour Montreal (purge propre). Aucune migration d'ATS : www.pwc.com/ca/en/careers.html (403 anti-bot direct, 200 via Scrapfly) référence jobs-ca.pwc.com, façade Phenom du même tenant Workday. FIX : sondage des sites frères du tenant (leçon silabs d96f5e0) → Global_Experienced_Careers (3863 offres) porte un volume QC RÉEL et permanent : 53 offres live (facette locations Montreal 49 + Montreal-1250 René-Lévesque 1 + Québec City 17, filtre serveur vérifié non factice, repli _find_qc_facet opérationnel — is_quebec_location reconnaît les 3 libellés). Couverture ajoutée via le pattern maison EXTRA_SITES + fetch() avec dédup par external_id (shell.py 28ff173 / quadreal.py) : le connecteur ne dépend plus du seul cycle campus saisonnier. Au passage, artefacts vague C corrigés : EMPLOYER/name « January 2027 » (un libellé de COHORTE campus pris pour le nom d'employeur, affiché publiquement sur le site !) → « PwC Canada », url employeur vide → https://www.pwc.com/ca — sources.json édité de façon ciblée, JSON valide. Sync isolé rejoué ×2 : found=53 stable (ajout 53, retrait propre des 5 dernières offres campus dépubliées), ok=1, 109-174 s ; en base : 53 actives (Montréal 33, Québec 5, 15 multi-lieux sans ville unique — comportement standard plateforme, cf. circlek/walmart) ; non-régression workday sur tenant vivant mcgill : found=570, ok=1. Fiches docs/connecteurs/ pwc.md + ats-workday.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +2 −2
  5. Sat, Oct 3, 2026 1

    1. [ka6] fix connecteur zoetis: faux positif de supervision « volume QC nul » (36e cas du pattern, 1re intervention sur cette source) — le connecteur est SAIN, found=0 est le comportement CORRECT (médiane historique 1.0, Zoetis santé animale, bureau canadien à Kirkland QC publiant sporadiquement sur le site international du tenant Workday zoetis.wd5). Le stale de 4,1 h vient de la définition de succès de la supervision (dernier sync found>0 = 2026-10-02 23:47) : l'unique offre QC en base (JR00021548 « Chef.fe de territoire, animaux de compagnie/Territory Manager, Companion Animal », CA-Quebec-Remote, parue 2026-09-03) a été DÉPUBLIÉE par Zoetis entre 23:47 et 01:54 EDT (found 1 → 0, missed=1, puis removed=1 au sync rejoué via le garde-fou 2-miss). sync_log VERT en continu (ok=1). Détail cxs de JR00021548 : 403 S22 = marqueur Workday classique « dépublié ». Re-vérification live du board /wday/cxs/zoetis/zoetis_intl/jobs : 200, 57 offres, board international vivant (Sao Paulo/Hyderabad/Europe), 0 offre Canada ; searchText Quebec/Québec/Montreal/Montréal/Kirkland → 0 ; l'unique offre multi-lieux « 5 Locations » (JR00021645, leçon rbc c095c66) vérifiée au détail cxs : lieux 100 % UK (Exeter, Leeds, Hitchin, Bristol, Ringwood). Topologie du tenant sondée (leçon silabs d96f5e0) : sites frères zoetis/Zoetis = même board US (112 offres, 0 QC — les 3 résultats searchText « Canada » sont des correspondances TEXTE à lieux US Parsippany/US-DE-Remote/US-AR-Remote), 8 autres noms → 404. Aucune migration d'ATS : zoetis.com/join-us (200) référence toujours myworkdayjobs.com/zoetis ; zoetis.ca (www2.zoetis.ca) n'a pas de portail carrières distinct (vérifié + Serper). Aucun angle mort. Au passage, artefact vague C comblé dans sources.json (pattern telus_health 5134fa5 / cclfg 43526d3) : url employeur vide → https://www.zoetis.com (vérifié 200) — édition ciblée 1 ligne, format préservé, JSON valide. Tant que Zoetis ne republie rien au Québec, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que ghgsat 5e2c122 / poolcorp 3e3fd59 / cclfg 43526d3 / geox f785ff4). Docstring zoetis.py enrichie (chronologie + marqueur + topologie du tenant). Sync isolé rejoué ×2 : found=0 stable, ok=1, 2,7 s, retrait propre de JR00021548 (removed=1) ; non-régression plateforme workday sur tenant vivant mcgill : found=564, ok=1. Fiches docs/connecteurs/ zoetis.md + ats-workday.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
  6. Fri, Oct 2, 2026 3

    1. [ka6] fix connecteur cclfg: faux positif de supervision « volume QC nul » (34e cas du pattern, 1re intervention sur cette source) — le connecteur est SAIN, found=0 est le comportement CORRECT (médiane historique 0.5, board Greenhouse corporatif de Connor, Clark & Lunn Financial Group, groupe de gestion d'actifs dont les bureaux actifs sont Toronto/Vancouver/Gurugram/Londres et qui ne publie à Montréal que sporadiquement). Le stale de 5,3 h vient de la définition de succès de la supervision (dernier sync found>0 = 2026-10-02 12:37) : l'unique offre QC en base (4382555009 « Analyste des Opérations de TI / IT Operations Analyst », Montréal, parue 2026-08-27) a été DÉPUBLIÉE par CC&L entre 12:37 et 14:16 EDT (found 1 → 0, puis removed=1 à 16:32 via le garde-fou 2-miss). sync_log VERT en continu (ok=1). Marqueur Greenhouse vérifié live : détail dépublié = 302 → /cclfg?error=true (marqueur documenté, même que gearboxquebec 0373c30). Re-vérification live du board boards-api v1 : 200, 86 offres, tenant TRÈS vivant mais 0 mention Québec/Montréal dans le JSON complet (content=true) — offices actifs Gurugram/London/Toronto/Vancouver, aucune offre multi-lieux cachée. Aucune migration d'ATS : la page opportunités officielle cclfg.cclgroup.com/careers/opportunities/ charge toujours Greenhouse (GreenhouseBoard.initList) ; la mention « Dayforce » n'est qu'un outil interne cité dans une description de poste ; attention au soft-404 maison : www.cclgroup.com/careers/ sert une page d'erreur en 200. Topologie du groupe cartographiée (leçon novisto 894eb9d / gearbox 0373c30 — boards frères sondés) : la page opportunités agrège 7 autres boards Greenhouse d'affiliés — bcp (3 offres dont 1 QC Anjou) et pcm (14 offres dont 1 QC Montréal) DÉJÀ couverts par les connecteurs job-ka du même nom ; cclim/cclinfrastructure/cclone/crei/midstar → 0 offre QC. Aucun angle mort. Au passage, artefact vague C comblé dans sources.json (pattern telus_health 5134fa5) : url employeur vide → https://www.cclgroup.com (vérifié : 302 → cclfg.cclgroup.com, 200 avec UA navigateur) — édition ciblée 1 ligne, format préservé, JSON valide ; name « Connor, Clark & Lunn Financial Group Ltd. » conservé (raison sociale, pas une faute de graphie). Tant que CC&L ne republie rien à Montréal, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que ghgsat 5e2c122 / poolcorp 3e3fd59 / geox f785ff4 / silabs d96f5e0). Docstring cclfg.py enrichie (chronologie + marqueur + topologie des 8 boards du groupe). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,1-0,2 s ; non-régression plateforme greenhouse sur board frère vivant pcm : found=1, ok=1. Fiches docs/connecteurs/ cclfg.md + ats-greenhouse.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
    2. [ka6] fix connecteur ghgsat: faux positif de supervision « volume QC nul » (33e cas du pattern, 1re intervention sur cette source) — le connecteur est SAIN, found=0 est le comportement CORRECT (médiane historique 1.5, tenant Workable à faible volume publiant par vagues de paires FR/EN, toutes à Montréal). Le stale de 4,4 h vient de la définition de succès de la supervision (dernier sync found>0 = 2026-10-02 09:33) : les 3 offres QC en base (« Senior Backend Developer - Spectra » 32DA8F3BEC, « Développeur(se) Backend Senior - Spectra » D278C951E3 + 1 frère, Montréal) ont été DÉPUBLIÉES EN BLOC par GHGSat entre 09:33 et 11:55 EDT (found 3 → 0, puis removed=3 à 12:51 via le garde-fou 2-miss). sync_log VERT en continu (ok=1). Marqueur Workable vérifié live : détail dépublié = 302 → apply.workable.com/oops (variante documentée du 301 → board + not_found=true de findevcanada 5b0ba42). Re-vérification live du board : API v1 widget ET v3 → 200, 0 offre sur TOUT le tenant (pas juste le QC — GHGSat n'embauche plus du tout en ce moment), tenant vivant (name=GHGSAT, board « Current Openings » 200). Aucune migration d'ATS : le lien « Careers » de www.ghgsat.com (200) pointe toujours vers apply.workable.com/ghgsat. Au passage, artefacts vague C corrigés dans sources.json (pattern silabs/trugreen/reddyice/poolcorp) : name 'GHGSAT' → 'GHGSat' (graphie officielle du site, EMPLOYER aligné dans ghgsat.py — 0 offre active, aucun impact dédup) et url employeur vide → https://www.ghgsat.com (vérifié 200) — éditions ciblées, format préservé, JSON valide. Tant que GHGSat ne republie rien, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que geox f785ff4 / silabs d96f5e0 / telus_health 5134fa5 / findevcanada 5b0ba42 / poolcorp 3e3fd59). Docstring ghgsat.py enrichie (chronologie + marqueurs + topologie du tenant). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,2 s ; non-régression plateforme workable sur tenant vivant genetec_inc : found=97, ok=1. Fiches docs/connecteurs/ ghgsat.md + ats-workable.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +2 −2
    3. [ka6] fix connecteur poolcorp: faux positif de supervision « volume QC nul » (32e cas du pattern, 1re intervention sur cette source) — le connecteur est SAIN, found=0 est le comportement CORRECT (médiane historique 1.0, distributeur US de produits de piscine dont seul le centre de vente de Boucherville publie au QC, industrie SAISONNIÈRE). Le stale de 4,4 h vient de la définition de succès de la supervision (dernier sync found>0 = 2026-10-02 07:34) : l'unique offre QC en base (R22014 « Expéditeur/Shipping Clerk », Boucherville, parue 2026-09-24) a été DÉPUBLIÉE par POOLCORP entre 07:34 et 10:03 EDT (found 1 → 0, missed=1, puis removed=1 au sync rejoué via le garde-fou 2-miss). sync_log VERT en continu (ok=1). Détail cxs de R22014 (et R21681) : 403 S22 = marqueur Workday documenté « dépublié ». Re-vérification live du board /wday/cxs/poolcorp/POOLCORP/jobs : 200, 168 offres, publication ACTIVE (« Posted 2 Days Ago »), facette locationRegionStateProvince SANS Québec (Canada = 3 offres, toutes en Ontario, correctement filtrées) ; searchText Quebec/Québec/Boucherville/Montreal → 0 ; les 2 offres multi-lieux « 3/4 Locations » (leçon rbc c095c66) vérifiées au détail cxs : lieux 100 % US. Aucune migration d'ATS : www.poolcorp.com/careers (403 anti-bot direct, 200 via Scrapfly) référence toujours le même tenant poolcorp.wd1. Au passage, artefacts vague C corrigés dans sources.json (pattern silabs/trugreen/reddyice) : name 'Poolcorp' → 'POOLCORP' (graphie officielle, EMPLOYER aligné dans poolcorp.py — 0 offre active, aucun impact dédup) et url employeur vide → https://www.poolcorp.com (vérifié 200 via Scrapfly) — éditions ciblées, format préservé, JSON valide. Tant que POOLCORP ne republie rien à Boucherville (attendre la saison des piscines), ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe saisonnière que reddyice 3a6cc61 / trugreen a99c362 / samsara 76fd913 ; même classe générale que geox f785ff4 / silabs d96f5e0 / telus_health 5134fa5 / findevcanada 5b0ba42). Docstring poolcorp.py enrichie (chronologie + facette lieux + vérif multi-lieux). Sync isolé rejoué ×2 : found=0 stable, ok=1, 11-12 s, retrait propre de R22014 (removed=1) ; non-régression plateforme workday sur tenant vivant mcgill : found=576, ok=1. Fiches docs/connecteurs/ poolcorp.md + ats-workday.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +2 −2
  7. Thu, Oct 1, 2026 4

    1. [ka6] fix connecteur reddyice: faux positif de supervision « volume QC nul » (31e cas du pattern, 1re intervention sur cette source) — le connecteur est SAIN, found=0 est le comportement CORRECT (médiane historique 0.5, fabricant de glace US dont l'usine de Montréal publie sporadiquement, pointe SAISONNIÈRE estivale : les 4 « Associé à la production saisonnière » JR24314-17 avaient déjà disparu mi-septembre). Le stale de 5,1 h vient de la définition de succès de la supervision (dernier sync found>0 = 2026-10-01 12:49) : l'unique offre QC en base (JR24467 « Directeur d'usine (Plant Manager) », Montréal, parue 2026-09-01) a été DÉPUBLIÉE par Reddy Ice entre 12:49 et 15:22 EDT (found 1 → 0, missed=1, puis removed=1 à 17:21 via le garde-fou 2-miss). sync_log VERT en continu (ok=1). Variante de marqueur Workday documentée sur ce tenant : détail cxs dépublié = 404 {"errorCode":"HTTP_404"} SANS sous-code S21/S22 (≠ le 403 S22 habituel) ; détail vivant = 200 + jobPostingInfo (vérifié sur JR24661 Manager, Distribution Center, Calgary). Re-vérification live du board /wday/cxs/reddyice/ReddyIceExternal/jobs : 200, 77 offres, publication ACTIVE (« Posted Today »), facette locations = 46 lieux TOUS US sauf « Calgary 3 » (1 offre, hors QC, correctement filtrée) ; searchText Montreal/Montréal/Quebec/Québec → 0. Aucune migration d'ATS : www.reddyice.com/careers/jobs/ (200) embarque toujours les liens du même tenant reddyice.wd5. Au passage, artefacts vague C corrigés dans sources.json (pattern silabs/trugreen) : name 'Reddyice' → 'Reddy Ice' (graphie officielle, EMPLOYER aligné dans reddyice.py — 0 offre active, aucun impact dédup) et url employeur vide → https://www.reddyice.com (vérifié 200) — éditions ciblées, format préservé, JSON valide. Tant que Reddy Ice ne republie rien à Montréal (attendre la saison chaude), ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe saisonnière que trugreen a99c362 / samsara 76fd913 ; même classe générale que geox f785ff4 / silabs d96f5e0 / telus_health 5134fa5 / findevcanada 5b0ba42). Docstring reddyice.py enrichie (chronologie + facette lieux + variante de marqueur 404). Sync isolé rejoué ×2 : found=0 stable, ok=1, 4,9 s ; non-régression plateforme workday sur tenant vivant mcgill : found=566, ok=1. Fiches docs/connecteurs/ reddyice.md + ats-workday.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +2 −2
    2. [ka6] fix connecteur trugreen: faux positif de supervision « volume QC nul » (30e cas du pattern, 1re intervention sur cette source) — le connecteur est SAIN, found=0 est le comportement CORRECT (médiane historique 4.0, source SAISONNIÈRE : entretien de pelouse). Le stale de 5,3 h vient de la définition de succès de la supervision (dernier sync found>0 = 2026-10-01 10:36) : les 4 offres QC en base (2× « Travail Général - Technicien entretien de pelouse! » + 2× « Représentant(e) aux ventes – Temps plein », Montréal H4R 2A4 et Québec G2E 5P3, parues 2026-09-01) ont été DÉPUBLIÉES EN BLOC par TruGreen entre 10:36 et 12:58 EDT (found 4 → 0, missed=4) — fin de saison de l'entretien de pelouse au Québec, début octobre. sync_log VERT en continu (ok=1). Détail cxs des reqs R35335/R35491 : 403 S22 (marqueur Workday documenté = dépublié). Re-vérification live du board /wday/cxs/trugreen/CanadaExternalCareers/jobs : 200, 3 offres, publication ACTIVE (« Posted 2 Days Ago »), mais toutes corporate en Ontario (Barrie, Mississauga, Oshawa), searchText Quebec/Montreal → 0. Aucun angle mort : le site frère du tenant USExternalCareers (330 offres, leçon silabs d96f5e0) n'a que des villes US, searchText Quebec/Montréal → 0. NOUVEAU MARQUEUR documenté — façade Paradox.ai (chatbot Olivia) : le site carrières officiel www.trugreenjobs.com (/fr/) est un front Paradox AU-DESSUS du même tenant Workday (pages détail P1-XXXXXXX → reqs R35XXX, apply_url_destination=job_details) qui listait ENCORE les 4 offres QC dépubliées (datePosted rafraîchie 2026-09-21, purge différée) — même classe que la façade Phenom : trancher au détail cxs Workday, jamais à la façade. Aucune migration d'ATS. Tant que TruGreen ne republie pas d'offres terrain QC (attendre le printemps), ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que geox f785ff4 / silabs d96f5e0 / telus_health 5134fa5 / findevcanada 5b0ba42 ; cycle saisonnier à prévoir comme samsara 76fd913). Au passage, artefacts vague C corrigés dans sources.json (pattern silabs ad3ad36) : name 'Trugreen' → 'TruGreen' (graphie officielle, EMPLOYER aligné dans trugreen.py — les 4 offres étaient en cours de retrait, aucun impact dédup) et url employeur vide → https://www.trugreen.ca (vérifié 200, vrai site canadien sans redirection vers le .com) — éditions ciblées, format préservé, JSON valide. Docstring trugreen.py enrichie (chronologie + topologie 2 sites + marqueur Paradox). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,4 s, les 4 offres retirées proprement par le garde-fou 2-miss (removed=4) ; non-régression plateforme workday sur tenant vivant mcgill : found=565, ok=1. Fiches docs/connecteurs/ trugreen.md + ats-workday.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +2 −2
    3. [ka6] fix connecteur telus_health_7fe6b0fe8614: faux positif de supervision « volume QC nul » (29e cas du pattern, 1re intervention sur cette source) — le connecteur est SAIN, found=0 est le comportement CORRECT (médiane historique 1.0, tenant Breezy « TELUS Health Virtual Care » à très faible volume : postes de soins virtuels pancanadiens, rarement plus d'un au QC). Le stale de 5,4 h vient de la définition de succès de la supervision (dernier sync found>0 = 2026-10-01 10:35) : l'unique offre QC en base (9ba0a40813bc « Soins Virtuels TELUS Santé Infirmier (ère) Praticien (ne) - Virtuels - Québec », parue 2026-03-17, en ligne ~6,5 mois) a été DÉPUBLIÉE par TELUS Santé entre 10:35 et 12:57 EDT (found 1 → 0, removed=1 au sync isolé rejoué via le garde-fou 2-miss). sync_log VERT en continu (ok=1). Marqueur Breezy « détail dépublié » documenté (1re confirmation live sur cet ATS) : page /p/<id>-<slug> → 200 + bloc application-confirmed « Position Closed — Sorry, this position is no longer accepting candidates » (titre conservé), offre absente de /json ; détail vivant = 200 + formulaire. Re-vérification live du board /json?verbose=true : 200, 1 offre restante (Nurse Practitioner Alberta, parue 2026-06-09 — hors QC, correctement filtrée par location.state.id). Aucune migration d'ATS : le tenant publie encore et le site employeur est vivant. Au passage, artefact vague C comblé dans sources.json (pattern geox/quenchwater/oliverbonacini) : url employeur vide → https://www.telushealth.com (vérifié 200 en direct ; telus.com/fr/health = 403 anti-bot direct, 200 via Scrapfly) — édition ciblée 1 ligne, format préservé, JSON valide. Tant que TELUS Santé ne publie pas de poste virtuel au Québec, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que geox f785ff4 / silabs d96f5e0 / findevcanada 5b0ba42). Docstring telus_health_7fe6b0fe8614.py enrichie (chronologie + marqueur + topologie du tenant). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,1 s ; non-régression plateforme breezy sur tenant vivant recruiting : found=87, ok=1. Fiches docs/connecteurs/ telus_health_7fe6b0fe8614.md + ats-breezy.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
    4. [ka6] fix connecteur mcgillstlaurentb8: migration JazzHR → Lever (org=mcgillstlaurent) — le statut stale vient de la migration d'ATS de l'employeur : le tenant JazzHR historique mcgillstlaurentb8.applytojob.com répond « Inactive Career Page » (200, this account is no longer active — compte désactivé chez l'ATS, 2e cas du marqueur après xtltransportlogistics c4a681e mais ici avec REPRENEUR identifié) depuis le 2026-09-30 ~20:50 EDT, dernier sync OK found=3 à 19:05 ; plateforme jazzhr saine par ailleurs (28 autres tenants verts le 2026-10-01). La page carrières officielle mcgillstlaurent.com/career (200, site vivant) n'embarque plus AUCUN ATS — formulaire Gravity Forms de candidature spontanée seulement, pattern identique à XTL — mais balayage Serper → board Lever VIVANT jobs.lever.co/mcgillstlaurent : 5 offres au 2026-10-01 dont 4 à Montréal (Junior Grain Trader, Junior Power Trader, Physical Commodities Trader, Senior Grain Trader, publiées 2026-09-09→09-22 : la migration était en cours depuis ~3 semaines avant la fermeture du tenant JazzHR) + 1 US (Power Trader, filtrée par quebec_only). Réécriture du connecteur sur la plateforme existante jobka/connectors/lever.py (pattern challenger 28ff173), même source_id. ATTENTION espaces de noms documentée : l'ORG Lever « mcgillstlaurent » (maison mère) ≠ le connecteur frère mcgillstlaurent (tenant JazzHR mcgillstlaurent.applytojob.com = CWP Energy, division énergie du groupe, toujours VIVANT, 4 offres QC) — aucun conflit (aucun autre connecteur Lever sur cet org), aucun chevauchement de titres entre les deux boards, la dédup inter-sources tranchera au besoin. Pas de continuité d'IDs (JazzHR alphanumériques → UUID Lever) : les 3 offres JazzHR actives retirées proprement par le garde-fou 2-miss (removed=3 au 2e sync), 4 offres Lever ajoutées à neuf. sources.json : connector jazzhr → lever, careers_url → jobs.lever.co/mcgillstlaurent (200), url vide → https://mcgillstlaurent.com (vérifié 200 — artefact vague E, pattern des missions précédentes). Sync isolé rejoué ×2 : found=4 stable (added=4 puis removed=3), ok=1, 0,5-0,6 s — au-dessus de la médiane 3.0 ; fiches complètes 4/4 ville Montréal + description (5,5-9,2 k) + date_posted, URL détail live 200. Non-régression plateforme lever sur tenant vivant bhvr : found=29, ok=1. Fiches docs/connecteurs/ mcgillstlaurentb8.md + ats-lever.md + ats-jazzhr.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1129 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +3 −3
  8. Wed, Sep 30, 2026 3

    1. [ka6] fix connecteur silabs: faux positif de supervision « volume QC nul » (27e cas du pattern, 1re intervention sur cette source) — le connecteur est SAIN, found=0 est le comportement CORRECT (médiane historique 0.5). Le stale de 5,1 h vient de la définition de succès de la supervision (dernier sync found>0 = 2026-09-30 14:52) : l'unique offre QC en base (20984 « Développeur logiciel I / Software Engineer I », Montréal, parue 2026-08-22) a été DÉPUBLIÉE par Silicon Labs le jour même (found 1 → 0 avec missed=1 à 17:05, removed=1 à 19:15), confirmé au détail cxs : 403 S22 (marqueur Workday documenté : dépublié). sync_log VERT en continu (ok=1). Re-vérification live du board /wday/cxs/silabs/SiliconlabsCareers/jobs : 200, 83 offres mondiales, publication ACTIVE (« Posted Today »), mais la facette locationCountry ne contient PLUS le Canada (China ×2, Finland ×2, Hungary ×7, India ×27, Norway ×4, Singapore ×17, Taiwan ×2, USA ×22) et searchText=Montreal → 0. Aucune migration d'ATS : www.silabs.com/about-us/careers (403 en accès direct — anti-bot, vérifié via Scrapfly) référence toujours le tenant silabs.wd1. Aucun angle mort : les 3 AUTRES SITES du tenant (ExperiencedJobs 66, Internships 2, NewCollegeGraduates 13) sont vivants mais sans aucune offre canadienne non plus (Montreal → 0 partout) ; SiliconlabsCareers reste le super-ensemble. Tant que Silicon Labs ne publie rien au Québec (bureau R&D de Montréal), ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que geox f785ff4 / gearboxquebec 0373c30 / samsara 76fd913 / novistofr 894eb9d / quenchwater f1b4e0a / tsys ad3ad36 / produits_kruger e25471e / oliverbonacini d461e83). Au passage, artefacts vague C corrigés dans sources.json (pattern tsys ad3ad36) : name 'Silabs' → 'Silicon Labs' (vrai nom de l'employeur, EMPLOYER aligné dans silabs.py — 0 offre active, aucun impact dédup) et url employeur vide → https://www.silabs.com (vérifié 200 via Scrapfly) — éditions ciblées, format préservé, JSON valide. Docstring silabs.py enrichie (re-vérif 2026-09-30 + chronologie + topologie des 4 sites du tenant). Sync isolé rejoué ×2 : found=0 stable, ok=1, 6-7 s ; non-régression plateforme workday sur tenant vivant mcgill : found=314, ok=1. Fiches docs/connecteurs/ silabs.md + ats-workday.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 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 +2 −2
    2. [ka6] fix connecteur oliverbonacini: faux positif de supervision « volume QC nul » (26e cas du pattern, 1re intervention sur cette source) — le connecteur est SAIN, found=0 est le comportement CORRECT (médiane historique 0.5). Le stale de 4,8 h vient de la définition de succès de la supervision (dernier sync found>0 = 2026-09-29 19:10) : les 2 dernières offres QC en base (Bar George, Montréal — 744000140534893 « Spécialiste des événements » parue 2026-07-29, 744000144618266 « Demi Chef de Partie » parue 2026-08-20) ont été DÉPUBLIÉES par l'employeur (found 2 → 1 à 19:10 → 0 à 21:17/22:53, removed=1 chacun), confirmé au détail API : 200 + active:false (marqueur SmartRecruiters documenté, 1re confirmation live du marqueur). sync_log VERT en continu (ok=1). Re-vérification live de l'API api.smartrecruiters.com/v1/companies/OliverBonacini/postings : 200, 74 offres, publication ACTIVE (dernières le 2026-09-30 même), mais TOUTES hors Québec (Toronto ×61, Edmonton ×8, Calgary ×2, The Blue Mountains ×2, North York ×1). Les 10 offres QC historiques étaient toutes du Bar George (seul établissement montréalais d'O&B avec Le Mount Stephen), dépubliées progressivement depuis le 2026-09-04. Aucune migration d'ATS : oliverbonacini.com/careers ET bargeorge.ca/fr/news/carrieres référencent le MÊME tenant SmartRecruiters (pages filtrées par marque careers.smartrecruiters.com/OliverBonacini/bar-george et /le-mount-stephen — pas de compte séparé), la page marque Bar George affiche « Aucun » poste ouvert ; les offres Bar George encore visibles sur LinkedIn/agrégateurs sont des miroirs périmés des offres dépubliées. Tant que O&B ne publie rien au Québec, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que geox f785ff4 / gearboxquebec 0373c30 / samsara 76fd913 / novistofr 894eb9d / quenchwater f1b4e0a / tsys ad3ad36 / produits_kruger e25471e). Au passage, artefact vague C dans sources.json comblé (pattern geox/quenchwater) : url employeur vide → https://www.oliverbonacini.com (vérifié 200) — édition ciblée 1 ligne, format préservé, JSON valide. Docstring oliverbonacini.py enrichie (re-vérif 2026-09-30 + chronologie + topologie tenant/marques). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,4-0,6 s ; non-régression plateforme smartrecruiters sur tenant vivant ubisoft : found=152, ok=1. Fiches docs/connecteurs/ oliverbonacini.md + ats-smartrecruiters.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
    3. [ka6] fix connecteur xtltransportlogistics: compte JazzHR désactivé chez l'ATS (verdict site_source_mort, 1re intervention sur cette source) — le connecteur est INTACT et détecte correctement la condition (marqueur « Inactive Career Page » ajouté en adb8637, cas derumarketcatering) : RuntimeError explicite à chaque sync, sync_log propre. Chronologie précise (sync_log) : dernier sync OK 2026-09-29 17:12 EDT avec found=36 (médiane 36.0), puis « Inactive Career Page » à 21:20 — TOUT le tenant xtltransportlogistics.applytojob.com est fermé (page liste /apply/, iframe /apply/jobs/ ET pages détail des offres en base → 200 « Inactive Career Page », vérifié live le 2026-09-30). L'employeur XTL Transport reste bien VIVANT et recrute (offres LinkedIn/Indeed postées APRÈS la fermeture, directement sur les agrégateurs, sans URL de candidature vers un ATS) mais AUCUNE migration d'ATS détectable : les pages carrières officielles xtl.com FR/EN embarquent toujours l'iframe JazzHR mort, aucun compte JazzHR renommé (xtl/xtltransport/xtlgroup/xtltransportinc inexistants), balayage Serper Workday/Dayforce/UKG/BambooHR/Lever/Greenhouse/SmartRecruiters/Workable/Recruitee/Zoho/Teamtailor → néant ; la page « conduisez-avec-xtl » n'offre qu'un formulaire Gravity Forms. Décision : connecteur CONSERVÉ (fermeture vieille de 30 h — possible incident de facturation ou migration en cours ; précédent derumarketcatering 6744631 : retrait seulement après confirmation sur plusieurs semaines ET faux positif d'employeur, ce qui n'est pas le cas ici). Si le tenant revient, le sync repart seul ; si XTL réapparaît sur un autre ATS, repointer ORG. Les 36 offres actives en base (liens désormais morts) s'archiveront d'elles-mêmes via expire_stale (7 j sans last_seen, vers le 2026-10-06) — mécanisme du repo, aucune purge manuelle. Couverture de repli partielle : XTL publie sur Guichet-Emplois (offres QC vues, ex. Bromont), déjà agrégé par job-ka. Au passage, artefacts vague E corrigés dans sources.json (pattern cliniqued 51913fe) : url employeur vide → https://www.xtl.com (vérifié 200) et sectors [] → [Transport, Logistique] (vocabulaire établi : 32 et 41 sources) — éditions ciblées, format multiligne préservé, JSON valide. Docstring xtltransportlogistics.py enrichie (chronologie + re-vérifs + décision). Sync isolé rejoué : échec explicite attendu « compte JazzHR désactivé », comportement conçu ; non-régression plateforme jazzhr sur tenant vivant motosillimitees : found=2, ok=1. Fiches docs/connecteurs/ xtltransportlogistics.md + ats-jazzhr.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +5 −2
  9. Tue, Sep 29, 2026 3

    1. [ka6] fix connecteur tsys: faux positif de supervision « volume QC nul » (24e cas du pattern, 1re intervention sur cette source) — le connecteur est SAIN, found=0 est le comportement CORRECT : les 6 offres Canada du board ont été dépubliées EN BLOC par l'employeur le matin même (found 6 → 5 à 09:04 → 0 à 11:21, removed=5 à 13:35), sync_log VERT en continu (ok=1). Détail cxs des offres retirées (R0071963 Montréal, R0075053 Toronto…) = 403 S22 (marqueur Workday documenté : dépublié), page publique 200 (shell SPA). Re-vérification live du board /wday/cxs/tsys/TSYS/jobs : 200, 214 offres mondiales, publication active (« Posted Today »), mais la facette locations ne contient PLUS AUCUNE ville canadienne et searchText=Montreal → 0. Cause vraisemblable documentée : restructuration Global Payments 2025-2026 (TSYS/Issuer Solutions vendu à FIS, Worldpay acquis) — vérifié live : www.tsys.com redirige vers fisglobal.com/products/total-issuing, tsys.com/careers = 404 pointant careers.fisglobal.com, le board tsys.wd1 s'intitule désormais « Global Payments & Our Family of Brands », et la façade jobs.globalpayments.com agrège tsys.wd1/TSYS + worldpay.wd5/Worldpay_External_Careers_Site. Angles morts sondés : aucun autre site sur le tenant tsys (S21 partout), Montreal → 0 aussi sur worldpay.wd5 et fis.wd5/SearchJobs → couverture intacte au 2026-09-29 ; si les offres QC réapparaissent chez FIS/Worldpay, créer un connecteur frère plutôt que modifier celui-ci. Tant que Global Payments ne publie rien au Québec sur ce board, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que geox f785ff4 / gearboxquebec 0373c30 / samsara 76fd913 / novistofr 894eb9d / quenchwater f1b4e0a). Au passage, artefacts vague C corrigés (pattern rbc c095c66) : EMPLOYER 'Tsys' → 'TSYS' (tsys.py) et name 'Tsys' → 'TSYS' + url employeur vide → https://www.tsys.com (vérifié 200 via Scrapfly, redirige vers FIS) dans sources.json — éditions ciblées, format préservé. Docstring tsys.py enrichie (re-vérif 2026-09-29 + chronologie + contexte corporatif). Sync isolé rejoué ×2 : found=0 stable, ok=1, 12,6-14,8 s. Fiches docs/connecteurs/ tsys.md + ats-workday.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 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 +2 −2
    2. [ka6] fix connecteur quenchwater: faux positif de supervision « volume QC nul » (23e cas du pattern, 1re intervention sur cette source) — le connecteur est SAIN, found=0 est le comportement CORRECT (médiane historique 0.5). Le stale de 5,0 h vient de la définition de succès de la supervision (dernier sync found>0 = 2026-09-29 08:55) : l'unique offre QC en base (1ba16442 « Field Service Technician » Montréal, parue 2026-08-17) a été dépubliée par Quench entre 08:55 et 11:11 — détail 404 sur la page publique ET sur l'API v0 (nouveau marqueur documenté : Lever détail dépublié = 404, board 200). Le sync_log local est VERT en continu (ok=1, 313/313 syncs). Re-vérification live de l'API api.lever.co/v0/postings/quenchwater : 200, 64 offres, publication ACTIVE (dernières le 2026-09-28), couvre le Canada (Woodbridge/Toronto ON, Vancouver BC) mais zéro Québec. Aucune migration d'ATS : quenchwater.com (redirige vers quench.culligan.com) → page carrières Duda quenchwater--careers.multiscreensite.com, le board Lever reste la source des offres. Tant que Quench ne publie rien au Québec, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que geox f785ff4 / gearboxquebec 0373c30 / samsara 76fd913 / novistofr 894eb9d). Au passage, artefact vague C dans sources.json comblé (pattern geox/gearboxquebec) : url employeur vide → https://quenchwater.com (vérifié 200) — édition ciblée 1 ligne, format préservé. Docstring quenchwater.py enrichie (re-vérif 2026-09-29 + chronologie). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,9 s. Fiches docs/connecteurs/ quenchwater.md + ats-lever.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
    3. [ka6] fix connecteur novistofr: faux positif de supervision « volume QC nul » (22e cas du pattern, 1re intervention sur cette source) — le connecteur est SAIN, found=0 est le comportement CORRECT (médiane historique 0.5). Le stale de 4,9 h vient de la définition de succès de la supervision (dernier sync found>0 = 2026-09-28 19:04) : l'unique offre QC en base (4649647005 « Enterprise Account Executive - Montreal » Montréal, parue 2026-01-19) a été dépubliée par Novisto entre 19:04 et 21:12 — API détail 404, page 302 → /novistofr?error=true (marqueurs Greenhouse documentés, confirmés gearboxquebec 0373c30 / samsara 76fd913). Le sync_log local est VERT en continu (ok=1, aucune erreur). Re-vérification live de l'API boards-api.greenhouse.io/v1/boards/novistofr/jobs : 200 mais board VIDE (0 offre toutes régions). Particularité inédite documentée : « novistofr » est le board MIROIR FRANCOPHONE de « novisto78 » (ids Greenhouse appariés : 4649647005 FR vs 4649646005 EN, même titre) — Novisto a vidé le miroir FR et republié l'offre uniquement sur le board principal (4738750005, vivante), déjà captée par le connecteur frère novisto78 (VERT, found=6, 6 offres QC Montréal actives en base) → AUCUN angle mort, la couverture QC de Novisto est intacte. Aucune migration d'ATS : la page carrières officielle novisto.com/company/careers/job-openings (200) intègre l'embed Greenhouse du board novisto78 uniquement ; novistofr n'est plus référencé nulle part. Tant que le board FR reste vide, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que geox f785ff4 / gearboxquebec 0373c30 / samsara 76fd913). Au passage, artefact vague C dans sources.json comblé (pattern geox/gearboxquebec) : url employeur vide → https://novisto.com (vérifié 200) — édition ciblée 1 ligne, format préservé. Docstring novistofr.py enrichie (re-vérif 2026-09-29 + chronologie + particularité board miroir). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,1 s. Fiches docs/connecteurs/ novistofr.md + ats-greenhouse.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
  10. Mon, Sep 28, 2026 2

    1. [ka6] fix connecteur gearboxquebec: faux positif de supervision « volume QC nul » (20e cas du pattern, 1re intervention sur cette source) — le connecteur est SAIN, found=0 est le comportement CORRECT (médiane historique 0.5). Le stale de 5,1 h vient de la définition de succès de la supervision (dernier sync found>0 = 2026-09-28 12:48) : l'unique offre QC en base (7807902003 « Directeur·rice du design / Design Director » Montréal, parue 2026-07-17) a été dépubliée par Gearbox entre 12:48 et 15:01 — page détail Greenhouse HTTP 302 → ?error=true (nouveau marqueur documenté : Greenhouse détail dépublié = 302 vers le board avec error=true). Le sync_log local est VERT en continu (ok=1, aucune erreur, 354+ syncs). Re-vérification live de l'API boards-api.greenhouse.io/v1/boards/gearboxquebec/jobs : 200, {"jobs":[],"meta":{"total":0}} — board vivant mais VIDE, zéro offre toutes régions. Aucune migration d'ATS : la page carrières officielle (gearboxquebec.com → 2k.com/fr-CA/studios/gearbox/careers/#quebec, Gearbox appartient à Take-Two/2K) pointe toujours vers greenhouse.io/gearboxquebec ; le board frère « gearbox » (siège) n'a qu'1 offre, Frisco Texas, zéro Québec — aucun angle mort. Tant que Gearbox Québec ne publie rien, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que geox f785ff4 / lifestance a4e473a). Au passage, artefact vague C dans sources.json comblé (pattern geox/lifestance) : url employeur vide → https://www.gearboxquebec.com (vérifié 200, redirige vers la page studio 2K) — édition ciblée 1 ligne, format préservé. Docstring gearboxquebec.py enrichie (re-vérif 2026-09-28 + chronologie). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,1-0,9 s. Fiches docs/connecteurs/ gearboxquebec.md + ats-greenhouse.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +1 −1
    2. [ka6] fix connecteur rbc: angle mort réel « poste multi-lieux » derrière un stale volume-QC-nul (1re intervention) — contrairement aux 19 faux positifs précédents, il y avait une VRAIE offre QC manquée. Contexte : site early talent Workday rbc.wd3/RBCEARLYTALENT1 (stages/co-op, médiane QC 0.5), l'unique offre QC en base (« 2027 Capital Markets, Global Markets Program Summer Analyst » R-0000180191, Montréal) dépubliée par RBC dans la nuit → found=0 ×2, sync_log VERT en continu (ok=1, 233+ syncs). Re-vérification live du board : 200 JSON, 46 postes (Toronto/USA/Malaisie), searchText=Quebec → 1 poste VIVANT : « 2027 Winter Change Management Intern (4 months) » R-0000186549, lieu principal MONTRÉAL Quebec + secondaire Toronto, publié 2026-09-10 — mais sa ligne de liste affiche locationsText=« 2 Locations » sans nommer les villes, que le filtre client is_quebec_location rejetait ; et ce tenant n'expose AUCUNE facette de province (State_Province sans Quebec ni Ontario) donc pas de filtre serveur possible. FIX dans workday.py (_keep) : repli sur le slug de lieu de l'externalPath (…/job/MONTRAL-Quebec-Canada/…, porte le lieu PRINCIPAL) quand le libellé est vide ou « N Locations » — zéro requête additionnelle, ne touche que les tenants filtrés client ; limite assumée documentée : un poste dont seul un lieu SECONDAIRE est QC reste manqué. La page détail remplace déjà « 2 Locations » par le vrai lieu (mécanique existante) → l'offre entre en base avec city=Montréal. Au passage, artefacts vague C corrigés (pattern ci/geox) : EMPLOYER 'Rbc' → 'RBC' (rbc.py, docstring re-vérif 2026-09-28 + chronologie), name 'Rbc' → 'RBC' et url vide → https://www.rbc.com (vérifié 200) dans sources.json — éditions ciblées, format préservé. Sync isolé rejoué : found=1 (added=1 puis stable ×2), ok=1, ~14 s ; non-régression Workday : cibc found=69 ≈ médiane 73. Fiches docs/connecteurs/ rbc.md + ats-workday.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 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 +2 −2
  11. Sun, Sep 27, 2026 1

    1. [ka6] fix connecteur geox: faux positif de supervision « volume QC nul » (19e cas du pattern, 1re intervention sur cette source) — le connecteur est SAIN, found=0 est le comportement CORRECT (médiane historique 0.5). Le stale de 5,7 h vient de la définition de succès de la supervision (dernier sync found>0 = 2026-09-27 08:16) : l'unique offre QC en base (rkgocT7cPQ « Associé(e) à la vente – temps partiel » Pointe-Claire) a été dépubliée par GEOX dans la matinée — page détail HTTP 410 Gone (nouveau marqueur documenté : JazzHR détail dépublié = 410). Le sync_log local est VERT en continu (ok=1, aucune erreur, 250+ syncs) ; le garde-fou anti-faux-zéro de jazzhr.py (marqueur resumator) écarte l'hypothèse d'une page challenge. Re-vérification live du board geox.applytojob.com/apply/ : 200, marqueur resumator présent, 2 offres publiées, TOUTES deux en Ontario (Store Manager Heartland Town Centre Mississauga, Part-Time Sales Associate Mapleview Mall Burlington), zéro Québec — aucune migration d'ATS, compte JazzHR actif. Tant que GEOX ne publie rien au Québec, ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe que lifestance a4e473a). Au passage, artefacts vague E dans sources.json comblés (pattern lifestance/cibc) : url employeur vide → https://www.geox.com (vérifié 200) et sectors vide → « Commerce de détail » — édition ciblée, format préservé. Docstring geox.py enrichie (re-vérif 2026-09-27 + chronologie). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,1-0,2 s. Fiches docs/connecteurs/ geox.md + ats-jazzhr.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 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 +4 −2
  12. Sat, Sep 26, 2026 1

    1. [ka6] fix connecteur lifestance: faux positif de supervision « volume QC nul » récidivant (2e passage après 25262c1 du 2026-08-27) — le connecteur est SAIN, found=0 est le comportement CORRECT (médiane 0.0). Le stale de 745.8 h vient de la définition de succès de la supervision (dernier sync found>0 = 2026-08-26, avant la purge des 6 faux positifs d'homonymie Kirkland WA) : le sync_log local est VERT en continu (ok=1 found=0 toutes les ~2 h, 239+ syncs), un seul échec transitoire à 20:41 ce soir (« Expecting value: line 1 column 1 » = réponse Lever non-JSON, non reproduite). Re-vérification live de l'API Lever api.lever.co/v0/postings/lifestance : 200 JSON, 1398 postings, TOUS aux États-Unis (top lieux Philadelphia/Naperville/Haverford…, toujours 6 à Kirkland WA rejetés par is_quebec_location), zéro Canada/Québec — aucune migration d'ATS (jobs.lever.co/lifestance 200). Tant que LifeStance ne publie rien au Québec, ce connecteur sera re-signalé périodiquement : structurel, pas une panne. Au passage, artefacts vague C dans sources.json comblés (pattern epwealth/cibc) : url employeur vide → https://lifestance.com (vérifié 200) et region « Kirkland » ambiguë → « Kirkland WA » — édition ciblée 2 lignes, format préservé. Docstring lifestance.py enrichie (re-vérif 2026-09-26 + chronologie). Sync isolé rejoué ×2 : found=0 stable, ok=1, 1,5-4,2 s. Fiches docs/connecteurs/ lifestance.md + ats-lever.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +2 −2
Menu

Theme