fix(relationship): freeze marriage event classes and add conditional dashas (BUG-608)
Independent Staging Quality Gate / validate (push) Successful in 11m26s
Independent Staging Quality Gate / publish (push) Successful in 13m24s

Venus/Jupiter/Moon periods no longer collapse into one marriage-opportunity line. Full reading reports the ten BPHS conditional dasha families; Skill 6.9.16.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-09-09 16:04:52 +08:00
co-authored by Cursor
parent 164535ab22
commit 04ad3325d5
1209 changed files with 464511 additions and 90 deletions
+25 -1
View File
@@ -47,6 +47,7 @@ from functional_benefics import derive_functional_benefic_malefic
from vedastro_priority import official_snapshot_evidence
from unified_consultation_orchestrator import UnifiedConsultationOrchestrator
from skill_experience import build_skill_doctor, build_skill_onboarding, summarize_execution_status
from punarphoo import detect_punarphoo
load_local_env(SCRIPT_DIR)
@@ -2529,6 +2530,20 @@ def _derive_event_judgement(route: str, present: Dict[str, Any], missing: List[s
secondary_context.append("dignity_supportive_friendship")
elif dignity_guardrail.get("score_delta") == -5:
secondary_context.append("dignity_high_friction")
punarphoo = present.get("punarphoo") if isinstance(present.get("punarphoo"), dict) else {}
romantic_activation = {
"status": "observation_only",
"natal_present": bool(punarphoo.get("natal_present")),
"timing_observation_active": bool(punarphoo.get("timing_observation_active")),
"claim_boundary": punarphoo.get("claim_boundary") or (
"Punarphoo return is not marriage. Observation only; "
"negative holdout not passed; do not promote to truth."
),
"production_tuning_allowed": False,
}
if romantic_activation["natal_present"] or romantic_activation["timing_observation_active"]:
secondary_context.append("punarphoo_observation")
secondary_context.append("romantic_activation_observation")
secondary_context.extend([
"dasha_timing_layer_used",
"varga_strength_layer_used",
@@ -2564,6 +2579,7 @@ def _derive_event_judgement(route: str, present: Dict[str, Any], missing: List[s
"score": score,
"verdict": verdict,
"dominant_label": dominant_label,
"romantic_activation": romantic_activation,
"secondary_context": secondary_context,
"primary_drivers": [
key for key in (
@@ -2577,6 +2593,10 @@ def _derive_event_judgement(route: str, present: Dict[str, Any], missing: List[s
)
if present.get(key)
],
"note": (
"Do not merge romantic_activation / relationship_formation / legal_marriage "
"into one relationship-opportunity label. Punarphoo return is not marriage."
),
}
if route == "finance":
@@ -3840,9 +3860,13 @@ def _collect_strict_evidence(route: str, result: Dict[str, Any]) -> Dict[str, An
present["dignity_guardrail"] = _derive_dignity_guardrail(route, present)
present["functional_benefic_malefic"] = _derive_functional_benefic_malefic(modules)
present["interpretation_source_pack"] = _existing_interpretation_source_pack()
chart_core = present.get("chart") if isinstance(present.get("chart"), dict) else {}
present["punarphoo"] = detect_punarphoo(
chart_core.get("planets") if isinstance(chart_core.get("planets"), dict) else {},
)
missing = [
key for key, value in present.items()
if key not in {"chart", "external_activation", "external_technique_evidence", "vedastro_official_snapshot", "source_priority", "dignity_guardrail", "jaimini_marriage_support", "jaimini_timing_support", "synastry_relationship_support", "argala_support", "shadbala", "shadbala_component_audit", "functional_benefic_malefic", "interpretation_source_pack"}
if key not in {"chart", "external_activation", "external_technique_evidence", "vedastro_official_snapshot", "source_priority", "dignity_guardrail", "jaimini_marriage_support", "jaimini_timing_support", "synastry_relationship_support", "argala_support", "shadbala", "shadbala_component_audit", "functional_benefic_malefic", "interpretation_source_pack", "punarphoo"}
and value in (None, {}, [], "")
]
convergence = present["marriage_convergence"] or {}