First release of @profullstack/basis-engine — wallet-by-wallet cost basis tracking for digital assets, producing Form 8949 rows and Schedule D totals.
Deterministic, dependency-free, no model in the path.
What it encodes
- Wallet-scoped lot pools (Rev. Proc. 2024-28 ended universal basis pooling)
- Covered-security determination: broker wallet and acquired on or after 2026-01-01 and never transferred
- Form 8949 box selection A–F, carried onto Schedule D lines 1b/2/3 and 8b/9/10
- Long-term requires more than one year
- Transfers preserve basis and acquisition date; a fee paid in the asset is its own disposal
- Missing basis surfaced as a flagged zero-basis lot, never invented
Correctness
Scaled bigints throughout, never floats. Lot splits cannot create or destroy basis. Rows round to cents individually and totals sum the rounded rows, so a printed page reconciles. 37 tests.
pnpm add @profullstack/basis-engine