Aller au contenu

Gates CI

Les gates CI sont les vérifications bloquantes appliquées sur chaque PR et chaque push sur main. Toute PR doit les passer pour être mergée.

Workflows : .github/workflows/ci.yml, .github/workflows/release.yml, .github/workflows/scorecard.yml.


GateSourceBloquant
Public files guardgit ls-files filtrageoui
Public docs guardscripts/check-public-docs.mjsoui
Docs link checkscripts/check-doc-links.mjsoui
DCO sign-offtim-actions/dcooui
Secret scangitleaksoui
ShellCheckshellcheck sur scripts/*.shoui
Linteslint --max-warnings=0oui
Architecture boundariesscripts/check-architecture-boundaries.mjsoui
Line-countscripts/check-line-counts.mjsoui
Typechecktsc --noEmitoui
Tests unitairesvitest runoui
Buildnpm run buildoui
License checkscripts/check-licenses.mjsoui
SBOMcyclonedx-npmoui
OSSF Scorecardscorecard-action (hebdo)non bloquant, mesure posture

Refuse les fichiers internes dans l’index Git :

  • .input/ (atelier privé, gitignored)
  • .claude/ (config Claude Code, gitignored sauf exceptions)
  • AGENTS.md, CLAUDE.md (guides internes — exclus du dépôt public par scripts/init-public-repo.sh)
  • .agents/, .codex/, .gitnexus/ (état local)

Si un de ces fichiers apparaît dans git ls-files, le job échoue.


scripts/check-public-docs.mjs analyse tous les .md sous docs/ (+ racine README*, ROADMAP, SECURITY, CONTRIBUTING) :

  • Noms de fichier interdits : motifs AGENT-* (sauf AGENT-INSTALL), AUDITOR-*, DISPATCH-*.
  • Contenu interdit : références aux briefs de dispatch internes, aux dossiers d’anciens chantiers WIP retirés, et autres artefacts d’orchestration interne.

Pour faire passer : retirer/renommer les fichiers contrevenants, ou supprimer la mention textuelle.


scripts/check-doc-links.mjs valide les liens markdown :

  • Chaque lien markdown inline doit pointer vers un fichier existant.
  • Chaque lien avec ancre doit pointer vers une section existante dans le fichier cible.
  • Les URL externes (http://, https://, mailto:) sont ignorées.

Pour faire passer : corriger ou retirer les liens cassés. Les mentions de fichiers à venir doivent être en code simple, pas en lien actif.


Chaque commit doit avoir une ligne Signed-off-by: Nom <email> (équivalent git commit -s). Le DCO atteste que vous avez le droit de soumettre la contribution sous la licence du projet.

Pour faire passer :

  • Toujours utiliser git commit -s (créer un alias si besoin).
  • Si commit oublié : git commit --amend -s pour le dernier, ou git rebase -i HEAD~N --signoff pour plusieurs.

gitleaks/gitleaks-action scanne les commits PR pour détecter clés API, tokens, mots de passe. Faux positif → ajouter une entrée dans .gitleaksignore.


scripts/check-architecture-boundaries.mjs valide que les imports respectent les frontières définies dans ADR 0001. Toute violation (core/ qui importe adapters/, etc.) bloque la CI.


scripts/check-line-counts.mjs refuse les fichiers monolithiques au-dessus du seuil (typiquement 1000-1500 lignes selon le type). Force le découpage en modules cohésifs.


scripts/check-licenses.mjs vérifie que toutes les dépendances utilisent des licences compatibles avec Apache 2.0 (le projet). Les copyleft non autorisées (GPL, AGPL) sont refusées.


cyclonedx-npm génère un Software Bill of Materials pour la racine, l’UI et cortex-lite. Validé en CI, distribué avec les releases.


Mesure hebdomadaire (lundi) de la posture supply-chain (signature, dépendances, hygiène). Non bloquant — score affiché publiquement sur la GitHub Security tab.