aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-13 09:22:36 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-13 09:22:36 +0200
commit9df26e2e91646925c5977d4bab22c0d510d3b3c1 (patch)
tree2b17f69c6b01dd79e3fb5684bfcc99bfaa2fe104 /test
parent7005578fa4a3031b8174ba0d27b64b29fdfd4799 (diff)
downloadcolitur-9df26e2e91646925c5977d4bab22c0d510d3b3c1.tar.gz
colitur-9df26e2e91646925c5977d4bab22c0d510d3b3c1.zip
test(oracle): fix round 1 (F8) -- correct the M18 headline, name the blind spot precisely
The full breakdown, precisely: of 730 days, 331 are resolved (330 matching, 1 mismatched -- M13, Joseph vs the Seven Sorrows), 399 unresolved -- 373 in M18's own bucket, 26 absorbed inside M1/M2/M3/ M16's own widened subsets where the axis fires alongside their pre-existing citation. M18's own note previously stated only its own 373 without this fuller context. Also names the blind spot the axis exists to close in exact terms, not just "the observed day's identity": a TEMPORAL-origin observed day silently replaced by a DIFFERENT temporal-origin observed day of the SAME rank and colour -- exactly Holy Family's own shape, and the reason every prior layer stayed green through the whole gap. States explicitly what the count pin does and does not prove: it guards against the 373/399 population moving silently in either direction, but cannot say which specific day moved or why.
Diffstat (limited to 'test')
-rw-r--r--test/test_oracle.ml52
1 files changed, 32 insertions, 20 deletions
diff --git a/test/test_oracle.ml b/test/test_oracle.ml
index 7068af9..35d4501 100644
--- a/test/test_oracle.ml
+++ b/test/test_oracle.ml
@@ -733,26 +733,38 @@ let m16_dates = [ "2026-03-27" ]
TEMPORAL-origin one -- an ordinary Sunday, a feria, a movable named feast
including Holy Family itself -- never does ({!Rite_ef.Temporal_ef}'s own
[build] has no [en "..."] string anywhere in it, this file's own header
- again). That is the OVERWHELMING majority of days in any calendar (saints'
- feasts are common, but far from every day), so this is a single
- STRUCTURAL predicate -- [Observed_identity_unresolved] alone, nothing
- else disagreeing -- not a literal date list the way every other entry in
- this file is: at 374 of the 730 days in this window, a list would be
- exactly the "range/pattern that could silently widen" this file's own
- header explicitly avoids elsewhere, for the OPPOSITE reason a range is
- normally risky here -- the predicate itself (colitur's own name is
- [None]) is the precise, falsifiable evidence, the same shape [M2]'s own
- title-substring predicate already uses instead of a date list, just keyed
- on presence-of-a-name rather than a title string. NOT a rubric dispute
- and NOT a data gap either engine is wrong about -- a LIMIT of this
- comparator itself, honestly counted rather than silently passed, per the
- brief's own explicit instruction ("a day whose observed identity cannot
- be resolved must be a counted, allow-listed outcome, never a silent
- skip"), the SAME discipline [M15] already established for an unresolvable
- COMMEMORATION, applied here for the first time to the OBSERVED day. Fixing
- this at the root (giving every temporal-cycle candidate an English name)
- is a data/lectionary-bootstrap task (Plan 4), not something this
- comparator can do for itself -- register §6 tracks it, the same open item
+ again). CORRECTED, fix round 1 (coordinator finding 8) -- the precise
+ breakdown: of this window's 730 days, 331 are RESOLVED (330 matching, 1
+ mismatched, [M13]); 399 are UNRESOLVED, split between this entry's own
+ 373 (the axis's sole disagreement) and 26 absorbed inside [M1]/[M2]/[M3]/
+ [M16]'s own widened subsets, where it fires ALONGSIDE their pre-existing
+ citation. The BLIND SPOT this axis exists to close, stated precisely: a
+ TEMPORAL-origin observed day silently replaced by a DIFFERENT
+ temporal-origin observed day of the SAME RANK AND COLOUR -- exactly the
+ shape that hid Holy Family from every layer before this task. This is
+ the OVERWHELMING majority of days in any calendar (saints' feasts are
+ common, but far from every day), so this is a single STRUCTURAL
+ predicate -- [Observed_identity_unresolved] alone, nothing else
+ disagreeing -- not a literal date list the way every other entry in this
+ file is: at this population size, a list would be exactly the
+ "range/pattern that could silently widen" this file's own header
+ explicitly avoids elsewhere, for the OPPOSITE reason a range is normally
+ risky here -- the predicate itself (colitur's own name is [None]) is the
+ precise, falsifiable evidence, the same shape [M2]'s own title-substring
+ predicate already uses instead of a date list, just keyed on
+ presence-of-a-name rather than a title string. NOT a rubric dispute and
+ NOT a data gap either engine is wrong about -- a LIMIT of this comparator
+ itself, honestly counted rather than silently passed, per the brief's own
+ explicit instruction ("a day whose observed identity cannot be resolved
+ must be a counted, allow-listed outcome, never a silent skip"), the SAME
+ discipline [M15] already established for an unresolvable COMMEMORATION,
+ applied here for the first time to the OBSERVED day. The count pin below
+ ([test_layer_m_counts_match_citations]) is what stands guard against this
+ population growing (or shrinking) silently -- it cannot say WHICH day
+ moved or why, only that the total did. Fixing this at the root (giving
+ every temporal-cycle candidate an English name) is a data/lectionary-
+ bootstrap task (Plan 4), not something this comparator can do for itself
+ -- register §6 tracks it, the same open item
[M15]'s own note already points to. *)
let layer_m_reason (c : colitur_row) (o : oracle_row) diffs =
if diffs = [] then None