Skip to content

feat(ty2026): PDF export for Schedules E, A and 1-A; Form 8863 renders in a test - #163

Merged
a7ul merged 31 commits into
mainfrom
ag43-ty26-pdf-e-a
Oct 19, 2026
Merged

a7ul merged 31 commits into
mainfrom
ag43-ty26-pdf-e-a

Conversation

@a7ul

@a7ul a7ul commented Oct 19, 2026

Copy link
Copy Markdown
Collaborator

#162 left Schedules E, A and 1-A refused for TY2026 PDF export. This PR maps them onto the IRS 2026 drafts, following the same pattern: a *PdfFor(taxYear) factory plus a 2026 overlay.

Form 2025 → 2026 layout change What prints
Schedule E (186 → 205 fields, 55 unchanged) Line 1a address split into 5 fields. Line 13 becomes 13a/13b. Lines 24–26 move to page 2. Part V moves to a new page 3 The engine's other-interest amount prints on 13b. Pages are picked per return
Schedule A (34 → 47 fields, 14 unchanged) Gifts move to page 2. New line 13 (0.5% AGI floor). Line 17 splits into 17a–17z. Line 18 is a Yes/No question plus the total Uses the engine's charitable_agi_floor and overall_itemized_limit_reduction (§68, the 2/37 limit). Lines 4–16 minus the limit must equal Form 1040 line 12e, or the export refuses
Schedule 1-A (54 → 185 fields, 10 unchanged) Tips and overtime become per-employer tables. Car loans move to lines 28–36. Senior deduction moves to lines 37–43 Part I, car loans (up to two) and the senior deduction
  • Form 8863 now renders in a test: lines 11, 12, 19 and 31 and the school name.
  • The 2025 projections now pass taxYear to the native Schedule E, passive-activity and Schedule 1-A checks. TY2025 output is unchanged.

Still refused for TY2026, each by name

  • Schedule E: a Part I continuation statement whose title still names 2025, and a nonzero nonpassive amount.
  • Schedule A: lines 17a–17k, the floor cases with carryovers or AGI-percentage limits, and any total that doesn't match line 12e.
  • Schedule 1-A: tips, overtime, and more than two vehicles.

Verification

  • check:structure, check:sandbox, check:cases, test:unit, check:cli, check:irs and check:oracle pass.
  • test:forms: one failure, already baselined.
  • check:mef: 373/374.
  • check:ty2026: 231/374.
  • The release smoke passes.
  • bench f1040 2025: 22/109.
  • builder.test.ts: 13 tests pass.

Not verified

  • The Schedule A line 18 "Yes" path never renders. Any return large enough to trigger it also needs Form 8960 or 8959, which have no 2026 mapping yet.
  • No 2026 Schedule A instructions are out. Line 13 is read from the form text and Pub. 505 (2026) Worksheet 2-5.
  • The form prints one $384,350 threshold on line 18; the engine's threshold for the filer's status is used instead.
  • No return with a K-1 or with more than three Schedule E properties was rendered.
  • Checks use pdftotext only; nothing was reviewed visually.

Generated by Claude Code

claude added 30 commits October 19, 2026 09:24
…urn's context

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sm4GSdgHFQ4sJqLdRaK6pQ
… context

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sm4GSdgHFQ4sJqLdRaK6pQ
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sm4GSdgHFQ4sJqLdRaK6pQ
…rn's year

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sm4GSdgHFQ4sJqLdRaK6pQ
…return's year

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sm4GSdgHFQ4sJqLdRaK6pQ
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sm4GSdgHFQ4sJqLdRaK6pQ
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sm4GSdgHFQ4sJqLdRaK6pQ
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sm4GSdgHFQ4sJqLdRaK6pQ
…the return year

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sm4GSdgHFQ4sJqLdRaK6pQ
…9, 8995 on IRS 2026 drafts

The 2025 projections behind them now take the tax year, and the PDF
builder's source checks use the return's year instead of 2025.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sm4GSdgHFQ4sJqLdRaK6pQ
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sm4GSdgHFQ4sJqLdRaK6pQ
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sm4GSdgHFQ4sJqLdRaK6pQ
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sm4GSdgHFQ4sJqLdRaK6pQ
… the IRS 2026 draft

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sm4GSdgHFQ4sJqLdRaK6pQ
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sm4GSdgHFQ4sJqLdRaK6pQ
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sm4GSdgHFQ4sJqLdRaK6pQ
@a7ul
a7ul merged commit 2491357 into main Oct 19, 2026
1 check passed
@a7ul
a7ul deleted the ag43-ty26-pdf-e-a branch October 19, 2026 13:36
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.

2 participants