"""Réutilisation des briques déjà livrées (workflow #5 · zéro duplication).

Le dossier bancable dérive du MÊME brief que le générateur Faisabilité 4 volets
et doit rester cohérent avec lui :
  - `is_filled`  : même notion de « champ réellement rempli » que le générateur
                   (un placeholder / « non défini » / 0-inventé n'est pas rempli).
  - `CANONICAL`  : les paramètres canoniques CLAUDE.md #9/#10 (3 % / 8.5 % / 52 % ·
                   USD+DOP · Cardnet · Letter US) — jamais issus du brief.
  - `validate`   : le validateur JSON-Schema maison du Publiciste (draft-07,
                   sous-ensemble), pour valider le manifeste SANS installation pip
                   (le gate CI Gitea Actions tourne sans réseau · CLAUDE.md #2).

On importe par manipulation de `sys.path` (comme `faisabilite_gen.py`) plutôt que
de dupliquer ces valeurs — 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__))
# faisabilite/bancable/banclib → générateur (genlib) : ../../generator
_GEN = os.path.normpath(os.path.join(_HERE, "..", "..", "generator"))
# faisabilite/bancable/banclib → Publiciste (lib) : ../../../publiciste
_PUB = os.path.normpath(os.path.join(_HERE, "..", "..", "..", "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"]
