"""
source_11.py — s11 · LES 14 NIVEAUX — LALITA, SHRI, HAMSA & 4 AU-DESSUS DU SAHASRARA
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é.
"""
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 (la cible composite "s02/s08" y est dépliée en deux arêtes propres
# au GRAPHE). L'identification du talk des « 14 levels » vit dans
# RECHERCHES["s11"] du socle : Sahasrara Puja, Bombay, 1983-05-05.
# Loi 3 : aucun verdict recopié — pointer VERDICTS[id].
ID_CORPUS = "s11"
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 = "s11"
    titre: str = "LES 14 NIVEAUX — LALITA, SHRI, HAMSA & LES 4 AU-DESSUS DU SAHASRARA"
    type_source: str = "planche composite (capture réseau social) : version couleur du schéma supra-Sahasrara (= s07) + Subtle System complet + citation doctrinale majeure"
    origine: str = "montage dévotionnel · citation attribuée à H.H. Shri Mataji Nirmala Devi (conférence non référencée)"
    auteur_shri_mataji: bool = False
    fiabilite: str = "\U0001f7e2 citation attribuée à Shri Mataji, cohérente avec s07 · \U0001f7e1 montage sans référence de conférence précise"

    inscriptions: list = field(default_factory=lambda: [
        Inscription("SHRI VALAYA · Shri Bindu · Shri Amruta Dayini ('Giver of Amrut') · Shri Ardha "
                    "Bindu · Shri Atma Paramatma ('The drop becomes the ocean') · Shri Sadashiva/"
                    "Shri Adi Shakti · Sahasrara", "panneau gauche (bleu) — tête fil de fer + encart 'Actual Proportions'"),
        Inscription("Subtle System", "panneau droit — méditant : Pingala/Ida/Sushumna Nadi, Superego/Ego, Spirit, Void, Kundalini"),
        Inscription("1 Mooladhara innocence · 2 Swadisthan creativity · 3 Nabhi evolution · 4 Anahat "
                    "security · 5 Vishuddhi collectivity · 6 Agnya forgiveness · 7 Sahastrar integration",
                    "panneau droit — qualités des 7 chakras, verbatim"),
        Inscription("God has created fourteen levels within us… Chakra of Moon (Lalita) and Chakra of "
                    "Sun (Shri)… Then there is Hamsa Chakra… four chakras above Sahastrara… "
                    "Ardha-bindu, Bindu, Valaya, and Pradakshina… seven chakras situated on the Ida "
                    "Nadi and seven on the Pingala Nadi", "citation — extraits verbatim"),
    ])

    structure_14_niveaux: dict = field(default_factory=lambda: {
        "1-7": "les 7 chakras",
        "8": "Lalita — Chakra of Moon",
        "9": "Shri — Chakra of Sun",
        "10": "Hamsa Chakra",
        "11-14": "au-dessus du Sahasrara : Ardha-bindu · Bindu · Valaya · Pradakshina",
    })

    caracteristiques: list = field(default_factory=lambda: [
        "CLÉ DE VOÛTE doctrinale : structure complète à 14 niveaux",
        "Pradakshina : 4e centre supra-Sahasrara ABSENT de s07",
        "'After passing through these four chakras only you can say that you have become a Sahaja yogi'",
        "+ 7 chakras sur l'Ida Nadi et 7 sur le Pingala Nadi",
    ])

    jonctions: list = field(default_factory=lambda: [
        Jonction("s07", "MÊME schéma supra-Sahasrara — ici en couleur et légendé · s11 ajoute Pradakshina"),
        Jonction("d03", "STRATES DE CONSCIENCE — même axe vertical des niveaux"),
        Jonction("d11", "ÉCHELLE DES ÉTATS — même gradation"),
        Jonction("s02/s08", "Hamsa Chakra — verse au dossier divergence position"),
        Jonction("s12", "Hamsa/Lalita/Shri rares — aussi présents dans la géographie du Virata"),
    ])

    en_attente: list = field(default_factory=lambda: [
        "\U0001f7e1 référence exacte de la conférence des '14 levels' RÉSOLUE ✅ (recherches 13 juil ≈2h35, cf. RECHERCHES['s11'] du socle) : Sahasrara Puja, Bombay, 1983-05-05 — même talk que d20 (deux cordes)",
        "\U0001f7e1 écart s07 (sans Pradakshina) vs s11 (avec) — à documenter en passe transversale",
    ])

    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"  niveaux : 14 · 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())