"""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"]
