Model liturgical colour as a typed enum #11

Closed
opened 2026-07-01 00:50:42 +00:00 by manlycucumber · 0 comments
manlycucumber commented 2026-07-01 00:50:42 +00:00 (Migrated from github.com)

Problem

Offices carry a liturgical colour (white, red, green, violet, black, rose). The engine needs a typed colour rather than free strings to keep output consistent.

Design alignment (v0.1.0)

Colour is a per-edition attribute — and it attaches per celebration element (the principal and each commemoration may differ) — not part of the Observance ID. Rose is a flag on violet (Gaudete / Laetare), not a base value. See docs/design/observance-id-grammar.md.

Acceptance criteria

  • Colour type enumerates the traditional Roman colours (white, red, green, violet, black, rose)
  • Constructs from an edition attribute record (not from an ID token)
  • Each celebration element (principal + commemorations) carries its own colour
  • roseAllowed is expressible as a flag on violet
  • Unit tests cover each colour and the per-element case

Notes

Treat the colour set as closed for the traditional editions.

## Problem Offices carry a liturgical colour (white, red, green, violet, black, rose). The engine needs a typed colour rather than free strings to keep output consistent. ## Design alignment (v0.1.0) Colour is a **per-edition attribute** — and it attaches per celebration *element* (the principal and each commemoration may differ) — **not** part of the `Observance` ID. Rose is a flag on violet (Gaudete / Laetare), not a base value. See `docs/design/observance-id-grammar.md`. ## Acceptance criteria - [ ] Colour type enumerates the traditional Roman colours (white, red, green, violet, black, rose) - [ ] Constructs from an edition attribute record (**not** from an ID token) - [ ] Each celebration element (principal + commemorations) carries its own colour - [ ] `roseAllowed` is expressible as a flag on violet - [ ] Unit tests cover each colour and the per-element case ## Notes Treat the colour set as closed for the traditional editions.
Sign in to join this conversation.
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#11
No description provided.