Aller au contenu
Docs TrysCode
contrat v1

PIPELINE-003 — Correction après push

Le pipeline transforme un push GitHub autorisé en preuves pédagogiques persistées et lisibles, sans publier les tests privés ni les sorties brutes du runner.

Flux officiel

  1. GitHub envoie un webhook signé à Harmony.
  2. Harmony déduplique le SHA, applique le debounce et persiste une intention.
  3. Le dispatcher confirme la publication dans RabbitMQ.
  4. JavaMouliNette récupère le SHA exact et exécute l’image OCI immuable, sans réseau, comme utilisateur non-root et avec quotas.
  5. Harmony revalide le callback, persiste le rapport et recalcule la progression.
  6. Online et Intra affichent les tiroirs et l’historique autorisés.

Contrat par exercice

javamoulinette.exercise-details.v1 expose le statut global, compilation, tests, mémoire, style, sécurité, durée, artefacts publics, manifeste, digest du runner et SHA.

Tiroirs

Le premier exercice non réussi bloque l'exécution des suivants, marqués not_run. Sa réussite les déverrouille au push suivant.

Confidentialité

Le rapport exclut attentes privées, solutions, stdout/stderr, chemins internes, secrets et URL de stockage brute.

Erreurs et rejeux

Un échec pédagogique termine normalement sans retry RabbitMQ. Une panne technique suit des retries bornés puis la DLQ. Un callback rejoué doit être identique.

Compatibilité

Les rapports javamoulinette.report.v1 historiques sans détail restent valides. Les nouveaux passages lient chaque tiroir au SHA, au manifeste et au digest.

Coding Style Checker

La norme de style configurable documente les règles C, leur sévérité, leur éventuel caractère bloquant et la compatibilité des résultats historiques.

Tests de référence

La matrice C00 à C07 vérifie chaque exercice avec une référence correcte et un mutant, ainsi que signature invalide, fichier absent, symbole interdit, timeout, sortie excessive, crash/mémoire et cas limites. Harmony couvre webhook invalide ou dupliqué, pushes successifs, même SHA, indisponibilité du broker, rejeu de callback, ordre et persistance.