From b4f966656079a8a3005acdcc8a3cdeabc896cd7c Mon Sep 17 00:00:00 2001 From: Stefano Fiorini Date: Sun, 15 Mar 2026 04:24:37 -0500 Subject: [PATCH] fix: support surviving spouse filing status in us-cpa --- skills/us-cpa/src/us_cpa/questions.py | 5 +++++ skills/us-cpa/tests/test_questions.py | 28 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/skills/us-cpa/src/us_cpa/questions.py b/skills/us-cpa/src/us_cpa/questions.py index 1a01209..7c92778 100644 --- a/skills/us-cpa/src/us_cpa/questions.py +++ b/skills/us-cpa/src/us_cpa/questions.py @@ -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"), diff --git a/skills/us-cpa/tests/test_questions.py b/skills/us-cpa/tests/test_questions.py index c5a6ebf..6ef5f49 100644 --- a/skills/us-cpa/tests/test_questions.py +++ b/skills/us-cpa/tests/test_questions.py @@ -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)