23 lines
1.3 KiB
Markdown

# Contrats d'interface
Référence unique et **versionnée** des interfaces entre composants. Tout dépôt (plugin ou service) qui implémente ou consomme une de ces interfaces cite la version exacte définie ici.
## Contrats
| Contrat | Producteur | Consommateur(s) | Version |
|---|---|---|---|
| [`optimize`](optimize.md) | `etm-powersync-optimizer` | `etm-powersync-plugin-etm` (`OptimizerManager`) | 0.1 (draft) |
| [`tariff`](tariff.md) | `etm-powersync-tarif-provider` | `tarif-api` (plugin), `etm-powersync-optimizer` | 0.1 (draft) |
| `openmeteo` | Open-Meteo (self-hosted, `etm-powersync-meteo-service`) | module `openmeteo`, `etm-powersync-optimizer` | voir module `openmeteo` |
## Politique de versionnement
- **`draft`** : en construction, peut changer sans préavis. Statut actuel de tous les contrats.
- **`vN`** (gelé) : une fois figé, un contrat `vN` ne change plus de façon incompatible. Toute rupture donne un `v(N+1)`.
- Le passage `draft → v1` se fait par décision actée dans `ARCHITECTURE.md` (annexe « points ouverts »).
- Conventions transverses (unités, azimut, vocabulaire `rank`) : définies dans `ARCHITECTURE.md`, non redéfinies ici.
## Règle
Un changement de contrat se décide **ici d'abord**, puis se répercute dans les dépôts producteur et consommateur. Jamais l'inverse.