feat: encode the liturgical-day boundary and First Vespers (#57) #358

Merged
manlycucumber merged 1 commit from feature/57-day-boundary into develop 2026-07-02 04:53:05 +00:00
manlycucumber commented 2026-07-02 04:52:08 +00:00 (Migrated from github.com)

Closes #57.

Locks and documents how the contract expresses the office-day boundary (the day begins at First Vespers the evening before; vigils attach to the morrow).

  • secondVespers reports the evening concurrence; favoursFollowing tells a client the evening already belongs to the following office day.
  • Vigils sit on their own preceding date with kind: vigil and vigilOf naming the feast they anticipate; the feast is celebrated on the morrow and is not duplicated into the vigil day.
  • firstVespers is a reserved day-level slot the Office layer (v1.1) will fill.

Test

DayBoundaryTest covers the Vigil of the Assumption (14 Aug): the evening favours the following day (favoursFollowing: true), the vigil office names roman:sanctorale:assumptio, and the Assumption feast appears on 15 Aug but not in the 14th's payload. docs/design/output-contract.md documents the boundary semantics.

Local gate: composer lint (0), composer analyse ([OK]), composer test (492 tests / 30,478 assertions).

Closes #57. Locks and documents how the contract expresses the **office-day boundary** (the day begins at First Vespers the evening before; vigils attach to the morrow). - **`secondVespers`** reports the evening concurrence; `favoursFollowing` tells a client the evening already belongs to the following office day. - **Vigils** sit on their own preceding date with `kind: vigil` and `vigilOf` naming the feast they anticipate; the feast is celebrated on the morrow and is **not** duplicated into the vigil day. - **`firstVespers`** is a reserved day-level slot the Office layer (v1.1) will fill. ## Test `DayBoundaryTest` covers the **Vigil of the Assumption (14 Aug)**: the evening favours the following day (`favoursFollowing: true`), the vigil office names `roman:sanctorale:assumptio`, and the Assumption feast appears on 15 Aug but **not** in the 14th's payload. `docs/design/output-contract.md` documents the boundary semantics. Local gate: `composer lint` (0), `composer analyse` ([OK]), `composer test` (492 tests / 30,478 assertions).
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!358
No description provided.