feat: declare the Novus Ordo edition + Ordinary Time season (#256) #478

Merged
manlycucumber merged 1 commit from feature/256-no-foundation into develop 2026-07-11 02:34:00 +00:00
manlycucumber commented 2026-07-11 02:28:44 +00:00 (Migrated from github.com)

First slice of the Novus Ordo calendar engine milestone (v1.1.0, epic #256). Foundation only — declares the edition on every axis and commits the signed-off design; no NO calendar is resolvable yet (isBuilt=false, refused at the public boundary), so this is golden-safe and observably inert.

What lands

  • Design doc docs/design/novus-ordo-calendar-model.md — the sign-off record (unioned peer edition, roman:novus-ordo-2002 first, Ordinary Time, Table of Liturgical Days, decree governance, ≥2 oracles).
  • Edition axisRubricSystem declares roman:novus-ordo-2002 (the v1.1 build target) plus reserved -1969/-1975 snapshots, all built=false; aliases novus-ordo/ordinary-form/2002; discipline cic-1983. The public CalendarCatalog boundary refuses them with the existing "declared but not yet built" message — the same arc 1954/1955 used.
  • Season vocabulary — new ordinary-time token + the NO subset (advent/christmastide/ordinary-time/lent/eastertide). Shared tokens keep bare names so the comparison diff aligns by token; additive minor bump.
  • Tests — the anticipatory negative tests (which asserted NO was not-yet-declared) converted to the declared-but-unbuilt reality; a public-boundary refusal test; the public API surface re-frozen (purely additive: 3 RubricSystem constants + the Season ordinary-time const/factory).

Safety

  • 1962 golden fixture (1583–2200) byte-identical — no corpus/data touched.
  • Local gate green: lint (195 files), phpstan [OK] No errors, 1040 tests (1 skipped = the maintainer live-DO sweep).

Part of #256. Next: the generator foundations for authoring NO as a whole, unioned peer edition.

First slice of the **Novus Ordo calendar engine** milestone (v1.1.0, epic #256). Foundation only — declares the edition on every axis and commits the signed-off design; no NO calendar is resolvable yet (`isBuilt=false`, refused at the public boundary), so this is golden-safe and observably inert. ## What lands - **Design doc** `docs/design/novus-ordo-calendar-model.md` — the sign-off record (unioned peer edition, `roman:novus-ordo-2002` first, Ordinary Time, Table of Liturgical Days, decree governance, ≥2 oracles). - **Edition axis** — `RubricSystem` declares `roman:novus-ordo-2002` (the v1.1 build target) plus reserved `-1969`/`-1975` snapshots, all `built=false`; aliases `novus-ordo`/`ordinary-form`/`2002`; discipline `cic-1983`. The public `CalendarCatalog` boundary refuses them with the existing "declared but not yet built" message — the same arc 1954/1955 used. - **Season vocabulary** — new `ordinary-time` token + the NO subset (`advent`/`christmastide`/`ordinary-time`/`lent`/`eastertide`). Shared tokens keep bare names so the comparison diff aligns by token; additive minor bump. - **Tests** — the anticipatory negative tests (which asserted NO was not-yet-declared) converted to the declared-but-unbuilt reality; a public-boundary refusal test; the public API surface re-frozen (purely additive: 3 `RubricSystem` constants + the `Season` ordinary-time const/factory). ## Safety - **1962 golden fixture (1583–2200) byte-identical** — no corpus/data touched. - Local gate green: lint (195 files), phpstan `[OK] No errors`, 1040 tests (1 skipped = the maintainer live-DO sweep). Part of #256. Next: the generator foundations for authoring NO as a whole, unioned peer edition.
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!478
No description provided.