"""Réutilisation des briques déjà livrées (workflow #5 · zéro duplication). L'orchestrateur démo ne redéfinit RIEN qui existe ailleurs : - `validate` : le validateur JSON-Schema maison du Publiciste (draft-07, sous-ensemble) — le run-sheet est validé SANS pip, car le gate CI Gitea Actions tourne sans réseau (CLAUDE.md #2). - `ci_module_paths` : la PREUVE de couverture de l'auditeur 4Big (`qa/audit_4big/q4lib/registry.py`), qui lit `.gitea/workflows/ci.yml` pour connaître les modules réellement gated. On la réutilise pour garantir qu'une démo ne s'appuie QUE sur des livrables validés par le CI — jamais sur du code non gated. Import par manipulation de `sys.path` (idiome des modules voisins : `banclib/deps.py`, `q4lib/deps.py`) plutôt que duplication — une seule source de vérité pour tout le mandat. """ from __future__ import annotations import os import sys _HERE = os.path.dirname(os.path.abspath(__file__)) # demo/scenarios/scenlib → 05_deliverables_mvp _DELIVERABLES = os.path.normpath(os.path.join(_HERE, "..", "..", "..")) _PUB = os.path.join(_DELIVERABLES, "publiciste") _AUDIT = os.path.join(_DELIVERABLES, "qa", "audit_4big") for _p in (_PUB, _AUDIT): if _p not in sys.path: sys.path.insert(0, _p) from lib import validator # type: ignore # noqa: E402 from q4lib import registry # type: ignore # noqa: E402 validate = validator.validate ci_module_paths = registry.ci_module_paths # Racine des livrables, exposée aux autres modules scenlib. DELIVERABLES_ROOT = _DELIVERABLES __all__ = ["validate", "ci_module_paths", "DELIVERABLES_ROOT"]