"""Reutilisation des briques deja livrees (workflow #5 · zero duplication).

L'integration e-CF DGII partage l'idiome anti-invention du reste du mandat. On
importe — jamais on ne duplique — :
  - `is_filled`  : la notion de « champ reellement rempli » (un placeholder ou un
                   `null` n'est pas rempli) commune au generateur Faisabilite.
  - `CANONICAL`  : les parametres canoniques CLAUDE.md #9/#10 (USD+DOP notamment).
                   AUCUN taux ITBIS / RNC / TipoCambio n'y figure → aucun n'est
                   fabrique ici.
  - `validate`   : le validateur JSON-Schema maison du Publiciste (draft-07,
                   sous-ensemble), pour valider le bundle SANS installation pip
                   (le gate CI Gitea Actions tourne sans reseau · CLAUDE.md #2).

Import par `sys.path` (comme `commlib/deps.py`) — une seule source de verite.
"""

from __future__ import annotations

import os
import sys

_HERE = os.path.dirname(os.path.abspath(__file__))
# fiscal/ecf_dgii/ecflib → 05_deliverables_mvp
_DELIVERABLES = os.path.normpath(os.path.join(_HERE, "..", "..", ".."))
_GEN = os.path.join(_DELIVERABLES, "faisabilite", "generator")
_PUB = os.path.join(_DELIVERABLES, "publiciste")

for _p in (_GEN, _PUB):
    if _p not in sys.path:
        sys.path.insert(0, _p)

from genlib import model  # type: ignore  # noqa: E402
from lib import validator  # type: ignore  # noqa: E402

is_filled = model.is_filled
CANONICAL = model.CANONICAL
TEMPLATE_VERSION = model.TEMPLATE_VERSION
validate = validator.validate

__all__ = ["is_filled", "CANONICAL", "TEMPLATE_VERSION", "validate"]
