Metadata-Version: 2.5
Name: mapfarm-cuisine
Version: 0.13.3
Summary: Ontologie culinaire IAOS — schémas corpus + gates déterministes (génération gouvernée de recettes/menus).
Author: Holding MAPFARM
License: Proprietary
Keywords: culinaire,gates,gouvernance,mapfarm,menus,ontologie
Requires-Python: >=3.12
Requires-Dist: pydantic<3,>=2.6
Requires-Dist: pyyaml<7,>=6.0
Provides-Extra: test
Requires-Dist: pytest<10,>=8; extra == 'test'
Description-Content-Type: text/markdown

# mapfarm-cuisine — cuisine générative gouvernée

**Vitrine publique : [cook.iaos.cc](https://cook.iaos.cc)** · présentation :
[/presentation](https://cook.iaos.cc/presentation)

Cuisine **générative gouvernée** : par défaut, le LLM **crée** des variations à partir
de recettes connues et d'un graphe d'association d'ingrédients (accords + co-occurrence
déduite du corpus + évidence moléculaire) — jamais un ingrédient, une technique ou une
température hors corpus `validated` (CDC v0.3, C12). Un mode « gouverné strict »
(`menu_composer`) reste disponible : le LLM y sélectionne et narre uniquement, sans
créer. Dans les deux cas, toute composition passe par les **mêmes gates déterministes**
(allergènes INCO, sécurité sanitaire, régimes, coût, saison), validée par un humain
(porte HITL), puis **figée** avec fiche technique — chaque ligne tracée `id@version`
(journal EVIDENCED_BY). Une composition créative validée peut être **promue** en vraie
fiche corpus par le chef (boucle mémoire → `draft` → revue).

## Les quatre briques

| Brique | Rôle | Où |
|---|---|---|
| `cuisine/` | **Socle pur** (package PyPI `mapfarm-cuisine`) : schémas, 5 gates recette + 5 gates menu, moteur `compose_menu` (déterministe, swap gouverné, classement diversifié), fiche technique, graphe d'association (`pairing`), boucle de promotion (`promote`), orchestration `composer` (LLM injecté), corpus embarqué | PyPI Gitea |
| `service/` | **cuisine-composer** — reçoit les dispatchs du kernel iaos : `menu_creatif` (génératif, PAR DÉFAUT) et `menu_composer` (sélection stricte), en `service_url` (§3.3) | VM103:8017 (interne) |
| `panel/` | **Vitrine prospect** — proxy vers le run API du kernel (clé scopée, gardes anti-abus, toggle créatif/gouverné) | VM103:8018 → cook.iaos.cc |
| `corpus/` | **Source de vérité** — documents `validated` + propositions créatives `draft` en attente de revue chef | dépôt (versionné) |

## Corpus (source de vérité)

207 documents seed (`corpus/*.yaml`) : 12 cuisines (Bourgogne, France, Italie, Levant,
Inde, Thaïlande, Mexique, Espagne, Maghreb, Grèce, Japon, Vietnam), bases/sauces mères
en sous-recettes (D4), 12 classiques **Escoffier** structurés (Guide culinaire 1903,
domaine public, Gutenberg 71395), substituts validés (swap gouverné), accords à
**évidence moléculaire** (socle taste, D8 : gingembre∩ail = 33 composés partagés) —
et un graphe de **514+ paires déduites** par co-occurrence dans les recettes validées
(`cuisine.pairing`, C12bis), qui alimente la génération créative sans attendre que
chaque paire soit hand-curated.

**Ligne rouge** : aucune température sanitaire inventée. Les protéines animales cuites
passent par une technique dont la température à cœur **n'est pas sourcée** → G3 les
**bloque** jusqu'à la passe chef (`docs/D2-SESSION-CHEF.md`).

## Commandes

```bash
pip install -r requirements.txt
python -m cuisine.validate corpus/        # schéma + règles d'état sur les 207 docs
python -m cuisine.menu corpus/            # composer des menus (CLI, déterministe)
python -m cuisine.pairing corpus/ --for <ing_id>  # graphe d'association (audit chef)
python -m cuisine.taste_bridge corpus/    # enrichir l'évidence moléculaire (API taste)
python -m cuisine.edges corpus/ --impact <id>   # impact de dépréciation
python -m cuisine.promote <export.json> corpus/  # propositions créatives → draft corpus
pytest && ruff check .                    # py312, line-length 100
```

## Déploiement (VM103, `/opt/cuisine`)

```bash
docker compose -f docker-compose.prod.yml up -d --build   # api (8017) + panel (8018)
```

Secrets : `.env` (IAOS_DISPATCH_KEY, LITELLM_URL) et `panel.env` (IAOS_PANEL_KEY,
DEMO_CODE?) — voir `service/.env.example` et `panel/.env.example`. Jamais committés.
Publication du package : `python -m build` puis twine vers
`https://git.it.iaos.cc/api/packages/mapfarm/pypi`.

## Documents

- `docs/CDC-ontologie-culinaire-v0.2.md` — décisions D1–D10 (ontologie, gates).
- `docs/CDC-compositeur-culinaire-v0.2.md` — décisions C1–C11 (compositeur) **+
  amendement v0.3 §0bis (C12)** : cuisine générative, mode par défaut.
- `docs/D2-SESSION-CHEF.md` — checklist chef : sourcer les températures → débloquer.
