Inscriptions ouvertes100 places2 000 FCFASoloLangage libre21 jours de dev
02 · Règles et barème

Une vente en trop, et c'est fini.

Une solution qui vend deux fois le dernier billet ne gagne jamais, même si elle est la plus rapide. Chaque note vient d'un test automatique rejouable sur une machine jetable.

NOTE MAXIMALE
100
Justesse
d'abord

Six portes éliminatoires.

Échouer à une seule exclut du podium. Vous gardez votre certificat de participation si le projet livré démarre.

G1

Aucune survente

Ventes confirmées ≤ stock, quelle que soit la concurrence.

Test : 1 000 demandes simultanées sur 1 billet, puis sur 50.

G2

Aucun double débit

Une même clé d'idempotence débite une seule fois.

Test : rejeu, double clic, retries après timeout du faux PSP.

G3

Webhooks sûrs

Signature vérifiée, doublons ignorés, aucun statut qui régresse.

Test : webhooks forgés, rejoués, dupliqués, dans le désordre.

G4

Contrôle d'accès

Personne ne lit ni n'annule la commande d'un autre ; routes admin protégées.

Test : attaques d'accès horizontal et vertical.

G5

Reprise après panne

Redémarrage en plein test sans commande perdue ni billet fantôme.

Test : arrêt brutal de l'API puis de la base pendant la charge.

G6

Livraison conforme

Démarre en une commande, expose /health, respecte le contrat, livré à temps.

Test : démarrage sur VM propre, tests de contrat.

Le barème sur 100.

La correction sous concurrence et les paiements valent 50 points à eux deux. La performance pèse 20 points, mesurée sur quatre profils avec le même budget de ressources pour tout le monde.

PROFILS DE PERFORMANCE
P1 · Dernier billet6 pts
P2 · Vente massive6 pts
P3 · Charge mixte4 pts
P4 · Faux PSP dégradé4 pts

Points par paliers par rapport à l'implémentation de référence : de 100 % (≥ 1,5×) à 0 (sous 0,25×).

Correction et concurrence30
Contrat d'API, règles métier, codes d'erreur, charge concurrente
Paiements, idempotence, webhooks20
Cycle de vie complet, échecs et remboursements du faux PSP
Performance20
Quatre profils de charge, 2 vCPU et 4 Go
Résilience et reprise10
Pannes de la base, du faux PSP, redémarrages
Sécurité10
Authentification, accès, entrées, secrets, débit
Qualité, tests, documentation10
README, tests, dictionnaire d'erreurs, lisibilité

Fair-play. Sinon dehors.

Aucun nom de scénario de test KrakenPay écrit en dur pour un comportement spécial.
Aucun code qui détecte l'environnement d'évaluation pour se comporter autrement.
Aucune modification, contournement ou remplacement de KrakenPay.
Aucune tentative d'accès au banc de test, aux autres soumissions ou à l'infrastructure.
Pas de partage de code avant les résultats : deux solutions identiques sont disqualifiées.
Aucune dépendance qui appelle un service externe : le réseau est coupé, hors KrakenPay.

Outils d'IA autorisés

À déclarer dans DECISIONS.md : quels outils, pour quelles parties du code. Vous restez responsable de ce que vous livrez.

Départage

  1. Plus de points de correction fonctionnelle
  2. Meilleur score au profil P1
  3. Date de dépôt la plus ancienne

Contestations

48 h après la publication des résultats, avec une reproduction du problème. Décision finale et motivée de l'organisation.