feat: resolve concurrence of First and Second Vespers (#35) #351

Merged
manlycucumber merged 1 commit from feature/35-vespers-concurrence into develop 2026-07-02 03:35:14 +00:00
manlycucumber commented 2026-07-02 03:33:24 +00:00 (Migrated from github.com)

Closes #35. Epic #29, issue 6/8.

What

Adds ConcurrenceOutcome and PrecedenceRules::concurrenceOutcome(). The evening
between two adjacent days resolves to one of four outcomes:

  • the more dignified office (by tier) holds Vespers;
  • an equal-rank concurrence goes to the following day's First Vespers
    (a capitulo de sequenti);
  • the yielding office is commemorated unless it is a fourth-class feria.

Scope

v0.1.0 is calendar-level (no Divine Office), so this reports which office
holds the evening and which is commemorated. The finer Table of Concurrence
rulings and the Triduum's proper Vespers arrive with the Office layer; the
LiturgicalDay::secondVespers() accessor that surfaces this is added in #37.

Verification

composer lint · composer analyse (PHPStan L6, no errors) · composer test
(456 tests, 30,293 assertions — +14). Commits signed + DCO.

Closes #35. Epic #29, issue 6/8. ## What Adds `ConcurrenceOutcome` and `PrecedenceRules::concurrenceOutcome()`. The evening between two adjacent days resolves to one of four outcomes: - the more dignified office (by tier) holds Vespers; - an **equal-rank** concurrence goes to the **following** day's First Vespers (*a capitulo de sequenti*); - the yielding office is commemorated unless it is a fourth-class feria. ## Scope v0.1.0 is **calendar-level** (no Divine Office), so this reports which office holds the evening and which is commemorated. The finer Table of Concurrence rulings and the Triduum's proper Vespers arrive with the Office layer; the `LiturgicalDay::secondVespers()` accessor that surfaces this is added in #37. ## Verification `composer lint` · `composer analyse` (PHPStan L6, no errors) · `composer test` (456 tests, 30,293 assertions — +14). Commits signed + DCO.
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!351
No description provided.