feat(tajika): label the year lord as a Muntha-lord stand-in for Panchavargiya (T9, BUG-1212)

Astrologer ruling 甲11. Muntha stays natal Lagna + completed years (test pins it on
the main path; muntha.calc_muntha_from_sun_sign is imported nowhere). Panchavargiya
is not implemented (native producer blocked). Consultation annual layer gains
varshesha_basis '暂用 Muntha 主星;占星师口径为 Panchavargiya,待接入' (card keys and
the workflow allowlist carry it); reader report 'Selection basis' row says the
same in both annual sections (zh/en).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
This commit is contained in:
Jesse_Chen
2026-10-03 12:50:21 +08:00
co-authored by Claude Opus 5.5
parent b0329ef03e
commit eb00b0f70f
6 changed files with 82 additions and 2 deletions
+7
View File
@@ -71,6 +71,12 @@ YOGA_PACKET_DOMAINS = {
"raman_bvr_relationship_mother_batch_closure_packet_2026_08_20.json": "parents",
"raman_bvr_relationship_sibling_core_batch_closure_packet_2026_08_20.json": "siblings",
}
# BUG-1212 (ruling 甲11): the year lord shown is the Muntha sign lord; the
# astrologer's rule is Panchavargiya (strongest of five office-bearers), whose
# native producer is still blocked. Shown wherever the year lord is shown.
YEAR_LORD_BASIS = "暂用 Muntha 主星;占星师口径为 Panchavargiya,待接入"
YEAR_LORD_BASIS_EN = "Muntha sign lord for now; the astrologer's rule is Panchavargiya, not yet wired"
TAJIKA_BOUNDARY = (
"parameter_sensitive: Tajika / Varshaphala is verified on the first target set only, "
"not a global closure; annual structure, not an event verdict"
@@ -944,6 +950,7 @@ def build_annual_tajika(birth_payload: dict, chart: dict, *, reference: datetime
"varsha_year": {"start": start.strftime("%Y-%m-%d"), "end": end.strftime("%Y-%m-%d")},
"annual_lagna": annual_chart.get("asc_sign"),
"varshesha": year_lord,
"varshesha_basis": YEAR_LORD_BASIS,
"muntha": {
"sign": muntha.get("muntha_sign"),
"lord": muntha.get("muntha_lord"),
+1
View File
@@ -147,6 +147,7 @@ _PHRASES: dict[str, str] = {
"| 要素总数 |": "| Total elements |",
# ── annual labels and values ──
"Muntha 所在星座的守护星(当前本地口径)": "Ruler of the Muntha sign (current local method)",
"暂用 Muntha 主星;占星师口径为 Panchavargiya,待接入": "Muntha sign lord for now; the astrologer's rule is Panchavargiya, not yet wired",
"两种计算口径给出的年主不同,暂不合并": "The two methods give different year lords; not merged",
"(两者不同)": " (they differ)",
"太阳返照": "Solar return",
+3 -1
View File
@@ -580,7 +580,8 @@ def render_pl9_parity_markdown(packet: dict) -> str:
if data.get('selection_basis'):
return _cell(data['selection_basis'])
if data.get('year_lord') and data['year_lord'] == muntha_data.get('muntha_lord'):
return 'Muntha 所在星座的守护星(当前本地口径)'
# BUG-1212 (甲11): say plainly that this is a stand-in for Panchavargiya.
return '暂用 Muntha 主星;占星师口径为 Panchavargiya,待接入'
return '-'
def _degree(value) -> str:
@@ -2297,6 +2298,7 @@ def render_pl9_parity_markdown(packet: dict) -> str:
if year_lord_data:
lines.extend([
f"| Varshesha | {_cell(_annual_field_text(year_lord, 'year_lord', 'lord'))} |",
f"| Selection basis | {_cell(_annual_selection_basis(year_lord, annual_pack.get('muntha')))} |",
f"| Muntha sign | {_cell(_annual_field_text(annual_pack.get('muntha'), 'muntha_sign'))} |",
])
lines.append('')