Analyse statique · CI · synthèse PR · 2026

2026 OpenClaw front sur Mac distant :
fusionner ESLint JSON et Stylelint en un seul récit de porte, puis renvoyer un commentaire PR lisible

27.04.2026 Équipes front intégrant CI et résumés IA 9 min de lecture

Public : équipes front qui unifient CI et digest IA autour d’une porte lint unique. Mots-clés : OpenClaw, ESLint JSON, Stylelint, Mac distant, synthèse PR. Node 22+ et passerelle OpenClaw : ingérer deux JSON, appliquer seuils, renvoyer un Markdown lisible dans le fil. Liens : correctifs ESLint et Stylelint, tokens E2E, Playwright shard.

00 HowTo : fil reproductible de bout en bout

Frictions : 1) chemins absolus différents entre postes ; 2) deux commentaires PR qui divergent ; 3) prompts IA nourris par des schémas hétérogènes.

Même procédure sur poste local, CI et Mac distant :

  1. Node 22+ aligné ; engines dans package.json.
  2. ESLint JSON et Stylelint vers fichiers sous .openclaw/reports/, jamais TTY seul.
  3. CI envoie les JSON à OpenClaw avec GIT_SHA, PR_NUMBER, BASE_REF optionnel.
  4. Passerelle : fusion → pr_lint_gate_summary.md + code sortie + appel API Git.
  5. Jobs IA aval : lire uniquement le digest fusionné.

Journalisez commande et hash des JSON pour relecture distante.

01 Format de sortie local et CI unifié

Contrat explicite : pas de double comptage dans la synthèse PR. Retirez la racine du dépôt côté passerelle sur filePath ESLint et source Stylelint. Toujours -f json / --formatter json et -o fichier ; stdout libre.

Extrait package.json :

"lint:json:all": "mkdir -p .openclaw/reports && eslint . -f json -o .openclaw/reports/eslint.json && stylelint \"**/*.{css,scss}\" --formatter json -o .openclaw/reports/stylelint.json"

Même ligne sur portable et Mac distant loué.

Les équipes gagnent à figer une convention sous .openclaw/reports/, par exemple un dossier par SHA court : tickets, logs et synthèse PR partagent alors la même empreinte sans ambiguïté.

02 Agrégation côté passerelle et seuils

La passerelle fusionne ESLint JSON et Stylelint en lint_gate versionné (totaux, top règles, attribution outil) pour Markdown et machines.

Seuils : sévérité deux ESLint et erreurs Stylelint = bloquant ; budget d’avertissements en YAML par branche.

Matrice décisionnelle rapide :

Signal Deux commentaires séparés Digest unique passerelle
Lisibilité revue Fil long, risque de noyer l’équipe design. Un seul bloc avec totaux et top règles.
Porte CI plus IA Deux schémas JSON à aligner dans les prompts. Un schéma lint_gate stable pour OpenClaw.
Audit et rétention Corrélations manuelles entre outils. Artefacts nommés plus empreinte de fusion.

La passerelle OpenClaw transforme des JSON déjà produits ; le dépôt reste la référence pour les règles. Consignez dans « README.openclaw.md » les chemins d’artefacts et la commande exacte afin qu’un pair rejoue la fusion sur le Mac distant sans chemins implicites.

Extrait fusion (Node 22 ESM) :

const strip = (p) => p.startsWith(root) ? p.slice(root.length + 1) : p;
// parcourir eslint[] puis stylelint[], pousser { tool, file: strip(...), rule, sev }
await writeFile(".openclaw/reports/lint_gate.json", JSON.stringify(gate, null, 2));

Versionnez le schéma lint_gate ; complétez topRules côté passerelle OpenClaw.

03 Échecs, nouvelles tentatives et stratégie de troncature

Transport et quotas : backoff avec jitter depuis le Mac distant. Lint rouge : pas de boucle aveugle ; re-lancer seulement si JSON incomplet après crash.

Troncature : bornez fichiers par règle et lignes Markdown de synthèse PR ; une ligne « tronqué, voir artefacts CI » suffit.

Faits utiles à citer en revue :

  • Cent vingt lignes de prose de commentaire constituent souvent un plafond confortable avant saturation cognitive.
  • Quatre tentatives espacées suffisent en pratique pour absorber les erreurs transitoires sans masquer un quota API réel.
  • Réservez un code de sortie dédié pour « erreur fournisseur réessayable » afin de ne jamais confondre limitation réseau et arbre de lint réellement rouge.

Extrait — enveloppe shell bornée :

#!/usr/bin/env bash
set -euo pipefail
n=0
until node tools/post-pr-lint-summary.mjs; do
  c=$?; ((n++)); [[ $c -eq 77 ]] && [[ $n -lt 4 ]] || exit $c
  sleep $((2**n+RANDOM%3))
done

Code 77 = erreur fournisseur réessayable uniquement.

04 API de commentaires du fournisseur Git (sans URL privée derrière login)

REST « commentaire issue/PR » ou commentaires de revue sur diff ; jeton scope minimal côté passerelle.

Idempotence : marqueur HTML caché + mise à jour du même commentaire bot.

Sans URL privée : pas de preview derrière login dans le fil ; préférez référence job CI ou doc publique. POST JSON { "body": "…markdown…" } ; autres hôtes via adaptateur OpenClaw.

Synthèse

ESLint JSON + Stylelint + passerelle OpenClaw = une synthèse PR unique pour humains, CI et IA sur Mac distant homogène.

Pour poursuivre sur le site : accueil, centre d’aide et index du blog.

Apple Silicon · CI homogène

Exécutez la même porte lint OpenClaw sur un Mac distant dédié

Workers Node 22+ et fumées Safari : louez un Mac distant Apple Silicon. achat.html sans compte pour aligner OpenClaw, ESLint JSON et Stylelint.

Digest lint unique Automatisation commentaire PR Apple Silicon
Louer M4 — porte lint