Skip to content

Fix CalEITC child counts for ITIN holders - #10322

Merged
MaxGhenis merged 4 commits into
mainfrom
statute-bugs-ca-caleitc-itin-children
Nov 8, 2026
Merged

MaxGhenis merged 4 commits into
mainfrom
statute-bugs-ca-caleitc-itin-children

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

us-ca-caleitc-itin-children

Source: R&TC §17052(p), which AB 1876 (Stats. 2020, ch. 87, §1) added, substitutes "federal individual taxpayer identification number or a social security number" for "social security number" in IRC 32(m) for taxable years beginning on or after January 1, 2020. The FTB applies that rule to qualifying children in FTB 3514's 2020 instructions, Step 1 question 3 and Line 7, and again in the 2024 instructions.

Change: ca_is_qualifying_child_for_caleitc now applies California's identification rule: before 2020 the federal per-child rule (meets_eitc_identification_requirements), from 2020 an SSN of any kind or an ITIN (has_tin). The new boolean parameter gov.states.ca.tax.income.credits.earned_income.eligibility.itin_eligible (false from 2015, true from 2020) switches between them. ca_eitc_child_count sums that variable (so before 2020 it equals eitc_child_count), and CalEITC uses it throughout the California schedule calculation. The young child tax credit reads the same variable, so a child under 6 with neither an SSN nor an ITIN no longer earns it. Under R&TC 17052.1(c), the credit's qualifying child has "the same meaning as under Section 17052", and FTB 3514 Line 7 tells filers they cannot count a child without an SSN or federal ITIN for either credit. Existing schedule fixtures now supply the California count. Federal child counting, credit parameters, and ca_eitc_eligible.py remain outside this change. The #10307 fixtures need no changes.

Witness: In 2024, an otherwise eligible family with $1,000 earned income and federal AGI and one ITIN qualifying child has federal child count 0 and California child count 1. The continuous formula gives $1,000 × .34 × .85 = $289 instead of $1,000 × .0765 × .85 = $65.025, a $223.975 increase. The model computes these amounts from its formula; the agency tables use income bins.

Years: CalEITC child counts change from 2020. The young child tax credit changes in every year. Before 2020 a child under 6 needs a work-valid SSN, and from 2020 an SSN or ITIN, so a child without the required number no longer earns it (a 2019 ITIN child: $1,000 → $0). Direct child-count tests cover the 2019/2020 transition. Dollar witnesses use 2024 because several existing California schedule parameters begin in 2021, and this identification fix leaves the historical schedules unchanged.

Existing input limitations: has_tin does not separately model expiration/revocation, acquisition timing, ATINs, or the instructions' deceased-newborn exception. We found no competing defensible reading of the statute for the ITIN expansion.

Follow-up (not in this PR): ca_eitc_eligible doesn't apply the identification test to the filer and spouse (FTB 3514 Step 1), which requires a work-valid SSN before 2020 and an SSN or ITIN from 2020. A later PR can gate it on filer_has_tin and itin_eligible, as PE-US does for Colorado, Illinois, DC and Washington.

Validation

make format (Ruff formatting and lint) and git diff --check passed.

After review (at bc62f59ebf, which merges main), 91 cases passed across nine individual YAML files:

  • ca_eitc_child_count.yaml: 4 passed.
  • ca_eitc.yaml: 5 passed.
  • ca_eitc_integration.yaml: 21 passed.
  • ca_eitc_income_boundary.yaml: 8 passed.
  • ca_eitc_eligible.yaml: 8 passed.
  • ca_is_qualifying_child_for_caleitc.yaml: 5 passed.
  • ca_eitc_earned_income.yaml: 10 passed.
  • eitc_child_count.yaml: 8 passed.
  • ca_yctc.yaml: 22 passed. New cases derive the child's status from the household: 2024 SSN $1,154, 2024 ITIN $1,154, 2024 neither $0, 2019 ITIN $0.

test_source_conflicts.py: 103 passed.

The runs cover the whole California earned-income test folder, the federal child-count regression, and the downstream young child tax credit file.

Microsimulation impact

We compared main at the merge base 6145ad4513 with this head, 09d09a9035, on the default dataset for 2026. We estimate that the branch raises CalEITC (ca_eitc) by $118.65m and cuts state income tax by the same amount, so household net income rises by $118.65m. Federal income tax, benefits and the young child tax credit don't change.

  • CalEITC. 23 tax units (174,130 weighted) gain, up to $2,255 each, and none lose. The dataset stores each person's ssn_card_type but not has_tin, so has_tin returns true for everyone. From 2020, CalEITC then counts every qualifying child, including children whose ssn_card_type (NONE or OTHER_NON_CITIZEN) fails the federal identification test that main applies through eitc_child_count.
  • Young child tax credit. main counts qualifying children for the credit without an identification test. This branch requires an SSN or ITIN from 2020, and has_tin returns true for every child in the data, so no family loses the credit.
Output main total, 2026 2026 change Records changed (weighted)
ca_eitc $1.23bn +$118.65m 23 (174,130)
ca_yctc $656.84m $0 0 (0)
income_tax $2,595.11bn $0 0 (0)
state_income_tax $577.96bn -$118.65m 23 (174,130)
household_net_income (households) $17,162.34bn +$118.65m 23 (174,130)
household_benefits $2,060.63bn $0 0 (0)

impact: on the default dataset in 2026, CalEITC rises by $118.65m for 23 tax units (174,130 weighted), and state income tax falls by the same amount. The young child tax credit, federal income tax and benefits don't change.
axiom: TheAxiomFoundation/rulespec-us#1861 queued

🤖 Generated with Claude Code

@MaxGhenis
MaxGhenis marked this pull request as ready for review October 21, 2026 01:52
@MaxGhenis MaxGhenis closed this Oct 21, 2026
@MaxGhenis MaxGhenis reopened this Oct 21, 2026
@DTrim99

DTrim99 commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator

PR Review: Fix CalEITC child counts for ITIN holders

PR #10322 (author: MaxGhenis), head 05f8b82073. This is a first review. The PR adds ca_eitc_child_count, which keeps the federal EITC child count before 2020. From 2020 it counts every otherwise qualifying child with an SSN or ITIN. ca_eitc now reads that count for every schedule lookup. Four existing CalEITC fixtures switch their input from eitc_child_count to ca_eitc_child_count, and the PR adds seven new cases and a changelog fragment. The PR has no comments or reviews yet. It touches no partner test file.

Path prefixes:

  • V/ = policyengine_us/variables/gov/states/ca/tax/income/credits/
  • T/ = policyengine_us/tests/policy/baseline/gov/states/ca/tax/income/credits/

Sources read for this review (all fetched 2026-10-21):

Summary

What is right.

  • The law. §17052(p) applies "for each taxable year beginning on or after January 1, 2020". It modifies IRC 32(m), which sets the identification rule for both the filer (32(c)(1)(E)) and each qualifying child (32(c)(3)(D)), in two ways:
    • (p)(1) deletes the exclusion for benefits-only SSNs;
    • (p)(2) substitutes "federal individual taxpayer identification number or a social security number" for "social security number".
  • What FTB says. The 2020 and 2024 instructions (Line 7) say: "The child must have a valid SSN or ITIN". A valid SSN is one "issued by the Social Security Administration without regard to whether it was issued for employment or issued solely for the purpose of receiving federally funded benefits." The 2019 instructions say: "An Individual Taxpayer Identification Number (ITIN) or Adoption Taxpayer Identification Number (ATIN) cannot be used to claim EITC."
  • The count follows that law in every year.
    • Before 2020: the count is the federal eitc_child_count (Citizen or valid-EAD SSN).
    • From 2020: the count is is_eitc_qualifying_child & has_tin, which accepts any SSN or ITIN.
    • No federal gate. is_eitc_qualifying_child is the qualifying-child test before identification: the IRC 152(c) age, disability and relationship tests. So the PR applies California's identification rule exactly once and doesn't import the federal SSN gate from 2020.
  • The PR body's witness is right. In 2024, with one ITIN child and $1,000 of earnings, the credit is $1,000 × .34 × .85 = $289 instead of $65.025.
  • Tests. I hand-checked 17 expectations, plus traces for the ITIN-filer and YCTC cases. CI passed every affected file on the merge with main.
  • Batch checks. The PR passes the source-conflict ratchet. It has no state-gated parameter key and changes no income-source list.

There are no critical findings and two should-address items:

  • S1. Invalid Axiom line. axiom: pending: hub files parity is not an allowed form. It's the same form we flagged on Correct Minnesota UI taxable wage bases for 2014-2026 #10319. rulespec-us doesn't encode §17052(p), and no open issue covers it.
  • S2. YCTC still applies no identification rule to its young child. ca_yctc reads ca_is_qualifying_child_for_caleitc, which has no SSN/ITIN test. So a child under 6 with neither number still earns the full YCTC ($1,154 in 2024). FTB says that child "cannot" count "in figuring the EITC or YCTC". This is pre-existing, but the PR now leaves two different definitions of a CalEITC qualifying child.

There are also four suggestions: the filer identification gate (pre-existing), a parameter for the 2020 switch, end-to-end tests, and housekeeping.

Status.

  • CI: 27 checks pass and 3 are skipped (the superseded 2026-10-20 run). None is pending or failed.
  • Branch: 2 commits ahead of main and 18 behind, and it merges cleanly.

Critical (must fix)

None.

Should address

S1. The Axiom line axiom: pending: hub files parity is not a valid form

  • Where: the last line of the PR body.
  • The rule (CLAUDE.md, "Axiom Parity"): a PR that adds, updates or fixes policy needs one of encoded-correct, <rulespec PR> encoded, <rulespec issue> queued or n/a: <reason>. pending is not one of them.
  • Why n/a doesn't fit: §17052(p) is statutory, and the PR changes CalEITC for every California family with an ITIN child, or a child whose SSN is not valid for work, from 2020 on.
  • Why encoded-correct isn't available:
    • rulespec-us main (5796861e58) has us-ca/statutes/rtc/17052.yaml. Its only ITIN rules are the two §17052(q) documentation judgments, so it has no §17052(p) modification of 32(m).
    • qualifying_child_count_category is a deferred_outputs entry, and the final credit is deferred too.
  • No existing issue covers (p).
  • Severity: should. An invalid Axiom line is a merge blocker, not a model error.
  • Fix: file an open, pe-parity-labelled, dispatch-ready issue in TheAxiomFoundation/rulespec-us, modelled on MO Person Level Tax Calculation #1420 or Add AMT parameters for 2020-2023 #1467. Then change the line to axiom: TheAxiomFoundation/rulespec-us#<n> queued. Alternatively, run the signed encoder and cite the PR as encoded. The issue needs:
    • Target module: an ordinary replacement of us-ca/statutes/rtc/17052.yaml that adds the (p) modification. It should feed the qualifying-child count that is now deferred, keeping the existing (q) judgments.
    • Corpus citation: us-ca/statute/rtc/17052, subdivision (p).
    • Verbatim law: (p) as quoted under Summary, including both paragraphs.
    • Required outputs: per child, whether the California identification rule is met; per return, the number of qualifying children counted under 32(b), as modified.
    • Companion tests from FTB, not from PolicyEngine output:
      • Line 7 of the 2020 and 2024 instructions supplies the identification cases: an ITIN child counts from 2020; a benefits-only SSN counts from 2020; a child with neither number does not count.
      • Line 7 of the 2019 instructions supplies the pre-2020 case: an ITIN child does not count.
      • The 2024 FTB 3514 table row for $951 to $1,000 supplies the amounts. It gives $63 with no counted child, $282 with one, $332 with two and $373 with three or more. These are the filed-form table amounts, so use them, not PE's continuous $289, $65.025 and $382.50.
    • Why queued: the blocker, such as corpus scope, the signed release or approval for a billed run.

S2. YCTC still counts a young child who has no SSN or ITIN

  • Where: V/young_child/ca_yctc.py:28-32 reads ca_is_qualifying_child_for_caleitc. V/earned_income/ca_is_qualifying_child_for_caleitc.py:22 returns is_eitc_qualifying_child, which has no identification test. The new V/earned_income/ca_eitc_child_count.py:25-29 adds has_tin, but only to the CalEITC count.
  • The law:
    • Statute. §17052.1(b)(1) requires "at least one qualifying child". Under §17052.1(c), "'Qualifying child' shall have the same meaning as under Section 17052", except for the under-6 age limit.
    • FTB 2024, Step 8: "You have at least one qualifying child for the California EITC."
    • FTB 2024, Line 7: "if a child did not have an SSN or federal ITIN ... you cannot count that child as a qualifying child in figuring the EITC or YCTC". The 2020 instructions say the same.
    • Before 2020. The 2019 Step 8 has the same "qualifying child for the California EITC" test, and the 2019 Line 7 rejects ITINs.
    • Statute vs FTB. The statute's cross-reference alone does not settle whether 32(c)(3)(D) is part of the "meaning" of a qualifying child. FTB settles that question explicitly for YCTC, and §17052.1(d)(1) authorizes FTB guidance.
  • Trace at the head (2024). A single parent aged 30 has $10,000 of wages and a child aged 3 with ssn_card_type: NONE and has_tin: false.
    • ca_eitc_child_count is 0, so CalEITC uses the childless schedule. That is correct.
    • The childless credit is positive, as it is everywhere below $31,951; the PR's boundary test shows $0.009155 even at $31,950. So gets_caleitc is true.
    • The child passes ca_is_qualifying_child_for_caleitc and the under-6 test, so YCTC = $1,154. The $10,000 of earnings is below the $26,626 phase-out start. Under Line 7 it should be $0.
    • 2019. For a 2019 child with only an ITIN, the model also pays YCTC, but the 2019 instructions deny it.
  • What the PR changes: nothing in YCTC's results. Every CalEITC schedule stays positive up to the same $31,950 limit, so ca_eitc > 0 has the same sign at any child count. The defect is on main already.
  • Why it belongs here:
    • Two definitions. The PR creates a California identification rule but leaves ca_is_qualifying_child_for_caleitc without it. Its label is "Child qualifies for CalEITC", yet CalEITC doesn't use it, and the one credit that does (YCTC) skips the rule.
    • Misleading PR body. The body lists ca_yctc.yaml as covering "the downstream California young-child credit". Those 18 cases set ca_is_qualifying_child_for_caleitc directly, so they cannot exercise the identification rule.
  • Severity: should. It's a wrong YCTC result against FTB's instructions, but in a credit the PR doesn't claim to change.
  • Fix: use one California per-person test for both credits.
    • Give ca_is_qualifying_child_for_caleitc a pre-2020 formula, is_eitc_qualifying_child & meets_eitc_identification_requirements, and a 2020 formula, is_eitc_qualifying_child & has_tin. Or switch with the parameter from G2.
    • Make ca_eitc_child_count the tax_unit.sum of that variable.
    • ca_yctc then needs no change. Its existing YAML inputs the variable directly, and the existing ca_is_qualifying_child_for_caleitc.yaml cases use the default Citizen SSN and has_tin: true, so none of them move.
    • Add YCTC cases for a child under 6:
      • 2024 with an ITIN: $1,154.
      • 2024 with neither number: $0.
      • 2019 with an ITIN: $0.
    • If you'd rather keep this PR narrow, file a follow-up issue and note the deferral in the PR body.

Suggestions

G1. CalEITC has no filer or spouse identification test (pre-existing)

  • Where: V/earned_income/ca_eitc_eligible.py checks age, investment income and AGI only.
  • The law.
    • Before 2020: FTB 3514 Step 1 required a work-valid SSN for the filer and spouse (2019: "have a social security number (SSN) that allows you to work and is valid for EITC purposes?").
    • From 2020: it requires an SSN or ITIN (2024 Step 1: "If No, stop here, you cannot take the credit").
  • The head:
    • Trace. An ITIN filer with an SSN child gets the one-child schedule in every year. ca_eitc_child_count doesn't depend on the filer, and nothing checks the filer's ID. That is correct from 2020 and wrong before.
    • A filer with neither number gets CalEITC in any year.
    • Other states. The CO, IL, DC and WA credits each apply filer_has_tin.
  • Fix (optional, separate PR): add a year-dependent filer and spouse gate in ca_eitc_eligible, or open an issue for it. It doesn't touch this PR's child count. The PR body says it scoped this out.

G2. A parameter for the 2020 switch

  • formula_2020 writes the effective date into the variable. The DC fix in Gate the DC EITC ITIN extension to 2023 and apply the IRC 152(c)(2) relationship test to EITC qualifying children #9643 put the same rule in a boolean parameter, gov.states.dc.tax.income.credits.eitc.itin_eligible (false from 2015, true from 2023, with references). The model-development guidance uses a boolean parameter when a rule's structure changes on a date.
  • Fix (optional): add gov.states.ca.tax.income.credits.earned_income.itin_eligible (false from 2015-01-01, true from 2020-01-01), citing §17052(p) and AB 1876. Branch on it with a scalar if. This lets a reform turn the ITIN extension off, and S2's fix could reuse it.

G3. End-to-end tests that derive qualifying-child status

  • Every new case supplies is_eitc_qualifying_child, and the dollar cases also supply ca_eitc_eligible. So no new case would catch a later refactor that put the federal SSN test back into is_eitc_qualifying_child.
  • Fix (optional): add one or two cases that derive both from age, is_tax_unit_dependent and wages:
    • an ITIN filer with an SSN child;
    • an SSN filer with an ITIN child under 6, asserting ca_eitc_child_count, ca_eitc and ca_yctc.
    • Put two tax units in one case (an ITIN child and a no-ID child) to show the count vectorizes across units.

G4. Housekeeping

  • ca_eitc_child_count has no defined_for = StateCode.CA, unlike the neighbouring California variables. That's harmless, since ca_eitc is gated by ca_eitc_eligible, but it's inconsistent.
  • The PR body still opens with "WIP plan", although every item is ticked and the PR is not a draft.

Verified correct

  • Statute and dates. AB 1876 §1 ("Section 17052 of the Revenue and Taxation Code is amended to read") added (p), effective for taxable years beginning on or after January 1, 2020. The current §17052 keeps (p) unchanged after the 2026 amendment (SB 1435). formula_2020 starts on 2020-01-01.

  • Identification types at the head:

    Child eitc_child_count ca_eitc_child_count, 2020+ Law, 2020+
    Citizen or valid-EAD SSN counted counted counted
    SSN not valid for work (OTHER_NON_CITIZEN) not counted counted counted ((p)(1); Line 7 "without regard to whether it was issued for employment")
    ITIN only (NONE, has_tin true) not counted counted counted ((p)(2))
    No SSN or ITIN (has_tin false) not counted not counted not counted (Line 7)

    Before 2020 the CA count equals the federal count, which matches the 2019 instructions.

  • Hand-checks (17 expectations). Unless noted, the dollar cases are 2024, with ca_eitc_eligible supplied and earned income and AGI of $1,000. That is below every 2024 phase-in end ($4,525 with no children, $6,794 with one, $9,537 with two or more) and every phase-out start, so the credit is earnings × rate × .85.

    1. T/earned_income/ca_eitc.yaml, ITIN child. eitc_child_count 0 (NONE fails Citizen or valid EAD); ca_eitc_child_count 1; ca_eitc 1,000 × .34 × .85 = 289.00.
    2. Same file, child with no ID. Counts 0 and 0; ca_eitc 1,000 × .0765 × .85 = 65.025.
    3. Same file, four ITIN children. Counts 0 and 4. calc(4) lands in the 3+ bracket, so 1,000 × .45 × .85 = 382.50. earned_income_amount has no separate three-child bracket, so calc(4) gives $9,537.
    4. T/earned_income/ca_eitc_child_count.yaml, 2019 ITIN child. The pre-2020 formula returns the federal count, so both counts are 0.
    5. Same file, 2020 ITIN child. formula_2020 gives 1; the federal count is 0.
    6. Same file, 2024 mixed family. The federal count is 1 (SSN child). The CA count is 2 (SSN and ITIN children). The child with no ID fails has_tin, and the 25-year-old fails is_eitc_qualifying_child.
    7. Same file, 2024 child whose SSN isn't valid for work. The federal count is 0 and the CA count is 1, as §17052(p)(1) requires.
    8. T/earned_income/ca_eitc_integration.yaml, 2022, one child, $6,400 (input renamed only). The phase-in amount is 6,379 × .289 = 1,843.53, less (6,400 − 6,379) × .289 = 6.07, giving 1,837.46. That is within ±6 of 1,843.
    9. Same file, 2022, three children, $8,000. 8,000 × .3825 = 3,060, within ±20 of 3,051 (phase-in end $8,954).
    • Other renamed fixtures. The ca_eitc.yaml $20,500 case and the two ca_eitc_income_boundary.yaml vectors change only the input's name. ca_eitc reads the same count, so their results can't move. CI passed them.
  • Vectorization and entities.

    • is_eitc_qualifying_child and has_tin are Person booleans, combined with & and summed by tax_unit.sum into a TaxUnit integer.
    • formula_2020 is a period dispatch, not a branch on arrays.
    • The boundary test supplies ca_eitc_child_count: [0, 1, 2, 3] across four tax units.
  • Callers.

    • ca_eitc_child_count is read only by ca_eitc. No California variable reads eitc_child_count any more.
    • ca_foster_youth_tax_credit is gated on ca_eitc_eligible, and YCTC uses ca_eitc > 0. Neither result changes (see S2).
    • The federal reforms and other states that read eitc_child_count are untouched.
  • References. V/earned_income/ca_eitc_child_count.py:15-20 cites AB 1876 §1 and the 2020 FTB 3514 instructions. Both are single HTML sources and both corroborate: (p), and Step 1 question 3 ("have a qualifying child who has a valid SSN or federal ITIN?") together with Line 7.

  • Changelog. changelog.d/statute-bugs-ca-caleitc-itin-children.fixed.md is a top-level fragment, and fixed is the right type.

  • Batch lessons:

Axiom line assessment

Invalid: axiom: pending: hub files parity (S1).

  • Recommended form: axiom: TheAxiomFoundation/rulespec-us#<n> queued, with a new open, pe-parity-labelled, dispatch-ready issue for §17052(p)'s identification rule as it applies to qualifying children. The required contents are listed under S1. Alternatively, cite an encoder PR as encoded.
  • Not n/a. This is a statutory provision, and the PR changes CalEITC amounts for families with ITIN children from 2020.
  • Not encoded-correct. rulespec-us main (5796861e58) encodes only §17052(q)'s ITIN documentation duties and defers the qualifying-child count. No open issue covers (p).

CI status

27 pass, 3 skipping, 0 pending, 0 failed. I re-checked gh pr checks 10322 at the end of this review.

  • The green run. Run 39608243078 (pull_request, created 2026-10-21 13:28 UTC) tested merge commit d17a1469. That merges head 05f8b82073 into fec98b87c8, which is main after Count the FL and SD LIHEAP comments in the source-conflict ratchet baseline #10334.
  • Where the California tests ran.
    • Quick Feedback selected and passed ca_eitc.yaml (5), ca_eitc_child_count.yaml (4), ca_eitc_income_boundary.yaml (8) and ca_eitc_integration.yaml (21).
    • Baseline states-shard-1, batch 2/14 (states/ca) also passed those files, plus ca_eitc_eligible.yaml, ca_eitc_earned_income.yaml, ca_is_qualifying_child_for_caleitc.yaml and ca_yctc.yaml (18).
  • Guards. Rest (Python, shard-1 + variables) passed test_source_conflicts.py.
  • Earlier runs.
    • The skipped checks are the umbrella jobs of run 39506324946 (2026-10-20 22:12 UTC).
    • The failed run. Run 39529786819 (2026-10-21 01:52 UTC) failed only test_conflict_sounding_comments_do_not_grow, and every file it listed was an FL/SD LIHEAP file. That is the known main-caused failure that Count the FL and SD LIHEAP comments in the source-conflict ratchet baseline #10334 fixed, and the green run superseded it. It is not a finding.
  • Locally: I ran no tests or model probes. CI is green at the current head. Every expectation and the S2 and G1 traces were checked by hand from the code and parameters.

Branch status

0 critical, 2 should and 4 suggestions are open at this head.

Verdict: REQUEST_CHANGES

@DTrim99 DTrim99 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The CalEITC count is right. From TY2020, R&TC 17052(p) accepts an SSN or ITIN for qualifying children, and before 2020 the federal rule stays; all 17 expectations hand-check. Two should-address items: (1) the 'pending: hub files parity' axiom line is invalid, so please file a pe-parity issue for 17052(p) and mark it queued; (2) ca_yctc still reads a qualifying-child variable with no SSN/ITIN test, so a child under 6 with no number gets YCTC ($1,154 in 2024) where FTB says $0. It's pre-existing, but the PR now leaves two definitions; put the ID test in the shared variable. Four suggestions. Full report in the comment above.

@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Picking this up for the US hub. I'll post a hand-off comment here when it's ready.


Generated by Claude Code

…YCTC

ca_yctc read ca_is_qualifying_child_for_caleitc, which had no SSN or ITIN
test, so a child under 6 with neither number earned the full YCTC ($1,154
in 2024), and a 2019 child with only an ITIN did too. R&TC 17052.1(c) gives
the YCTC qualifying child the section 17052 meaning, and FTB 3514 Line 7
bars such a child from both credits.

Move the identification test into ca_is_qualifying_child_for_caleitc: the
federal rule (meets_eitc_identification_requirements) before 2020, and an
SSN of any kind or an ITIN (has_tin) from 2020 under 17052(p), switched by a
new itin_eligible parameter. ca_eitc_child_count now sums that variable and
is defined for California only, so both credits share one definition.

Adds 2024 YCTC cases for a child under 6 with an SSN ($1,154), an ITIN
($1,154) and neither ($0), and a 2019 ITIN case ($0), each deriving
qualifying-child status from the household.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Ready for hub review

Head: bc62f59ebf6a10be8249dade4422f0db28e255c7 (fast-forward from 05f8b82073).

What changed

  • Merge main. It merged clean: no conflicts, and main touched no file in this PR. One commit holds both the merge and the change below: bc62f59ebf has parents 05f8b82073 (the old head) and 6145ad4513 (main). I staged the merge with --no-commit and didn't commit it before making the YCTC change. Splitting it would need a force-push, which I'm not allowed to do. Against main, the commit changes only this PR's files (10 files: the two variables, the new parameter, the tests and the fragment).
  • Should 2, one identification test for CalEITC and YCTC:
    • ca_is_qualifying_child_for_caleitc.py:31-47 returns is_eitc_qualifying_child combined with California's identification rule. Before 2020 that is the federal per-child rule (meets_eitc_identification_requirements). From 2020 it is has_tin (an SSN of any kind or an ITIN).
    • The switch is a new boolean parameter, gov.states.ca.tax.income.credits.earned_income.eligibility.itin_eligible (false from 2015, true from 2020), citing R&TC 17052(p), AB 1876 §1 and the 2020 FTB 3514 instructions. That is the review's G2.
    • ca_eitc_child_count.py:24 now sums that variable, and its formula_2020 is gone. So CalEITC (ca_eitc) and YCTC (ca_yctc) read one definition.
    • (bc62f59ebf)
  • Tests: four YCTC cases that derive qualifying-child status from the household (single parent aged 30, $10,000 wages, child aged 3, CA), at ca_yctc.yaml:410 (2024 SSN), :437 (2024 ITIN), :462 (2024 neither) and :489 (2019 ITIN).
  • G4: ca_eitc_child_count is now defined_for = StateCode.CA (ca_eitc_child_count.py:21).
  • Changelog: the fragment gains a YCTC line.
  • Body: "WIP plan" is now "Plan", the YCTC item is added, and the validation lists the new counts.

Statutory basis (quoted from the review; I could not reach leginfo or ftb.ca.gov, so these are unverified by me)

  • R&TC 17052(p) (from 2020) substitutes "federal individual taxpayer identification number or a social security number" for "social security number" in IRC 32(m).
  • R&TC 17052.1(c): "'Qualifying child' shall have the same meaning as under Section 17052", except for the under-6 age limit.
  • FTB 3514 (2024) Line 7: a child without an SSN or federal ITIN cannot count as a qualifying child "in figuring the EITC or YCTC".

Hand computations

  • 2024 YCTC. $10,000 of CalEITC earned income is below the $26,626 phase-out start, so the full $1,154. The childless CalEITC is positive at this income, so YCTC turns only on whether the child qualifies.
    • SSN child: qualifies; ca_eitc_child_count 1; $1,154.
    • ITIN child (ssn_card_type: NONE, has_tin: true): qualifies under 17052(p); count 1; $1,154.
    • Neither (has_tin: false): doesn't qualify; count 0; $0. Before this change it was $1,154.
  • 2019 YCTC, ITIN child. Before 2020 the federal rule applies and an ITIN doesn't count, so the count is 0 and $0. Before this change, YCTC did not check identification.

Tests (local, one file per process)

  • YAML. ca_yctc.yaml 22, ca_eitc.yaml 5, ca_eitc_child_count.yaml 4, ca_eitc_integration.yaml 21, ca_eitc_income_boundary.yaml 8, ca_eitc_eligible.yaml 8, ca_is_qualifying_child_for_caleitc.yaml 5, ca_eitc_earned_income.yaml 10, federal eitc_child_count.yaml 8. All pass: 91.
  • Python. test_source_conflicts.py 103. Passes.
  • Mutants, each in its own process, restored after:
    • Dropping the identification test from ca_is_qualifying_child_for_caleitc fails 2 of 22 YCTC cases (2024 neither, 2019 ITIN) and 2 of 4 ca_eitc_child_count cases.
    • Setting itin_eligible true from 2015 fails the 2019 YCTC case and the 2019 child-count case.

CI

Pull request run 41732562938 at bc62f59ebf: completed, success, all 36 jobs passed. The tree merges current main, including the #10287 ratchet.

Judgment calls

  • G2 taken with S2. The parameter is cheap, a reform can turn the ITIN extension off, and it sits in eligibility/, next to max_investment_income.
  • ca_eitc_child_count uses add over the person variable. It is no longer a period-split formula, so the pre-2020 count equals the federal eitc_child_count by construction: same per-child tests, summed.

Reply to DTrim99

  1. S1 (axiom line). Left to the hub, as instructed. The axiom: line is unchanged.
  2. S2 (YCTC identification). Taken, as you suggested. The identification test now lives in ca_is_qualifying_child_for_caleitc (ca_is_qualifying_child_for_caleitc.py:31-47): the federal rule before 2020, SSN or ITIN from 2020, through the new itin_eligible parameter. ca_eitc_child_count is its sum (ca_eitc_child_count.py:24), so both credits share one definition. New YCTC cases at ca_yctc.yaml:410 (2024 SSN, $1,154), :437 (2024 ITIN, $1,154), :462 (2024 neither, $0) and :489 (2019 ITIN, $0). They derive qualifying-child status from age and relationship rather than supplying it. The existing ca_yctc.yaml and ca_is_qualifying_child_for_caleitc.yaml cases don't move.
  3. G1 (filer and spouse identification). Not taken here: it's a separate eligibility gate, as you noted, and the body already scopes it out. Proposed as a follow-up below.
  4. G2 (parameter for the 2020 switch). Taken: eligibility/itin_eligible.yaml, used by S2's fix.
  5. G3 (end-to-end tests). Taken in part. The four new YCTC cases derive qualifying-child status from the household and assert ca_is_qualifying_child_for_caleitc, ca_eitc_child_count and ca_yctc. I didn't add the ITIN-filer case or a two-unit vectorized case; the existing ca_eitc_income_boundary.yaml already runs four tax units in one case.
  6. G4 (housekeeping). Taken: defined_for = StateCode.CA on ca_eitc_child_count, and the body's "WIP plan" heading is gone.

Proposed follow-up issue

  • CalEITC: filer and spouse identification gate. ca_eitc_eligible checks no ID: a filer with neither an SSN nor an ITIN gets CalEITC in any year. Before 2020 the filer and spouse need an SSN valid for work; from 2020, an SSN or ITIN (FTB 3514 Step 1). Gate it with filer_has_tin and the new itin_eligible parameter, as CO, IL, DC and WA do.

Generated by Claude Code

@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Hub review in progress

Head reviewed: bc62f59ebf6a10be8249dade4422f0db28e255c7 (unchanged since the hand-off).

Findings so far (the final review follows in a separate comment):

  • git diff 6145ad4513 bc62f59ebf touches only this PR's 10 files. Nothing under .github/ or partners/.
  • CI run 41732562938 at the head: 36 of 36 jobs success.
  • The defect reproduces at main (2024, single parent, $10,000 wages, child aged 3): ITIN child ca_eitc 200.952 at main vs 1,036.932 at the head; child with no number ca_yctc 1,154 at main vs 0 at the head.
  • 2019 moves too: an ITIN child's YCTC is $1,000 at main and $0 at the head. The 2019 SSN control still gets $1,000, so the 2019 assertion is not vacuous.
  • Changed YAML files pass one per process so far: ca_eitc 5, ca_eitc_child_count 4, ca_eitc_income_boundary 8, ca_eitc_integration 21, ca_eitc_eligible 8, ca_is_qualifying_child_for_caleitc 5.
  • Sources: leginfo.legislature.ca.gov, ftb.ca.gov, govinfo.gov and uscode.house.gov are all unreachable from this session's network.

Generated by Claude Code

@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Ready for hub review
VERDICT: APPROVE
bc62f59
METHODOLOGY_CHOICE: yes

The PR reads R&TC 17052.1(c)'s "same meaning as under Section 17052" as carrying the 17052(p) identification rule into the YCTC qualifying child. The statute's cross-reference alone doesn't settle that, and the PR follows FTB 3514 Line 7, which fills the gap. Under CONTRIBUTING's source-conflict rules that is gap-filling, not a conflict, so no register entry is needed.

The head hasn't moved since the hand-off. bc62f59ebf has two parents, 05f8b82073 (the old head) and 6145ad4513 (main), and git diff 6145ad4513 bc62f59ebf --stat lists only this PR's 10 files. This review has no P1 findings, one P2 and four P3s.

Findings

P2-1. The body has no impact: line

  • Where: the PR body. It has axiom: TheAxiomFoundation/rulespec-us#1861 queued ... but no impact: line. The only mention is "No microsimulation; impact is deferred to the hub."
  • Why it matters: the diff moves baseline outputs, so the hub's merge gate needs the line. The build assignment reserved this line for the hub, so it is the hub's to add, not the author's. What moves:
    • CalEITC, from 2020. A child who passes is_eitc_qualifying_child with has_tin true but ssn_card_type other than CITIZEN or NON_CITIZEN_VALID_EAD now counts. Witness (2024, single parent aged 30, $10,000 wages, child aged 3, ssn_card_type: NONE, has_tin: true): ca_eitc is 200.952 at main and 1,036.932 at the head.
    • YCTC, any year. A child under 6 with has_tin: false now loses YCTC. Witness, same household with has_tin: false: ca_yctc is 1,154 at main and 0 at the head. 2021: 1,000 → 0.
    • YCTC, before 2020. A child without a work-valid SSN now loses YCTC. Witness, 2019 ITIN child: ca_yctc is 1,000 at main and 0 at the head.
  • Population check this calls for: has_tin defaults to True unless the data supplies it (has_tin.py:9,35). So every CA child in the microdata whose ssn_card_type is NONE or OTHER_NON_CITIZEN counts for CalEITC from 2020, unless the dataset sets has_tin false for them.
    • Break CA tax units with such children down by has_tin.
    • Report the change in ca_eitc and ca_yctc totals for the modelled years.
    • Confirm whether the dataset populates has_tin.
  • How I found it: gh api repos/PolicyEngine/policyengine-us/pulls/10322 --jq .body | grep -c '^impact:' → 0. The witness values come from one Python probe, run once against each worktree (head and main).

P3-1. "Years: 2020 onward" understates the change

  • Where: the PR body's Years paragraph.
  • The problem: the change also moves 2019 YCTC (the witness above, $1,000 → $0) and YCTC in every year for a child with no number. The changelog fragment gets this right ("a child under 6 needs a work-valid SSN before 2020"); the body doesn't.
  • Replacement: "Years: CalEITC child counts change from 2020. YCTC changes in every year: before 2020 a child under 6 needs a work-valid SSN, and from 2020 an SSN or ITIN, so a child without the required number no longer earns it (2019 ITIN child: $1,000 → $0). Direct child-count tests cover the 2019/2020 transition. ..."

P3-2. The body doesn't name G1 as a follow-up

  • Where: the PR body.
  • What it says now: "Federal child counting, credit parameters, and ca_eitc_eligible.py remain outside this change." Only the hand-off comment proposes the filer and spouse identification issue.
  • Suggested addition: "Follow-up (not in this PR): CalEITC has no filer or spouse identification gate in ca_eitc_eligible (FTB 3514 Step 1). Before 2020 that is a work-valid SSN, and from 2020 an SSN or ITIN. To be gated with filer_has_tin and itin_eligible, as CO, IL, DC and WA do."

P3-3. Only one case pins the 2020 switch date

  • Where: ca_eitc_child_count.yaml, case "An ITIN qualifying child counts starting in 2020 ...".
  • The gap: mutant M4 below moves the itin_eligible switch from 2020-01-01 to 2021-01-01. Only that case kills it: every ca_eitc and ca_yctc case passes.
  • Optional addition: a 2020 YCTC case for a child aged 3 with only an ITIN, in ca_yctc.yaml.

P3-4. The build asked for both statutes to be quoted; only 17052(p) is

  • Where: ca_is_qualifying_child_for_caleitc.py:15-18.
  • What the code has:
    • 17052(p) is quoted in a code comment (lines 40-43).
    • 17052.1(c) is only paraphrased: "the YCTC qualifying child has the 17052 meaning".
  • Sourcing: the hand-off says plainly that the author couldn't reach leginfo, and quotes both provisions from DTrim99's review. I couldn't reach leginfo either (see below), so neither quote has been checked against the source in this round.
  • Fix: once someone can reach leginfo, quote 17052.1(c) verbatim in the comment.

DTrim99's review, item by item

Item Answer Holds?
S1, axiom line The body now reads axiom: TheAxiomFoundation/rulespec-us#1861 queued, which is a valid form. The hub made this change, not a commit. Probably. I couldn't open rulespec-us#1861 (outside this session's repository scope), so its labels and contents are unchecked.
S2, YCTC identification bc62f59ebf makes ca_is_qualifying_child_for_caleitc.py:31-47 apply the rule, and ca_eitc_child_count.py:24 is add(...) of it. Yes. ca_yctc.py:29-31 and ca_eitc.py:20 (via the count) now read one definition, and nothing else reads either variable. Four YCTC cases at ca_yctc.yaml:410,437,462,489.
G1, filer and spouse identification Not taken; proposed as a follow-up in the hand-off. Reasonable to leave out of scope, but the body should say so (P3-2).
G2, parameter eligibility/itin_eligible.yaml: false from 2015, true from 2020, with three references. Yes. Branches with a scalar if; mutants M2 and M4 are killed.
G3, end-to-end tests Partly. The new YCTC cases derive qualifying-child status from age and household. Yes as far as it goes. No ITIN-filer case.
G4, housekeeping defined_for = StateCode.CA at ca_eitc_child_count.py:21; "WIP plan" is gone. Yes.

Checked and sound

  • The defect, at main (6145ad4513). One Python probe per worktree. Household: a single parent aged 30 with $10,000 wages and a child aged 3, in CA.

    Year and child main ca_eitc head ca_eitc main ca_yctc head ca_yctc
    2024, SSN 1,036.932 1,036.932 1,154 1,154
    2024, ITIN 200.952 1,036.932 1,154 1,154
    2024, neither 200.952 200.952 1,154 0
    2021, ITIN 166.822 533.102 1,000 1,000
    2021, neither 166.822 166.822 1,000 0
    2019, ITIN 158.53 158.53 1,000 0
    2019, SSN 514.42 514.42 1,000 1,000

    So both defects reproduce at main: the CalEITC count for an ITIN child, and YCTC for a child with no number.

  • Hand values, computed before running.

    • 2024 cases. The YCTC amount is $1,154 and the phase-out starts at $26,626 (young_child/amount.yaml, phase_out/start.yaml). $10,000 is below the start, so there is no reduction. That gives $1,154 for the SSN and ITIN children (each with a positive CalEITC, above) and $0 for the child with neither number.
    • 2019 case. YCTC amount, ineligible_age and loss_threshold start in 2021. So I checked that 2019 YCTC isn't zero for everyone: the 2019 SSN control gets $1,000. The 2019 ITIN ca_yctc: 0 assertion therefore isn't vacuous.
  • Every year, filing status and entity the change reaches.

    • ca_is_qualifying_child_for_caleitc is a Person boolean: is_eitc_qualifying_child, combined with either meets_eitc_identification_requirements (before 2020) or has_tin (from 2020).
    • The rule is per child, so filing status doesn't enter.
    • Before 2020, ca_eitc_child_count = Σ(is_eitc_qualifying_child & meets_eitc_identification_requirements). That is eitc_child_count's formula, so pre-2020 CalEITC can't move. The 2019 rows above confirm it.
  • has_tin and ATINs. has_tin is labelled "Has TIN (ITIN or SSN)". It's input-only, defaulting to True, and falls back to legacy has_itin inputs.

    • A child with only an ATIN reaches the rule only if the input sets has_tin false. Nothing separates ATINs, and the body's "Existing input limitations" says so.
    • From 2020 the rule ignores ssn_card_type, so a work-valid-SSN child entered with has_tin: false doesn't count. That is consistent with the variable's label.
  • Readers (grep -rn across policyengine_us, tests excluded).

    • ca_is_qualifying_child_for_caleitc: ca_yctc.py:30 and ca_eitc_child_count.py:24.
    • ca_eitc_child_count: ca_eitc.py:20.
    • itin_eligible (CA): ca_is_qualifying_child_for_caleitc.py:37 only. The DC hits are DC's own parameter.
    • Downstream: ca_eitc and ca_yctc feed ca/.../credits/refundable.yaml, household/state_eitcs.yaml and household/state_ctcs.yaml.
    • No reform reads any of these. No other CA variable reads eitc_child_count or is_eitc_qualifying_child.
    • No reader is made worse.
  • Tests, one per process at the head:

    File Result
    ca_eitc.yaml 5 passed
    ca_eitc_child_count.yaml 4 passed
    ca_eitc_income_boundary.yaml 8 passed
    ca_eitc_integration.yaml 21 passed
    ca_eitc_eligible.yaml 8 passed
    ca_is_qualifying_child_for_caleitc.yaml 5 passed
    ca_eitc_earned_income.yaml 10 passed
    ca_yctc.yaml 22 passed
    federal eitc_child_count.yaml 8 passed
    test_source_conflicts.py 103 passed

    That is 91 YAML cases, matching the hand-off. The new tests assert the claims directly: the per-person qualifying status, the count and the dollar amount. They use no generated ranges.

  • Mutants, each run on a scratch worktree, one process per file (ca_eitc_child_count, ca_eitc, ca_yctc), then restored with a clean git status:

    Mutant ca_eitc_child_count ca_eitc ca_yctc
    M1 (hand-off): return is_child 2 of 4 fail 1 of 5 fail 2 of 22 fail
    M2 (hand-off): itin_eligible true from 2015 1 fail pass 1 fail
    M3 (mine): the federal rule from 2020 too 3 fail 2 fail 1 fail
    M4 (mine): switch moved to 2021 1 fail pass pass
    M5 (mine): ca_yctc reads is_eitc_qualifying_child pass pass 3 fail
    M6 (mine): ca_eitc reads eitc_child_count pass 2 fail pass

    All six are killed. The runner's output cut off the failing case names, so which case kills each mutant is my inference from the inputs. The cases are named after the 2019 ITIN, 2020 ITIN, 2024 neither and 2024 ITIN rows of each file.

  • Hand-off line citations (:31-47, :24, :21, ca_yctc.yaml:410/437/462/489) match the files.

  • CI. Run 41732562938 (pull_request, head bc62f59ebf): completed, success. All 36 jobs concluded success; none was skipped or cancelled.

  • Scope.

  • Changelog. One top-level fixed fragment. Its YCTC sentence matches the code.

What I couldn't check

  • Law and FTB text. leginfo.legislature.ca.gov, www.ftb.ca.gov, govinfo.gov and uscode.house.gov are all blocked by this session's network policy. So I confirmed none of these quotes:

    • R&TC 17052(p), 17052.1(b)-(d) and AB 1876;
    • the 2019, 2020 and 2024 FTB 3514 instructions.

    The hub's quotes of FTB 3514 2020 "Expansion for Credits Eligibility" and 2024 Line 7 are consistent with the code: SSN or ITIN for qualifying children from 2020, any valid SSN, and ATIN excluded. But I haven't seen the text.

  • rulespec-us#1861. It is outside this session's repository scope, so I couldn't check its pe-parity label or whether it is ready to dispatch.

  • Population impact. I couldn't run it (no microdata here, and no microsimulation per the brief). See P2-1 for the check this calls for, including whether the dataset populates has_tin.


Generated by Claude Code

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

David, thanks for the review. Here's where the PR answers each item, as of 09d09a90:

Your item Where the PR answers it
S1: the axiom: line The body's axiom: line names TheAxiomFoundation/rulespec-us#1861, an open pe-parity issue
S2: the YCTC identification test bc62f59ebf: ca_is_qualifying_child_for_caleitc applies the rule, ca_eitc_child_count sums it, ca_yctc reads it, and ca_yctc.yaml gains four cases
G1: filer and spouse identification The body names it as a follow-up
G2: a parameter for the 2020 switch eligibility/itin_eligible.yaml, false from 2015 and true from 2020
G3: end-to-end tests Partly. The four new ca_yctc.yaml cases derive the child's status from age, ssn_card_type and has_tin; no case covers an ITIN filer or two tax units yet
G4: housekeeping ca_eitc_child_count sets defined_for = StateCode.CA, and the body now opens with the source

An independent review checked S1 through G3 at bc62f59ebf (comment), and the one commit since, 09d09a90, adds a verbatim quote of R&TC 17052.1(c) to a code comment. I'm dismissing your change request so the PR can land once CI passes and we measure its impact.

🤖 Generated with Claude Code

@MaxGhenis
MaxGhenis dismissed DTrim99’s stale review November 4, 2026 13:48

The PR answers each item at 09d09a9; the comment above maps each one to its commit: #10322 (comment)

@MaxGhenis
MaxGhenis merged commit 96a083c into main Nov 8, 2026
36 checks passed
@MaxGhenis
MaxGhenis deleted the statute-bugs-ca-caleitc-itin-children branch November 8, 2026 07:17
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

US + core hub merge audit, us#10322 at 09d09a9035e0c631a32325dcec72cc1ebb03cd42 (squash): Fix CalEITC child counts for ITIN holders.

  • Reviews:
    • DTrim99 requested changes on October 21. The branch took his points on the Axiom line, the young child tax credit's identification test, the 2020 switch parameter and housekeeping, and in part on end-to-end tests. His filer and spouse identification point became the body's follow-up. A November 4 comment maps each point to its commit, and GitHub shows the review as dismissed.
    • An Opus 5.5 reviewer in a cloud session approved bc62f59ebf in round 2, with one P2 and four P3s. The P2 asked for the impact section, which the body now has. The body takes P3-1 (years) and P3-2 (follow-up), and 09d09a9035 takes P3-4 by quoting R&TC 17052.1(c) in a comment. P3-3, an optional 2020 young child tax credit case, stays out.
    • From bc62f59ebf, 09d09a9035 changes one code comment and nothing else.
  • Methodology choice the round-2 review flagged: the branch reads R&TC 17052.1(c)'s cross-reference to Section 17052 as carrying 17052(p)'s identification rule into the young child tax credit, as FTB 3514 Line 7 tells filers.
  • Main merge and the overlap guard: since the CI base 6145ad4513, main's Fix EITC eligibility for married separate filers #10307, Apply Arizona, Arkansas and California rules for a filer who can be claimed as a dependent #10053 and Let a qualifying child without an SSN establish EITC eligibility from 2021 #10583 have changed CalEITC eligibility and ca_eitc_mfs.yaml, so the guard flags California. A local merge of this head with main 39265d9be0 matches git merge-tree's tree. On it, California's earned income (86 cases), young child (22) and foster youth (14) credit folders pass, with San Francisco's working families credit (3) and two code-health guards (113), one process each.
  • Gates checked live at merge:
    • gh pr checks exits 0;
    • the latest Pull request run at the head concluded success (41839759252, 36 of 36 jobs);
    • MERGEABLE;
    • not a draft;
    • no reviewer's latest review requests changes;
    • the semantic-overlap guard, with the combination verified at main 39265d9be0;
    • the merge pins the head.
  • Impact (default dataset, 2026, the head against main at the merge base 6145ad4513): CalEITC rises by $118.65m for 23 tax units (174,130 weighted), and state income tax falls by the same amount. The young child tax credit, federal income tax and benefits don't change. The dataset stores ssn_card_type but not has_tin, so has_tin returns true for every person. The body's impact section has the table.
  • Follow-ups: the body proposes one, CalEITC's filer and spouse identification test (FTB 3514 Step 1) in ca_eitc_eligible.
  • Axiom: CalEITC: count qualifying children with ITINs or SSNs from 2020 (R&TC §17052(p)) (PE-US #10322) TheAxiomFoundation/rulespec-us#1861 queued.

🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants