fix: support surviving spouse filing status in us-cpa

This commit is contained in:
Stefano Fiorini
2026-03-15 04:24:37 -05:00
parent f219672a2e
commit b4f9666560
2 changed files with 33 additions and 0 deletions

View File

@@ -16,6 +16,7 @@ TOPIC_RULES = [
"answer_by_status": {
"single": "$15,750",
"married_filing_jointly": "$31,500",
"qualifying_surviving_spouse": "$31,500",
"head_of_household": "$23,625",
},
"summary_template": "{filing_status_label} filers use a {answer} standard deduction for tax year {tax_year}.",
@@ -64,6 +65,10 @@ def _filing_status_label(status: str) -> str:
FILING_STATUS_PATTERNS = (
(("qualifying surviving spouse",), "qualifying_surviving_spouse"),
(("qualifying widow",), "qualifying_surviving_spouse"),
(("qualifying widower",), "qualifying_surviving_spouse"),
(("surviving spouse",), "qualifying_surviving_spouse"),
(("married filing jointly",), "married_filing_jointly"),
(("mfj",), "married_filing_jointly"),
(("head of household",), "head_of_household"),

View File

@@ -65,6 +65,34 @@ class QuestionEngineTests(unittest.TestCase):
self.assertEqual(analysis["conclusion"]["answer"], "$23,625")
self.assertIn("Head Of Household", analysis["conclusion"]["summary"])
def test_standard_deduction_infers_qualifying_surviving_spouse_from_question(self) -> None:
with tempfile.TemporaryDirectory() as temp_dir:
engine = self.build_engine(temp_dir)
analysis = engine.answer(
question="What is the standard deduction for a qualifying surviving spouse?",
tax_year=2025,
case_facts={},
)
self.assertEqual(analysis["issue"], "standard_deduction")
self.assertEqual(analysis["conclusion"]["answer"], "$31,500")
self.assertIn("Qualifying Surviving Spouse", analysis["conclusion"]["summary"])
def test_standard_deduction_infers_qualifying_widow_from_question(self) -> None:
with tempfile.TemporaryDirectory() as temp_dir:
engine = self.build_engine(temp_dir)
analysis = engine.answer(
question="What is the standard deduction for a qualifying widow?",
tax_year=2025,
case_facts={},
)
self.assertEqual(analysis["issue"], "standard_deduction")
self.assertEqual(analysis["conclusion"]["answer"], "$31,500")
self.assertIn("Qualifying Surviving Spouse", analysis["conclusion"]["summary"])
def test_complex_question_flags_primary_law_escalation(self) -> None:
with tempfile.TemporaryDirectory() as temp_dir:
engine = self.build_engine(temp_dir)