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
|
Fixture: lectio-ef-2005-2050.txt
Task: 2026-08-12-colitur-rg16a, fixture refresh (differential-oracle regeneration
after lectio's "seven EF calendar defects" fix wave; branch ef-rebootstrap).
Produced by the sibling project ~/git/projects/lectio at commit:
3b32c00 Merge branch 'fix/ef-precedence-defects': seven EF calendar defects
(branch polish-ui-and-calendar at the time; see that repo's own log)
Previous provenance (superseded by this refresh):
2386a45 cmd(lectio-ef-dump): new EF calendar dumper for colitur's differential oracle
SHA-256 was 2ca3eeeda4e7a0406c4d004c1b2003fc0df671aca9af18a1b506543a721c8bac.
Between 2386a45 and 3b32c00, lectio fixed seven EF calendar defects (Sunday
I-class ranks incl. Rose Sundays, Holy Thursday's colour, Ember-day rank,
the September-Ember-vs-St-Matthew/Thomas occurrence, the Joseph-on-a-Lent-
Sunday transfer, the 2011 Precious-Blood transfer, and the Nativity-octave
III-class-feast bootstrap gap) and root-caused its sanctoral generator.
806 of the 16801 rows changed field-for-field (fields 1-7) between the two
fixtures -- see .superpowers/sdd/2026-08-12-colitur-rg16a/fixture-refresh-report.md
for the full before/after account.
SHA-256: fc4832f1bc1bdfd322e808ae4929487628981792c23f959c1764c8eaedbfaf7f
(same digest as [fixture_sha256] in test/test_differential.ml, ASSERTED by
that suite's own "fixture SHA-256 matches its provenance note" test -- this
line documents the pin for a reader who never runs the suite; that test is
what actually enforces it. Regenerate both together, deliberately, after
re-running the exact command below -- never by copying a mismatch's actual
value back in, which would defeat the pin's purpose.)
Exact command:
cd ~/git/projects/lectio && go run ./cmd/lectio-ef-dump 2005 2050
Output: one line per civil day, 2005-01-01 through 2050-12-31 inclusive
(16801 lines = 46*365 + 11 leap days), in lectio's OWN vocabulary --
season/slug/rank/colour spellings are lectio's, not translated to colitur's.
See cmd/lectio-ef-dump/main.go's own doc comment for the exact column
format and the caveats this repo's comparator (test/test_differential.ml)
relies on: the trailing "+other-slug" tokens are LOSING candidates (lectio
has no RG 111 admission logic), and lectio's own EF oracle test asserts
season only, for 2025-2026 only (rank/colour are logged, not asserted).
Column count changed since the previous fixture: the dumper at 2386a45
printed 7 space-separated fields (date weekday season week slug rank
colour) plus any trailing "+other-slug" tokens; at 3b32c00 it prints 9
(the same 7, PLUS name_en and name_pl -- the observed celebration's own
display name in each language, "_"-for-space, "-" for empty) before the
"+other-slug" tail. DECISION (this refresh): keep the fixture as the
dumper's raw, unedited stdout, name columns included -- do not strip them
back to 7 fields. Reasons: (1) this file's own contract is "the exact
command's output, verbatim" -- stripping columns would mean the committed
bytes no longer equal what the command above produces, forcing an
undocumented post-processing step into what is supposed to be a one-line
regeneration; (2) test/test_differential.ml's row_of_line already matches
`date :: weekday :: season :: week :: slug :: rank :: colour :: _others`,
so any extra trailing fields land in the ignored `_others` tail with no
code change needed -- positions 1-7 (everything the comparator actually
reads) are unaffected by the two new columns appended after them; (3) the
names make the fixture usefully human-readable for manual triage (matching
a slug like `ef-lent-sunday-1` against its own "First_Sunday_of_Lent" is
faster than cross-referencing sanctoral data by hand). Cost: name_en/pl
now sit in the same unparsed trailing region as the real "+other-slug"
losing-candidate tokens, since neither is "+"-prefixed -- harmless today
because nothing reads `_others` at all, but worth knowing if a future task
ever wants to parse that tail: field 8 and 9 are names, not candidates,
and only tokens from field 10 onward (or 9 onward on a line with no name_pl
edge case -- there is none; both name fields are always present, "-" when
empty) are "+"-prefixed losing candidates.
Regenerate with the same command if lectio's EF calendar logic changes and
the fixture needs updating; do not hand-edit this file.
|