fix(report): parity yoga category for ayur reads Constitution; only the boundary scan may be prose (#91 fix2)

"Longevity" in the canonical yoga table broke the BUG-1210 lifespan wording
test. Sections other than the dasha boundary scan must carry a table, so a
fixed sentence cannot pass as packet data.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HwMNZEzdzmrbPhuRNmZe3C
This commit is contained in:
Jesse_Chen
2026-10-22 22:01:33 +08:00
co-authored by Claude Opus 5.5
parent ac3dccbac8
commit 1dd6203883
2 changed files with 8 additions and 1 deletions
+1 -1
View File
@@ -1317,7 +1317,7 @@ YOGA_CATEGORIES: dict[str, tuple[str, str]] = {
"putra": ("Children", "子女"),
"conjunction": ("Conjunction", "合相"),
"health": ("Health", "健康"),
"ayur": ("Longevity", "寿元"),
"ayur": ("Constitution", "体质"),
"karma": ("Career", "事业"),
"moksha": ("Liberation", "解脱"),
"aryama": ("Aryama", "Aryama"),
+7
View File
@@ -167,6 +167,10 @@ _PACKET_GAPS = {
}
# Only this section may be a single sentence: "no boundary within N days".
_PROSE_ONLY = {"Dasha Boundary Scan"}
def _table_blocks(body: str) -> list[list[list[str]]]:
blocks = []
current: list[str] = []
@@ -244,6 +248,9 @@ def test_every_section_has_a_real_cell_except_the_four_public_gaps(fictional_rep
assert first == _GAP_LINE[language], f"{index} {heading}"
continue
assert _section_has_real_cell(body, _UNDETERMINED[language]), f"{index} {heading}"
if title_en not in _PROSE_ONLY:
# A fixed sentence is not packet data; every other section shows a table.
assert _table_blocks(body), f"{index} {heading}"
def test_every_section_has_a_real_cell_outside_the_label_column_unit() -> None: