"""
source_10.py — s10 · CANAL ÉNERGÉTIQUE INTÉRIEUR (NON-SY \U0001f7e1)
Série SOURCE ANNEXE FIABLE · généré depuis l'analyse gravée (Fable, 12 juil 2026).
Règle : zéro invention — tout champ provient de la planche ou d'un recoupement daté.
⚠️ STATUT : source probablement HORS Sahaja Yoga (terminologie tantrique classique).
"""
from dataclasses import dataclass, field, asdict
import json

# ── SOCLE COMMUN (passe U6b — imbrication, GO Ben 13 juil 2026, 23h29) ────
# socle_corpus.py = clé de voûte du paquet corpus/ (types partagés · registre
# · GRAPHE des jonctions · VERDICTS D1-D6). Loi 2 du contrat : les jonctions
# CANONIQUES entre pièces (dNN/sNN) vivent UNE SEULE FOIS dans GRAPHE — la
# liste locale `jonctions` (cible/nature) reste une NOTE DE LECTURE de la
# planche.
# Loi 3 : aucun verdict recopié — le verdict D6 (s10 = anatomie seulement,
# quarantaine doctrinale) fait foi dans VERDICTS["D6"].
ID_CORPUS = "s10"
try:
    from socle_corpus import GRAPHE, VERDICTS, SOURCES as REGISTRE_SOURCES
    JONCTIONS_SOCLE = [j for j in GRAPHE if ID_CORPUS in (j.a, j.b)]
    MODE_ILOT = False
except ImportError:  # exécution isolée : le module reste lisible en îlot
    GRAPHE, VERDICTS, REGISTRE_SOURCES = [], {}, {}
    JONCTIONS_SOCLE, MODE_ILOT = [], True

@dataclass
class Inscription:
    texte: str
    zone: str
    statut: str = "\U0001f7e2"

@dataclass
class Jonction:
    cible: str
    nature: str

@dataclass
class Source:
    sid: str = "s10"
    titre: str = "CANAL ÉNERGÉTIQUE INTÉRIEUR — CHAKRAS & PLEXUS NERVEUX"
    type_source: str = "planche anatomique hispanophone 'CANAL ENERGÉTICO INTERIOR' (capture, bouton 'Visiter le site')"
    origine: str = "source non identifiée — probablement hors SY ou syncrétique hispanophone"
    auteur_shri_mataji: bool = False
    fiabilite: str = "\U0001f7e1 iconographie NON-SY (Manipura, Ajna, lotus à pétales sanskrits) — utilisable pour les correspondances anatomiques, PAS comme référence doctrinale SY"

    inscriptions: list = field(default_factory=lambda: [
        Inscription("CANAL ENERGÉTICO INTERIOR", "titre"),
        Inscription("SAHASRARA · AJNA · VISHUDDHA · ANAHATA · MANIPURA · SWADHISTHANA · MULADHARA KUNDALINI",
                    "colonne de gauche — lotus traditionnels, pétales et lettres sanskrites"),
        Inscription("plexo carotídeo · ganglio cérvico superior simpático · plexo faríngeo · plexo "
                    "pulmonar · plexo cardíaco · diafragma · plexo esplénico · plexo solar · plexo "
                    "pélvico · plexo coxígeo", "profil anatomique — plexus légendés (ES)"),
        Inscription("cuerda espinal · tronco simpático · ganglios cérvico/toraco/lumbo/sacro-espinal, "
                    "coxo-espinal", "profil anatomique — structures nerveuses (ES)"),
    ])

    correspondances_plexus: dict = field(default_factory=lambda: {
        "Vishuddha": "plexo farĂ­ngeo / cervical",
        "Anahata": "plexo cardĂ­aco / pulmonar",
        "Manipura": "plexo solar",
        "Swadhisthana": "plexo pélvico",
        "Muladhara": "plexo coxĂ­geo",
    })

    caracteristiques: list = field(default_factory=lambda: [
        "tracé jaune : boucle du canal intérieur — monte le long de la colonne, contourne le "
        "cerveau, redescend vers visage/gorge, flèche SAHASRARA au sommet",
        "valeur : lien chakra ↔ plexus nerveux sur anatomie réelle",
        "lexique tantrique classique (Manipura/Ajna) ≠ lexique SY (Nabhi/Agnya)",
    ])

    jonctions: list = field(default_factory=lambda: [
        Jonction("d04", "carte-mère — correspondances chakra↔plexus à confronter"),
        Jonction("s01", "même nomenclature sanskrite classique (Manipura) — contraste avec lexique SY"),
        Jonction("s13", "autre source NON-SY de la série — même statut de quarantaine doctrinale"),
    ])

    en_attente: list = field(default_factory=lambda: [
        "\U0001f7e1 site source Ă  identifier (bouton 'Visiter le site' vide)",
        "✅ RÉSOLU (décision Ben, 12 juil 2026) : garder pour l'ANATOMIE seulement — quarantaine doctrinale maintenue",
        "✅ CONFRONTÉE à d04 en passe U6b (13 juil), plexus par plexus : 3/5 concordants (Vishuddha↔Cervical Plexus · Anahata↔Cardiac Plexus · Manipura↔Solar Plexus) · 2/5 DIVERGENTS (Swadhisthana : plexo pélvico s10 vs Aortic Plexus d04 · Muladhara : plexo coxígeo s10 vs Pelvic Plexus d04) — décalage d'un cran sur les centres bas · d04 (de Sa main, recoupé Book of Adi Shakti) fait foi → renforce le verdict D6",
    ])

    def rapport(self) -> str:
        etat_socle = ("îlot (socle_corpus non chargé)" if MODE_ILOT
                      else f"imbriqué — {len(JONCTIONS_SOCLE)} jonction(s) canoniques au GRAPHE")
        return "\n".join([
            f"[{self.sid}] {self.titre}",
            f"  origine : {self.origine}",
            f"  de la main de Shri Mataji : {self.auteur_shri_mataji}",
            f"  fiabilité : {self.fiabilite}",
            f"  correspondances plexus : {len(self.correspondances_plexus)} · jonctions : {len(self.jonctions)}",
            f"  SOCLE : {etat_socle}",
        ])

    def to_json(self) -> str:
        data = asdict(self)
        data["id_corpus"] = ID_CORPUS
        data["jonctions_canoniques"] = [asdict(j) for j in JONCTIONS_SOCLE]
        data["mode_ilot"] = MODE_ILOT
        return json.dumps(data, ensure_ascii=False, indent=2)

if __name__ == "__main__":
    print(Source().rapport())