aboutsummaryrefslogtreecommitdiff
path: root/internal/calendar/oracle_ef_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/calendar/oracle_ef_test.go')
-rw-r--r--internal/calendar/oracle_ef_test.go37
1 files changed, 30 insertions, 7 deletions
diff --git a/internal/calendar/oracle_ef_test.go b/internal/calendar/oracle_ef_test.go
index b74d935..b765a34 100644
--- a/internal/calendar/oracle_ef_test.go
+++ b/internal/calendar/oracle_ef_test.go
@@ -249,11 +249,18 @@ var efAllowList = []efAllow{
// defects, and not touched here: efSeason is a season-boundary
// function with much wider reach than any of the seven, and changing
// it is out of this task's scope.
+ // CORRECTED 2026-08-18: lectio now follows RG 72 and reads 6-13 January
+ // as Christmas Time, so this divergence has CHANGED SIDES. It is
+ // missalemeum that calls those days "time after Epiphany" now, and
+ // what this excuses is a SEASON difference rather than the colour one
+ // it was written for -- the colour follows correctly once the season
+ // is right, which is why the six colour rows this used to cover are
+ // simply gone.
match: func(date string, day time.Time, o efOracleDay) bool {
return day.Month() == time.January && day.Day() >= 6 && day.Day() <= 13
},
- field: "colour",
- reason: "RG 72-73/RG 119(a): 6-13 Jan is Christmastide, not lectio's time-after-Epiphany reading (efSeason, not one of the seven defects; see colitur rules-register.md §3c item 1)",
+ field: "season",
+ reason: "RG 72: Christmas Time runs 'usque ad diem 13 ianuarii inclusive', so 6-13 Jan is the Epiphany section OF Christmas Time; missalemeum reads it as time after Epiphany (colitur C1)",
},
{
// RG 33: "Vigilia II aut III classis penitus omittitur, si occurrat in
@@ -330,7 +337,7 @@ func TestOracleEF(t *testing.T) {
}
sort.Strings(dates)
- var seasonMiss, rankMiss, colourMiss, rankAllowed, colourAllowed, skipped, total int
+ var seasonMiss, seasonAllowed, rankMiss, colourMiss, rankAllowed, colourAllowed, skipped, total int
shownSeason, shownRank, shownColour := 0, 0, 0
for _, date := range dates {
od := oracle[date]
@@ -356,10 +363,25 @@ func TestOracleEF(t *testing.T) {
if want == "" {
skipped++
} else if got.Season != want {
- seasonMiss++
- if shownSeason < 40 {
- t.Errorf("%s: EF season got %q want %q (from %q)", date, got.Season, want, src)
- shownSeason++
+ // The season axis consults the allow-list, and an excused day is
+ // NOT counted in seasonMiss. Neither was true before: until the
+ // RG 72 boundary was fixed no cited divergence had ever been a
+ // SEASON one -- the 6-13 January window showed up as a colour
+ // difference, because the wrong season produced the wrong colour
+ // too. With the season right the colour follows, and what is left
+ // is a season difference with no way to say "this one is known".
+ // Counting an excused day in seasonMiss would be worse than
+ // useless: the threshold below is a t.Fatalf, so the allow-list
+ // would print a reason and fail the suite anyway.
+ if ok, why := efAllowed(date, day, od, "season"); ok {
+ seasonAllowed++
+ t.Logf("[allow-listed] %s: EF season got %q want %q — %s", date, got.Season, want, why)
+ } else {
+ seasonMiss++
+ if shownSeason < 40 {
+ t.Errorf("%s: EF season got %q want %q (from %q)", date, got.Season, want, src)
+ shownSeason++
+ }
}
}
@@ -419,6 +441,7 @@ func TestOracleEF(t *testing.T) {
t.Logf("EF oracle: %d checked, %d skipped(unmapped), %d season mismatches, "+
"%d rank mismatches (%d allow-listed), %d colour mismatches (%d allow-listed)",
total, skipped, seasonMiss, rankMiss, rankAllowed, colourMiss, colourAllowed)
+ t.Logf("EF oracle: %d season mismatches allow-listed", seasonAllowed)
if seasonMiss > 0 {
t.Fatalf("%d/%d EF season mismatches vs missalemeum — temporalEF is wrong", seasonMiss, total)
}