feat: fill the Time-after-Pentecost temporal block (#21) #338

Merged
manlycucumber merged 1 commit from feature/21-time-after-pentecost into develop 2026-07-01 23:52:06 +00:00
manlycucumber commented 2026-07-01 23:51:05 +00:00 (Migrated from github.com)

Closes #21.

The fifth and final temporal block-filler — the long green season, completing the whole Proper of Time.

What's here

  • TimeAfterPentecostforYear($year) fills [Trinity Sunday, First Sunday of Advent). The whole block is the green pentecost season; Sundays second class, ferias fourth.
  • TemporalCalendar::roman() is now algorithmic (1–3999), since the Sundays count past XX.
  • Design doc gains the Time-after-Pentecost section; the title now reads "the whole Proper of Time".

The variable count (the acceptance criteria)

The number of Sundays after Pentecost varies with Easter — 23 to 28 (verified across 1583–2200). Two rules make it come out right:

  • The last Sunday before Advent always takes the "24th and last" Mass (sunday-ultima, Dominica ultima post Pentecosten).
  • When a year has > 24 Sundays, the leftover Sundays after Epiphany are resumed in the slots before the last — ending with the VIth (quae superfuit) immediately before the last and counting backward, so a year with N surplus slots revives the last N (…IV, V, VI) and no Epiphany Sunday with a place is dropped.

The long year 2035 (P=28) resumes Epiphany III–VI before the ultima; the short year 2038 (P=23) has none.

An adversarial review (with web verification of the 1962 Missale/Breviarium) corrected two Latin forms: the resumed Sundays carry "quae superfuit" (disambiguating them from ordinary Epiphany Sundays), and the ferias are "post Octavam Pentecostes" (only the Sundays are post Pentecosten).

The Easter-anchored feasts of the early weeks (Trinity, Corpus Christi, Sacred Heart) and the month-computed September Ember days are deferred to the movable-feast pass (#22) / later; the skeleton emits the green Sunday or feria beneath them.

Gates

composer lint · composer analyse (PHPStan L6) · composer test331 tests, 12045 assertions green.

Closes #21. The fifth and final temporal block-filler — the long green season, completing the whole Proper of Time. ## What's here - **`TimeAfterPentecost`** — `forYear($year)` fills `[Trinity Sunday, First Sunday of Advent)`. The whole block is the green `pentecost` season; Sundays second class, ferias fourth. - **`TemporalCalendar::roman()`** is now algorithmic (1–3999), since the Sundays count past XX. - **Design doc** gains the Time-after-Pentecost section; the title now reads "the whole Proper of Time". ## The variable count (the acceptance criteria) The number of Sundays after Pentecost varies with Easter — **23 to 28** (verified across 1583–2200). Two rules make it come out right: - The **last** Sunday before Advent always takes the "24th and last" Mass (`sunday-ultima`, *Dominica ultima post Pentecosten*). - When a year has **> 24** Sundays, the **leftover Sundays after Epiphany are resumed** in the slots before the last — ending with the **VIth** (*quae superfuit*) immediately before the last and counting backward, so a year with N surplus slots revives the last N (…IV, V, VI) and no Epiphany Sunday with a place is dropped. The long year 2035 (P=28) resumes Epiphany III–VI before the ultima; the short year 2038 (P=23) has none. An adversarial review (with web verification of the 1962 Missale/Breviarium) corrected two Latin forms: the resumed Sundays carry ***"quae superfuit"*** (disambiguating them from ordinary Epiphany Sundays), and the ferias are ***"post Octavam Pentecostes"*** (only the Sundays are *post Pentecosten*). The Easter-anchored feasts of the early weeks (Trinity, Corpus Christi, Sacred Heart) and the month-computed September Ember days are deferred to the movable-feast pass (#22) / later; the skeleton emits the green Sunday or feria beneath them. ## Gates `composer lint` · `composer analyse` (PHPStan L6) · `composer test` — **331 tests, 12045 assertions** green.
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!338
No description provided.