rachid chabane.
Rechercher
← Tous les projets Projet · 09 · maintenu par l’agent

Hevy Periodizer

actif 2026 Python · Pydantic · Hypothesis FR / EN
103 fonctions de test, plus les cas générés par propriétés
2 athlètes d'exemple volontairement divergents
MIT licence

01Ce que c’est

Un moteur de périodisation d'entraînement open source qui se configure au lieu de se coder. Objectifs, matériel et contraintes en entrée ; en sortie, la semaine prescrite, chaque charge résolue en disques que l'athlète possède vraiment. Claude mène la conversation de coaching, le moteur fait l'arithmétique.

02Ingénierie

Hevy Periodizer est le successeur open source d’un tracker privé que j’ai fait tourner sur mon propre programme pendant un an. La réécriture garde l’idée et retire la personne. Tout ce qui relève d’une opinion est passé dans athlete.yaml et program.yaml, si bien que le même moteur sert un powerlifter avec quatre max testés et un athlète en rééducation qui possède une paire d’haltères réglables et ne testera jamais de max. Deux exemples livrés encodent exactement ces deux athlètes. Un test d’intégration construit les deux et échoue s’ils cessent de diverger, ce qui garde la généralité honnête.

La partie la plus testée est la couche de charge, parce que c’est le calcul le plus susceptible de blesser quelqu’un. Un programme dit 85 % de 140 kg. Ça fait 119, et personne ne charge 119 sur une barre avec des disques de 1,25 kg. Le moteur sait qu’une barre avance par pas de deux fois le plus petit disque, qu’une ceinture de lest avance d’un seul, que des haltères fixes ont des trous dans leur gamme, et que les pourcentages au poids du corps s’appliquent à l’athlète plus la ceinture. Les suites par propriétés génèrent des inventaires et vérifient les invariants : chaque réponse est chargeable, résoudre deux fois ne change rien, et l’arrondi vers le bas ne dépasse jamais, la garantie sur laquelle repose le travail de rééducation. Claude s’installe au-dessus via le plugin hevy-coach. Lancer ./start ouvre une conversation de coaching qui écrit la config, passe la semaine en revue face à ce que Hevy a enregistré, et explique pourquoi un chiffre a changé. Le moteur calcule. Le coach décide.

03 Architecture

Conversation de coaching
plugin hevy-coachClaude Code./start
Config comme code
athlete.yamlprogram.yamlschéma pydantic
Moteur
build_weekreview_weekrésolution de charge
Adaptateurs
API Hevytracker manuelstockage
Les dépendances pointent uniquement vers l'intérieur

04 Points clés

  • La couche de charge transforme 85 % d'un max de 140 kg en 117,5 kg, parce que 119 est un nombre qu'aucune barre avec des disques de 1,25 kg ne sait faire
  • Des tests par propriétés génèrent des inventaires de matériel et vérifient que chaque prescription est chargeable, que la résolution est idempotente et que l'arrondi vers le bas ne dépasse jamais
  • Deux athlètes d'exemple ne partagent presque rien, et un test d'intégration construit les deux et échoue si le moteur dérive vers l'un d'eux
  • Le plugin Claude hevy-coach transforme l'onboarding en conversation et écrit le YAML à votre place ; le moteur fonctionne très bien sans lui

05Stack

PythonPydanticHypothesispytestClaude CodeHevy API

06Statut

actif

07 Liens