SPB Git

spb/fabri-ka

Public

Agrégateur de produits québécois — www.fabri-ka.com

History of data Clear filter
page 1
  1. Thu, Nov 5, 2026 3

    1. Revert "[ka6] fix connecteur fermeail-land.com: re-migration de la FICHE shopify→generic (platform generic + catalog_endpoint __generic__) — la migration validée 5f50a13 du 11-04 a été PERDUE par le revert concurrent e4282a9, qui a remis la fiche en shopify + /products.json → la fiche replantait sur le TLS mort non géré de shopify.py (le fix code _shop_disconnected reste abandonné après 3 pertes, grep vide re-vérifié ce jour; doctrine kefiplant 04c0126) → broken (32 échecs consécutifs au scan). Cause racine inchangée, re-vérifiée live 2026-11-05: domaine pointant vers l'edge Shopify mais AUCUNE boutique rattachée — http://fermeail-land.com/ → 409 / 17 octets « error code: 1001 », https apex → TLS mort (curl exit 35, pas de cert SNI), www → exit 6, /products.json injoignable (exit 35). Avec la fiche generic: tous les roots sitemap échouent en TLS → aucun URL produit → fetch() return [] → ok/0 FIDÈLE (médiane historique 0.0 — la boutique n'a jamais exposé de produit, dernier succès None). Réapplication par ÉDITION DIRECTE ciblée de 2 lignes dans data/stores.json (pas de git revert/checkout, pattern marchelarecolte 63b332c / foodcrayon fc3a5b6), jamais de json.dump global, AUCUN code touché — shopify.py volontairement laissé tel quel (sans _shop_disconnected): plus nécessaire tant que la fiche reste platform=generic. Sync réel 2026-11-05: fermeail-land.com ok / 0 produit; non-régression atelierora.ca ok / 23 (chemin generic nominal) et ateliersaintcerf.com ok / 62 (chemin shopify nominal) — 3 ok, 0 erreur en 5 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que https://fermeail-land.com/products.json reste injoignable: toute fiche shopify ici replante en broken. Si le marchand rattache une boutique (curl -s -o /dev/null -w '%{http_code}' https://fermeail-land.com/products.json → 200), re-sonder la plateforme live et re-migrer la fiche vers shopify + /products.json. Si re-broken: grep fermeail-land data/stores.json (doit être generic + __generic__), re-migrer les 2 lignes, ne pas toucher shopify.py."
      …
      This reverts commit 76cbfa01747bd50e6ea4a0faff2fa3cc61e425ae.
      Simon-Pierre Boucher · 1 file +2 −2
    2. [ka6] fix connecteur fermeail-land.com: re-migration de la FICHE shopify→generic (platform generic + catalog_endpoint __generic__) — la migration validée 5f50a13 du 11-04 a été PERDUE par le revert concurrent e4282a9, qui a remis la fiche en shopify + /products.json → la fiche replantait sur le TLS mort non géré de shopify.py (le fix code _shop_disconnected reste abandonné après 3 pertes, grep vide re-vérifié ce jour; doctrine kefiplant 04c0126) → broken (32 échecs consécutifs au scan). Cause racine inchangée, re-vérifiée live 2026-11-05: domaine pointant vers l'edge Shopify mais AUCUNE boutique rattachée — http://fermeail-land.com/ → 409 / 17 octets « error code: 1001 », https apex → TLS mort (curl exit 35, pas de cert SNI), www → exit 6, /products.json injoignable (exit 35). Avec la fiche generic: tous les roots sitemap échouent en TLS → aucun URL produit → fetch() return [] → ok/0 FIDÈLE (médiane historique 0.0 — la boutique n'a jamais exposé de produit, dernier succès None). Réapplication par ÉDITION DIRECTE ciblée de 2 lignes dans data/stores.json (pas de git revert/checkout, pattern marchelarecolte 63b332c / foodcrayon fc3a5b6), jamais de json.dump global, AUCUN code touché — shopify.py volontairement laissé tel quel (sans _shop_disconnected): plus nécessaire tant que la fiche reste platform=generic. Sync réel 2026-11-05: fermeail-land.com ok / 0 produit; non-régression atelierora.ca ok / 23 (chemin generic nominal) et ateliersaintcerf.com ok / 62 (chemin shopify nominal) — 3 ok, 0 erreur en 5 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que https://fermeail-land.com/products.json reste injoignable: toute fiche shopify ici replante en broken. Si le marchand rattache une boutique (curl -s -o /dev/null -w '%{http_code}' https://fermeail-land.com/products.json → 200), re-sonder la plateforme live et re-migrer la fiche vers shopify + /products.json. Si re-broken: grep fermeail-land data/stores.json (doit être generic + __generic__), re-migrer les 2 lignes, ne pas toucher shopify.py.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
    3. [ka6] fix connecteur marchelarecolte.ca: re-migration de la FICHE woocommerce→generic (platform generic + catalog_endpoint __generic__) — la migration validée 60eab35 du 11-04 a été PERDUE par le revert concurrent 43a9936, qui a remis la fiche en woocommerce + /wp-json/wc/store/v1/products → la fiche replantait sur le HTML parking WHC parsé en JSON (« Expecting value: line 1 column 1 ») → broken (30 échecs consécutifs au scan; le fix code _domain_parked WHC reste abandonné après 9 pertes, doctrine kefiplant 04c0126). Cause racine inchangée, re-vérifiée live 2026-11-05: domaine toujours AUX ENCHÈRES chez WHC — home ET Store API → 302 vers https://whc.ca/domain-names/auctions/marchelarecolte.ca (final 200), /sitemap.xml suit la même redirection et la page d'enchères ne contient AUCUNE balise <loc> (grep -c '<loc' = 0 vérifié live). Avec la fiche generic: aucun URL produit → fetch() return [] → ok/0 FIDÈLE (médiane historique 0.0 — la boutique Woo n'a JAMAIS exposé de produit en 47 syncs ok avant la mort du domaine). Réapplication par ÉDITION DIRECTE ciblée de 2 lignes dans data/stores.json (pas de git revert/checkout, pattern foodcrayon fc3a5b6/theprettyuglycompany d888efc), jamais de json.dump global, AUCUN code touché — woocommerce.py volontairement laissé tel quel (le hunk WHC absent, grep 'domain-names/auctions' = 0, n'est plus nécessaire tant que la fiche reste generic). Sync réel 2026-11-05: marchelarecolte.ca ok / 0 produit; non-régression atelierora.ca ok / 23 (chemin generic nominal) et 1001fondues.com ok / 28 (chemin Woo nominal) — 3 ok, 0 erreur en 8 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le domaine redirige vers whc.ca: toute fiche woocommerce ici replante en broken. Si un acheteur relance une boutique (curl -sI https://marchelarecolte.ca/ → plus de 302 whc.ca), re-sonder la plateforme live et re-migrer la fiche vers le bon connecteur. Si re-broken: grep marchelarecolte data/stores.json (doit être generic + __generic__), re-migrer les 2 lignes, ne pas toucher woocommerce.py.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
  2. Wed, Nov 4, 2026 9

    1. Revert "[ka6] fix connecteur marchelarecolte.ca: CHANGEMENT D'ANGLE — fiche migrée woocommerce→generic (platform generic + catalog_endpoint __generic__), le fix code _domain_parked WHC dans woocommerce.py ayant été PERDU une 9e FOIS par des reverts concurrents (9e application c2adcab du 10-27 de nouveau absente au 11-04: grep 'domain-names/auctions|Domain registered at WHC' vide, seul le squelette générique de _domain_parked subsiste — revert chirurgical comme ca16e21/0024caf; la guerre de reverts rendait le fix code intenable). Cette migration de FICHE sort marchelarecolte.ca de woocommerce.py pour de bon: plus rien à reverter dans le code, doctrine kefiplant 04c0126, précédents foodcrayon 398d211, lespassionnees 9e3ff49, bocauxetco 639e1da, atelierlaf ddb1524. Cause racine inchangée, re-vérifiée live 2026-11-04 15:27 UTC: domaine AUX ENCHÈRES chez WHC — home et /sitemap.xml → 302 (Caddy) vers https://whc.ca/domain-names/auctions/marchelarecolte.ca (final 200, page 79 741 octets), Store API /wp-json/wc/store/v1/products → 200 HTML parking 16 936 octets. Sans fix: la fiche woocommerce parsait ce HTML en JSON → « Expecting value: line 1 column 1 » → broken (30 échecs consécutifs au scan). Avec la fiche generic: tous les roots sitemap redirigent vers la page d'enchères WHC qui ne contient AUCUNE balise <loc> (vérifié live: grep -c '<loc' = 0) → aucun URL produit → fetch() return [] → ok/0 FIDÈLE (médiane historique 0.0 — la boutique Woo n'a JAMAIS exposé de produit en 47 syncs ok avant la mort du domaine; rien à vendre, rien à perdre). Édition ciblée de 2 lignes dans data/stores.json, jamais de json.dump global, AUCUN code touché — woocommerce.py volontairement laissé tel quel (sans le hunk WHC): le réappliquer n'est PLUS nécessaire pour marchelarecolte tant que la fiche reste platform=generic. Sync réel 2026-11-04: marchelarecolte.ca ok / 0 produit; non-régression atelierora.ca ok / 23 (chemin generic nominal) et 1001fondues.com ok / 28 (chemin Woo nominal) — 3 ok, 0 erreur en 32 s. pm2 restart fabri-ka-sync fait, web local 200. Si un acheteur relance une boutique sur le domaine (curl -sI https://marchelarecolte.ca/ → plus de 302 whc.ca), re-sonder la plateforme live et re-migrer la fiche. Si re-broken: c'est que la FICHE a été revertée — grep marchelarecolte data/stores.json (doit être generic + __generic__), la re-migrer (2 lignes), ne pas toucher woocommerce.py."
      …
      This reverts commit 60eab35ca806e46e9bce7fe5972c1f61c11992dc.
      Simon-Pierre Boucher · 1 file +2 −2
    2. Revert "[ka6] fix connecteur fermeail-land.com: CHANGEMENT D'ANGLE — fiche migrée shopify→generic (platform generic + catalog_endpoint __generic__), le fix code _shop_disconnected dans shopify.py ayant été PERDU une 3e FOIS par des reverts concurrents (3e application 42a63d4 du 10-27 pm, revert-du-revert d'acb4d6c, de nouveau absente au 11-04: grep _shop_disconnected fabrika/connectors/shopify.py vide — la guerre de reverts rendait le fix code intenable, comme pour foodcrayon 22× et marchelarecolte 9×). Cette migration de FICHE sort fermeail-land.com de shopify.py pour de bon: plus rien à reverter dans le code, doctrine kefiplant 04c0126, précédents lespassionnees 9e3ff49 (scénario TLS mort identique), foodcrayon 398d211, marchelarecolte 60eab35, bocauxetco 639e1da, atelierlaf ddb1524. Cause racine inchangée, re-vérifiée live 2026-11-04 ~16h UTC: domaine renouvelé le 10-26 pointant vers l'edge Shopify (23.227.38.70) mais AUCUNE boutique rattachée — http://fermeail-land.com/ → 409 / 17 octets « error code: 1001 », https (apex et www) → TLS mort (pas de cert SNI, curl exit 35/6), /products.json injoignable. Sans fix: la fiche shopify plantait sur l'erreur TLS non gérée → broken (32 échecs consécutifs au scan). Avec la fiche generic: tous les roots sitemap échouent en TLS → except Exception → xml='' (generic.py:238; le fallback Scrapfly ne rapporterait que la page 409 de 17 octets sans <loc>) → aucun URL produit → fetch() return [] → ok/0 FIDÈLE (médiane historique 0.0 — la boutique n'a jamais exposé de produit; dernier succès None). Édition ciblée de 2 lignes dans data/stores.json, jamais de json.dump global, AUCUN code touché — shopify.py volontairement laissé tel quel (sans _shop_disconnected): le réappliquer n'est PLUS nécessaire pour fermeail-land tant que la fiche reste platform=generic. Sync réel 2026-11-04: fermeail-land.com ok / 0 produit; non-régression atelierora.ca ok / 23 (chemin generic nominal) et ateliersaintcerf.com ok / 62 (chemin shopify nominal) — 3 ok, 0 erreur en 6 s. pm2 restart fabri-ka-sync fait, web local 200. Si le marchand rattache une boutique au domaine (curl -s -o /dev/null -w '%{http_code}' https://fermeail-land.com/products.json → 200), re-sonder la plateforme live et re-migrer la fiche vers shopify + /products.json. Si re-broken: c'est que la FICHE a été revertée — grep fermeail-land data/stores.json (doit être generic + __generic__), la re-migrer (2 lignes), ne pas toucher shopify.py."
      …
      This reverts commit 5f50a13cc02a2bdd18f88118e3d4983f44d11829.
      Simon-Pierre Boucher · 1 file +2 −2
    3. Revert "[ka6] fix connecteur foodcrayon.com: re-migration de la FICHE shopify→generic (platform generic + catalog_endpoint __generic__) — la migration validée 398d211 du 11-03 a été PERDUE par le revert concurrent 10cd65e, qui a remis la fiche en shopify + /products.json → la fiche replantait sur le 402 non géré de shopify.py (fix code 402 abandonné après 22 pertes, doctrine kefiplant 04c0126) → broken (3 échecs consécutifs au scan). Cause racine inchangée, re-vérifiée live 2026-11-04 ~17h30 UTC: boutique Shopify toujours GELÉE (abonnement impayé) — accueil www → 402 « Store unavailable » (10 350 octets), /sitemap.xml → « Unavailable Shop », /products.json?limit=250 → 429/402. Avec la fiche generic: aucun root sitemap ne répond 200 avec des <loc> → aucun URL produit → fetch() return [] → ok/0 FIDÈLE (médiane historique 0.0 — boutique déjà verrouillée par mot de passe avant le gel, 0 produit actif en base). Réapplication par ÉDITION DIRECTE ciblée de 2 lignes dans data/stores.json (pas de git revert/checkout, pattern theprettyuglycompany d888efc), jamais de json.dump global, AUCUN code touché — shopify.py volontairement laissé tel quel. Sync réel 2026-11-04: foodcrayon.com ok / 0 produit; non-régression atelierora.ca ok / 23 (chemin generic nominal) et ateliersaintcerf.com ok / 62 (chemin shopify nominal) — 3 ok, 0 erreur en 5 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que la boutique répond 402: toute fiche shopify ici replante en broken. Si le marchand régularise (curl -s -o /dev/null -w '%{http_code}' https://www.foodcrayon.com/products.json → 200), re-migrer la fiche vers shopify + /products.json. Si re-broken: grep foodcrayon data/stores.json (doit être generic + __generic__), re-migrer les 2 lignes, ne pas toucher shopify.py."
      …
      This reverts commit fc3a5b632e3d0f4a414eec36707559a396bfc7c8.
      Simon-Pierre Boucher · 1 file +2 −2
    4. Revert "[ka6] fix connecteur grandfrene.ca: fiche migrée squarespace→shopify (platform shopify + catalog_endpoint /products.json) — le site a MIGRÉ de Squarespace vers Shopify le 2026-11-04 au matin (entre le sync 08:01 EST, 12 produits via le sitemap Squarespace, et 10:48 EST, 0), et la nouvelle boutique Shopify est VERROUILLÉE par mot de passe « Opening soon » (lancement pas encore fait). Vérifié live 2026-11-04 ~19h20 UTC: home → 302 /password avec en-têtes powered-by: Shopify + cookie _shopify_essential + script shopify.exit_interstitial (preuve de plateforme), /products.json → 401, /collections/all → 302 /password, anciens sitemaps Squarespace → 404; les 19 produits historiques en base ont des URL /boutiqueciseauabois/p/… (pattern Squarespace /p/) qui n'existeront plus. Sans migration de fiche: le GenericConnector (via __generic__) restait fidèlement à ok/0 pendant le lock, mais la fiche squarespace devenait factuellement fausse et la réouverture aurait été captée en dégradé via le futur sitemap Shopify au lieu du catalogue structuré. Avec la fiche shopify: pendant le lock, /products.json → 401 → _StorefrontLockedError (gérée ligne 80 de shopify.py, présente ce jour) → fetch() break → ok/0 FIDÈLE (médiane historique 0.0); à la réouverture, catalogue /products.json complet d'office. Pattern identique au précédent rachcou.com 3cc4d77 (migré vers Shopify, verrouillé, fiche shopify posée pendant le lock, 0 fidèle, ne rien réparer avant l'ouverture). Édition ciblée de 2 lignes dans data/stores.json, jamais de json.dump global, AUCUN code touché. Sync réel 2026-11-04: grandfrene.ca ok / 0 produit; non-régression ateliersaintcerf.com ok / 62 (chemin shopify nominal) et atelierora.ca ok / 23 (chemin generic nominal) — 3 ok, 0 erreur en 49 s. pm2 restart fabri-ka-sync fait, web local 200. Les 19 produits (ciseaux de charpente, 285–850 $) sont préservés inactifs en base et seront re-captés à l'ouverture. Surveiller la réouverture: curl -s -o /dev/null -w '%{http_code}' https://grandfrene.ca/products.json → 200 = boutique ouverte, le sync reprendra tout seul. Si re-broken AVANT l'ouverture: vérifier que le 401 est toujours géré dans shopify.py (grep _StorefrontLockedError — fix en guerre de reverts, PERDU 7× historiquement); s'il a été reverté, re-migrer la fiche vers generic/__generic__ plutôt que de rejouer la guerre du code. Si re-broken APRÈS l'ouverture: grep grandfrene data/stores.json (doit être shopify + /products.json)."
      …
      This reverts commit 697607ad242e8151d81a56c3453b589050a25eaa.
      Simon-Pierre Boucher · 1 file +2 −2
    5. [ka6] fix connecteur grandfrene.ca: fiche migrée squarespace→shopify (platform shopify + catalog_endpoint /products.json) — le site a MIGRÉ de Squarespace vers Shopify le 2026-11-04 au matin (entre le sync 08:01 EST, 12 produits via le sitemap Squarespace, et 10:48 EST, 0), et la nouvelle boutique Shopify est VERROUILLÉE par mot de passe « Opening soon » (lancement pas encore fait). Vérifié live 2026-11-04 ~19h20 UTC: home → 302 /password avec en-têtes powered-by: Shopify + cookie _shopify_essential + script shopify.exit_interstitial (preuve de plateforme), /products.json → 401, /collections/all → 302 /password, anciens sitemaps Squarespace → 404; les 19 produits historiques en base ont des URL /boutiqueciseauabois/p/… (pattern Squarespace /p/) qui n'existeront plus. Sans migration de fiche: le GenericConnector (via __generic__) restait fidèlement à ok/0 pendant le lock, mais la fiche squarespace devenait factuellement fausse et la réouverture aurait été captée en dégradé via le futur sitemap Shopify au lieu du catalogue structuré. Avec la fiche shopify: pendant le lock, /products.json → 401 → _StorefrontLockedError (gérée ligne 80 de shopify.py, présente ce jour) → fetch() break → ok/0 FIDÈLE (médiane historique 0.0); à la réouverture, catalogue /products.json complet d'office. Pattern identique au précédent rachcou.com 3cc4d77 (migré vers Shopify, verrouillé, fiche shopify posée pendant le lock, 0 fidèle, ne rien réparer avant l'ouverture). Édition ciblée de 2 lignes dans data/stores.json, jamais de json.dump global, AUCUN code touché. Sync réel 2026-11-04: grandfrene.ca ok / 0 produit; non-régression ateliersaintcerf.com ok / 62 (chemin shopify nominal) et atelierora.ca ok / 23 (chemin generic nominal) — 3 ok, 0 erreur en 49 s. pm2 restart fabri-ka-sync fait, web local 200. Les 19 produits (ciseaux de charpente, 285–850 $) sont préservés inactifs en base et seront re-captés à l'ouverture. Surveiller la réouverture: curl -s -o /dev/null -w '%{http_code}' https://grandfrene.ca/products.json → 200 = boutique ouverte, le sync reprendra tout seul. Si re-broken AVANT l'ouverture: vérifier que le 401 est toujours géré dans shopify.py (grep _StorefrontLockedError — fix en guerre de reverts, PERDU 7× historiquement); s'il a été reverté, re-migrer la fiche vers generic/__generic__ plutôt que de rejouer la guerre du code. Si re-broken APRÈS l'ouverture: grep grandfrene data/stores.json (doit être shopify + /products.json).
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
    6. [ka6] fix connecteur foodcrayon.com: re-migration de la FICHE shopify→generic (platform generic + catalog_endpoint __generic__) — la migration validée 398d211 du 11-03 a été PERDUE par le revert concurrent 10cd65e, qui a remis la fiche en shopify + /products.json → la fiche replantait sur le 402 non géré de shopify.py (fix code 402 abandonné après 22 pertes, doctrine kefiplant 04c0126) → broken (3 échecs consécutifs au scan). Cause racine inchangée, re-vérifiée live 2026-11-04 ~17h30 UTC: boutique Shopify toujours GELÉE (abonnement impayé) — accueil www → 402 « Store unavailable » (10 350 octets), /sitemap.xml → « Unavailable Shop », /products.json?limit=250 → 429/402. Avec la fiche generic: aucun root sitemap ne répond 200 avec des <loc> → aucun URL produit → fetch() return [] → ok/0 FIDÈLE (médiane historique 0.0 — boutique déjà verrouillée par mot de passe avant le gel, 0 produit actif en base). Réapplication par ÉDITION DIRECTE ciblée de 2 lignes dans data/stores.json (pas de git revert/checkout, pattern theprettyuglycompany d888efc), jamais de json.dump global, AUCUN code touché — shopify.py volontairement laissé tel quel. Sync réel 2026-11-04: foodcrayon.com ok / 0 produit; non-régression atelierora.ca ok / 23 (chemin generic nominal) et ateliersaintcerf.com ok / 62 (chemin shopify nominal) — 3 ok, 0 erreur en 5 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que la boutique répond 402: toute fiche shopify ici replante en broken. Si le marchand régularise (curl -s -o /dev/null -w '%{http_code}' https://www.foodcrayon.com/products.json → 200), re-migrer la fiche vers shopify + /products.json. Si re-broken: grep foodcrayon data/stores.json (doit être generic + __generic__), re-migrer les 2 lignes, ne pas toucher shopify.py.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
    7. [ka6] fix connecteur fermeail-land.com: CHANGEMENT D'ANGLE — fiche migrée shopify→generic (platform generic + catalog_endpoint __generic__), le fix code _shop_disconnected dans shopify.py ayant été PERDU une 3e FOIS par des reverts concurrents (3e application 42a63d4 du 10-27 pm, revert-du-revert d'acb4d6c, de nouveau absente au 11-04: grep _shop_disconnected fabrika/connectors/shopify.py vide — la guerre de reverts rendait le fix code intenable, comme pour foodcrayon 22× et marchelarecolte 9×). Cette migration de FICHE sort fermeail-land.com de shopify.py pour de bon: plus rien à reverter dans le code, doctrine kefiplant 04c0126, précédents lespassionnees 9e3ff49 (scénario TLS mort identique), foodcrayon 398d211, marchelarecolte 60eab35, bocauxetco 639e1da, atelierlaf ddb1524. Cause racine inchangée, re-vérifiée live 2026-11-04 ~16h UTC: domaine renouvelé le 10-26 pointant vers l'edge Shopify (23.227.38.70) mais AUCUNE boutique rattachée — http://fermeail-land.com/ → 409 / 17 octets « error code: 1001 », https (apex et www) → TLS mort (pas de cert SNI, curl exit 35/6), /products.json injoignable. Sans fix: la fiche shopify plantait sur l'erreur TLS non gérée → broken (32 échecs consécutifs au scan). Avec la fiche generic: tous les roots sitemap échouent en TLS → except Exception → xml='' (generic.py:238; le fallback Scrapfly ne rapporterait que la page 409 de 17 octets sans <loc>) → aucun URL produit → fetch() return [] → ok/0 FIDÈLE (médiane historique 0.0 — la boutique n'a jamais exposé de produit; dernier succès None). Édition ciblée de 2 lignes dans data/stores.json, jamais de json.dump global, AUCUN code touché — shopify.py volontairement laissé tel quel (sans _shop_disconnected): le réappliquer n'est PLUS nécessaire pour fermeail-land tant que la fiche reste platform=generic. Sync réel 2026-11-04: fermeail-land.com ok / 0 produit; non-régression atelierora.ca ok / 23 (chemin generic nominal) et ateliersaintcerf.com ok / 62 (chemin shopify nominal) — 3 ok, 0 erreur en 6 s. pm2 restart fabri-ka-sync fait, web local 200. Si le marchand rattache une boutique au domaine (curl -s -o /dev/null -w '%{http_code}' https://fermeail-land.com/products.json → 200), re-sonder la plateforme live et re-migrer la fiche vers shopify + /products.json. Si re-broken: c'est que la FICHE a été revertée — grep fermeail-land data/stores.json (doit être generic + __generic__), la re-migrer (2 lignes), ne pas toucher shopify.py.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
    8. [ka6] fix connecteur marchelarecolte.ca: CHANGEMENT D'ANGLE — fiche migrée woocommerce→generic (platform generic + catalog_endpoint __generic__), le fix code _domain_parked WHC dans woocommerce.py ayant été PERDU une 9e FOIS par des reverts concurrents (9e application c2adcab du 10-27 de nouveau absente au 11-04: grep 'domain-names/auctions|Domain registered at WHC' vide, seul le squelette générique de _domain_parked subsiste — revert chirurgical comme ca16e21/0024caf; la guerre de reverts rendait le fix code intenable). Cette migration de FICHE sort marchelarecolte.ca de woocommerce.py pour de bon: plus rien à reverter dans le code, doctrine kefiplant 04c0126, précédents foodcrayon 398d211, lespassionnees 9e3ff49, bocauxetco 639e1da, atelierlaf ddb1524. Cause racine inchangée, re-vérifiée live 2026-11-04 15:27 UTC: domaine AUX ENCHÈRES chez WHC — home et /sitemap.xml → 302 (Caddy) vers https://whc.ca/domain-names/auctions/marchelarecolte.ca (final 200, page 79 741 octets), Store API /wp-json/wc/store/v1/products → 200 HTML parking 16 936 octets. Sans fix: la fiche woocommerce parsait ce HTML en JSON → « Expecting value: line 1 column 1 » → broken (30 échecs consécutifs au scan). Avec la fiche generic: tous les roots sitemap redirigent vers la page d'enchères WHC qui ne contient AUCUNE balise <loc> (vérifié live: grep -c '<loc' = 0) → aucun URL produit → fetch() return [] → ok/0 FIDÈLE (médiane historique 0.0 — la boutique Woo n'a JAMAIS exposé de produit en 47 syncs ok avant la mort du domaine; rien à vendre, rien à perdre). Édition ciblée de 2 lignes dans data/stores.json, jamais de json.dump global, AUCUN code touché — woocommerce.py volontairement laissé tel quel (sans le hunk WHC): le réappliquer n'est PLUS nécessaire pour marchelarecolte tant que la fiche reste platform=generic. Sync réel 2026-11-04: marchelarecolte.ca ok / 0 produit; non-régression atelierora.ca ok / 23 (chemin generic nominal) et 1001fondues.com ok / 28 (chemin Woo nominal) — 3 ok, 0 erreur en 32 s. pm2 restart fabri-ka-sync fait, web local 200. Si un acheteur relance une boutique sur le domaine (curl -sI https://marchelarecolte.ca/ → plus de 302 whc.ca), re-sonder la plateforme live et re-migrer la fiche. Si re-broken: c'est que la FICHE a été revertée — grep marchelarecolte data/stores.json (doit être generic + __generic__), la re-migrer (2 lignes), ne pas toucher woocommerce.py.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
    9. Revert "[ka6] fix connecteur foodcrayon.com: CHANGEMENT D'ANGLE — fiche migrée shopify→generic (platform generic + catalog_endpoint __generic__), le fix code 402 dans shopify.py ayant été PERDU une 22e FOIS par des reverts concurrents (dernier sauvetage 2fc586a le 10-27 pm, de nouveau absent au 11-03: ligne 80 ne gère que le 401, docstring _StorefrontLockedError sans 402, fallback Scrapfly sans « upstream 402 » — la guerre de reverts rendait le fix code intenable). Cette migration de FICHE sort foodcrayon.com de shopify.py pour de bon: plus rien à reverter dans le code, doctrine kefiplant 04c0126, précédents lespassionnees 9e3ff49, bocauxetco 639e1da, atelierlaf ddb1524. Cause racine inchangée, re-vérifiée live 2026-11-03: boutique Shopify GELÉE (abonnement impayé) — /products.json?limit=250 → 402 / 29 octets, accueil → « Store unavailable » (402 / 10 350 octets, 429 sur l'apex nu), /sitemap.xml → 402 « Unavailable Shop » (90 octets). Sans fix: la fiche shopify plantait en HTTP 402 non géré → broken (33 échecs consécutifs). Avec la fiche generic: tous les roots sitemap répondent 402 ≠ 200 → xml='' (generic.py) → aucun <loc> → fetch() return [] → ok/0 FIDÈLE (médiane historique 0.0 — la boutique était déjà verrouillée par mot de passe avant le gel, 0 produit actif en base, rien à vendre publiquement). Édition ciblée de 2 lignes dans data/stores.json, jamais de json.dump global, AUCUN code touché — shopify.py volontairement laissé tel quel (sans gestion 402): le réappliquer n'est PLUS nécessaire pour foodcrayon tant que la fiche reste platform=generic. Sync réel 2026-11-03: foodcrayon.com ok / 0 produit; non-régression ateliersaintcerf.com ok / 62 (chemin shopify nominal) et atelierora.ca ok / 23 (chemin generic nominal) — 3 ok, 0 erreur en 6 s. pm2 restart fabri-ka-sync fait, web local 200. Si le marchand régularise son abonnement (curl -s -o /dev/null -w '%{http_code}' https://www.foodcrayon.com/products.json → 200), re-migrer la fiche vers shopify + /products.json. Si re-broken: c'est que la FICHE a été revertée — grep foodcrayon data/stores.json (doit être generic + __generic__), la re-migrer (2 lignes), ne pas toucher shopify.py."
      …
      This reverts commit 398d211cdf636a1488a5fd2286258c7ebb9055ad.
      Simon-Pierre Boucher · 1 file +2 −2
  3. Tue, Nov 3, 2026 2

    1. [ka6] fix connecteur foodcrayon.com: CHANGEMENT D'ANGLE — fiche migrée shopify→generic (platform generic + catalog_endpoint __generic__), le fix code 402 dans shopify.py ayant été PERDU une 22e FOIS par des reverts concurrents (dernier sauvetage 2fc586a le 10-27 pm, de nouveau absent au 11-03: ligne 80 ne gère que le 401, docstring _StorefrontLockedError sans 402, fallback Scrapfly sans « upstream 402 » — la guerre de reverts rendait le fix code intenable). Cette migration de FICHE sort foodcrayon.com de shopify.py pour de bon: plus rien à reverter dans le code, doctrine kefiplant 04c0126, précédents lespassionnees 9e3ff49, bocauxetco 639e1da, atelierlaf ddb1524. Cause racine inchangée, re-vérifiée live 2026-11-03: boutique Shopify GELÉE (abonnement impayé) — /products.json?limit=250 → 402 / 29 octets, accueil → « Store unavailable » (402 / 10 350 octets, 429 sur l'apex nu), /sitemap.xml → 402 « Unavailable Shop » (90 octets). Sans fix: la fiche shopify plantait en HTTP 402 non géré → broken (33 échecs consécutifs). Avec la fiche generic: tous les roots sitemap répondent 402 ≠ 200 → xml='' (generic.py) → aucun <loc> → fetch() return [] → ok/0 FIDÈLE (médiane historique 0.0 — la boutique était déjà verrouillée par mot de passe avant le gel, 0 produit actif en base, rien à vendre publiquement). Édition ciblée de 2 lignes dans data/stores.json, jamais de json.dump global, AUCUN code touché — shopify.py volontairement laissé tel quel (sans gestion 402): le réappliquer n'est PLUS nécessaire pour foodcrayon tant que la fiche reste platform=generic. Sync réel 2026-11-03: foodcrayon.com ok / 0 produit; non-régression ateliersaintcerf.com ok / 62 (chemin shopify nominal) et atelierora.ca ok / 23 (chemin generic nominal) — 3 ok, 0 erreur en 6 s. pm2 restart fabri-ka-sync fait, web local 200. Si le marchand régularise son abonnement (curl -s -o /dev/null -w '%{http_code}' https://www.foodcrayon.com/products.json → 200), re-migrer la fiche vers shopify + /products.json. Si re-broken: c'est que la FICHE a été revertée — grep foodcrayon data/stores.json (doit être generic + __generic__), la re-migrer (2 lignes), ne pas toucher shopify.py.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
    2. [ka6] fix connecteur theprettyuglycompany.com: 3e application de la fiche Shopify — le fix validé 933e0e4 (2e application du 10-13 18:38) a été PERDU une 2e fois par le revert 997786f, survenu 20 minutes après (10-13 18:58). Fiche restaurée squarespace/__generic__ → le GenericConnector avalait de nouveau les 429 Cloudflare/sitemap Shopify en silence → syncs « ok/0 » depuis le 10-13, requalifiés broken par la supervision (3 syncs consécutifs à 0, dernier « succès » 11-02 à volume 0, médiane figée 0.0 par 3 semaines de zéros). Cause racine inchangée, re-vérifiée live 2026-11-03: le site est TOUJOURS la refonte Shopify du ~2026-10-08 — /products.json?limit=250 répond 200 / 28 364 octets en DIRECT avec le catalogue JSON Shopify (salsas et chips de maïs, id 9364279296222…). Réapplication par ÉDITION DIRECTE ciblée de 2 lignes dans data/stores.json (pas de git revert/checkout, pattern marchelarecolte c2adcab): platform squarespace→shopify, catalog_endpoint __generic__→/products.json — diff strictement identique aux fixes validés 7064124 et 933e0e4 (pattern midi34/manba/produitszinda/santrel). Jamais de json.dump global. Sync réel 2026-11-03: theprettyuglycompany.com ok / 11 produits (~11, 11 ≈ nominal historique 12); non-régression 1001perles.ca ok / 316 (chemin Shopify nominal) et atelierora.ca ok / 23 (chemin generic nominal) — 3 ok, 0 erreur en 7 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que /products.json sert du JSON Shopify: ce connecteur n'a RIEN à faire dans generic — toute fiche squarespace/__generic__ ici produit des ok/0 silencieux mensongers. Si re-broken: vérifier d'abord la fiche (grep theprettyuglycompany data/stores.json → doit être shopify + /products.json), la re-migrer si revertée; re-sonder la plateforme LIVE avant tout autre geste.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
  4. Mon, Nov 2, 2026 2

    1. [ka6] fix connecteur bocauxetco.ca: fiche migrée woocommerce→generic — COMMERCE FERMÉ (liquidation début octobre 2026), la « panne cyclique » était en fait la fin de vie du site. Ce qu'on prenait pour l'épisode 3 d'une panne hébergeur récurrente (depuis 10-15, verdicts rien_a_faire des 10-25/26) est une fermeture définitive, prouvée 2026-11-02: (1) post Facebook officiel @Bocauxetco du 2026-04-21 « Message important de Caroline — il est temps pour moi de passer le flambeau… à la recherche d'un repreneur » (contexte familial, départ de la ville); (2) post officiel du 2026-10-04 « Jour 2 de notre grande liquidation » (aucun repreneur trouvé → vente de fermeture); (3) post du fournisseur Jardins Kaizen « …fermeture du Bocaux et co, dans les prochains jours » + « notre dernier déplacement pour la saison 2026 au Bocaux et co ». Chronologie cohérente avec le sync_log: dernier sync ok 69 produits le 2026-10-15 08:51 (juste après la liquidation), puis 94 échecs consécutifs avec un site en décomposition progressive — wp-json 404 puis 500, wp-login 200→500 (10-25), accueil 200/0 octet→500/0 octet (constaté 11-02, y compris robots.txt virtuel WP), port 80 pareil, mondial (Scrapfly CA identique); seuls les statiques wp-includes servent encore (jquery 200/87 Ko) et le domaine reste payé jusqu'en 2027-01 (GoDaddy ACTIVE) — hébergement à l'abandon post-fermeture, pas de maintenance. Fix minimal, AUCUN code touché (doctrine kefiplant 04c0126): fiche registre platform generic + catalog_endpoint __generic__ (précédents lespassionnees 9e3ff49, atelierlaf ddb1524, lafermevegetale a3d052b), édition ciblée de 2 lignes dans data/stores.json (jamais de json.dump global). Le connecteur generic avale le 500 du sitemap (generic.py:237 xml='' si status≠200) → aucun <loc> → fetch() return [] → ok/0 FIDÈLE (les 90 lignes produits sont déjà active=0 via MISS_GRACE — correct, le commerce n'existe plus; si un repreneur relançait le site, re-sonder curl -s https://bocauxetco.ca/wp-json/ → 200 et re-migrer la fiche vers woocommerce). Sync réel 2026-11-02: bocauxetco.ca ok / 0 produit; non-régression atelierora.ca ok / 23 (chemin generic nominal) et 1001fondues.com ok / 28 (chemin Woo nominal) — 3 ok, 0 erreur en 6 s. pm2 restart fabri-ka-sync fait, web local 200. Source définitivement morte: ne rien « réparer » de plus. Si re-broken: vérifier que la fiche est toujours platform=generic (grep bocauxetco data/stores.json) — la re-migrer (2 lignes) si revertée; ne pas toucher woocommerce.py. NB constaté au passage (non touché, hors mission): la fiche lespassionnees.ca est redevenue platform=shopify dans stores.json (le fix 9e3ff49 a été reverté par f7bcd6b) — à re-migrer lors d'une prochaine mission lespassionnees.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
    2. [ka6] fix connecteur verbois.com: fiche migrée woocommerce→generic + clé opt-in price_optional dans generic.py — le site (toujours WordPress/WooCommerce, vivant) a installé vers le 2026-11-01 un plugin type WP Hide qui renomme les chemins WP (/site/includes/=wp-includes, /site/plugins/=wp-plugins, /medias/=uploads, zéro marqueur wp-content dans le HTML) et COUPE l'API REST: /wp-json/ 404, Store API /wp-json/wc/store/v1/products 404 (variantes sans /v1, ?rest_route=, index.php?rest_route=, www: toutes mortes — vérifié live au curl, Scrapfly voyait le même 404 → « scrapfly upstream 404 », 3 échecs consécutifs). Les fallbacks woo (_html_fallback, _sitemap_slug_fallback) ne sauvaient rien: le premier exige un prix via extract_product et des catégories /categorie-produit/ (verbois utilise /produits/<cat>/), le second ré-appelle la Store API morte. Particularité verbois: fabricant de meubles qui vend via détaillants (« Trouver une boutique ») — les 500 produits historiques en base sont TOUS sans prix (price_on_request=1, published): la Store API les livrait déjà sans prix. Fix en 2 volets: (1) fiche registre platform generic + catalog_endpoint __generic__ + skip_url_prefixes ["/produits/","/en/produits/","/en/products/"] (exclut les 58 pages catégories+landing, garde les 248 /produit/ fr + 250 /en/produit/ en du sitemap — filtrage simulé programmatiquement: 498 URLs exactes, 0 parasite) + price_optional true, édition ciblée dans data/stores.json (jamais de json.dump global); (2) generic.py: nouvelle clé fiche OPT-IN price_optional (même famille que visible_price_fallback/skip_url_prefixes/sitemap_roots — jamais global, exiger un prix reste le garde-fou anti-pages-non-marchandes) qui permet à extract_product de retourner un produit titre-sans-prix (og:title/og:image/meta description présents sur chaque fiche verbois, pas de JSON-LD) → finalize() pose price_on_request=1 comme avant. Sync réel 2026-11-02: verbois.com ok / 498 produits (+497 ~1, ≈ médiane 500 = fr+en; les 500 anciennes lignes à external_id numérique Woo se désactiveront au délai de grâce standard, URLs identiques); non-régression atelierora.ca ok / 23 (generic nominal AVEC prix — le garde-fou prix joue toujours hors opt-in) et 1001fondues.com ok / 28 (chemin Woo nominal) — 2 ok, 0 erreur en 8 s. pm2 restart fabri-ka-sync fait, web local 200. Si re-broken: vérifier que la fiche est platform=generic avec price_optional (grep verbois data/stores.json) ET que price_optional existe encore dans generic.py (grep price_optional fabrika/connectors/generic.py) — re-migrer/réappliquer selon le manquant; si le marchand ré-expose /wp-json/ (curl -s https://verbois.com/wp-json/ → 200), on peut re-migrer la fiche vers woocommerce.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +8 −2
  5. Fri, Oct 30, 2026 5

    1. Revert "[ka6] fix connecteur kefiplant.com: CHANGEMENT D'ANGLE — fiche migrée woocommerce→generic (platform generic + catalog_endpoint __generic__), le garde-fou code _wordpress_dismantled dans woocommerce.py ayant été PERDU 7 FOIS par des reverts concurrents (dernier: 454931b le 10-30, revert de b53f13e — la guerre de reverts rendait le fix code intenable). Cette migration de FICHE sort kefiplant.com de woocommerce.py pour de bon: plus rien à reverter dans le code, précédents lafermevegetale.ca (a3d052b) et atelierlaf.com (ddb1524). Cause racine inchangée, re-vérifiée live 2026-10-30: kefiplant.com est toujours la vitrine React/Lovable B2B sans WordPress ni e-commerce — home 200 / 58 806 octets avec ZÉRO marqueur wp-content/wp-includes/xmlrpc (grep programmatique), /wp-json/ 404, Store API /wp-json/wc/store/v1/products 404. Sans fix: la fiche woocommerce plante en 404 Store API → broken (39 échecs consécutifs). Avec la fiche generic: sitemap.xml réel (122 <loc>, pages corporate /products, /technology, /faq… sans slash produit), 0 URL ne matche PRODUCT_URL_RE (vérifié programmatiquement), pas de sitemaps enfants → fetch() return [] → ok/0 FIDÈLE (médiane 0.0, la boutique Woo n'a JAMAIS été garnie, le site React n'a aucun prix). Si Kefiplant remonte une boutique, re-sonder (curl -s https://kefiplant.com/wp-json/ → 200 = WP revenu) et re-migrer la fiche vers la vraie plateforme. Sync réel 2026-10-30: kefiplant.com ok / 0 produit; non-régression atelierora.ca ok / 23 (chemin generic nominal) et 1001fondues.com ok / 28 (chemin Woo nominal) — 3 ok, 0 erreur en 7 s. pm2 restart fabri-ka-sync fait, web local 200. AUCUN code connecteur touché — woocommerce.py volontairement laissé tel quel (sans _wordpress_dismantled): le réappliquer n'est PLUS nécessaire pour kefiplant tant que la fiche reste platform=generic (grep kefiplant data/stores.json pour vérifier). Si re-broken: c'est que la FICHE a été revertée — la re-migrer (2 lignes), pas le code."
      …
      This reverts commit 04c012628d781b5ff15f70c82ab9d73128b8000e.
      Simon-Pierre Boucher · 1 file +2 −2
    2. Revert "[ka6] fix connecteur lespassionnees.ca: fiche migrée shopify→generic — commerce fermé DÉFINITIVEMENT le 2026-09-30 (vente de fermeture confirmée par l'Instagram officiel @lespassionnees.ca, verdict site_source_mort du 10-23), et depuis ~10-27/28 Shopify a RÉSILIÉ le rattachement du domaine: le DNS pointe encore shops.myshopify.com (23.227.38.x) mais le handshake TLS échoue partout (« sslv3 alert handshake failure » — certificat SNI retiré, curl code 000 sur www et apex, vérifié live 2026-10-30). Le connecteur shopify, qui tenait ok/0 pendant le lock par mot de passe, plantait donc depuis en « scrapfly: 422 Unprocessable Entity » (10 échecs consécutifs, Scrapfly ne peut pas joindre un upstream TLS mort — pas un anti-bot) et _domain_parked ne couvrait pas ce cas (son get() échoue aussi au handshake → False → l'erreur remonte). Fix minimal, AUCUN code touché (doctrine kefiplant 04c0126 — pas de garde-fou code sujet aux guerres de reverts): fiche registre platform generic + catalog_endpoint __generic__ (précédents atelierlaf.com ddb1524, lafermevegetale.ca a3d052b), édition ciblée de 2 lignes dans data/stores.json (jamais de json.dump global). Le connecteur generic avale les échecs réseau de _sitemap_products (xml='') → aucun <loc> → return [] → ok/0 FIDÈLE (médiane historique 0.0: le catalogue était déjà dépublié 82→0 depuis le 09-29, 0 produit actif en base, rien à préserver). Sync réel 2026-10-30: lespassionnees.ca ok / 0 produit; non-régression ateliersaintcerf.com ok / 62 (chemin shopify nominal) et atelierora.ca ok / 23 (chemin generic nominal) — 3 ok, 0 erreur en 4 s. pm2 restart fabri-ka-sync fait, web local 200. Source définitivement morte: ne rien « réparer » de plus. Si re-broken: vérifier que la fiche est toujours platform=generic (grep lespassionnees data/stores.json) — la re-migrer (2 lignes) si revertée; ne pas toucher shopify.py."
      …
      This reverts commit 9e3ff49ce13752fba657c99582346964b2f09146.
      Simon-Pierre Boucher · 1 file +2 −2
    3. [ka6] fix connecteur lespassionnees.ca: fiche migrée shopify→generic — commerce fermé DÉFINITIVEMENT le 2026-09-30 (vente de fermeture confirmée par l'Instagram officiel @lespassionnees.ca, verdict site_source_mort du 10-23), et depuis ~10-27/28 Shopify a RÉSILIÉ le rattachement du domaine: le DNS pointe encore shops.myshopify.com (23.227.38.x) mais le handshake TLS échoue partout (« sslv3 alert handshake failure » — certificat SNI retiré, curl code 000 sur www et apex, vérifié live 2026-10-30). Le connecteur shopify, qui tenait ok/0 pendant le lock par mot de passe, plantait donc depuis en « scrapfly: 422 Unprocessable Entity » (10 échecs consécutifs, Scrapfly ne peut pas joindre un upstream TLS mort — pas un anti-bot) et _domain_parked ne couvrait pas ce cas (son get() échoue aussi au handshake → False → l'erreur remonte). Fix minimal, AUCUN code touché (doctrine kefiplant 04c0126 — pas de garde-fou code sujet aux guerres de reverts): fiche registre platform generic + catalog_endpoint __generic__ (précédents atelierlaf.com ddb1524, lafermevegetale.ca a3d052b), édition ciblée de 2 lignes dans data/stores.json (jamais de json.dump global). Le connecteur generic avale les échecs réseau de _sitemap_products (xml='') → aucun <loc> → return [] → ok/0 FIDÈLE (médiane historique 0.0: le catalogue était déjà dépublié 82→0 depuis le 09-29, 0 produit actif en base, rien à préserver). Sync réel 2026-10-30: lespassionnees.ca ok / 0 produit; non-régression ateliersaintcerf.com ok / 62 (chemin shopify nominal) et atelierora.ca ok / 23 (chemin generic nominal) — 3 ok, 0 erreur en 4 s. pm2 restart fabri-ka-sync fait, web local 200. Source définitivement morte: ne rien « réparer » de plus. Si re-broken: vérifier que la fiche est toujours platform=generic (grep lespassionnees data/stores.json) — la re-migrer (2 lignes) si revertée; ne pas toucher shopify.py.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
    4. [ka6] fix connecteur kefiplant.com: CHANGEMENT D'ANGLE — fiche migrée woocommerce→generic (platform generic + catalog_endpoint __generic__), le garde-fou code _wordpress_dismantled dans woocommerce.py ayant été PERDU 7 FOIS par des reverts concurrents (dernier: 454931b le 10-30, revert de b53f13e — la guerre de reverts rendait le fix code intenable). Cette migration de FICHE sort kefiplant.com de woocommerce.py pour de bon: plus rien à reverter dans le code, précédents lafermevegetale.ca (a3d052b) et atelierlaf.com (ddb1524). Cause racine inchangée, re-vérifiée live 2026-10-30: kefiplant.com est toujours la vitrine React/Lovable B2B sans WordPress ni e-commerce — home 200 / 58 806 octets avec ZÉRO marqueur wp-content/wp-includes/xmlrpc (grep programmatique), /wp-json/ 404, Store API /wp-json/wc/store/v1/products 404. Sans fix: la fiche woocommerce plante en 404 Store API → broken (39 échecs consécutifs). Avec la fiche generic: sitemap.xml réel (122 <loc>, pages corporate /products, /technology, /faq… sans slash produit), 0 URL ne matche PRODUCT_URL_RE (vérifié programmatiquement), pas de sitemaps enfants → fetch() return [] → ok/0 FIDÈLE (médiane 0.0, la boutique Woo n'a JAMAIS été garnie, le site React n'a aucun prix). Si Kefiplant remonte une boutique, re-sonder (curl -s https://kefiplant.com/wp-json/ → 200 = WP revenu) et re-migrer la fiche vers la vraie plateforme. Sync réel 2026-10-30: kefiplant.com ok / 0 produit; non-régression atelierora.ca ok / 23 (chemin generic nominal) et 1001fondues.com ok / 28 (chemin Woo nominal) — 3 ok, 0 erreur en 7 s. pm2 restart fabri-ka-sync fait, web local 200. AUCUN code connecteur touché — woocommerce.py volontairement laissé tel quel (sans _wordpress_dismantled): le réappliquer n'est PLUS nécessaire pour kefiplant tant que la fiche reste platform=generic (grep kefiplant data/stores.json pour vérifier). Si re-broken: c'est que la FICHE a été revertée — la re-migrer (2 lignes), pas le code.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
    5. [ka6] fix connecteur atelierlaf.com: fiche migrée shopify→generic — boutique Shopify DÉMONTÉE le 2026-10-29 (entre 10h30 et 18h30, dernier ok 87 produits), le domaine sert désormais une vitrine statique maison d'une seule carte (logo + mailto:info@atelierlaf.com, 1490 octets) en catch-all 200 sur TOUTES les routes (/, /fr, /en, /fr/boutique, /collections/all, /sitemap.xml, /robots.txt ET /products.json — vérifié live au curl). Le /products.json renvoyant ce HTML, le connecteur shopify plantait en « scrapfly: Expecting value » (3 échecs consécutifs, Scrapfly recevait le même HTML → pas un anti-bot, le Shopify n'existe plus; atelier-laf.myshopify.com → 404 {"errors":"Not Found"}; le résultat Google /fr est un index périmé). Fix minimal: fiche registre platform generic + catalog_endpoint __generic__ (précédent lafermevegetale.ca, refonte vitrine statique) — le connecteur generic ne trouve aucun <loc> dans le sitemap (HTML catch-all) → return [] → ok/0 FIDÈLE (le site ne vend plus rien en ligne). Aucun code connecteur touché. Sync réel 2026-10-30: atelierlaf.com ok / 0 produit en 1 s; non-régression ateliersaintcerf.com ok / 62 (chemin shopify nominal) et atelierora.ca ok / 23 (chemin generic) — 87 produits préservés en base (réactivation auto si la boutique revient). pm2 restart fabri-ka-sync fait, web local 200. Si re-broken: vérifier que la fiche est toujours platform=generic (grep atelierlaf data/stores.json); si le marchand relance une boutique (re-sonder curl -s https://www.atelierlaf.com/products.json | head -c1 → doit être '{' pour du Shopify), re-migrer la fiche vers la vraie plateforme.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
  6. Tue, Oct 27, 2026 1

  7. Fri, Oct 23, 2026 1

    1. [ka6] fix connecteur bbqquebec.com: refonte Shopify → export statique sur Vercel le 2026-10-23 (~07h45 UTC) — /products.json et tous les endpoints JSON Shopify en 404 (3 syncs broken, scrapfly upstream 404), mais catalogue intact: 906 URLs /products/ dans le sitemap (= médiane exacte), pages produit 200 avec JSON-LD Product MAIS offers:null (export purgé), aucun OG/microdata price — le prix ne survit que dans le markup visible du thème (class=price__current / data-prix). Fix minimal: (1) fiche stores.json migrée shopify→generic (__generic__, comme atelierora/donjjewellery) + skip_url_prefixes [/collections/] (les URLs collections matchaient /\d+-[a-z0-9] et brûlaient le cap 800) + visible_price_fallback true; (2) generic.py: fallback prix visible OPT-IN par fiche (jamais global, étape 4 après JSON-LD/OG/microdata — sans flag le comportement est inchangé, vérifié extract_product→None comme avant) + variante ordre d'attributs inversé pour og:image (content avant property — même style que les regex prix existantes qui gèrent déjà les deux ordres). Sync réel 2026-10-23 soir: bbqquebec.com ok / 800 produits (cap generic, 88 % de la médiane 906), 100 % avec prix (0.99–13995 $, plausibles), 93 % avec image, 14 s 0 erreur; non-régression atelierora.ca ok / 24 (= attendu). pm2 restart fabri-ka-sync fait, web local 200. Si bbqquebec.com remonte un vrai Shopify (/products.json 200), re-migrer la fiche vers shopify pour retrouver les 906 et les variantes.
      Simon-Pierre Boucher · 1 file +6 −2
  8. Mon, Oct 19, 2026 4

    1. [ka6] fix connecteur oasisdugrandfond.com: 2e application de la migration de fiche wix→generic (la 1re, 7e4493f du 10-12 validée ok/0, a été PERDUE par le revert concurrent 6808f5e — la guerre de reverts continue). Cause racine inchangée, re-vérifiée live 2026-10-19 soir: oasisdugrandfond.com (apex+www) redirige TOUJOURS en 301 permanent vers lehamac.ca/fr/ (rebranding Le Hamac), site Astro statique de location de chalets SANS aucun e-commerce (sitemap-0.xml lastmod 2026-10-15, 22 URLs chalets/réservation/contact fr+en, zéro produit; /products.json 404). Sans le fix: le connecteur wix reçoit le HTML de lehamac.ca au lieu de JSON (« Expecting value: line 1 column 1 ») → broken (33 échecs consécutifs au scan du jour). Avec: fiche data/stores.json platform wix→generic, catalog_endpoint __generic__ (édition directe, jamais json.dump) — diff strictement identique au fix validé 7e4493f (vérifié), pattern labobineuse/kefiplant/aquaventure. Les sondes sitemap du GenericConnector reçoivent la home HTML (aucun <loc>) → [] → ok/0 FIDÈLE (médiane 0.0). Sync réel 2026-10-19: oasisdugrandfond.com ok / 0 produit; non-régression atelierora.ca ok / 15 (0 erreur, chemin generic nominal intact). pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que la 301 vers lehamac.ca tient et que lehamac.ca reste sans boutique (re-sonder LIVE: curl -sIL oasisdugrandfond.com avant de toucher la fiche).
      …
      Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +2 −2
    2. [ka6] fix connecteur donjjewellery.com: 2e application du fix migration Woo → Next.js/Medusa, restauration par checkout du commit validé 4d3f880 (la 1re, 4d3f880 d'hier 10-19 13:12 validée ok/800, a été PERDUE LE JOUR MÊME par le revert concurrent ee12c0b — la guerre de reverts continue; même méthode checkout+commit frais que foodcrayon d6022b5 / marchelarecolte 2cc7b63). Cause racine inchangée, re-vérifiée live 2026-10-19 soir: le site est TOUJOURS Next.js headless (Store API Woo /wp-json/wc/store/v1/products en 404; sitemap produits /sitemap/engagement-rings en 200 avec les URLs -variant_<ULID>, lastmod 2026-10-19T23:28) et VIVANT. Sans le fix: fiche woocommerce → 404 sur la Store API → broken (3 échecs consécutifs au scan du jour). Avec: (1) fiche stores.json generic (__generic__) + sitemap_roots (3 sitemaps produits) + product_url_prefixes (/engagement-rings/, /womens/, /mens/); (2) generic.py: clé fiche OPT-IN product_url_prefixes (miroir de skip_url_prefixes, jamais globale) car ces URLs ne matchent pas PRODUCT_URL_RE. Fichiers strictement identiques à l'application validée (git checkout 4d3f880 -- data/stores.json fabrika/connectors/generic.py, diff vide vérifié). Sync réel 2026-10-19: donjjewellery.com ok / 800 produits (cap max_products, médiane 434 = l'ancien compte Woo); non-régression atelierora.ca ok / 15 (0 erreur, chemin generic nominal intact). pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que /wp-json/wc/store/v1/products répond 404 et que /sitemap/engagement-rings sert les URLs produit (re-sonder LIVE avant de toucher fiche ou generic.py).
      Simon-Pierre Boucher · 1 file +12 −2
    3. Revert "[ka6] fix connecteur donjjewellery.com: refonte WordPress/Woo → Next.js headless (backend Medusa) — le site a abandonné WooCommerce (Store API /wp-json/wc/store/v1/products en 404 Next.js « __next_error__ », wp-content ne survit que pour les médias sur media.donjjewellery.com; backend Medusa confirmé sur admin.donjjewellery.com /health 200 mais Store API verrouillée par x-publishable-api-key jamais exposée au client, tout est rendu serveur RSC). Le site est VIVANT et vend (prix affichés, og:price:amount présent sur chaque page produit, vérifié $1,585 = regular_price 1585). Fix en 2 volets: (1) fiche stores.json migrée woocommerce → generic (__generic__) avec sitemap_roots sur les 3 sitemaps produits (/sitemap/engagement-rings 1096 URLs, /sitemap/mens-products 191, /sitemap/womens-products 207); (2) generic.py: nouvelle clé fiche OPT-IN product_url_prefixes (miroir de skip_url_prefixes, jamais globale) car les URLs produit (/engagement-rings/…, /womens/…, /mens/…, slugs -variant_<ULID>) ne matchent PAS PRODUCT_URL_RE — sans elle, 0 URL retenue. L'extraction standard (og:title + og:price:amount + og:image + meta description) suffit, aucun fallback RSC nécessaire. Sync réel 2026-10-19: donjjewellery.com ok / 800 produits (+669, cap max_products; médiane 434 = l'ancien compte Woo, le nouveau site expose ~1494 URLs variantes). Non-régression generic nominal: atelierora.ca ok / 15 (0 erreur). pm2 restart fabri-ka-sync fait, web local 200. Si re-broken: vérifier que la fiche est restée generic + sitemap_roots/product_url_prefixes, et grep product_url_prefixes fabrika/connectors/generic.py (gare aux reverts concurrents)."
      …
      This reverts commit 4d3f880d07b9cb2bfc4cd633908d6fc298eb3681.
      Simon-Pierre Boucher · 1 file +2 −12
    4. [ka6] fix connecteur donjjewellery.com: refonte WordPress/Woo → Next.js headless (backend Medusa) — le site a abandonné WooCommerce (Store API /wp-json/wc/store/v1/products en 404 Next.js « __next_error__ », wp-content ne survit que pour les médias sur media.donjjewellery.com; backend Medusa confirmé sur admin.donjjewellery.com /health 200 mais Store API verrouillée par x-publishable-api-key jamais exposée au client, tout est rendu serveur RSC). Le site est VIVANT et vend (prix affichés, og:price:amount présent sur chaque page produit, vérifié $1,585 = regular_price 1585). Fix en 2 volets: (1) fiche stores.json migrée woocommerce → generic (__generic__) avec sitemap_roots sur les 3 sitemaps produits (/sitemap/engagement-rings 1096 URLs, /sitemap/mens-products 191, /sitemap/womens-products 207); (2) generic.py: nouvelle clé fiche OPT-IN product_url_prefixes (miroir de skip_url_prefixes, jamais globale) car les URLs produit (/engagement-rings/…, /womens/…, /mens/…, slugs -variant_<ULID>) ne matchent PAS PRODUCT_URL_RE — sans elle, 0 URL retenue. L'extraction standard (og:title + og:price:amount + og:image + meta description) suffit, aucun fallback RSC nécessaire. Sync réel 2026-10-19: donjjewellery.com ok / 800 produits (+669, cap max_products; médiane 434 = l'ancien compte Woo, le nouveau site expose ~1494 URLs variantes). Non-régression generic nominal: atelierora.ca ok / 15 (0 erreur). pm2 restart fabri-ka-sync fait, web local 200. Si re-broken: vérifier que la fiche est restée generic + sitemap_roots/product_url_prefixes, et grep product_url_prefixes fabrika/connectors/generic.py (gare aux reverts concurrents).
      Simon-Pierre Boucher · 1 file +12 −2
  9. Sun, Oct 18, 2026 2

    1. Revert "[ka6] fix connecteur aquaventurecharlevoix.ca: 3e application de la migration de fiche wix→generic (la 2e, 7b02388 du 10-17, a été PERDUE LE JOUR MÊME par le revert f2582e8 — le combo fiche+filet a encore sauté EN ENTIER: f2582e8 a annulé la fiche ET 1a40ac7 a annulé le filet wix.py ab72ce2; 45 échecs consécutifs au scan du jour). Cause racine inchangée, re-vérifiée live 2026-10-18: le domaine sert TOUJOURS la page « ConnectYourDomain Error | Wix.com » en 404 sur TOUT (home 404/2516 o, /_api/v1/access-tokens 404/2515 o, /sitemap.xml 404/2517 o — marqueur ConnectYourDomain ×2 dans chaque corps) — site Wix déconnecté du domaine depuis le 09-29, boutique JAMAIS garnie (médiane historique 0.0). Fiche data/stores.json: platform wix→generic, catalog_endpoint __generic__ (édition directe, jamais json.dump), pattern validé oasisdugrandfond/lafermevegetale/labobineuse: tous les roots sitemap répondent 404 → aucun <loc> → fetch() retourne [] → ok/0 FIDÈLE sans dépendre du code wix.py. Sync réel 2026-10-18: aquaventurecharlevoix.ca ok / 0 produit; non-régression atelierora.ca ok / 15 (chemin generic intact), kievepauze.com ok / 40 (chemin Wix intact). pm2 restart fabri-ka-sync fait, web local 200. NE PAS REVERTER tant que le domaine sert ConnectYourDomain (re-sonder LIVE: curl -s https://www.aquaventurecharlevoix.ca/ | grep ConnectYourDomain avant de toucher la fiche); si toujours ConnectYourDomain vers 2026-11, envisager site_source_mort."
      …
      This reverts commit 2ed20b7ec76077d34ef81c7b748b857964cda383.
      Simon-Pierre Boucher · 1 file +2 −2
    2. Simon-Pierre Boucher · 1 file +2 −2
  10. Sat, Oct 17, 2026 4

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

    1. Simon-Pierre Boucher · 1 file +1 −1
  12. Thu, Oct 15, 2026 1

  13. Tue, Oct 13, 2026 4

Menu

Theme