Carry OBR Table 4.1's council tax decomposition rows (GB receipts total, accruals adjustment, surcharge) - #192
Merged
Conversation
Adds rows 15 ('Total council tax receipts', the sum of the England,
Scotland and Wales rows), 17 ('Council tax accruals adjustment') and 18
('High-value Council tax surcharge', printed from 2028-29 only) to
obr-efo-expenditure-march-2026 (+17 facts, FY2024-FY2030). The active UK
calibration reference binds council_tax_less_benefit to row 19, which is
row 15 plus NI domestic rates plus the accruals adjustment (plus the
surcharge from 2028-29) - components with no household counterpart - so
these rows make the redesign of that binding, and the activation of the
nation decomposition, expressible as publisher facts. A new test pins the
row-15 and row-19 identities for every year.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
MaxGhenis
marked this pull request as ready for review
August 23, 2026 18:14
MaxGhenis
added a commit
that referenced
this pull request
Aug 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Stacked on #189. Carries the rest of OBR EFO March 2026 Table 4.1's council tax block in
obr-efo-expenditure-march-2026(+17 facts, FY2024–FY2030):obr.council_tax_receipts_england_scotland_walesobr.council_tax_accruals_adjustmentobr.council_tax_high_value_surchargeWhy
The active UK calibration reference
obr.council_taxbinds the household variablecouncil_tax_less_benefitto row 19 'Total net council tax receipts' (£50.925bn FY2025-26), which is the three nation rows (£49.569bn) plus NI domestic rates (£0.494bn, bound separately asobr.domestic_rates) plus an accruals adjustment (£0.862bn) with no household counterpart. Activating the held nation decomposition next to that binding would make the constraints jointly infeasible by ~£1.36bn. These rows make the redesign expressible as facts: a consumer can bind the GB cash-receipts total (row 15) or reconstruct row 19 exactly (rows 15 + 16 + 17 + 18, an identity pinned in the new test). Chosen with a cross-family review (fable + sol) recorded on #189; the microcosm-side redesign is a separate decision.Same conventions as the rest of the package: explicit per-year record sets, exact row/column header guards,
value_scale1e9, FY2024observationand later yearssource_projection, geographyK02000001matching the sibling rows. The percentage-change rows remain unported.Tests
tests/test_chronicle_obr_council_tax_decomposition.py(new): the row-15 = nations identity and the row-19 = 15+16+17+18 identity for every year, values, assertions, the surcharge's blank-cell years, and the package's 150-fact count.validate-packageandbuild-suitepass; agent acceptance valid.Chronicle governance
ledger-source-ingestor.ledger-source-fidelity— the three rows re-read from the pinned workbook cells and pinned by identity tests;ledger-boundary— PASS (publisher rows only; the binding redesign stays in microcosm);ledger-target-profile/ledger-contract— n/a.🤖 Generated with Claude Code