"""
source_08.py — s08 · SYMPTÔMES DE LA MONTÉE DE KUNDALINI — SPIRALE 3½ TOURS
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.
# Loi 3 : aucun verdict recopié — le verdict D2 (Hamsa SOUS l'Agnya, version
# s02 retenue, verbatim s08 conservé en pièce minoritaire) fait foi dans
# VERDICTS["D2"] ; le texte local n'est qu'un écho.
ID_CORPUS = "s08"
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 = "s08"
titre: str = "SYMPTÔMES DE LA MONTÉE DE LA KUNDALINI — SPIRALE 3½ TOURS"
type_source: str = "affiche pédagogique jaune — capture de réseau social"
origine: str = "signée ~aumaparna (même auteur que s06) · renvoi www.sahajayoga.org"
auteur_shri_mataji: bool = False
fiabilite: str = "\U0001f7e2 doctrine SY standard, renvoi sahajayoga.org · \U0001f7e1 auteur non officiel, capture indirecte"
inscriptions: list = field(default_factory=lambda: [
Inscription("What are the symptoms / feelings when your Kundalini Shakti rises…", "titre"),
Inscription("7 Sahasrara · 6 Agnya · 5 Vishuddi · 4 Anahata · 3 Nabhi · 2 Swadhistana · 1 Mooladhara",
"légende du méditant (gauche)"),
Inscription("Hamsa chakra (between the eyebrows)", "liste des symptômes — verbatim, divergence RÉSOLUE : position retenue = sous l'Agnya (s02, décision Ben 12 juil 2026)"),
Inscription("feels like Nirvana", "symptôme final — brise fraîche au sommet du crâne"),
Inscription("1 · 2 · 3 · 3.5", "spirale rouge graduée — les 3 tours ½"),
Inscription("~aumaparna", "signature"),
])
symptomes: list = field(default_factory=lambda: [
"le dos se redresse seul",
"respiration nasale plus 'légère' au passage du Hamsa",
"fraîcheur montant le long de la colonne",
"brise fraîche dans les mains · mains qui s'ouvrent seules",
"besoin de 'wash off' le visage",
"yeux brillants",
"picotements/chaleur = travail de nettoyage",
"brise fraîche au sommet du crâne = béatitude, but ultime de tout yoga",
])
jonctions: list = field(default_factory=lambda: [
Jonction("s06", "même série ~aumaparna — même légende du méditant"),
Jonction("d02", "THE HAPPENING — montée et percée, mêmes symptômes"),
Jonction("d08", "spirale 3½ tours = donnée canonique (22/7, talk 1975-03-29)"),
Jonction("s02", "\u26a0\ufe0f DIVERGENCE Hamsa RÉSOLUE (décision Ben, 12 juil 2026) : retenu = SOUS l'Agnya (s02) — verbatim s08 conservé en pièce minoritaire"),
])
en_attente: list = field(default_factory=lambda: [
"✅ RÉSOLU (décision Ben, 12 juil 2026) : Hamsa SOUS l'Agnya — version s02 retenue, verbatim s08 en pièce minoritaire",
])
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" symptômes : {len(self.symptomes)} · 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())