SPB Git

spb/fabri-ka

Public

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

page 1
  1. Thu, Nov 5, 2026 4

    1. Revert "[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."
      …
      This reverts commit 63b332c692e816f9d020a229b8c7dc19ead4f3c1.
      Simon-Pierre Boucher · 1 file +2 −2
    2. 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
    3. [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
    4. [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 · 2 files +19 −5
  5. Fri, Oct 30, 2026 7

    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. Revert "[ka6] fix connecteur kefiplant.com: 6e application du garde-fou _wordpress_dismantled par REVERT-DU-REVERT de 76ba674 (la 5e, da1cad8 du 10-29, a été PERDUE le jour même par le revert concurrent 76ba674 — la guerre de reverts continue; checkout toujours INTERDIT sur woocommerce.py). Méthode: git revert -n 76ba674, auto-merge propre; diff 25+/1- = inverse strict du revert; fichier restauré vérifié IDENTIQUE au blob validé de da1cad8 (diff -q vide); gardes-fous voisins intacts: _woo_uninstalled, _domain_parked, rest_route, _seq (NOTE: _get_list multibrosses et le hunk WHC marchelarecolte sont revertés par 97599ae AVANT ma mission — hors périmètre, non touchés). Cause racine inchangée, re-vérifiée live 2026-10-30: kefiplant.com est TOUJOURS la vitrine React sans e-commerce ni WordPress (home 200 / 58 806 octets, ZÉRO marqueur wp-content/wp-includes/xmlrpc — grep programmatique sur le HTML téléchargé; /wp-json/ 404 final; Store API /wp-json/wc/store/v1/products 404). Sans le fix: la fiche woocommerce plante en 404 Store API → broken (39 échecs consécutifs au scan du jour). Avec: _wordpress_dismantled() — /wp-json/ 404 ET home 200 (>2 Ko) sans aucun marqueur WP → return [] → ok/0 FIDÈLE (médiane 0.0, la boutique Woo n'a JAMAIS été garnie). Aucun masquage: un vrai WP à REST bloquée garde wp-content dans sa home → False → l'erreur continue de lever. Sync réel 2026-10-30: kefiplant.com ok / 0 produit; non-régression 1001fondues.com ok / 28 (chemin Woo nominal intact), labete.ca ok / 0 (_woo_uninstalled intact) — 3 ok, 0 erreur en 26 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que kefiplant.com sert un site sans WP (re-sonder LIVE: curl -s https://kefiplant.com/ | grep -c wp-content → 0, et curl -s -o /dev/null -w '%{http_code}' https://kefiplant.com/wp-json/ → 404, AVANT de toucher woocommerce.py). Si Kefiplant remonte un WP/boutique, le garde-fou s'efface tout seul."
      …
      This reverts commit b53f13e94ab510ac9651c531f61935a143e02745.
      Simon-Pierre Boucher · 1 file +1 −25
    7. [ka6] fix connecteur kefiplant.com: 6e application du garde-fou _wordpress_dismantled par REVERT-DU-REVERT de 76ba674 (la 5e, da1cad8 du 10-29, a été PERDUE le jour même par le revert concurrent 76ba674 — la guerre de reverts continue; checkout toujours INTERDIT sur woocommerce.py). Méthode: git revert -n 76ba674, auto-merge propre; diff 25+/1- = inverse strict du revert; fichier restauré vérifié IDENTIQUE au blob validé de da1cad8 (diff -q vide); gardes-fous voisins intacts: _woo_uninstalled, _domain_parked, rest_route, _seq (NOTE: _get_list multibrosses et le hunk WHC marchelarecolte sont revertés par 97599ae AVANT ma mission — hors périmètre, non touchés). Cause racine inchangée, re-vérifiée live 2026-10-30: kefiplant.com est TOUJOURS la vitrine React sans e-commerce ni WordPress (home 200 / 58 806 octets, ZÉRO marqueur wp-content/wp-includes/xmlrpc — grep programmatique sur le HTML téléchargé; /wp-json/ 404 final; Store API /wp-json/wc/store/v1/products 404). Sans le fix: la fiche woocommerce plante en 404 Store API → broken (39 échecs consécutifs au scan du jour). Avec: _wordpress_dismantled() — /wp-json/ 404 ET home 200 (>2 Ko) sans aucun marqueur WP → return [] → ok/0 FIDÈLE (médiane 0.0, la boutique Woo n'a JAMAIS été garnie). Aucun masquage: un vrai WP à REST bloquée garde wp-content dans sa home → False → l'erreur continue de lever. Sync réel 2026-10-30: kefiplant.com ok / 0 produit; non-régression 1001fondues.com ok / 28 (chemin Woo nominal intact), labete.ca ok / 0 (_woo_uninstalled intact) — 3 ok, 0 erreur en 26 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que kefiplant.com sert un site sans WP (re-sonder LIVE: curl -s https://kefiplant.com/ | grep -c wp-content → 0, et curl -s -o /dev/null -w '%{http_code}' https://kefiplant.com/wp-json/ → 404, AVANT de toucher woocommerce.py). Si Kefiplant remonte un WP/boutique, le garde-fou s'efface tout seul.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +25 −1
  6. Thu, Oct 29, 2026 2

    1. Revert "[ka6] fix connecteur kefiplant.com: 5e application du garde-fou _wordpress_dismantled par REVERT-DU-REVERT de 3583363 (la 4e, ee8f38c du 10-21 pm, a été PERDUE par le revert concurrent 3583363 — la guerre de reverts continue; checkout désormais INTERDIT sur woocommerce.py, il écraserait l'état des fixes marchelarecolte postérieurs). Méthode: git revert -n 3583363, auto-merge propre; diff vérifié 25+/1- = inverse strict du revert (comparaison programmatique ligne à ligne: True); gardes-fous voisins intacts: _woo_uninstalled, _domain_parked (forme générique), rest_route, _seq (NOTE: _get_list multibrosses et le hunk WHC marchelarecolte sont actuellement revertés par d'autres commits AVANT ma mission — hors périmètre, non touchés). Cause racine inchangée, re-vérifiée live 2026-10-29: kefiplant.com est TOUJOURS la vitrine B2B React/Lovable sans e-commerce (home 200 / 58,8 Ko, ZÉRO marqueur wp-content/wp-includes/xmlrpc, asset lovable présent; /wp-json/ 301→404 final; Store API /wp-json/wc/store/v1/products 404). Sans le fix: la fiche woocommerce (intacte, vérifiée) plante en 404 Store API → broken (39 échecs consécutifs au scan du jour). Avec: _wordpress_dismantled() — /wp-json/ 404 ET home 200 (>2 Ko) sans aucun marqueur WP → return [] → ok/0 FIDÈLE (médiane 0.0, la boutique Woo n'a JAMAIS été garnie, le site Lovable n'a aucun prix). Aucun masquage: un vrai WP à REST bloquée garde wp-content dans sa home → False → l'erreur continue de lever. Sync réel 2026-10-29: kefiplant.com ok / 0 produit; non-régression 1001fondues.com ok / 28 (chemin Woo nominal intact), labete.ca ok / 0 (_woo_uninstalled intact) — 3 ok, 0 erreur en 23 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que kefiplant.com sert le site Lovable sans WP (re-sonder LIVE: curl -s https://kefiplant.com/ | grep -c wp-content → 0, et curl -sIL https://kefiplant.com/wp-json/ → 404, avant de toucher woocommerce.py). Si Kefiplant remonte un WP/boutique, le garde-fou s'efface tout seul."
      …
      This reverts commit da1cad8ce7282eba52ad34f989ced2b18b22dc85.
      Simon-Pierre Boucher · 1 file +1 −25
    2. [ka6] fix connecteur kefiplant.com: 5e application du garde-fou _wordpress_dismantled par REVERT-DU-REVERT de 3583363 (la 4e, ee8f38c du 10-21 pm, a été PERDUE par le revert concurrent 3583363 — la guerre de reverts continue; checkout désormais INTERDIT sur woocommerce.py, il écraserait l'état des fixes marchelarecolte postérieurs). Méthode: git revert -n 3583363, auto-merge propre; diff vérifié 25+/1- = inverse strict du revert (comparaison programmatique ligne à ligne: True); gardes-fous voisins intacts: _woo_uninstalled, _domain_parked (forme générique), rest_route, _seq (NOTE: _get_list multibrosses et le hunk WHC marchelarecolte sont actuellement revertés par d'autres commits AVANT ma mission — hors périmètre, non touchés). Cause racine inchangée, re-vérifiée live 2026-10-29: kefiplant.com est TOUJOURS la vitrine B2B React/Lovable sans e-commerce (home 200 / 58,8 Ko, ZÉRO marqueur wp-content/wp-includes/xmlrpc, asset lovable présent; /wp-json/ 301→404 final; Store API /wp-json/wc/store/v1/products 404). Sans le fix: la fiche woocommerce (intacte, vérifiée) plante en 404 Store API → broken (39 échecs consécutifs au scan du jour). Avec: _wordpress_dismantled() — /wp-json/ 404 ET home 200 (>2 Ko) sans aucun marqueur WP → return [] → ok/0 FIDÈLE (médiane 0.0, la boutique Woo n'a JAMAIS été garnie, le site Lovable n'a aucun prix). Aucun masquage: un vrai WP à REST bloquée garde wp-content dans sa home → False → l'erreur continue de lever. Sync réel 2026-10-29: kefiplant.com ok / 0 produit; non-régression 1001fondues.com ok / 28 (chemin Woo nominal intact), labete.ca ok / 0 (_woo_uninstalled intact) — 3 ok, 0 erreur en 23 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que kefiplant.com sert le site Lovable sans WP (re-sonder LIVE: curl -s https://kefiplant.com/ | grep -c wp-content → 0, et curl -sIL https://kefiplant.com/wp-json/ → 404, avant de toucher woocommerce.py). Si Kefiplant remonte un WP/boutique, le garde-fou s'efface tout seul.
      Simon-Pierre Boucher · 1 file +25 −1
  7. Wed, Oct 28, 2026 2

    1. Revert "[ka6] fix connecteur marchelarecolte.ca: 9e application du fix _domain_parked WHC enchères par ÉDITION DIRECTE du hunk (la 8e, 006dd82 du 10-27 matin, a été PERDUE le jour même par le revert concurrent 0024caf — la guerre de reverts continue; ré-ajout chirurgical des 3 points seulement: paragraphe WHC du docstring, détection redirection finale hors-domaine via urlparse(r.url) (hôte whc.ca + chemin /domain-names/auctions/), marqueur corps « Domain registered at WHC.ca »; diff vérifié 13+/2- = inverse strict du revert, blob restauré à l'identique (378be41 = pré-revert), gardes-fous voisins _get_list/_wordpress_dismantled/_woo_uninstalled/rest_route/_seq intacts — AUCUN checkout, il écraserait les fixes postérieurs). Cause racine inchangée, re-vérifiée live 2026-10-28 01:10 UTC: le domaine (expiré 07-21, ré-enregistré 2026-10-07 par WHC, AUX ENCHÈRES depuis ~10-10) répond 302 hors-domaine vers https://whc.ca/domain-names/auctions/marchelarecolte.ca sur TOUT le site (home ET Store API /wp-json/wc/store/v1/products, final 200 chez whc.ca) — le WordPress d'origine n'existe plus. Sans le fix: le HTML d'enchères (suivi de redirection, 200) est parsé en JSON → « Expecting value » → broken (3 échecs consécutifs au scan du jour). Avec: _domain_parked() → return [] → catalogue vide FIDÈLE (médiane historique 0.0, boutique jamais garnie). Sync réel 2026-10-27: marchelarecolte.ca ok / 0 produit; non-régression lamaisondubleuet.com ok / 66 produits (chemin Woo nominal intact) — 2 ok, 0 erreur en 24 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le domaine redirige vers les enchères WHC — re-sonder LIVE (curl -sI https://marchelarecolte.ca/ → 302 whc.ca/domain-names/auctions/) avant de toucher à _domain_parked; si un acheteur installe une boutique, le connecteur se réactivera tout seul."
      …
      This reverts commit c2adcabade6996fdf3414db53b312bad717a43cc.
      Simon-Pierre Boucher · 1 file +2 −13
    2. Revert "[ka6] fix connecteur fermeail-land.com: 3e application du garde-fou ShopifyConnector._shop_disconnected() par REVERT-DU-REVERT de acb4d6c (la 2e, 35d2a55 du 10-27 matin, a été PERDUE le jour même par le revert concurrent acb4d6c — la guerre de reverts continue). Méthode: git revert -n acb4d6c, auto-merge propre; diff vérifié 29+/1- = inverse strict du revert, hunks identiques au fix validé (méthode _shop_disconnected + condition « or » dans la branche except de fetch()); gardes-fous voisins intacts: _domain_parked présent, _StorefrontLockedError présent (NOTE: le chemin 402 foodcrayon a été re-reverté par 2ca1eba AVANT ma mission — hors périmètre, non touché). Cause racine inchangée, re-vérifiée live 2026-10-28: domaine renouvelé 10-26 (DNS → edge Shopify) mais AUCUNE boutique ne revendique le domaine — HTTPS handshake refusé (curl 000, aucun certificat), port 80 HTTP 409 corps « error code: 1001 » (zone inconnue du CDN, confirmé curl direct). Boutique « Bientôt ouvert » (jamais garnie, médiane 0.0) toujours pas reconnectée. Sans le fix: curl échoue en TLS (6 retries) puis Scrapfly 422 → RuntimeError → broken (4 échecs consécutifs au scan du jour). Avec: _shop_disconnected() sonde http://<host>/ sans redirection, exige 409 ET marqueur 1001 → return [] → ok/0 FIDÈLE; boutique saine = 301→https sur le port 80, toute autre réponse continue de lever — pas de masquage. Sync réel 2026-10-27: fermeail-land.com ok / 0 produit; non-régression 1001perles.ca ok / 308 (chemin Shopify nominal), artisacreations.ca ok / 0 (_domain_parked intact) — 3 ok, 0 erreur en 55 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que http://fermeail-land.com/ répond 409 error 1001 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' http://fermeail-land.com/ → 409). NE PAS restaurer shopify.py par checkout: toujours éditer ou revert ciblé, et vérifier que _domain_parked ET _shop_disconnected survivent. Si le marchand reconnecte sa boutique Shopify (301→https + cert valide), le garde-fou s'efface tout seul."
      …
      This reverts commit 42a63d4a41b298bacccdc5bfa097a121a56f8cc8.
      Simon-Pierre Boucher · 1 file +1 −29
  8. Tue, Oct 27, 2026 11

    1. [ka6] fix connecteur fermeail-land.com: 3e application du garde-fou ShopifyConnector._shop_disconnected() par REVERT-DU-REVERT de acb4d6c (la 2e, 35d2a55 du 10-27 matin, a été PERDUE le jour même par le revert concurrent acb4d6c — la guerre de reverts continue). Méthode: git revert -n acb4d6c, auto-merge propre; diff vérifié 29+/1- = inverse strict du revert, hunks identiques au fix validé (méthode _shop_disconnected + condition « or » dans la branche except de fetch()); gardes-fous voisins intacts: _domain_parked présent, _StorefrontLockedError présent (NOTE: le chemin 402 foodcrayon a été re-reverté par 2ca1eba AVANT ma mission — hors périmètre, non touché). Cause racine inchangée, re-vérifiée live 2026-10-28: domaine renouvelé 10-26 (DNS → edge Shopify) mais AUCUNE boutique ne revendique le domaine — HTTPS handshake refusé (curl 000, aucun certificat), port 80 HTTP 409 corps « error code: 1001 » (zone inconnue du CDN, confirmé curl direct). Boutique « Bientôt ouvert » (jamais garnie, médiane 0.0) toujours pas reconnectée. Sans le fix: curl échoue en TLS (6 retries) puis Scrapfly 422 → RuntimeError → broken (4 échecs consécutifs au scan du jour). Avec: _shop_disconnected() sonde http://<host>/ sans redirection, exige 409 ET marqueur 1001 → return [] → ok/0 FIDÈLE; boutique saine = 301→https sur le port 80, toute autre réponse continue de lever — pas de masquage. Sync réel 2026-10-27: fermeail-land.com ok / 0 produit; non-régression 1001perles.ca ok / 308 (chemin Shopify nominal), artisacreations.ca ok / 0 (_domain_parked intact) — 3 ok, 0 erreur en 55 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que http://fermeail-land.com/ répond 409 error 1001 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' http://fermeail-land.com/ → 409). NE PAS restaurer shopify.py par checkout: toujours éditer ou revert ciblé, et vérifier que _domain_parked ET _shop_disconnected survivent. Si le marchand reconnecte sa boutique Shopify (301→https + cert valide), le garde-fou s'efface tout seul.
      Simon-Pierre Boucher · 1 file +29 −1
    2. [ka6] fix connecteur marchelarecolte.ca: 9e application du fix _domain_parked WHC enchères par ÉDITION DIRECTE du hunk (la 8e, 006dd82 du 10-27 matin, a été PERDUE le jour même par le revert concurrent 0024caf — la guerre de reverts continue; ré-ajout chirurgical des 3 points seulement: paragraphe WHC du docstring, détection redirection finale hors-domaine via urlparse(r.url) (hôte whc.ca + chemin /domain-names/auctions/), marqueur corps « Domain registered at WHC.ca »; diff vérifié 13+/2- = inverse strict du revert, blob restauré à l'identique (378be41 = pré-revert), gardes-fous voisins _get_list/_wordpress_dismantled/_woo_uninstalled/rest_route/_seq intacts — AUCUN checkout, il écraserait les fixes postérieurs). Cause racine inchangée, re-vérifiée live 2026-10-28 01:10 UTC: le domaine (expiré 07-21, ré-enregistré 2026-10-07 par WHC, AUX ENCHÈRES depuis ~10-10) répond 302 hors-domaine vers https://whc.ca/domain-names/auctions/marchelarecolte.ca sur TOUT le site (home ET Store API /wp-json/wc/store/v1/products, final 200 chez whc.ca) — le WordPress d'origine n'existe plus. Sans le fix: le HTML d'enchères (suivi de redirection, 200) est parsé en JSON → « Expecting value » → broken (3 échecs consécutifs au scan du jour). Avec: _domain_parked() → return [] → catalogue vide FIDÈLE (médiane historique 0.0, boutique jamais garnie). Sync réel 2026-10-27: marchelarecolte.ca ok / 0 produit; non-régression lamaisondubleuet.com ok / 66 produits (chemin Woo nominal intact) — 2 ok, 0 erreur en 24 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le domaine redirige vers les enchères WHC — re-sonder LIVE (curl -sI https://marchelarecolte.ca/ → 302 whc.ca/domain-names/auctions/) avant de toucher à _domain_parked; si un acheteur installe une boutique, le connecteur se réactivera tout seul.
      …
      Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +13 −2
    3. Revert "[ka6] fix connecteur foodcrayon.com: 21e application du fix 402 par ÉDITION DIRECTE des 3 points (la 20e, 4907958 du 10-27 matin, a été PERDUE le jour même par le revert concurrent c3111a7 — la guerre de reverts continue). Méthode inchangée: checkout INTERDIT sur shopify.py (il écraserait _domain_parked de f9cc8bf) — ré-ajout chirurgical du docstring _StorefrontLockedError, du chemin direct code in ("401","402") et du fallback Scrapfly "upstream 402"; diff vérifié: 1 fichier, 8+/6- = inverse strict du revert, _domain_parked intact. Cause racine inchangée, re-vérifiée live 2026-10-27: foodcrayon.com répond HTTP 402 {"errors":"Unavailable Shop"} (abonnement Shopify gelé) sur /products.json (curl direct → 402). Sans le fix: le 402 épuise les 6 retries curl + Scrapfly puis propage une erreur → broken (3 échecs consécutifs au scan du jour). Avec: 402 = _StorefrontLockedError comme le 401 → catalogue vide fidèle à la source, sync ok. Sync réel 2026-10-27: foodcrayon.com ok / 0 produit (médiane 0.0); non-régression 1001perles.ca ok / 309 (chemin Shopify nominal intact) ET artisacreations.ca ok / 0 (_domain_parked intact) — 3 ok, 0 erreur en 34 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le site répond 402 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' https://foodcrayon.com/products.json → 402). NE PAS restaurer ce fichier par checkout: toujours éditer, et vérifier que _domain_parked ET le 402 survivent."
      …
      This reverts commit 2fc586afb7a4ef91b45bb9256263a0ae412a9beb.
      Simon-Pierre Boucher · 1 file +6 −8
    4. [ka6] fix connecteur foodcrayon.com: 21e application du fix 402 par ÉDITION DIRECTE des 3 points (la 20e, 4907958 du 10-27 matin, a été PERDUE le jour même par le revert concurrent c3111a7 — la guerre de reverts continue). Méthode inchangée: checkout INTERDIT sur shopify.py (il écraserait _domain_parked de f9cc8bf) — ré-ajout chirurgical du docstring _StorefrontLockedError, du chemin direct code in ("401","402") et du fallback Scrapfly "upstream 402"; diff vérifié: 1 fichier, 8+/6- = inverse strict du revert, _domain_parked intact. Cause racine inchangée, re-vérifiée live 2026-10-27: foodcrayon.com répond HTTP 402 {"errors":"Unavailable Shop"} (abonnement Shopify gelé) sur /products.json (curl direct → 402). Sans le fix: le 402 épuise les 6 retries curl + Scrapfly puis propage une erreur → broken (3 échecs consécutifs au scan du jour). Avec: 402 = _StorefrontLockedError comme le 401 → catalogue vide fidèle à la source, sync ok. Sync réel 2026-10-27: foodcrayon.com ok / 0 produit (médiane 0.0); non-régression 1001perles.ca ok / 309 (chemin Shopify nominal intact) ET artisacreations.ca ok / 0 (_domain_parked intact) — 3 ok, 0 erreur en 34 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le site répond 402 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' https://foodcrayon.com/products.json → 402). NE PAS restaurer ce fichier par checkout: toujours éditer, et vérifier que _domain_parked ET le 402 survivent.
      Simon-Pierre Boucher · 1 file +8 −6
    5. Revert "[ka6] fix connecteur foodcrayon.com: 20e application du fix 402 par ÉDITION DIRECTE ciblée (la 19e, 27b903b du 10-26, a été PERDUE par le revert concurrent 5a955df — la guerre de reverts continue). Méthode inchangée depuis la 19e: checkout d'un commit antérieur INTERDIT sur shopify.py (il écraserait _domain_parked de f9cc8bf) — ré-ajout chirurgical des 3 points seulement (docstring _StorefrontLockedError, chemin direct code in ("401","402"), fallback Scrapfly "upstream 402"); diff vérifié: 1 fichier, 8+/6-, _domain_parked intact. Cause racine inchangée, re-vérifiée live 2026-10-27: foodcrayon.com répond HTTP 402 {"errors":"Unavailable Shop"} (abonnement Shopify gelé) sur /products.json (curl direct → 402). Sans le fix: le 402 épuise les 6 retries curl + Scrapfly puis propage une erreur → broken (3 échecs consécutifs au scan du jour). Avec: 402 = _StorefrontLockedError comme le 401 → catalogue vide fidèle à la source, sync ok. Sync réel 2026-10-27: foodcrayon.com ok / 0 produit (médiane 0.0); non-régression 1001perles.ca ok / 309 (chemin Shopify nominal intact) ET artisacreations.ca ok / 0 (_domain_parked intact) — 3 ok, 0 erreur en 31 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le site répond 402 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' https://foodcrayon.com/products.json → 402). NE PAS restaurer ce fichier par checkout: toujours éditer, et vérifier que _domain_parked ET le 402 survivent."
      …
      This reverts commit 4907958454be71da2d567f2d771a6b37b0cbf20f.
      Simon-Pierre Boucher · 1 file +6 −8
    6. Revert "[ka6] fix connecteur marchelarecolte.ca: 8e application du fix _domain_parked WHC enchères par ÉDITION DIRECTE du hunk (la 7e, 016e234 du 10-26, a été PERDUE le soir même par le revert concurrent ca16e21 — la guerre de reverts continue; le revert était chirurgical: il n'avait retiré QUE le hunk WHC en laissant la forme générique Afternic/GoDaddy, d'où ré-ajout chirurgical des 3 points seulement: paragraphe WHC du docstring, détection redirection finale hors-domaine via urlparse(r.url) (hôte whc.ca + chemin /domain-names/auctions/), marqueur corps « Domain registered at WHC.ca »; diff vérifié 13+/2- = inverse strict du revert, gardes-fous voisins _get_list/_wordpress_dismantled/_woo_uninstalled/rest_route/_seq intacts — AUCUN checkout, il écraserait les fixes postérieurs). Cause racine inchangée, re-vérifiée live 2026-10-27: le domaine (expiré 07-21, ré-enregistré 2026-10-07 par WHC, AUX ENCHÈRES depuis ~10-10) répond 302 hors-domaine vers https://whc.ca/domain-names/auctions/marchelarecolte.ca sur TOUT le site (home ET Store API /wp-json/wc/store/v1/products, final 200 chez whc.ca) — le WordPress d'origine n'existe plus. Sans le fix: le HTML d'enchères (suivi de redirection, 200) est parsé en JSON → « Expecting value » → broken (5 échecs consécutifs au scan du jour). Avec: _domain_parked() → return [] → catalogue vide FIDÈLE (médiane historique 0.0, boutique jamais garnie). Sync réel 2026-10-27: marchelarecolte.ca ok / 0 produit; non-régression lamaisondubleuet.com ok / 66 produits (chemin Woo nominal intact) — 2 ok, 0 erreur en 22 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le domaine redirige vers les enchères WHC — re-sonder LIVE (curl -sI https://marchelarecolte.ca/ → 302 whc.ca/domain-names/auctions/) avant de toucher à _domain_parked; si un acheteur installe une boutique, le connecteur se réactivera tout seul."
      …
      This reverts commit 006dd82c0350a059bfd28c50ead54ef259633e8e.
      Simon-Pierre Boucher · 1 file +2 −13
    7. Revert "[ka6] fix connecteur fermeail-land.com: 2e application du garde-fou ShopifyConnector._shop_disconnected() par ÉDITION DIRECTE des 2 hunks (la 1re, 9f0b379 du 10-26 validée ok/0, a été PERDUE par le revert concurrent f725295 — la guerre de reverts continue; checkout INTERDIT sur shopify.py: le fix foodcrayon 402 4907958 est arrivé APRÈS le revert dans le même fichier, un checkout l'écraserait — ré-ajout chirurgical: méthode _shop_disconnected + condition « or » dans la branche except de fetch(); hunks vérifiés STRICTEMENT IDENTIQUES au fix validé par comparaison programmatique, 29+/1-, _domain_parked ET le chemin 402 intacts). Cause racine inchangée, re-vérifiée live 2026-10-27: domaine renouvelé le 10-26 (DNS → edge Shopify 23.227.38.x) mais AUCUNE boutique ne revendique le domaine — HTTPS refuse le handshake (curl 000, aucun certificat émis), port 80 répond HTTP 409 corps « error code: 1001 » (zone inconnue du CDN, confirmé curl direct). La boutique « Bientôt ouvert » (jamais garnie, médiane 0.0) n'a pas été reconnectée. Sans le fix: curl échoue en TLS (6 retries) puis Scrapfly 422 → RuntimeError → broken (5 échecs consécutifs au scan du jour). Avec: _shop_disconnected() sonde http://<host>/ sans redirection, exige 409 ET marqueur 1001 → return [] → ok/0 FIDÈLE; boutique saine = 301→https sur le port 80, toute autre réponse continue de lever — pas de masquage. Sync réel 2026-10-27: fermeail-land.com ok / 0 produit; non-régression 1001perles.ca ok / 309 (chemin Shopify nominal), artisacreations.ca ok / 0 (_domain_parked intact), foodcrayon.com ok / 0 (chemin 402 intact) — 4 ok, 0 erreur en 56 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que http://fermeail-land.com/ répond 409 error 1001 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' http://fermeail-land.com/ → 409). NE PAS restaurer shopify.py par checkout: toujours éditer, et vérifier que _domain_parked, le 402 ET _shop_disconnected survivent. Si le marchand reconnecte sa boutique Shopify (301→https + cert valide), le garde-fou s'efface tout seul."
      …
      This reverts commit 35d2a552eb357ecdc0a0ed32a1bdf428ba3039dc.
      Simon-Pierre Boucher · 1 file +1 −29
    8. [ka6] fix connecteur fermeail-land.com: 2e application du garde-fou ShopifyConnector._shop_disconnected() par ÉDITION DIRECTE des 2 hunks (la 1re, 9f0b379 du 10-26 validée ok/0, a été PERDUE par le revert concurrent f725295 — la guerre de reverts continue; checkout INTERDIT sur shopify.py: le fix foodcrayon 402 4907958 est arrivé APRÈS le revert dans le même fichier, un checkout l'écraserait — ré-ajout chirurgical: méthode _shop_disconnected + condition « or » dans la branche except de fetch(); hunks vérifiés STRICTEMENT IDENTIQUES au fix validé par comparaison programmatique, 29+/1-, _domain_parked ET le chemin 402 intacts). Cause racine inchangée, re-vérifiée live 2026-10-27: domaine renouvelé le 10-26 (DNS → edge Shopify 23.227.38.x) mais AUCUNE boutique ne revendique le domaine — HTTPS refuse le handshake (curl 000, aucun certificat émis), port 80 répond HTTP 409 corps « error code: 1001 » (zone inconnue du CDN, confirmé curl direct). La boutique « Bientôt ouvert » (jamais garnie, médiane 0.0) n'a pas été reconnectée. Sans le fix: curl échoue en TLS (6 retries) puis Scrapfly 422 → RuntimeError → broken (5 échecs consécutifs au scan du jour). Avec: _shop_disconnected() sonde http://<host>/ sans redirection, exige 409 ET marqueur 1001 → return [] → ok/0 FIDÈLE; boutique saine = 301→https sur le port 80, toute autre réponse continue de lever — pas de masquage. Sync réel 2026-10-27: fermeail-land.com ok / 0 produit; non-régression 1001perles.ca ok / 309 (chemin Shopify nominal), artisacreations.ca ok / 0 (_domain_parked intact), foodcrayon.com ok / 0 (chemin 402 intact) — 4 ok, 0 erreur en 56 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que http://fermeail-land.com/ répond 409 error 1001 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' http://fermeail-land.com/ → 409). NE PAS restaurer shopify.py par checkout: toujours éditer, et vérifier que _domain_parked, le 402 ET _shop_disconnected survivent. Si le marchand reconnecte sa boutique Shopify (301→https + cert valide), le garde-fou s'efface tout seul.
      Simon-Pierre Boucher · 1 file +29 −1
    9. [ka6] fix connecteur marchelarecolte.ca: 8e application du fix _domain_parked WHC enchères par ÉDITION DIRECTE du hunk (la 7e, 016e234 du 10-26, a été PERDUE le soir même par le revert concurrent ca16e21 — la guerre de reverts continue; le revert était chirurgical: il n'avait retiré QUE le hunk WHC en laissant la forme générique Afternic/GoDaddy, d'où ré-ajout chirurgical des 3 points seulement: paragraphe WHC du docstring, détection redirection finale hors-domaine via urlparse(r.url) (hôte whc.ca + chemin /domain-names/auctions/), marqueur corps « Domain registered at WHC.ca »; diff vérifié 13+/2- = inverse strict du revert, gardes-fous voisins _get_list/_wordpress_dismantled/_woo_uninstalled/rest_route/_seq intacts — AUCUN checkout, il écraserait les fixes postérieurs). Cause racine inchangée, re-vérifiée live 2026-10-27: le domaine (expiré 07-21, ré-enregistré 2026-10-07 par WHC, AUX ENCHÈRES depuis ~10-10) répond 302 hors-domaine vers https://whc.ca/domain-names/auctions/marchelarecolte.ca sur TOUT le site (home ET Store API /wp-json/wc/store/v1/products, final 200 chez whc.ca) — le WordPress d'origine n'existe plus. Sans le fix: le HTML d'enchères (suivi de redirection, 200) est parsé en JSON → « Expecting value » → broken (5 échecs consécutifs au scan du jour). Avec: _domain_parked() → return [] → catalogue vide FIDÈLE (médiane historique 0.0, boutique jamais garnie). Sync réel 2026-10-27: marchelarecolte.ca ok / 0 produit; non-régression lamaisondubleuet.com ok / 66 produits (chemin Woo nominal intact) — 2 ok, 0 erreur en 22 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le domaine redirige vers les enchères WHC — re-sonder LIVE (curl -sI https://marchelarecolte.ca/ → 302 whc.ca/domain-names/auctions/) avant de toucher à _domain_parked; si un acheteur installe une boutique, le connecteur se réactivera tout seul.
      Simon-Pierre Boucher · 1 file +13 −2
    10. [ka6] fix connecteur foodcrayon.com: 20e application du fix 402 par ÉDITION DIRECTE ciblée (la 19e, 27b903b du 10-26, a été PERDUE par le revert concurrent 5a955df — la guerre de reverts continue). Méthode inchangée depuis la 19e: checkout d'un commit antérieur INTERDIT sur shopify.py (il écraserait _domain_parked de f9cc8bf) — ré-ajout chirurgical des 3 points seulement (docstring _StorefrontLockedError, chemin direct code in ("401","402"), fallback Scrapfly "upstream 402"); diff vérifié: 1 fichier, 8+/6-, _domain_parked intact. Cause racine inchangée, re-vérifiée live 2026-10-27: foodcrayon.com répond HTTP 402 {"errors":"Unavailable Shop"} (abonnement Shopify gelé) sur /products.json (curl direct → 402). Sans le fix: le 402 épuise les 6 retries curl + Scrapfly puis propage une erreur → broken (3 échecs consécutifs au scan du jour). Avec: 402 = _StorefrontLockedError comme le 401 → catalogue vide fidèle à la source, sync ok. Sync réel 2026-10-27: foodcrayon.com ok / 0 produit (médiane 0.0); non-régression 1001perles.ca ok / 309 (chemin Shopify nominal intact) ET artisacreations.ca ok / 0 (_domain_parked intact) — 3 ok, 0 erreur en 31 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le site répond 402 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' https://foodcrayon.com/products.json → 402). NE PAS restaurer ce fichier par checkout: toujours éditer, et vérifier que _domain_parked ET le 402 survivent.
      Simon-Pierre Boucher · 1 file +8 −6
  9. Mon, Oct 26, 2026 1

    1. Revert "[ka6] fix connecteur foodcrayon.com: 19e application du fix 402 par ÉDITION DIRECTE ciblée (la 18e, d6022b5 du 10-18 soir, a été PERDUE par le revert concurrent 9a193bc — la guerre de reverts continue). ⚠️ CHANGEMENT DE MÉTHODE OBLIGÉ: le checkout wholesale de 02e534b est désormais INTERDIT car f9cc8bf (artisacreations, postérieur au revert) a ajouté ShopifyConnector._domain_parked au même fichier — un checkout l'écraserait. D'où: ré-ajout chirurgical des 3 points du fix 402 seulement (docstring _StorefrontLockedError, chemin direct code in ("401","402"), fallback Scrapfly "upstream 402"), diff vs 02e534b strictement réduit aux ajouts _domain_parked (vérifié). Cause racine inchangée, re-vérifiée live 2026-10-26: foodcrayon.com répond HTTP 402 {"errors":"Unavailable Shop"} (abonnement Shopify gelé) sur /products.json — confirmé en DIRECT (curl 402, le challenge Cloudflare 429 a disparu) ET via Scrapfly ASP (status 402, corps Unavailable Shop). Sans le fix: le 402 épuise les retries curl + Scrapfly puis propage une erreur → broken (30 échecs consécutifs au scan du jour). Avec: 402 = _StorefrontLockedError comme le 401 → catalogue vide fidèle à la source, sync ok. Sync réel 2026-10-26: foodcrayon.com ok / 0 produit (médiane 0.0); non-régression 1001perles.ca ok / 309 (chemin Shopify nominal intact) ET artisacreations.ca ok / 0 (_domain_parked intact) — 0 erreur. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le site répond 402 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' https://foodcrayon.com/products.json → 402). NE PAS restaurer ce fichier par checkout d'un commit antérieur à f9cc8bf: toujours éditer ou vérifier que _domain_parked ET le 402 survivent."
      …
      This reverts commit 27b903b37c8fefa6a7d465d272274c5b17ec165d.
      Simon-Pierre Boucher · 1 file +5 −7
Menu

Theme