aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-12 17:49:24 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-12 17:49:24 +0200
commit4df03d2f2e0e1da70ffc3d069c6e49a7edd21b31 (patch)
tree0b1bea501048f0f1a50d259fed71b1045243367e
parent25fedcaf3044828333ba15b232fdc7c7f84970e5 (diff)
downloadcolitur-4df03d2f2e0e1da70ffc3d069c6e49a7edd21b31.tar.gz
colitur-4df03d2f2e0e1da70ffc3d069c6e49a7edd21b31.zip
data(ef): document why adjustments.sexp's directives survive the re-bootstrap
Neither of adjustments.sexp's two directives is a no-op after the regeneration, and neither is removed -- reasoned through deliberately rather than deleted on sight, per Overlay.apply's own documented diagnostic behaviour (Edit has no "already correct" case; it unconditionally folds every field_edit over the current value when the slug is present, no diagnostic either way). `Edit most-holy-name-of-mary (Set_subject Bvm)`: the base bootstrap no longer needs this correction (the source dropped `class = lord` for this slug, so the default is already Subject.Saint), but the overlay still forces `Saint -> Bvm`. Kept for two reasons: data precision (the calendarium's "Sanctissimi Nominis Mariae" title still argues for Bvm over the generic Saint default, independent of what lectio's class field says) and as a regression guard (Set_subject is unconditional, so it would also correct a future re-introduction of `class = lord` for this slug, the one subject value RG16(a) behaviourally reads). `Suppress vigil-of-christmas`: re-verified, not assumed -- the slug is still present, unchanged, in both the regenerated source and the regenerated sanctoral.sexp, so the directive still fires its ordinary slug-present path. test_rite_ef.ml's own comment on the overlay-in-effect test previously claimed the base file carries `subject Lord` for most-holy-name-of-mary, which the regeneration made false; corrected in place rather than left stale, per this project's own discipline around wrong claims.
-rw-r--r--data/ef/adjustments.sexp44
-rw-r--r--test/test_rite_ef.ml24
2 files changed, 60 insertions, 8 deletions
diff --git a/data/ef/adjustments.sexp b/data/ef/adjustments.sexp
index 05ee401..68ab590 100644
--- a/data/ef/adjustments.sexp
+++ b/data/ef/adjustments.sexp
@@ -50,6 +50,50 @@
; the user's ruling resolves that disagreement in the oracle's favour for
; this codebase's own purposes, not by declaring the calendarium argument
; wrong. See register §6.0 for the full account of both sides.
+;
+; ef-rebootstrap (2026-08-12): both directives re-examined against the
+; regenerated source (tridentine-calendar.ini, SHA-256 1b303ef2...), which
+; independently fixed several of the same defects this file was written to
+; patch. Neither directive was removed -- reasoning below, per the task's
+; own instruction to decide deliberately rather than delete on sight.
+;
+; `Edit most-holy-name-of-mary` -- the base bootstrap no longer needs this
+; correction: the regenerated INI's own `[most-holy-name-of-mary]` section
+; has DROPPED its `class = lord` field entirely (confirmed by direct grep
+; against the source), so `tools/bootstrap_sanctoral.ml`'s `parse_subject`
+; now falls through to its own default, `Subject.Saint` -- not `Lord` --
+; before this overlay ever runs. Checked what {!Overlay.apply}'s [Edit]
+; actually does with a directive whose target slug is present but whose
+; field is no longer wrong, rather than assuming: [Edit] has no notion of
+; "already correct" -- it looks up the slug, and if found (as this one
+; still is) unconditionally folds every field_edit over the current value,
+; firing NO diagnostic either way (overlay.ml's [apply_directive], the
+; [Edit] branch: the only diagnostic is "slug not present", never "already
+; matches"). So this is not a no-op: it still forces `Saint -> Bvm` on
+; every run, identically to before, just starting from a different base
+; value than it used to. Decision: KEEP, for two independent reasons, not
+; one -- (1) DATA PRECISION, unaffected by the base bootstrap's own fix:
+; the calendarium's "Sanctissimi Nominis Mariae" title names Mary
+; specifically, so [Bvm] remains the more accurate tag than the generic
+; [Saint] default, on the same textual grounds as the original entry
+; above, regardless of what lectio's own `class` field happens to say this
+; week. (2) REGRESSION DEFENCE: because [Set_subject] is unconditional, it
+; also now stands as a guard against `class = lord` ever being
+; RE-introduced for this slug by a future lectio regeneration -- the
+; overlay would still force the result away from [Lord] (the one subject
+; value {!Precedence_ef.band}'s RG 16(a) branch behaviourally reads),
+; rather than silently letting a re-introduced bootstrap defect through.
+; Removing the directive now would trade a currently-harmless redundancy
+; for the loss of that guard.
+;
+; `Suppress vigil-of-christmas` -- re-verified, not assumed: `[vigil-of-
+; christmas]` (24 Dec) is still present, unchanged, in both the
+; regenerated INI and the regenerated `data/ef/sanctoral.sexp` (still the
+; same duplicate of `rite_ef/temporal_ef.ml`'s own `ef-nativity-vigil`
+; this directive was written to remove), so `Layer.mem` still finds it and
+; {!Overlay.apply}'s [Suppress] branch still fires its ordinary
+; slug-present path (no diagnostic) exactly as before. Nothing about this
+; regeneration touched the reason this directive exists; kept unchanged.
((id ef-adjustments)
(directives
((Suppress vigil-of-christmas)
diff --git a/test/test_rite_ef.ml b/test/test_rite_ef.ml
index 84dc060..45aa918 100644
--- a/test/test_rite_ef.ml
+++ b/test/test_rite_ef.ml
@@ -88,14 +88,22 @@ let test_vigil_of_christmas_suppressed () =
appears_anywhere
(* RG16(a) task (register §6.0 + the sanctoral subject audit, this task's
- own report). data/ef/sanctoral.sexp is left untouched (still a faithful
- mirror of lectio, subject `Lord` for every entry below except
- `most-holy-name-of-mary` -- see test_sanctoral_ef.ml's own "explicit
- class = lord" spot-check, which loads that file WITHOUT applying this
- overlay and still passes); the one real correction lives entirely in
- data/ef/adjustments.sexp's single remaining [Edit] directive, the same
- mechanism [test_vigil_of_christmas_suppressed] above already proves for
- a sibling bootstrap defect.
+ own report). data/ef/sanctoral.sexp is a faithful mirror of lectio, not
+ hand-patched (see test_sanctoral_ef.ml's own "explicit class = lord"
+ spot-check, which loads that file WITHOUT applying this overlay and
+ still passes) -- the one live correction, `most-holy-name-of-mary` ->
+ `Bvm`, lives entirely in data/ef/adjustments.sexp's [Edit] directive.
+
+ CORRECTED, ef-rebootstrap (2026-08-12): this comment previously said the
+ base file itself carries `subject Lord` for `most-holy-name-of-mary`,
+ which this overlay then corrects. That stopped being true the moment
+ lectio's own generator was fixed (source SHA-256 1b303ef2...): the
+ regenerated INI dropped `class = lord` for that slug outright, so the
+ base bootstrap now already produces `Saint`, and this overlay's [Edit]
+ forces `Saint -> Bvm` instead of `Lord -> Bvm` -- same final answer,
+ different starting point. See adjustments.sexp's own "ef-rebootstrap"
+ note for why the directive is kept anyway (data precision + a
+ regression guard against `class = lord` being reintroduced upstream).
CORRECTED, fix round 1 (CRITICAL finding, item 1): this test used to
also assert `purification-of-the-blessed-virgin-mary` was retagged