aboutsummaryrefslogtreecommitdiff
path: root/test/test_overlay.ml
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-13 20:55:28 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-13 20:55:28 +0200
commit10f0e964ceb2999b330ca4b3c6545e24eeb71f6c (patch)
tree7cc4226971736c52afccff3cc7a517a724c4aa6f /test/test_overlay.ml
parentf37c9126292670def8e7a43903b99721181556a5 (diff)
downloadcolitur-10f0e964ceb2999b330ca4b3c6545e24eeb71f6c.tar.gz
colitur-10f0e964ceb2999b330ca4b3c6545e24eeb71f6c.zip
fix(kernel): a transferred candidate can settle by being capped out, too (fix round 1, F1)
The prior fix (settled_at) recognised two settlement channels for a transferred candidate at its target -- winning outright (observed) or surviving as a commemoration -- but missed a third: reaching the target and then being CAPPED OUT there, by admit's own RG-111-style admission count limit or by disposition's own Omit. That candidate lands in the target's own omitted list, genuinely settled and accurately labelled, but settled_at did not check that list, so the origin reported it as unresolved under the same wrong, hardcoded unconverged_reason -- the exact original bug, one level further out. Unreachable on shipped EF data (the Major Litanies are the only privileged Commemoration_only candidate real data carries, and no second one can ever share Easter+2), but reachable by construction: a second privileged Commemoration_only entry on the Litanies' own transfer target that outranks it in admit's Class1 selection, or -- without any synthetic data -- forcing the Litanies' own RG 109(f) privilege to Ordinary, which makes the transferred candidate lose that same cap against its own real target. Fixed by adding target-omitted membership as a third disjunct in settled_at. New regression test in test_calendar.ml, built the same way: the real EF layer plus one synthetic privileged Commemoration_only entry on the real 2011 transfer target, sorting ahead of the Litanies so it wins the Class1 slot. Mutation-verified to fail specifically when the third disjunct is removed. COLITUR_EXHAUSTIVE_SWEEP=1 dune test --force stays clean after the fix, confirming it changes no shipped day's output.
Diffstat (limited to 'test/test_overlay.ml')
0 files changed, 0 insertions, 0 deletions