SPB Git

spb/job-ka

Public
History of data Clear filter
page 1
  1. Sat, Oct 17, 2026 5

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

    1. Simon-Pierre Boucher · 2 files +4 −4
    2. Simon-Pierre Boucher · 1 file +2 −2
  3. Thu, Oct 15, 2026 9

    1. [ka6] connecteur allredi: rien à réparer côté flux — dépublication légitime de l'unique offre QC le 2026-10-15 + artefact vague C corrigé (homepage → Allredi). Stale = faux positif de volume nul (médiane 0.5): l'unique offre QC jamais vue (2717559 « Customer Service Representative » Laval, parue 2026-08-20, 45-55 k$) dépubliée par l'employeur entre 16:04 et 18:22 (found 1→0, missed=1, puis removed=1 via garde-fou 2-miss à 20:35), sync_log vert en continu — AUCUN échec technique. Marqueur Recruitee confirmé live (3e confirmation, classe gevgroupltd/huaweicanada): détail dépublié = 404 page /o/<slug> ET API /api/offers/2717559. Board re-vérifié vivant: 15 offres (Fairfield CA, Davenport IA, Pasadena TX, Gonzales LA, Leduc/Calgary AB, Coquitlam BC, Winnipeg MB) 0 QC, aucune translations.fr cachant un site QC (gotcha huaweicanada vérifié). Pas de migration: allredi.com/careers-page embarque toujours le widget RTWidget du même tenant (company id 82775, careers_url = allredi.recruitee.com, mêmes 15 offres). Sync rejoué vert found=0 = légitime en 0,2 s. Artefact vague C (classe gevgroupltd/jam/mlp): EMPLOYER/name = « homepage » (artefact du générateur) → Allredi (nom lu dans les descriptions: « fueling Allredi's growth across North America », fabricant/distributeur d'équipement de sablage au jet abrasif; allredi.py + sources.json), url vide → allredi.com; employeur propagé à la ligne inactive 2717559 (UPDATE direct, jamais réécrite par un sync). Docstring ajoutée (chronologie 1re intervention), fiches allredi.md/ats-recruitee.md/INDEX.md régénérées. Non-régression recruitee via anciapersonnelinc found=57. 107 tests verts, pm2 restart OK, site local+public 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
    2. [ka6] fix connecteur mlp: panne shard Dayforce 2026-10-14 déjà résolue + assurance bi-culture (pattern jam/kdcone) + artefact vague C corrigé (Mlp → MacLean Power Systems). Broken = 3 échecs FRANCS ok=0 (read timeout 15:42 puis 503 ×2 à 19:07/20:07 sur /api/geo/mlp/jobposting/search, même rafale que kdcone/jam/imperialdade/harrisrebar/ndtglobal), jamais de faux 0 — les 3 offres QC préservées; syncs verts found=3 jusqu'à 13:12 le 14, trou ensuite = restarts pm2 des missions voisines. Panne résolue d'elle-même: sync rejoué vert found=3 = médiane 3.0 en 1,3 s. Pas de migration: macleanpower.com/careers-at-mps/ référence toujours le CandidatePortal Dayforce du namespace mlp (culture maîtresse en-US). Re-sondage tri-culture (pattern jam/kdcone/imperialdade): fr-CA ne voit que les 3 offres traduites (toutes QC Châteauguay) vs 136 offres en en-CA/en-US dont 2 QC (16245/16242, MÊMES ids = vraies traductions; 16217 « Machiniste Quart de soir » n'existe qu'en fr-CA) — aucune offre QC manquée aujourd'hui, mais vue fr-CA à 3/136 sur tenant à culture maîtresse EN = angle mort latent (cas jam: quasi-totalité du QC publiée qu'en EN) → fix CULTURES=(fr-CA,en-CA) fusion par external_id priorité fr-CA, found inchangé 3 = médiane, assurance contre un futur poste QC sans traduction FR. Artefact vague C (classe gevgroupltd/jam/kdcone): EMPLOYER/name = namespace brut « Mlp » → MacLean Power Systems (nom lu dans les descriptions: « Avec son siège social situé à Fort Mill, en Caroline du Sud, MacLean Power Systems (MPS) est le principal fabricant de produits critiques », 1600 employés, usine QC = filiale Vizimax Inc. 225 boul. Ford Châteauguay; mlp.py + sources.json), url vide → macleanpower.com; propagation aux 3 actives via sync (updated=3) + 3 lignes inactives (UPDATE direct, jamais réécrites par un sync). Docstring enrichie (chronologie 2e intervention), fiches mlp.md/ats-dayforce.md/INDEX.md régénérées. Non-régression dayforce via bleufeu found=1. 107 tests verts, pm2 restart OK, site local+public 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
    3. [ka6] fix connecteur kdcone: angle mort de culture récupéré (found 14→15) + panne shard Dayforce 2026-10-14 déjà résolue + artefact vague C corrigé (Hygiéniste Industrielle → KDC/ONE). Broken = 3 échecs FRANCS ok=0 (read timeout 15:34 puis 503 ×2 à 19:01/19:52 sur /api/geo/kdcone/jobposting/search, même rafale que jam/harrisrebar/imperialdade/wikoff/wafna/leadsonline/peaktech/stateindustrial), jamais de faux 0 — les 14 offres QC préservées; syncs verts found=14 jusqu'à 13:07 le 14, trou ensuite = restarts pm2 des missions voisines. Panne résolue d'elle-même: sync rejoué vert found=14 = médiane 14.0 en 1,3 s. Pas de migration: kdc-one.com/careers référence toujours les CandidatePortal dayforcehcm par usine du namespace kdcone (cultures maîtresses en-US/en-GB). ANGLE MORT de culture (pattern jam/imperialdade/leadsonline/bly/boralex) détecté au re-sondage tri-culture: fr-CA ne voit que les 14 offres traduites (toutes QC) vs 127 offres en en-CA/en-US dont 14 QC — 13 communes + l'évergreen « Spontaneous Candidacy » Knowlton id 58831 publié SEULEMENT en EN (pendant FR id 58411, ids distincts par langue, classe pokafr) → fix CULTURES=(fr-CA,en-CA) fusion par external_id priorité fr-CA, found 14→15 (added=1, updated=14) + assurance contre un futur poste QC sans traduction FR (cas jam). Artefact vague C (classe gevgroupltd/jam): EMPLOYER/name = titre d'offre brut « Hygiéniste Industrielle » → KDC/ONE (nom lu dans les descriptions: « Chez KDC/ONE, nous sommes des leaders dans la fabrication en sous-traitance », plus grand fabricant de déodorants en Amérique du Nord, usines QC Knowlton + siège Longueuil; kdcone.py + sources.json), url vide → kdc-one.com; propagation aux 15 actives via sync + 8 lignes inactives (UPDATE direct, jamais réécrites par un sync). Docstring enrichie (chronologie 2e intervention), fiches kdcone.md/ats-dayforce.md/INDEX.md régénérées. Non-régression dayforce via bleufeu found=1. 107 tests verts, pm2 restart OK, site local+public 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
    4. [ka6] fix connecteur jam: angle mort MAJEUR de culture récupéré (found 5→23) + panne shard Dayforce 2026-10-14 déjà résolue + artefact vague C corrigé (Architecte Salesforce Sommaire → JAM Industries). Broken = 4 échecs FRANCS ok=0 (500 à 15:26 puis 503 ×3 jusqu'à 19:37 sur /api/geo/jam/jobposting/search, même rafale que harrisrebar/imperialdade/wikoff/wafna/leadsonline/peaktech/stateindustrial), jamais de faux 0 — les 5 offres QC préservées; syncs verts found=5 jusqu'à 13:00 le 14, trou ensuite = restarts pm2 des missions voisines. Panne résolue d'elle-même: sync rejoué vert found=5 = médiane 5.0 en 1,3 s. Pas de migration: jamindustries.com/careers référence toujours jobs.dayforcehcm.com/jam/CANDIDATEPORTAL. ANGLE MORT réel (pattern imperialdade/leadsonline/bly/boralex) détecté au re-sondage tri-culture: fr-CA ne voit que 8 offres (5 QC) vs 41 en en-CA/en-US dont 21 QC — la quasi-totalité des postes QC de Baie-d'Urfé/Montréal (titres bilingues « … / Claims Administrator ») n'est publiée QUE dans les cultures EN; « Architecte Salesforce » id 1601 et « Coordonnateur de la chaîne d'approvisionnement » id 653 n'existent qu'en fr-CA → fix CULTURES=(fr-CA,en-CA) fusion par external_id priorité fr-CA, found 5→23 (added=7, updated=16). Artefact vague C (classe gevgroupltd/kodify): EMPLOYER/name = titre d'offre brut « Architecte Salesforce Sommaire » → JAM Industries (nom lu dans les descriptions: « Don't skip a beat, apply to JAM Industries! », distributeur d'instruments de musique/électronique depuis 1972, divisions Erikson Music/Audio/Consumer; jam.py + sources.json), url vide → jamindustries.com; propagation aux 23 actives via sync + 10 lignes inactives (UPDATE direct, jamais réécrites par un sync). Docstring enrichie (chronologie 2e intervention), fiches jam.md/ats-dayforce.md/INDEX.md régénérées. Non-régression dayforce via bleufeu found=1. 107 tests verts, pm2 restart OK, site local+public 200.
      Simon-Pierre Boucher · 1 file +2 −2
    5. [ka6] fix connecteur imperialdade: angle mort de culture récupéré (found 32→33) + panne shard Dayforce 2026-10-14 déjà résolue + artefact vague C corrigé (Sany → Imperial Brady Canada). Broken = 3 échecs FRANCS ok=0 (read timeout 15:23 puis 503 ×2 à 18:51/19:12 sur /api/geo/imperialdade/jobposting/search, même rafale que harrisrebar/wikoff/wafna/leadsonline/peaktech/stateindustrial), jamais de faux 0 — les 32-33 offres QC préservées; syncs verts found=32 jusqu'à 12:59 le 14, trou ensuite = restarts pm2 des missions voisines. Panne résolue d'elle-même: sync rejoué vert found=32 = médiane 32.5 en 2,4 s. Pas de migration: imperialbrady.com/careers référence toujours en-CA/imperialdade/CANCANDIDATEPORTAL (+ board US CANDIDATEPORTAL 185 offres 0 QC sondé). ANGLE MORT réel (pattern leadsonline/bly/boralex) détecté au re-sondage bi-board × tri-culture: fr-CA ne voit que 33 offres (32 QC) vs 47 en en-CA/en-US — « IT Business Analyst - Digital Integrations » Saint-Laurent id 10917 (parue 2026-09-17) n'existe que dans les cultures EN (lien officiel du site carrières = en-CA, culture maîtresse), « Chauffeur de camion porteur (classe 3) » Jonquière id 10515 n'existe qu'en fr-CA → fix CULTURES=(fr-CA,en-CA) fusion par external_id priorité fr-CA, found 32→33 (added=1). Artefact vague C (classe gevgroupltd/leadsonline): EMPLOYER/name « Sany » (marque d'une seule division, sany.ca à vendre) → Imperial Brady Canada (nom lu dans les descriptions d'offres: « Imperial Brady Canada, principal distributeur national »; imperialdade.py + sources.json), url vide → imperialbrady.com; propagation aux 32 actives via sync (updated=32) + 30 lignes inactives (UPDATE direct, jamais réécrites par un sync). Docstring enrichie (chronologie 2e intervention), fiches imperialdade.md/ats-dayforce.md/INDEX.md régénérées. Non-régression dayforce via bleufeu found=1. 107 tests verts, pm2 restart OK, site local+public 200.
      Simon-Pierre Boucher · 1 file +2 −2
    6. Simon-Pierre Boucher · 1 file +2 −2
    7. [ka6] connecteur peaktech: rien à réparer côté flux — found=0 légitime (3e intervention, source structurellement 0 QC) + artefact vague C corrigé (Peaktech → Peak Technologies). Stale = variante « cycle interrompu »: dernier sync enregistré 2026-10-14 19:12 = 503 de la panne partielle de shard Dayforce du 14 (résolue, même rafale que wikoff/wafna/leadsonline), puis trou de syncs causé par les restarts pm2 des missions voisines (scheduler vivant en plein cycle, lettre « c », à l'intervention); le « dernier succès 2026-10-05 » de la supervision = dernier sync avec found>0 (offre 3870 dépubliée ce jour-là, cas 6a2cebc1), syncs ok=1 found=0 verts en continu entre les deux. Sync rejoué vert found=0 = médiane 0.0 en 4,6 s. Pas de migration: peaktech.com/about-peak-technologies/careers/ (403 anti-bot direct → Scrapfly 200) référence toujours dayforcehcm.com/CandidatePortal/en-CAN/peaktech = même tenant. Pas d'angle mort: fr-CA maxCount=0 (connu depuis 6a2cebc1), en-CA 46 offres TOUTES hors QC (US, GB ×2, BE, ON) vérifiées lieux complets (stateCode/isoCountryCode), en-US sondé = 0 QC aussi, les 3 offres virtuelles sans lieu inspectées au détail = aucune mention Québec/Montréal/Canada. Artefact vague C (classe wafna/leadsonline): EMPLOYER/name = namespace brut « Peaktech » → Peak Technologies (nom lu dans les descriptions d'offres « For over 35 years, Peak Technologies… » et titre du site officiel « Careers - Peak Technologies »; peaktech.py + sources.json), propagation aux 4 lignes en base (UPDATE direct, toutes inactives — aucun sync ne les aurait réécrites). Docstring enrichie (chronologie 3e intervention), fiches peaktech.md/ats-dayforce.md/INDEX.md régénérées. Non-régression dayforce via bleufeu found=1. 107 tests verts, pm2 restart OK, site local+public 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +1 −1
    8. [ka6] connecteur orthoclinical: rien à réparer côté flux — unique offre QC dépubliée le 2026-10-14 (found=0 légitime) + double artefact vague C corrigé (Field Service Representative → QuidelOrtho). Stale = variante « cycle interrompu » (restarts pm2 des missions voisines, 153 restarts, scheduler vivant en plein cycle à l'intervention). Dépublication RÉELLE de l'unique offre QC R0016868 « Field Service Representative - Quebec City Region » (parue 2026-09-14) entre 15:47 et 19:11 le 2026-10-14: détail cxs = 403 S22 (marqueur Workday classique), dernier sync avant trou = found=0 ok=1 jamais de faux échec. Board vivant 29 offres (US/Rochester, Inde, Chine, Allemagne, UK) 0 QC: searchText Quebec/Canada/Montreal/Montréal = 0, les 5 offres multi-lieux vérifiées une à une au détail cxs = 100 % US/UK, 8 sites frères sondés (External, Careers, QuidelOrtho…) = 404. Pas de migration: quidelortho.com/global/en/careers/careers-home référence toujours orthoclinical.wd1.myworkdayjobs.com/Search = même tenant/board. found=0 conforme à la médiane 0.5 (source oscillant 0/1), garde-fou de dérive non déclenché (DRIFT_MIN_BASE=8 > médiane), offre désactivée proprement par le pipeline (miss_count 2, removed=1, sync vert ok=1). DOUBLE artefact vague C corrigé (classe gevgroupltd/kodify 8ff81d0): EMPLOYER/name = titre d'offre brut « Field Service Representative » → QuidelOrtho (fusion Quidel + Ortho Clinical Diagnostics 2022, diagnostics in vitro; hiringOrganization Workday = Ortho-Clinical Diagnostics, Inc., nom courant lu dans les descriptions d'offres et sur le site officiel; orthoclinical.py + sources.json), url vide → quidelortho.com; propagation à la ligne en base (UPDATE direct, l'offre étant dépubliée aucun sync ne l'aurait réécrite). Docstring enrichie, fiches orthoclinical.md/ats-workday.md/INDEX.md régénérées. Non-régression workday via dupont found=1. 107 tests verts, pm2 restart OK, site local+public 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
    9. [ka6] fix connecteur leadsonline: angle mort de culture récupéré (found 1→2) + panne shard Dayforce 2026-10-14 déjà résolue + double artefact vague C corrigé (Leadsonline → LeadsOnline). Namespace supplémentaire de la panne partielle de shard Dayforce du 2026-10-14, DÉJÀ RÉSOLUE à l'intervention (syncs verts found=1 jusqu'à 15:38, 503 franc à 19:03 sur /api/geo/leadsonline/jobposting/search, ok=0 jamais de faux 0, offre QC préservée; trou de syncs ensuite = restarts pm2 des missions voisines, variante « cycle interrompu »; run.py sync repasse vert). Pas de migration: leadsonline.com/careers.html pointe toujours jobs.dayforcehcm.com/en-US/leadsonline/CANDIDATEPORTAL = même tenant/board. ANGLE MORT réel (pattern bly/boralex): fr-CA ne voit qu'1 offre (id 864 assemblage Saint-Laurent, traduite), en-CA/en-US voient les 8 offres du groupe (quasi toutes Plano TX) dont 2 QC — id 864 partagé ET « Coordonnateur(trice), Ressources humaines (Contrat d'un an) » Saint-Laurent id 922 publiée bilingue mais seulement dans les cultures EN → fix CULTURES=(fr-CA,en-CA) fusion par external_id priorité fr-CA, found 1→2 (added=1). Employeur identifié: LeadsOnline LLC (Plano TX, technologies d'enquête pour forces de l'ordre, IBIS/MatchPoint) — présence QC via l'acquisition d'Ultra Forensic Technology (ex-Forensic Technology, créatrice d'IBIS, production à Saint-Laurent). Artefact vague C (classe gevgroupltd 8ff81d0): EMPLOYER/name « Leadsonline » → LeadsOnline (casse officielle), url vide → leadsonline.com; propagation aux lignes actives (updated=1 via content_hash). Docstring enrichie, fiches leadsonline.md/ats-dayforce.md/INDEX.md régénérées. Non-régression dayforce via bleufeu found=1. 107 tests verts, pm2 restart OK, site local+public 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
  4. Wed, Oct 14, 2026 9

    1. [ka6] connecteur wikoff: rien à réparer côté panne — namespace supplémentaire de la panne partielle de shard Dayforce du 2026-10-14, DÉJÀ RÉSOLUE à l'intervention (syncs verts found=1 jusqu'à 13:36, read timeout 16:20 puis 503 sur /api/geo/wikoff/jobposting/search à 19:38, échec franc ok=0 jamais de faux 0, 1 offre QC active préservée; run.py sync wikoff repasse vert found=1 = médiane 1.0, updated=1). Pas de migration: wikoff.com/careers pointe toujours jobs.dayforcehcm.com/en-US/wikoff/CANDIDATEPORTAL = même tenant/board. Partition de culture vérifiée (pas d'angle mort, pattern altg/wafna): fr-CA voit 1 offre, la QC (le tenant ne traduit que le poste québécois), en-CA/en-US voient les 40 offres du groupe (quasi toutes US) dont exactement la même QC (id 665 « Opérateur(trice) de Production (Montreal) » partagé) — fr-CA est la bonne culture. DOUBLE artefact vague C corrigé (classe gevgroupltd 8ff81d0): EMPLOYER/name = titre d'offre brut « Production Operator I (Montreal) » (classe kodify) → Wikoff Color Corporation (fabricant d'encres d'imprimerie et de revêtements détenu par ses employés ESOP, siège Fort Mill SC, usine montréalaise; nom lu dans les descriptions d'offres et sur le site officiel; wikoff.py + sources.json), url vide → wikoff.com; propagation faite à la ligne active (sync vert updated=1 via content_hash). Docstring enrichie, fiches wikoff.md/ats-dayforce.md/INDEX.md régénérées. Non-régression dayforce via bleufeu found=1. 107 tests verts, pm2 restart OK, site local+public 200.
      Simon-Pierre Boucher · 1 file +2 −2
    2. [ka6] connecteur wafna: rien à réparer côté panne — namespace supplémentaire de la panne partielle de shard Dayforce du 2026-10-14, DÉJÀ RÉSOLUE à l'intervention (syncs verts found=2 jusqu'à 13:32, read timeout 16:16 puis 503 sur /api/geo/wafna/jobposting/search à 19:34, échec franc ok=0 jamais de faux 0, 2 offres QC actives préservées; run.py sync wafna repasse vert found=2 = médiane 2.0, updated=2). Pas de migration: wismettacusa.com/ca/employment/ pointe toujours jobs.dayforcehcm.com/en-CA/wafna/CANCAREERSITE = même tenant/board. Partition de culture vérifiée (pas d'angle mort, pattern altg): fr-CA voit 2 offres TOUTES QC (le tenant ne traduit que les postes québécois), en-CA/en-US voient les 5 offres du groupe (BC/ON en plus) dont exactement les 2 mêmes QC (ids 5509/5516 partagés) — fr-CA est la bonne culture. DOUBLE artefact vague C corrigé (classe gevgroupltd 8ff81d0): EMPLOYER/name = namespace brut « Wafna » → Wismettac Asian Foods (WAFNA = Wismettac Asian Foods North America, importateur-distributeur d'aliments asiatiques du groupe Nishimoto Wismettac, succursale 5865 rue Kieran Saint-Laurent; nom lu dans les descriptions d'offres et sur le site officiel; wafna.py + sources.json), url vide → wismettacusa.com/ca/; propagation faite aux 2 lignes actives (sync vert updated=2 via content_hash). Docstring enrichie, fiches wafna.md/ats-dayforce.md/INDEX.md régénérées. Non-régression dayforce via bleufeu found=1. 107 tests verts, pm2 restart OK, site local+public 200.
      Simon-Pierre Boucher · 1 file +2 −2
    3. [ka6] fix connecteur bly: angle mort de culture récupéré (found 6→7) + panne shard Dayforce 2026-10-14 déjà résolue + double artefact vague C corrigé (Field Mechanic → Boart Longyear)
      …
      Panne: namespace supplémentaire de la panne partielle de shard Dayforce du
      2026-10-14, DÉJÀ RÉSOLUE côté Dayforce à l'intervention (syncs verts found=6
      jusqu'à 17:58, 500 à 17:33 puis 503 soutenu sur
      /api/geo/bly/jobposting/search de 18:14 à 22:05, échec franc ok=0 jamais de
      faux 0, 6 offres QC actives préservées; le scheduler repasse vert seul à
      22:17 found=6 = médiane 6.0). Pas de migration: careers.boartlongyear.com
      (frontend custom, l'ancien /careers/ est 404) fait postuler via
      jobs.dayforcehcm.com/en-CA/bly/CANDIDATEPORTAL = même tenant/board.
      
      VRAI angle mort de culture corrigé: fr-CA ne voit que les offres traduites
      (7 dont 6 QC), en-CA liste les 63 offres du board dont « Foreur
      Long-Trou/Dynamiteur » Val-d'Or (id 1000) publiée en ANGLAIS SEULEMENT et
      pourtant listée sur le site carrières officiel — invisible en fr-CA. Fix
      pattern peaktech/challenger/fnfmb: CULTURES=(fr-CA,en-CA), fusion par
      external_id priorité fr-CA → sync réel found=7, added=1, updated=6.
      
      DOUBLE artefact vague C corrigé (classe gevgroupltd 8ff81d0): EMPLOYER/name
      = titre de poste « Field Mechanic » → Boart Longyear (bly = ticker ASX;
      principal fournisseur mondial de services de forage minier, base QC à
      Val-d'Or; nom lu dans les descriptions FR des offres; bly.py +
      sources.json), url vide → boartlongyear.com; propagation faite aux 7 lignes
      actives via content_hash.
      
      Docstring enrichie, fiches bly.md/ats-dayforce.md/INDEX.md régénérées.
      Non-régression dayforce via bleufeu found=1. 107 tests verts, pm2 restart
      OK, site local+public 200.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
    4. [ka6] connecteur altg: rien à réparer — namespace supplémentaire de la panne partielle de shard Dayforce du 2026-10-14, DÉJÀ RÉSOLUE côté Dayforce à l'intervention (syncs verts found=8 jusqu'à 17:55 — ce tenant a tenu ~4 h de plus que les namespaces tombés ~13:30, même profil qu'ajholdingsltd —, read timeout à 17:28 puis 503 soutenu sur /api/geo/altg/jobposting/search de 18:10 à 22:01, échec franc ok=0 jamais de faux 0, 8 offres QC actives préservées; à 22:14 le scheduler repasse vert seul found=7 et run.py sync altg confirme found=7 ≈ médiane 8 — l'offre manquante « Technicien / mécanicien pour chariot élévateur » Québec id 17308 est une VRAIE dépublication pendant la fenêtre, absente des deux cultures). Pas de migration: altg.com/career/ (200, altaequipment.com y redirige) embarque toujours jobs.dayforcehcm.com/altg/CANDIDATEPORTAL = même tenant/board. Partition de culture vérifiée: fr-CA voit 7 offres TOUTES QC (le tenant ne traduit que les postes québécois), en-CA voit les 108 offres du groupe dont exactement les 7 mêmes QC (ids identiques) — fr-CA est la bonne culture, pas d'angle mort. DOUBLE artefact vague C corrigé (classe gevgroupltd 8ff81d0): EMPLOYER/name = namespace brut « Altg » (= ticker NYSE d'Alta Equipment Group) → Alta Équipements de Manutention (marque lue dans les descriptions FR des offres; division Alta Material Handling Canada, succursales Dorval/Montréal/Québec; altg.py + sources.json), url vide → altg.ca (site canadien officiel, version /fr); propagation faite aux 7 lignes actives (sync vert updated=7 via content_hash). Docstring enrichie, fiches altg.md/ats-dayforce.md/INDEX.md régénérées. Non-régression dayforce via bleufeu found=1. 107 tests verts, pm2 restart OK, site local+public 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
    5. [ka6] connecteur ajholdingsltd: rien à réparer — namespace supplémentaire de la panne partielle de shard Dayforce du 2026-10-14, DÉJÀ RÉSOLUE côté Dayforce à l'intervention (syncs verts found=3 jusqu'à 17:54 — ce tenant a tenu ~4 h de plus que les autres namespaces tombés ~13:30 —, 500 isolé à 17:25 puis 503 soutenu sur /api/geo/ajholdingsltd/jobposting/search de 18:08 à 21:59, échec franc ok=0 jamais de faux 0, 3 offres QC actives préservées; à 22h le même appel répond 200 JSON et run.py sync retourne found=3 = médiane, updated=3). Pas de migration: astenjohnson.com/careers (200) liste toujours des offres du même tenant/board dayforcehcm.com/en-US/ajholdingsltd/CANDIDATEPORTAL. Partition de culture vérifiée: fr-CA voit 7 offres dont les 3 QC (Salaberry-de-Valleyfield), en-CA 37 offres 0 QC (US/BE/CN/SG) — fr-CA est la bonne culture, pas d'angle mort. DOUBLE artefact vague C corrigé (classe gevgroupltd 8ff81d0): EMPLOYER/name = namespace brut « Ajholdingsltd » → AstenJohnson (AJ Holdings Ltd = AstenJohnson Holdings, fabricant mondial de toiles pour machines à papier, usine Baie Saint-François à Salaberry-de-Valleyfield; nom lu dans les descriptions d'offres; ajholdingsltd.py + sources.json), url vide → astenjohnson.com; propagation faite aux 3 lignes actives (sync vert updated=3 via content_hash). Docstring enrichie, fiches ajholdingsltd.md/ats-dayforce.md/INDEX.md régénérées. Non-régression dayforce via bleufeu found=1. 107 tests verts, pm2 restart OK, site local+public 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
    6. [ka6] connecteur vestis: rien à réparer — namespace supplémentaire de la panne partielle de shard Dayforce du 2026-10-14 (500 à 16:13 puis 503 HTML soutenu sur /api/geo/vestis/jobposting/search, toutes combinaisons board × culture QL/CL/CANDIDATEPORTAL × fr-CA/en-CA/en-US; tenant frère benmor 200 JSON même session = frontal vivant; même 503 via proxy résidentiel CA = pas un blocage IP). Pas de migration: quebec-linge.com/about-us/careers (200, ⚠️ domaine à trait d'union — quebeclinge.com sans trait = domaine parqué /lander) pointe toujours dayforcehcm.com/CandidatePortal/.../vestis/Site/CLCANDIDATEPORTAL = même tenant. PISTE post-panne documentée: le lien officiel affiche le board frère CLCANDIDATEPORTAL (Canadian Linen) alors que le connecteur lit QLCANDIDATEPORTAL (vert found=17 à 13:31 le jour même) — si QL revient vide, sonder CL (pattern enercare). Syncs verts found=17 jusqu'à 13:31, échec franc ensuite (ok=0, jamais de faux 0), 17 offres QC actives préservées (Montréal, Québec, Saguenay, Sherbrooke). DOUBLE artefact vague C corrigé au passage (classe gevgroupltd 8ff81d0): EMPLOYER/name = titre d'offre « Journalier(ère) de production » → Quebec Linge (Quebec Linge & Uniform Service Co., groupe Vestis ex-Aramark Uniform Services; vestis.py + sources.json), url vide → quebec-linge.com; propagation aux 17 lignes au prochain sync vert via content_hash. Docstring enrichie, fiches vestis.md/ats-dayforce.md/INDEX.md régénérées. Non-régression dayforce via bleufeu found=1. 107 tests verts, pm2 restart OK, site local+public 200.
      Simon-Pierre Boucher · 1 file +2 −2
  5. Tue, Oct 13, 2026 3

    1. [ka6] fix connecteur huaweicanada: location renommée EN-seulement par le tenant Recruitee — repli générique multi-lieux/traductions FR. Le 2026-10-13 vers 15h-16h EDT, la location « Montréal, 7101 Avenue du Parc » (labo Noah's Ark, id 99963) a été renommée côté EN en « Markham, 19 Allstate Parkway » (doublon du nom de la vraie location Markham id 99954), alors que la traduction FR du site carrières public, le JSON-LD des pages détail (addressLocality=Montréal) et les agrégateurs (LinkedIn, espresso-jobs, jobs.ca) affichent toujours Montréal. Les champs racine city/state_code de l'API /api/offers suivent l'EN → les 24 offres QC (toutes vivantes, détails 200 published, aucune dépubliée) sortaient d'un coup du filtre _keep : found 24→0 sur 2 syncs, retraits suspendus par le garde-fou dérive. Aucun signal de fermeture/déménagement du labo de Montréal. Fix générique recruitee.py : _qc_location() teste chaque entrée de locations[] (EN puis traduction FR) quand la racine n'est pas QC, et la ville/label/postal du lieu QC retenu font foi (postal partagé avec l'EN gardé seulement si G/H/J — évite un géocodage vers Markham L3R). Sync isolé rejoué ×3 : found=24 stable (médiane locale exacte), ville en base Montréal/Québec. Non-régression recruitee via framestore found=8 et amilia found=5. 107 tests pytest verts. sources.json : url vide → www.huawei.com/ca (artefact vague D). Fiches huaweicanada.md / ats-recruitee.md / INDEX.md régénérées (1131 autres fiches restaurées — hors périmètre). 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 fresha: MIGRATION ATS Lever→Teamtailor (2e migration du repo après ten_canada Breezy→Greenhouse, 1re vers Teamtailor) — le tenant Lever « fresha » a été SUPPRIMÉ entre le 12 et le 13 oct. (API v0 404 {"ok":false,"error":"Document not found"} + board jobs.lever.co/fresha 404 + page détail de l'unique offre QC 404), 2 syncs rouges consécutifs. careers.fresha.com est désormais un site Teamtailor (tenant EU 8Ws7JiPnoEo@eu) sur DOMAINE CUSTOM : fresha.teamtailor.com redirige vers lui, mais le sitemap n'y liste que des URLs careers.fresha.com, invisibles au motif *.teamtailor.com de la plateforme → ajout générique de l'attribut DOMAIN à TeamtailorConnector (sitemap + regex construits sur le domaine custom, pattern minimal façon EXTRA_SITES/CULTURES), FreshaConnector converti LeverConnector→TeamtailorConnector avec DOMAIN='careers.fresha.com'. Le board migré porte 125 offres (sitemap) toutes Europe/Asie/Océanie, AUCUNE QC : l'unique offre historique « Account Manager (Montreal) » (d72356fc, parue 2026-05-28) n'a pas survécu à la migration — retirée au garde-fou 2-miss (missed=1 puis removed=1), found=0 est l'état légitime. Syncs isolés ×3 : ok=1 stable, 100 s → 99 s → 8,2 s (découverte étalée par le budget MAX_DETAILS=60 : 125 détails en 2 cycles, puis cache). Non-régression teamtailor via nordastelo found=60. 107 tests pytest verts. sources.json : connector lever→teamtailor, careers_url → careers.fresha.com, url vide → www.fresha.com. Fiches fresha.md / ats-teamtailor.md / ats-lever.md / INDEX.md régénérées (1130 autres fiches restaurées — hors périmètre). 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. Mon, Oct 12, 2026 1

    1. [ka6] connecteur stateindustrial: rien à réparer — 59e cas du pattern « stale volume QC nul » (2e intervention), dépublication RÉELLE le matin même de l'unique offre QC 11972 « Représentant(e) des ventes externes (français/anglais) » (Québec, 45-65 k, parue 2026-10-05) : postingStatus 1→4 et lastModified 14:25 UTC le 2026-10-12, retirée au garde-fou 2-miss (sync found=0 ok, removed=1). 3e itération du cycle de republication mensuel à id neuf (11658/11661 août → 11795 5 sept → 11972 5 oct) : found oscille 0↔1 par design, récidive attendue. Board vivant : 26 offres US/ON identiques en en-US ET en-CA (fr-CA toujours maxCount=0 — bascule d478a07 valide), aucune QC, pas de migration (stateindustrial.com/careers embarque toujours en-US/stateindustrial/CANDIDATEPORTAL). MARQUEUR DAYFORCE NEUF documenté : l'API détail d'une offre DÉPUBLIÉE peut rester 200 avec contenu complet (≠ gotcha 404 connu) — discriminant = champ postingStatus du détail (1=vivante, 4=dépubliée, calibré sur 3 offres vivantes du board) + absence du search, jamais le code HTTP. Changements : docstring stateindustrial.py enrichie (cycle + marqueur), careers_url sources.json fr-CA→en-US (culture vide depuis 2026-09-17, alignée sur le connecteur et le site officiel). Sync isolé rejoué ×2 : found=0 stable ok=1, ~2,4 s ; non-régression dayforce via lavieenrose found=137. 107 tests pytest verts. Fiches docs/connecteurs/ stateindustrial.md + ats-dayforce.md + INDEX.md régénérées (1131 autres fiches restaurées — hors périmètre). pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +1 −1
  7. Sat, Oct 10, 2026 1

    1. [ka6] fix connecteur enercare: restauration du fix bi-board 242e8efa annulé par le rollback automatique de supervision (revert 463ae35b) — 2e cas de la classe « rollback collatéral » (dentons c2276fc). Le stale du 2026-10-10 n'est PAS une panne de la source : le fix bi-board légitime du 2026-10-09 (BOARDS hydrosolution+CANDIDATEPORTAL × CULTURES fr-CA+en-CA, found=1 testé ×2) a été reverté automatiquement à 18:38 le soir même (verdict de mission tronqué « inconnu » dans le journal de supervision → jugé faux repare), ramenant le connecteur au mono-board hydrosolution ENTIÈREMENT VIDE → found=0, puis retrait de l'offre 19659 par le garde-fou 2-miss (sync_log : missed=1 ×2 puis removed=1). Re-vérification live AVANT restauration : l'offre 19659 « Conseiller(ère) aux ventes » (Anjou, 7100 rue Jean-Talon E) est toujours publiée sur CANDIDATEPORTAL fr-CA (maxCount=1) et en-CA en voit 102 — l'angle mort comblé par 242e8efa est toujours réel. Restauration chirurgicale (PAS un git revert global : INDEX.md/ats-dayforce.md régénérés depuis par les missions acuity_insights/ponsera) : enercare.py repris de 242e8efa + note d'épisode rollback en docstring, url employeur recomblée dans sources.json (https://www.hydrosolution.com, édition 1 ligne, JSON validé). Sync isolé rejoué ×2 : found=1 stable (médiane 1.0), ok=1, ~13 s, offre 19659 réactivée en base (active=1, miss_count=0, titre fr). 107 tests pytest verts. Fiches docs/connecteurs/ enercare.md + ats-dayforce.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). pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +1 −1
  8. Fri, Oct 9, 2026 4

    1. [ka6] fix connecteur ponsera: faux positif supervision « volume QC nul » (57e cas du pattern, 1re intervention) — le connecteur est SAIN, found=0 est le comportement CORRECT. Ponsera (ponsera.com, deep-tech montréalaise de désinfection au plasma froid atmosphérique, spin-off de l'incubateur TandemLaunch) a une présence QC intermittente (médiane 0.5) : son unique offre QC restante (8291085002 « Directeur général (PDG) | Chief Executive Officer (CEO) », Montréal, parue 2025-11-13) a été DÉPUBLIÉE par l'employeur entre 14:45 et 17:24 EDT le 2026-10-09 (found 1 → 0, missed=1, puis removed=1 via le garde-fou 2-miss à 19:42), sync_log VERT en continu (ok=1). Marqueur Greenhouse confirmé live sur les 2 offres historiques : détail 302 → /ponsera?error=true + API détail 404 (même marqueur que gearboxquebec/studiokraftonboard/national). TOPOLOGIE DE TENANT DOCUMENTÉE (neuve pour le repo) : le board « ponsera » est une VUE filtrée du tenant Greenhouse de TandemLaunch — /v1/boards/ponsera/departments expose les 32 départements du portefeuille (AAVAA, AIRY3D, Amphimo, Ponsera, …), tous jobs:[] quand la spin-off ne recrute pas ; le board parent « tandemlaunch » est déjà couvert par le connecteur frère (5 offres QC vivantes vérifiées, found=5, AUCUNE au département Ponsera) — pas d'angle mort inter-board, contrairement au cas enercare/CANDIDATEPORTAL. Board ponsera re-vérifié vivant : 200, total=0 toutes régions = creux d'embauche classe ghgsat/studiokraftonboard, PAS une migration d'ATS : ponsera.com (site vitrine Durable.co, route Next.js catch-all → soft-200 sur TOUT chemin, gotcha : /careers répond 200 sans page carrières réelle) n'embarque aucun ATS, le board Greenhouse reste l'unique canal d'embauche. Artefact vague C comblé dans sources.json : url employeur vide → https://ponsera.com (vérifié 200 ; édition chirurgicale 1 ligne, JSON valide). Tant que Ponsera ne republie pas de poste (TandemLaunch a vraisemblablement pourvu le poste de PDG après 11 mois d'affichage), ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe qu'acuity_insights 9caadce / alliedreit 5789d459). Docstring ponsera.py enrichie (chronologie + topologie du tenant partagé + gotcha soft-200). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,1 s ; non-régression plateforme greenhouse sur le tenant frère vivant tandemlaunch : found=5, ok. 107 tests pytest verts. Fiches docs/connecteurs/ ponsera.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). 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 acuity_insights: faux positif supervision « volume QC nul » (56e cas du pattern, 1re intervention) — le connecteur est SAIN, found=0 est le comportement CORRECT. Acuity Insights (acuityinsights.com, edtech torontoise du test d'admission Casper, ex-Altus Assessments) a une présence québécoise intermittente (médiane 0.5) : son unique offre QC restante (B4A73CA886 « Bilingual Casper Test Support Agent (On-Demand Contract Work Remote in Canada) », Montréal, parue 2026-09-22) a été DÉPUBLIÉE par l'employeur entre 16:06 et 18:36 EDT le 2026-10-09 (found 1 → 0, missed=1, puis removed=1 via le garde-fou 2-miss à 18:39), sync_log VERT en continu (ok=1). Marqueur Workable confirmé live : détail /j/B4A73CA886 dépublié = 301 → board + ?not_found=true (même marqueur que findevcanada 5b0ba42 / jove 8c2fc01). Board re-vérifié vivant : widget v1 200, 4 offres uniques (11 entrées — répétition par location, gotcha jove) NZ/AU/Vancouver/Calgary/Toronto/Halifax, 0 lieu QC. Pas de migration d'ATS : acuityinsights.com/about-us/careers/ (403 anti-bot au curl direct, sondé via Scrapfly asp) embarque toujours le widget Workable embed.js. Artefact vague C comblé dans sources.json : url employeur vide → https://acuityinsights.com (vérifié 200 via Scrapfly, www redirige vers l'apex ; édition chirurgicale 1 ligne, JSON valide). Tant qu'Acuity ne republie pas de poste au Québec (contrats Casper on-demand publiés au rythme des cycles d'admission), ce connecteur sera re-signalé périodiquement : structurel, pas une panne (même classe qu'alliedreit 5789d459 / gevgroupltd 8ff81d0). Docstring acuity_insights.py enrichie (chronologie + nature du volume + marqueur). Sync isolé rejoué ×2 : found=0 stable, ok=1, 0,1-0,2 s ; non-régression plateforme workable sur tenant vivant genetec_inc : found=103, ok. 107 tests pytest verts. Fiches docs/connecteurs/ acuity_insights.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). 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 enercare: angle mort bi-board Dayforce comblé — l'offre QC vivante était sur le board frère CANDIDATEPORTAL, jamais couvert. Stale « volume QC nul » (1re intervention, médiane 1.0) à double cause : (1) l'unique offre du board hydrosolution (20691 « Gestionnaire comptable et système financier », Montréal, parue 2026-08-25) a été DÉPUBLIÉE par l'employeur entre 14:14 et 16:29 EDT le 2026-10-09 (found 1 → 0, missed=1, sync_log vert ok=1 en continu), le board hydrosolution restant servi (200) mais ENTIÈREMENT VIDE (maxCount=0 dans les 3 cultures) ; (2) MAIS le tenant Dayforce enercare expose un 2e jobBoardCode CANDIDATEPORTAL (portail corporate Enercare, 102 offres en-CA : ON ×79, AB ×17, MB ×5) qui portait une offre QC VIVANTE jamais vue par job-ka : 19659 « Conseiller(ère) aux ventes »/« Inside Sales Advisor », Anjou 7100 rue Jean-Talon E (adresse HydroSolution, la filiale QC chauffe-eau/CVC d'Enercare), parue 2026-06-05, seule offre fr-CA du portail — angle mort PRÉEXISTANT depuis la création du connecteur (vague C, board hydrosolution seul). Correctif : EnercareConnector itère désormais sur BOARDS=(hydrosolution, CANDIDATEPORTAL) × CULTURES=(fr-CA, en-CA), fusion par jobPostingId avec priorité fr-CA et board filiale d'abord — variante Dayforce du pattern EXTRA_SITES Workday (cas pwc 8d150eb), composée avec le pattern bi-culture existant (peaktech/challenger/fnfmb) car en-CA voit 102 offres là où fr-CA n'en voit que 1. Pas de migration d'ATS : hydrosolution.com/carrieres/ (200) référence toujours le board hydrosolution (avec liens d'offres périmés — gotcha frontal Next.js Dayforce confirmé : page détail d'offre dépubliée = 200, trancher à l'API détail qui répond 404, même classe de purge différée qu'alliedreit/Lever 5789d459). Marqueur dépublication Dayforce vérifié : API détail 20691 = 404 sur boardId 1-5. Artefact vague C comblé dans sources.json : url employeur vide → https://www.hydrosolution.com (vérifié 200, édition chirurgicale 1 ligne, JSON valide). Docstring enercare.py récrite (topologie bi-board du tenant + chronologie + gotcha Next.js). Sync isolé rejoué ×2 : found=1 stable (médiane 1.0), added=1 (19659, titre fr en base), removed=1 (20691 via garde-fou 2-miss), ok=1, ~13 s ; non-régression plateforme dayforce bi-culture sur tenant vivant challenger : found=5, ok. 107 tests pytest verts. Fiches docs/connecteurs/ enercare.md + ats-dayforce.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). pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200."
      …
      This reverts commit 242e8efa1280942d6aa3872dbac0821d05f1c197.
      Simon-Pierre Boucher · 1 file +1 −1
    4. [ka6] fix connecteur enercare: angle mort bi-board Dayforce comblé — l'offre QC vivante était sur le board frère CANDIDATEPORTAL, jamais couvert. Stale « volume QC nul » (1re intervention, médiane 1.0) à double cause : (1) l'unique offre du board hydrosolution (20691 « Gestionnaire comptable et système financier », Montréal, parue 2026-08-25) a été DÉPUBLIÉE par l'employeur entre 14:14 et 16:29 EDT le 2026-10-09 (found 1 → 0, missed=1, sync_log vert ok=1 en continu), le board hydrosolution restant servi (200) mais ENTIÈREMENT VIDE (maxCount=0 dans les 3 cultures) ; (2) MAIS le tenant Dayforce enercare expose un 2e jobBoardCode CANDIDATEPORTAL (portail corporate Enercare, 102 offres en-CA : ON ×79, AB ×17, MB ×5) qui portait une offre QC VIVANTE jamais vue par job-ka : 19659 « Conseiller(ère) aux ventes »/« Inside Sales Advisor », Anjou 7100 rue Jean-Talon E (adresse HydroSolution, la filiale QC chauffe-eau/CVC d'Enercare), parue 2026-06-05, seule offre fr-CA du portail — angle mort PRÉEXISTANT depuis la création du connecteur (vague C, board hydrosolution seul). Correctif : EnercareConnector itère désormais sur BOARDS=(hydrosolution, CANDIDATEPORTAL) × CULTURES=(fr-CA, en-CA), fusion par jobPostingId avec priorité fr-CA et board filiale d'abord — variante Dayforce du pattern EXTRA_SITES Workday (cas pwc 8d150eb), composée avec le pattern bi-culture existant (peaktech/challenger/fnfmb) car en-CA voit 102 offres là où fr-CA n'en voit que 1. Pas de migration d'ATS : hydrosolution.com/carrieres/ (200) référence toujours le board hydrosolution (avec liens d'offres périmés — gotcha frontal Next.js Dayforce confirmé : page détail d'offre dépubliée = 200, trancher à l'API détail qui répond 404, même classe de purge différée qu'alliedreit/Lever 5789d459). Marqueur dépublication Dayforce vérifié : API détail 20691 = 404 sur boardId 1-5. Artefact vague C comblé dans sources.json : url employeur vide → https://www.hydrosolution.com (vérifié 200, édition chirurgicale 1 ligne, JSON valide). Docstring enercare.py récrite (topologie bi-board du tenant + chronologie + gotcha Next.js). Sync isolé rejoué ×2 : found=1 stable (médiane 1.0), added=1 (19659, titre fr en base), removed=1 (20691 via garde-fou 2-miss), ok=1, ~13 s ; non-régression plateforme dayforce bi-culture sur tenant vivant challenger : found=5, ok. 107 tests pytest verts. Fiches docs/connecteurs/ enercare.md + ats-dayforce.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). pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +1 −1
  9. 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
  10. Wed, Oct 7, 2026 1

    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
Menu

Theme