Repository navigation
Conversation
Allow the registered SDLT purchase-input losses to reach named review only when the same attempt's digest-bound budget-input evidence reports all required inputs missing. Preserve unmatched failures and contradictions, reevaluate cached replay results at finalization, and record the registry, matched measure-years and input-result digest. Move the decision policy to d1344-replay-regressions-v2: the scorecard request contract does not embed the policy id, and gate details are open. Add real-receipt, property, frozen-main differential and mutation coverage, retaining the proposal's pending review status in registry metadata. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Author
|
Independent review round 1 (GPT-6.1 Sol, head 27b42d4): RULE: AGREE WITH CHANGES, CODE: DISAGREE. Two P2 findings, both accepted:
The decision record now has these as items 7–10, and round 2 is building. This stays a draft until a review agrees with both the rule and the code. |
Reject contradictory effects and previously supplied input loss. Require exact-attempt candidate probes, record publication handling, and revalidate evidence at finalization. Cover the independent review reproducers, properties, real-model probes and mutation guards. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reject nonzero effects at every reported fiscal level before applying an exception. Persist cumulative usable-input history through certified pairs, seed legacy evidence explicitly, and fail closed when recorded history is unavailable or inconsistent. Bind budget-input evidence to its pair and attempt, validate status maps, and cross-check installed probe versions and raw baseline/reform deltas. Convert the round-2 reproducers and add lineage, boundary, property and mutation regression coverage. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reject rehashed cumulative histories that contradict the budget-input gate-result marker. Preserve both reviewer reproducers as rejection tests and kill a mutant that skips the marker check. Record Budget coordinator adoption and the independent RULE/CODE review agreement under cos d1344. Validation: requested suites passed 937 tests with three model-version skips; all three real-model checks then passed on policyengine-uk 2.134.7. Eight new cases pass, including the marker-check mutant kill. Ruff lint and format checks pass on all five changed Python files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Author
|
Rounds 3–4 and merge status:
This merges with a merge commit once CI is green at 0ef4a12. |
This branch has not been deployed
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.
Fixes #653
Proposed, not yet adopted. Under cos d1344's delegation, this rule change takes effect only after an independent review agrees with both the decision record and the code. That review is running. Max can veto before merge.
Why
#2241 correctly charges SDLT higher rates on purchases, but no uk-data release has the purchase input yet (policyengine-uk-data#573). So every candidate since then replays the AB2024 additional-dwelling surcharge as £0 for 2025–2029, against £2.50bn under the old stocks-as-purchases bug. The gate fails any receipt whose integrity failed, and d1344 bars accepting it on review. So no pe-uk after #2241 can be certified, which would leave the 28 October Budget on 2.130.1, without #2240, #2242, #2428, #2436, #2437 and the pension fixes in review.
Change
src/policyengine/data/qualification/uk_replay_exceptions.json, with one entry:ab2024-sdlt-hrad-purchase-input, coveringconstruction_inertandlost_responseforautumn_budget_2024__sdlt_additional_dwelling_surcharge_2pp, 2025–2029, whileadditional_residential_property_purchasedis missing.budget_inputsevidence must report every required input missing. A present-but-degenerate input doesn't authorise it.construction_inertand the execution identity, corpus and sealed results exist. No vendored schema or validator is weakened.needs_reviewitems, neverqualified; promotion still needs a named reviewer's acceptance of the exact receipt.replay_policy.mdgains a "Data-limited exceptions" section, and the id moves tod1344-replay-regressions-v2. No scorecard-facing request embeds the id.Invariants (each held by tests in
tests/test_replay_exceptions.py)qualified(Hypothesis).needs_reviewwith exactly 5 applied measure-years and 195 other flagged moves left for review; without the missing-input evidence, or with an extra failure, it fails.Mutation: 9 of 9 executed mutants are killed, including dropping the missing-input condition, matching any year, accepting any rather than all failures, and letting the exception pass.
Verification
1,037 tests pass (CPython 3.13, frozen UK and dev extras, serial). Ruff check and format pass on the changed files; repo-wide lint already fails on main with 68 UP038 findings.
Built on a Subfleet lane (GPT-6.1 Sol). Decision record:
~/reviews/budget-coordinator/replay-data-limited-exception/decision.mdon the coordinator's machine; its rule is reproduced inreplay_policy.md.🤖 Generated with Claude Code