# @circuy/contracts

Source unique de vérité du contrat JSON de parcours. Les schémas Zod vivent ici ; les types TypeScript en sont dérivés.

## Règle d'import

- `apps/api` et `apps/extension` importent les **schémas** pour valider à l'écriture.
- `packages/sdk` n'importe **que des types**. Un import de valeur (`tourSchema`) est refusé par `scripts/check-sdk-imports.mjs`.

## Contenu actuel

- Cibles multi-critères (`testid`, `id`, `aria`, `text`, `css`)
- Étapes `tooltip`, `modal`, `question`
- Parcours : déclencheur, audience, branchements
- Brouillon de parcours (sans `id` / `version`)
- Lot de télémétrie (`key` + événements)
- Intégrité : identifiants d'étapes uniques, `next` qui résout

Les champs inconnus sont ignorés (compatibilité ascendante, section 7.1 du CDC).

## Commandes

```bash
pnpm --filter @circuy/contracts typecheck
pnpm test   # depuis la racine : packages/contracts/src/*.test.ts
```
