Aller au contenu

Contrat de données (workspace-data-contract)

Vos séances, vos nuits et vos plans restent des fichiers Markdown lisibles. Mais chaque fichier écrit par un agent commence désormais par un petit bloc de données : c'est lui que lisent le tableau de bord et la comparaison de parcours, jamais la prose.

À quoi ça ressemble

# Séance du 2026-09-20 — Trail de Tournai

```arc
{"arc": 1, "kind": "activity", "date": "2026-09-20", "sport": "trail",
 "distance_m": 12300, "duration_s": 5218, "elevation_gain_m": 480, "avg_hr_bpm": 148}
```

L'analyse du coach, en français, comme avant.

Le bloc est du JSON. Ses clés sont en anglais et ne changent jamais, quelle que soit la langue de vos documents ; ses valeurs sont en unités SI (mètres, secondes, bpm), même si vous avez choisi les unités impériales — la conversion se fait à l'affichage.

Pourquoi

Avant ce contrat, les chiffres se lisaient dans des tableaux et des titres français. Passer [language].documents à "en" suffisait à faire disparaître toutes vos séances de la comparaison de parcours, sans le moindre message. Un bloc typé ne dépend ni de la langue, ni de l'ordre des colonnes, ni de la formulation du modèle.

Les types de fichiers

Type Fichier
activity activities/AAAA-MM-JJ_<type>.md
health medical/AAAA-MM-JJ_health.md — sommeil, HRV, FC de repos, readiness, verdict du jour
weather medical/AAAA-MM-JJ_meteo.md
week planning/Semaine_AAAA-MM-JJ.md, daté du lundi — un fichier par semaine, ou un seul fichier multi-semaines (bloc weeks, un plan de 10 semaines peut tenir dans 1 fichier) — séances datées, lieu de la semaine
nutrition nutrition/AAAA-MM-JJ_nutrition.md
report rapports/…
course_eval planning/…_evaluation_parcours_<lieu>.md
race_plan plan de course dans planning/
decision planning/AAAA-MM-JJ_decision_<slug>.md — traçabilité d'un ajustement (garde-fou, bilan matinal, blessure…), un fichier par décision

Votre profil (planning/Runner_Profile.md) et votre objectif (planning/active_objective.md) n'ont pas de bloc : vous les éditez à la main, et leurs puces suffisent. Gardez simplement les libellés du modèle.

Vérifier un fichier

python3 scripts/arc_index.py --validate medical/2026-09-20_health.md

Les agents le font après chaque écriture. Le schéma complet, clé par clé, est dans skills/workspace-data-contract/SKILL.md.

Et les fichiers écrits avant ?

Ils restent lus, au mieux, et le tableau de bord les signale comme incomplets. /arc-backfill les met au contrat, par lots.