| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ba0adba's own wrong commit body
Three Important findings, all traceable to the task-5 brief rather than
the implementation itself; all confirmed against the real data and the
real resolver before fixing, not taken on trust.
1. test_step3_uses_temporal_not_observed (2028-12-26) did not exercise
step 3 at all: 26 December is always Stephen, a real sanctoral entry
with its own citations, so that date resolves entirely at step 1.
Its justifying comment was also wrong -- 24 December's TEMPORAL slug
is ef-nativity-vigil, IDENTICAL to its observed slug (Temporal_ef.named
hard-codes the Vigil for that date ahead of any Sunday computation),
so there was never a temporal/observed split on that date to exploit.
Replaced with 2025-02-03: 2 February 2025 (Sunday) is observed as the
Purification (own citations Mal 3:1-4 / Luke 2:22-32) but its TEMPORAL
identity is ef-time-after-epiphany-sunday-4 (Rom 13:8-10 / Matt
8:23-27, a different lectionary entry); 3 February has no proper of
its own and reaches step 3, which must return the Sunday's TEMPORAL
reading, not the Purification's. Verified against
data/ef/sanctoral.sexp and data/ef/lectionary.sexp directly.
2. The termination-argument comment in lectionary_ef.ml (and its echo in
lectionary_ef.mli) claimed an unguarded Sunday would loop. It would
not: readings is not recursive -- step 3's fallback is one flat
Lectionary.find, never a re-entrant call into readings -- so an
unguarded Sunday would just repeat step 2's own already-failed lookup
once (same pure inputs, same None) and return [] normally. Rewritten
to say what is actually true: the guard exists because a Sunday has
no PRECEDING Sunday to resume, not because skipping it would be
dangerous; the chain terminates because every step consults data or a
strictly earlier date, and no step ever calls back into readings.
3. Correcting the record, per instruction, rather than amending
ba0adba: that commit's own body said Advent ferias carry 'Advent I's
own readings copied onto the following Monday-Thursday'. Both details
are wrong, verified directly against data/ef/lectionary.sexp: the
duplicated readings are ef-advent-SUNDAY-2's (Rom 15:4-13 / Matt
11:2-10), not Advent I's, and they appear on ef-advent-2-monday,
-tuesday, -thursday and -saturday -- four non-contiguous days, not a
Monday-to-Thursday span. The in-code comment and the task-5 brief's
own commit template both already said 'Advent II' correctly; only
ba0adba's commit body had the error.
dune test --force: 344 tests, all green (unchanged count -- one test's
body changed, none added or removed).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Chain step 3. Guarded on weekday <> Sun: a Sunday reaching this branch
would look up its own slug via days_since_sunday Sun = 0 and loop --
every other chain step consults data, this one consults a strictly
earlier date, so that guard is the whole chain's termination argument.
Reaches the Sunday by Date.add_days plus a fresh temporal_at call, never
by string surgery on the day's own slug -- the slug shapes are genuinely
inconsistent across seasons (ef-advent-sunday-1 vs ef-advent-1-monday,
week number on opposite sides of the season name).
Uses the preceding Sunday's TEMPORAL slug, never its observed one: the
rubric is the preceding Sunday's Mass even in a year a feast displaced
that Sunday from being observed (pinned: 2028-12-26, the Monday after a
Vigil-displaced Advent IV Sunday, still takes Advent IV's Mass).
Measured over the full 1583-9999 domain (temporal cycle only, no
sanctoral contest): of 412 distinct temporal slugs, 305 carry no
lectionary entry of their own; of the 304 that are feria (non-Sunday)
slugs, step 3 alone resolves 297 of them via their preceding Sunday.
The 7 that remain, plus the 1 uncovered Sunday slug itself
(ef-holy-name-sunday), all trace to the same two missing lectionary
entries (Holy Name Sunday and 30 December), not to eight independent
gaps or a step-3 defect -- traced date-by-date, not merely counted.
Day-level effect, 2005-2050 (full Precedence+Calendar pipeline,
matching this project's existing differential window): 16807 days,
16531 resolved (98.36%), 276 still empty; step 3 alone accounts for
4503 of the resolved days, more than either step 1 or step 2.
Warrant is the same class as step 2's, not a confirmed Missal
citation: lectio hard-codes this shape as literal duplicated data on
the four Advent ferias (Advent I's own readings copied onto the
following Monday-Thursday) and leaves the rest of that same shape
simply absent; step 3 turns the duplication into a rule.
dune test --force: 344 tests, all green (was 340).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Critical (coordinator review): a clean `dune build` produced a `colitur`
that died at startup on EVERY subcommand, including ones touching no
lectionary data at all. Root cause was two-fold: data/ef/lectionary.sexp was
never added to the root default-build alias (only materialised as a side
effect of the test suite's own deps, which is why every check in the prior
report passed), and Rite_ef.context loaded it as a module-init side effect
via failwith, undoing Lectionary.load's own "never raises" promise at a
point no caller could catch.
Fixed structurally: Rite_ef.context is now a function taking ~lectionary,
Lectionary_ef.readings takes ~lectionary, and neither touches the filesystem
any more -- the same caller-supplied discipline the sanctoral layer already
had, restoring rite_ef.mli's own pre-existing claim about it and leaving a
seam for a future diocesan lectionary overlay. bin/main.ml grows
load_ef_lectionary, a sibling of load_ef_layer, routed through the same
colitur: %s / exit 2 path. data/ef/lectionary.sexp added to the root default
alias. Every caller of Rite_ef.context updated to supply it.
Also: two new tests that genuinely distinguish chain step 1 from step 2
(19 March 2026, Joseph's own proper over a competing temporal entry; 13
January 2030, Holy Family reached only through the temporal slug, the
Baptism entirely absent) -- the prior two tests both survived swapping the
chain order. Both new pins verified directly against the real data. The
chain's own comment now states plainly that its warrant is lectio's observed
behaviour, not a confirmed Missal citation, per the rules register's own
open item.
|
|
|
Liturgical_day.citations has read "always empty until Plan 4" since Plan 3;
it is now filled. Rite.t gains a readings function, rite-supplied for the
same reason transfer_target is: what a day with no proper falls back to is a
rubric, not a universal. Calendar calls it and passes its own temporal
function as the callback the rite needs to reach another date.
Steps 1 and 2 only: the observed celebration's own proper, else the day's own
temporal slug. Nothing encodes "Lent has daily propers" -- the presence of an
entry is the discriminator.
|