"""
source_16.py — s16 · 10 ADI GURUS DU BHAV SAGAR — SIÈGES ORGANIQUES
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Ă©.
⚠ L'auteur annonce lui-mĂȘme un placement 'Tentative/Proposed' (non canonique).
"""
from dataclasses import dataclass, field, asdict
import json

# ── SOCLE COMMUN (passe U6c — imbrication, GO Ben 13 juil 2026, 23h35) ────
# 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. Le statut 'Tentative/Proposed' annoncé par l'auteur voyage DANS
# les donnĂ©es (loi 4) — Ă  marquer dans tout usage aval.
# Loi 3 : aucun verdict recopiĂ© — pointer VERDICTS[id].
ID_CORPUS = "s16"
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 = "s16"
    titre: str = "LES 10 ADI GURUS DU BHAV SAGAR — SIÈGES ORGANIQUES (PROPOSÉ)"
    type_source: str = "schĂ©ma en double boucle (∞) autour du Nabhi Chakra"
    origine: str = "auteur inconnu — placement explicitement 'Tentative/Proposed'"
    auteur_shri_mataji: bool = False
    fiabilite: str = "\U0001f7e2 liste des 10 Adi Gurus = doctrine SY standard · \U0001f7e1 attribution des siÚges organiques explicitement spéculative"

    inscriptions: list = field(default_factory=lambda: [
        Inscription("Adi Guru Datta Treya : And his Ten Spiritual incarnations (GURUS) in Bhav Sagar / "
                    "The Central Heart : And the Ten Major Physical organs (SEATS) in Bhav Sagar",
                    "titre — verbatim"),
        Inscription("Sahaja Yoga Concept of Adi Guru Datta Tareya and his Ten Incarnations in Bhav "
                    "Sagar & A Tentative/Proposed Seat of Each Guru Around The Nabhi Chakra in Bhav "
                    "Sagar", "lĂ©gende basse — verbatim"),
        Inscription("symboles religieux sur chaque médaillon : \u0950, étoile de David, Tables de la "
                    "Loi, croissant, khanda, yin-yang, \u03a3
", "médaillons"),
    ])

    centre: str = "Adi Guru Datta Treya — HEART (cƓur anatomique)"

    boucle_gauche: dict = field(default_factory=lambda: {
        "1 Raja Janak": "left lung",
        "2 Abraham": "stomach",
        "3 Moses": "spleen",
        "4 Zarathustra": "left kidney",
        "5 Laotse": "anus (Si & Li, yin-yang)",
    })

    boucle_droite: dict = field(default_factory=lambda: {
        "6 Confucius": "urinary bladder",
        "7 Socrates": "right kidney",
        "8 Mohammad": "gall bladder",
        "9 Guru Nanak": "liver",
        "10 Sai Nath": "right lung",
    })

    caracteristiques: list = field(default_factory=lambda: [
        "cartographie du Vide (Bhav Sagar/Void) — 10 incarnations du Principe du Maütre en ∞ autour du Nabhi",
        "chaque guru siĂšge dans un organe physique majeur",
        "placement PROPOSÉ, non canonique — dixit l'auteur lui-mĂȘme",
    ])

    jonctions: list = field(default_factory=lambda: [
        Jonction("d12", "GARDIENS DES CHAKRAS — mĂȘme logique de dĂ©itĂ©s en poste"),
        Jonction("d05", "BOUCLES DE DÉITÉS — mĂȘme logique de boucles"),
        Jonction("d04", "Void de la carte-mĂšre — mĂȘme rĂ©gion du systĂšme"),
        Jonction("s01", "anneau des symboles des traditions au Manipura — mĂȘme ƓcumĂ©nisme SY"),
    ])

    en_attente: list = field(default_factory=lambda: [
        "\U0001f7e1 statut 'Tentative/Proposed' — à marquer dans tout usage aval",
        "\U0001f7e1 auteur du schéma à identifier",
    ])

    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"  gurus : {len(self.boucle_gauche) + len(self.boucle_droite)} + centre · 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())