curl/npm sous Node 24, matrice concurrence. Liens : accueil, blog, aide ; voir LaunchDarkly × OpenClaw et bundle & shallow.
Trois frictions qui cassent l'intégration builds.sr.ht ↔ Mac distant si on les néglige
~/.npm et perturbent la fusion gateway status.doctor sous version antérieure masque des erreurs de config validate.Node 24 et OpenClaw : scripts officiels curl et npm avant toute écoute webhook
Ancrez la majoration 24.x via l'archive nodejs.org, puis installez OpenClaw en global ; séparer runtime et CLI clarifie les audits multi-pools.
Option A — archive officielle (darwin arm64, exemple de version) :
VER="v24.5.0"
curl -fsSL "https://nodejs.org/dist/${VER}/node-${VER}-darwin-arm64.tar.xz" -o node.txz
tar -xJf node.txz
export PATH="$PWD/node-${VER}-darwin-arm64/bin:$PATH"
node -v # attendu : v24.x.x
Option B — ligne npm documentée (après Node 24 actif) :
npm install -g openclaw@2026.5.x
command -v openclaw
openclaw --version
Contrôlez systématiquement node -v dans le même shell que le handler launchd ; un décalage mineur suffit à invalider la chaîne doctor → config validate → gateway status décrite plus bas.
Matrice décisionnelle : images builds.sr.ht concurrentes, politique de retry Git et garde-fous disque
Chaque ligne propose un compromis pour un hôte unique avant d'augmenter le parallélisme YAML.
| Images / tâches concurrentes | Politique Git fetch / clone | Seuil disque (APFS) & action |
|---|---|---|
| 1 tâche sr.ht sérialisée par Mac | Backoff 2 / 4 / 8 s, trois essais maximum | Alerte si df -h > 78 % sur volume de travail : stopper prefetch |
| 2 tâches avec caches npm disjoints | Retry + miroir interne documenté | Seuil 85 % : purge ciblée npm cache par job |
| > 2 tâches partageant ~/.npm | Interdit sans file d'attente externe | Risque > 90 % : annuler et renvoyer synthèse « disque critique » |
La troisième ligne interdit le partage naïf de ~/.npm ; voir aussi bundle & shallow.
Check-list opératoire : webhook builds.sr.ht → prefetch → fusion JSON → retour CI
Ordre strict pour livrer un JSON unique à la CI, même si le prefetch échoue partiellement.
- Déclarer dans
builds.sr.htune URL HTTPS, secret d'en-tête, logs redacted du SHA. - Router le POST vers un script signé qui vérifie la charge locale.
- Cloner shallow validé,
npm cioupnpm fetch, puisgit diff --exit-code package-lock.json. - Fusionner webhook + OpenClaw dans un JSON (bloc suivant).
- Poster avec
curl -fsS -H "Content-Type: application/json"vers l'URL d'artefact documentée. - Archiver le JSON horodaté sans jeton brut.
Chaîne d'acceptation OpenClaw : doctor, config validate et gateway status en série contrôlée
Après prefetch, exécutez les trois commandes dans l'ordre ; toute anomalie enrichit le JSON plutôt que masquer l'étape suivante.
openclaw doctor --json > /tmp/oc-doctor.json
openclaw config validate --json > /tmp/oc-validate.json
openclaw gateway status --json > /tmp/oc-gateway.json
jq -n \
--slurpfile d /tmp/oc-doctor.json \
--slurpfile v /tmp/oc-validate.json \
--slurpfile g /tmp/oc-gateway.json \
'{doctor:$d[0],validate:$v[0],gateway:$g[0],ts:now|todate}' \
> /tmp/openclaw-gate.json
Porte d'acceptation prête à coller : adaptez chemins temporaires et source du SHA payload.
Repères chiffrés et contractuels pour cahier des charges ou revue sécurité
Repères ateliers MacPull
- Trois retries Git en 2 / 4 / 8 s avant l'étiquette « réseau transitoire ».
- Seuil 78 % sur le volume npm ; au-delà de 90 %, JSON bloquant « disque critique ».
- Un JSON fusionné
doctor+validate+gateway, horodaté ISO8601.
FAQ opérationnelle : jetons, TLS et conflit sur le port 18789
echo dans les logs ; rotation trimestrielle recommandée.lsof -nP -iTCP:18789, stopper smokes ou OPENCLAW_GATEWAY_PORT libre.config validate ? Interdit si le JSON sert de preuve contractuelle.