LedgerLoom Chapter 12 — Fixed assets and depreciation
This chapter introduces fixed assets (capitalization vs expense) and builds a tiny depreciation engine that emits monthly journal entries.
What you build
A small capitalization policy (threshold-based) that classifies purchases as:
capitalize → record a fixed asset (balance sheet)
expense → record a period cost (income statement)
A deterministic straight-line depreciation schedule generator
A monthly depreciation event stream:
Dr Expenses:DepreciationCr Assets:FixedAssets:AccumulatedDepreciationA disposal example (remove cost + accumulated depreciation; recognize gain/loss)
A simple control reconciliation: subledger net fixed assets equals the G/L net
How to run
make ll-ch12
Artifacts
The Chapter 12 runner writes outputs/ledgerloom/ch12 containing:
capitalization_decisions.csv— purchase classification (capitalize vs expense)fixed_assets_register.csv— asset master data (cost, life, disposal)depreciation_schedule.csv— per-asset monthly schedule (amount, accum, NBV)depreciation_events.csv— the monthly depreciation journal eventsfixed_assets_control_reconciliation.csv— subledger vs G/L net fixed assetsStandard LedgerLoom artifacts: postings, trial balance, statements, invariants, manifest
Notes and limitations
This is a teaching implementation:
Straight-line only (no MACRS, double-declining, component depreciation)
No partial-month conventions (the example treats the in-service month as a full month)
Accumulated depreciation is modeled as a contra-asset account under
Assets(it naturally carries a negative balance)
These constraints keep the model small, deterministic, and testable.