Skip to content

Mid-tax-year starts: no way to enter year-to-date income, ISA subscriptions, or AA usage #185

Description

@williajm

From the 2026-08-12 repo-wide review (Codex), finding 1 ("Critical — mid-tax-year runs ignore year-to-date income and allowance usage"), verified against fe0f95b.

Verified behaviour. A run starting mid-tax-year prorates first-period flows (engine.py:874, engine.py:2155) but assesses only the remaining-window income against the full personal allowance and full bands (engine.py:3093-3122; TaxInput has no year-to-date fields). ISA/LISA cap usage restarts at zero each run (engine.py:2534) and the AA carry-forward pool starts empty (engine.py:1563). There is no domain-model input anywhere for year-to-date income, tax paid, ISA subscriptions made, or Annual Allowance used.

Not a bug. This is the documented §4.6 partial-first-period decision — planning.md "Accepted costs" states verbatim that "annual caps, allowances, and tax bands apply whole to the partial year — the pro-rated income of the first modelled year meets full-year bands, understating its tax slightly" — and the empty AA carry-forward pool is recorded as deliberately conservative (§4.1). The review's Critical severity is not supportable.

The trackable gap. A user who has already received a large bonus, made ISA/LISA subscriptions, or used Annual Allowance earlier in the current tax year cannot represent that. Optional year-to-date inputs (income, tax paid, ISA subscriptions, AA used) seeded into the first period would remove the first-year distortion. Impact is bounded to a fraction of one year's allowances/bands, first modelled year only.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    coreRegion-agnostic core engineseverity:infoDocumented simplification worth trackingsuggestionProposed enhancement, not yet adopted into the roadmap

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions