diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-12 17:49:24 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-12 17:49:24 +0200 |
| commit | 4df03d2f2e0e1da70ffc3d069c6e49a7edd21b31 (patch) | |
| tree | 0b1bea501048f0f1a50d259fed71b1045243367e | |
| parent | 25fedcaf3044828333ba15b232fdc7c7f84970e5 (diff) | |
| download | colitur-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.sexp | 44 | ||||
| -rw-r--r-- | test/test_rite_ef.ml | 24 |
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 |
