diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-13 20:55:28 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-13 20:55:28 +0200 |
| commit | 10f0e964ceb2999b330ca4b3c6545e24eeb71f6c (patch) | |
| tree | 7cc4226971736c52afccff3cc7a517a724c4aa6f /lib/kernel/rite.mli | |
| parent | f37c9126292670def8e7a43903b99721181556a5 (diff) | |
| download | colitur-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 'lib/kernel/rite.mli')
0 files changed, 0 insertions, 0 deletions
