feat: full 1954 Divino Afflatu sanctoral dataset (#64) #452

Merged
manlycucumber merged 2 commits from feature/64-1954-sanctoral into develop 2026-07-06 15:51:00 +00:00
manlycucumber commented 2026-07-06 15:28:04 +00:00 (Migrated from github.com)

Completes the fixed-date sanctoral for the 1954 (Divino Afflatu) edition — the data counterpart to the #67 precedence engine. Closes #64.

What landed

Data (tools/generator/facts/sanctorale.yaml)

  • 290 feasts of the 1962 base carry a cited roman-divino-afflatu block with their pre-1955 double-scheme grade; 3 date-overrides restore the feasts the reform moved (Ss. Philip & James → May 1, St Irenaeus → Jun 28, the Curé of Ars → Aug 9).
  • 28 feasts the 1955/1960 reforms suppressed are authored as notInBaseEdition entries (Finding of the Holy Cross, St John before the Latin Gate, the Apparition of St Michael, St Peter in Chains, the ancient simplex martyrs).
  • Post-1954 additions are held out of 1954 (St Joseph the Worker 1955; Ss. Gregory Barbarigo & Anthony Mary Claret 1960; St Lawrence of Brindisi's universal feast — so 1954 keeps St Praxedis on 21 July). St Pius X (Sep 3) and Maria Regina (May 31), both 1954, are kept.
  • Grades/colours cite ordo-1954. The 1962 corpus and golden fixture (1583–2200) are byte-identical.

Engine (src/Precedence/Rubrics1954Precedence.php)

  • tierOf classifies a 1954 observance by its native grade, not the 1962 COMMEMORATION_ONLY kind — a saint the 1960 reform reduced to a bare commemoration was usually still a simplex+ office that IS the day on a free feria (the burndown's largest correction). Only a genuine commemoratio grade floors.
  • isGreaterFeria drops the rank ≤ 2 fallback (greater ferias are exactly the Advent/Lent/Passiontide, Ember, and Rogation days).

Generator — a vigilOf/octaveOf co-placement referential-integrity gate (checkCoPlacement); on now that the full sanctoral lands.

Validation

Authored from the Divinum Officium Divino-Afflatu Sancti data + full-year DO engine output as the witness, cited to ordo-1954, then validated day-by-day against the DO DA-1954 engine across 1954 and 1956 at zero grade discrepancies on every day both engines celebrate a fixed sanctoral feast. Locked in CI by DivinoAfflatuResolutionTest (no DO needed).

isBuilt stays false — deliberately

#64 completes the fixed sanctoral, but the pre-1955 calendar has components beyond it that remain deferred (privileged temporal octaves, moveable feasts, the Office of the Dead / All Souls, sanctoral octave days, the Saturday Office of Our Lady) — every residual DO diff traces to one of these. Documented in docs/design/rubric-system-model.md (Seam 6b); follow-ups filed on #64.

Gates

composer lint · phpstan (L6, no errors) · composer test (780 pass, 1 skipped = optional DO live oracle) · generator verify (reproducible) + test (24).

Completes the fixed-date sanctoral for the **1954 (Divino Afflatu)** edition — the data counterpart to the #67 precedence engine. Closes #64. ## What landed **Data** (`tools/generator/facts/sanctorale.yaml`) - **290** feasts of the 1962 base carry a cited `roman-divino-afflatu` block with their pre-1955 double-scheme grade; 3 date-overrides restore the feasts the reform moved (Ss. Philip & James → May 1, St Irenaeus → Jun 28, the Curé of Ars → Aug 9). - **28** feasts the 1955/1960 reforms suppressed are authored as `notInBaseEdition` entries (Finding of the Holy Cross, St John before the Latin Gate, the Apparition of St Michael, St Peter in Chains, the ancient simplex martyrs). - Post-1954 additions are **held out** of 1954 (St Joseph the Worker 1955; Ss. Gregory Barbarigo & Anthony Mary Claret 1960; St Lawrence of Brindisi's universal feast — so 1954 keeps **St Praxedis** on 21 July). St Pius X (Sep 3) and Maria Regina (May 31), both 1954, are kept. - Grades/colours cite `ordo-1954`. **The 1962 corpus and golden fixture (1583–2200) are byte-identical.** **Engine** (`src/Precedence/Rubrics1954Precedence.php`) - `tierOf` classifies a 1954 observance by its native grade, not the 1962 `COMMEMORATION_ONLY` kind — a saint the 1960 reform reduced to a bare commemoration was usually still a *simplex+ office* that IS the day on a free feria (the burndown's largest correction). Only a genuine `commemoratio` grade floors. - `isGreaterFeria` drops the `rank ≤ 2` fallback (greater ferias are exactly the Advent/Lent/Passiontide, Ember, and Rogation days). **Generator** — a `vigilOf`/`octaveOf` **co-placement referential-integrity gate** (`checkCoPlacement`); on now that the full sanctoral lands. ## Validation Authored from the Divinum Officium Divino-Afflatu Sancti data + full-year DO engine output as the witness, cited to `ordo-1954`, then **validated day-by-day against the DO DA-1954 engine across 1954 and 1956 at zero grade discrepancies** on every day both engines celebrate a fixed sanctoral feast. Locked in CI by `DivinoAfflatuResolutionTest` (no DO needed). ## `isBuilt` stays false — deliberately #64 completes the *fixed sanctoral*, but the pre-1955 calendar has components beyond it that remain deferred (privileged temporal octaves, moveable feasts, the Office of the Dead / All Souls, sanctoral octave days, the Saturday Office of Our Lady) — every residual DO diff traces to one of these. Documented in `docs/design/rubric-system-model.md` (Seam 6b); follow-ups filed on #64. ## Gates `composer lint` · `phpstan` (L6, no errors) · `composer test` (780 pass, 1 skipped = optional DO live oracle) · generator `verify` (reproducible) + `test` (24).
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Directorium/Core!452
No description provided.