1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
Easter and its Easter-relative movable feasts for a year:
$ colitur easter 2026
easter 2026-04-05
ash-wednesday 2026-02-18
palm-sunday 2026-03-29
ascension 2026-05-14
pentecost 2026-05-24
corpus-christi 2026-06-04
A year outside the supported domain is rejected (exit 2):
$ colitur easter 1000
colitur: year 1000 out of range 1583..9999
[2]
No/garbage arguments give a usage error (exit 2):
$ colitur
colitur: usage: colitur easter <year> | colitur temporal <year> | colitur day <year>
[2]
The EF temporal cycle for a year, one line per day:
$ colitur temporal 2026 | head -3
2026-01-01 thursday christmastide - ef-circumcision class-1 white
2026-01-02 friday christmastide - ef-christmas-1-friday class-4 white
2026-01-03 saturday christmastide - ef-christmas-1-saturday class-4 white
$ colitur temporal 2026 | wc -l
365
$ colitur temporal 2026 | grep -c '^2026-04-05 '
1
$ colitur temporal 2026 | grep '^2026-04-05 '
2026-04-05 sunday paschaltide 1 ef-easter-sunday class-1 white
A year outside the supported domain is rejected (exit 2):
$ colitur temporal 1000
colitur: year 1000 out of range 1583..9999
[2]
The resolved EF calendar for a year (Task 11) -- temporal AND sanctoral,
occurrence and transfers applied: one line per civil-year day,
"YYYY-MM-DD weekday season week slug rank colour [+commemoration-slug]...".
$ colitur day 2026 | wc -l
365
Easter is the observed day exactly once, and carries no commemoration (an
impeded I class day admits at most one PRIVILEGED commemoration, RG 111, and
nothing outranks Easter to be impeded by it in the first place):
$ colitur day 2026 | grep -c '^2026-04-05 '
1
$ colitur day 2026 | grep '^2026-04-05 '
2026-04-05 sunday paschaltide 1 ef-easter-sunday class-1 white
Ash Wednesday: I class (RG 91 entry 7), violet, no numbered week (it falls 4
days before Lent I's own origin -- rite_ef/temporal_ef.ml's [week]):
$ colitur day 2026 | grep '^2026-02-18 '
2026-02-18 wednesday lent - ef-ash-wednesday class-1 violet
Christmas: I class, white (RG 91 entry 1):
$ colitur day 2026 | grep '^2026-12-25 '
2026-12-25 friday christmastide - ef-nativity class-1 white
All Souls (2 Nov, RG 91 entry 8) end to end: 2 Nov 2025 is a Sunday (verified
independently -- 1 Jan 2025 is a Wednesday, day-of-year 306, (3+305) mod 7 =
0 = Sunday), so entry 8 yields to it (still an ordinary II-class Sunday,
"sunday" in season time-after-pentecost, colour green -- the week number
itself is not re-asserted here, already covered by test_temporal_ef.ml); RG
95 then transfers All Souls (I class, not a Sunday, not a vigil) and RG 96
places it on 3 Nov, the next day that is not I or II class:
$ colitur day 2025 | grep -c 'commemoration-of-all-souls'
1
$ colitur day 2025 | grep '^2025-11-02 ' | sed -E 's/ [0-9]+ ef-time-after-pentecost-sunday-[0-9]+ / <week> ef-time-after-pentecost-sunday-<n> /'
2025-11-02 sunday time-after-pentecost <week> ef-time-after-pentecost-sunday-<n> class-2 green
$ colitur day 2025 | grep '^2025-11-03 '
2025-11-03 monday time-after-pentecost 21 commemoration-of-all-souls class-1 black
(week 21: Pentecost 2025 is 8 June (colitur easter 2025); 8 Jun - 3 Nov is
148 days, floor_div(148, 7) = 21 -- rite_ef/temporal_ef.ml's own [week]
formula, hand-verified before promoting this line, not merely printed and
trusted.)
All Souls observed directly on 2 Nov in a year where it does not fall on a
Sunday: 2 Nov 2026 is a Monday (1 Jan 2026 is a Thursday, same day-of-year
306 offset, (4+305) mod 7 = 1 = Monday):
$ colitur day 2026 | grep -c 'commemoration-of-all-souls'
1
$ colitur day 2026 | grep '^2026-11-02 '
2026-11-02 monday time-after-pentecost 23 commemoration-of-all-souls class-1 black
(week 23: Pentecost 2026 is 24 May (colitur easter 2026); 24 May - 2 Nov is
162 days, floor_div(162, 7) = 23 -- same formula, same independent check.)
A year outside the supported domain is rejected (exit 2):
$ colitur day 1000
colitur: year 1000 out of range 1583..9999
[2]
|