btctax-forms — fill the OFFICIAL IRS fillable PDFs (Form 8949 + Schedule D) from btctax's
already-computed tax data. Offline, deterministic, and geometry-verified: every fill is read
back from its own serialized bytes and each value's widget /Rect is checked against a
map-independent column/row band re-derived from the PDF itself. A mis-mapped cell fails closed.
Sub-project 1 (TY2025)
- Form 8949 — Bitcoin under Box I (short-term) / Box L (long-term), the 1099-DA revision (NOT Box C/F, which read "other than digital asset transactions"). 11 rows per part per page.
- Schedule D — lines 3 & 7 (ST), 10 & 15 (LT), 16 (total), QOF = No. Lines 17-22 are scoped out (the caller prints a notice).
- These are static XFA-hybrid PDFs: the fill removes the
/AcroForm/XFAlayer (else Acrobat shows blank), sets/NeedAppearances, and pins determinism (drops/Infodates + the trailer/ID).
The tax data is REUSED verbatim from the projection (btctax_core::form_8949 /
btctax_core::schedule_d) — this crate never recomputes gains.