c5c48dff53
- build-ios/build-android gataient sur `if: secrets.EAS_TOKEN != '' …` au niveau JOB, où le `secrets` context n'est pas garanti (GitHub Actions ne l'expose pas dans jobs.<id>.if ; act/Gitea = ambigu) → les builds pouvaient rester SKIP en silence le jour où Michel fournit un EAS_TOKEN valide. - Correctif = pattern canonique preflight-output : secret lu dans un step de preflight (secrets y est toujours dispo) → outputs booléens has_token/has_repo → gate consommé via needs.preflight.outputs.* (dispo en if: partout · portable GitHub ET Gitea/act). - Contrat observable inchangé (preflight vert + rapporte les secrets · builds SKIP sans token) → prose ci/README.md §Second workflow toujours exacte, 0 dérive doc. - Vérif : YAML valide · 0 secrets. restant dans un if: de job · needs:preflight conservé · 4 écritures $GITHUB_OUTPUT · aucun gate ne linte le workflow (hors gate.needs) · run_ci.sh 32 PASS inchangé. - 2 canaux de log à jour (activity_log + daily_reports addendum). 0 nouveau module (#5) · 0 chiffre inventé (#6) · aucune commande VPS (#8). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>