• v0.1.0 7416bbd582

    v0.1.0
    All checks were successful
    release / release (push) Successful in 6s
    Stable

    manlycucumber released this 2026-08-05 19:02:26 +00:00 | 2 commits to develop since this release

    🚀 v0.1.0

    We are pleased to announce the release of v0.1.0!

    What's Changed

    New Features

    • Add Observance identity value object and ID grammar (#201)
    • Add RankClass and LegacyRank rank attribute value objects (#202)
    • Add Colour and ElementColour liturgical colour value objects (#203)
    • Add Season temporal value object with block-to-season helper (#204)
    • Add LiturgicalDay aggregate and day() entry point (#205)
    • Add Computus for Gregorian Easter (Meeus/Jones/Butcher) (#206)
    • Add PaschalSkeleton for Easter-anchored movable feasts (#207)
    • Fill the Advent-to-Epiphany temporal block (#17) (#334)
    • Fill the Septuagesima-to-Passiontide temporal block (#18) (#335)
    • Fill the Holy Week and Paschal Triduum block (#19) (#336)
    • Fill the Eastertide-to-Pentecost temporal block (#20) (#337)
    • Fill the Time-after-Pentecost temporal block (#21) (#338)
    • Place the special movable feasts (#22) (#339)
    • Load the fixed-date sanctoral onto the calendar grid (#24) (#340)
    • Order co-occurring sanctoral feasts by rank (#25) (#341)
    • Represent commemorations and the displaced set (#26) (#342)
    • Map sanctoral vigils and attach them to their feast (#27) (#343)
    • Apply octave handling for the surviving 1960 octaves (#28) (#344)
    • Leap-year bissextile placement of the late-February feasts (#333) (#345)
    • Define the 1962 precedence rule-table scaffold (#30) (#346)
    • Resolve occurrence outcomes, first class (#31) (#347)
    • Resolve occurrence for second, third, and fourth class days (#32) (#348)
    • Resolve Sunday versus feast occurrence (#33) (#349)
    • Implement the feast-transfer queue (#34) (#350)
    • Resolve concurrence of First and Second Vespers (#35) (#351)
    • Apply commemoration limits and ordering per day class (#36) (#352)
    • Assemble the resolved day and wire day() (#37) (#353)
    • Serialise the resolved day to the versioned output contract (#53) (#354)
    • Stamp the corpus version on the output contract (#54) (#355)
    • Guarantee stable cross-system feast identifiers (#55) (#356)
    • Assert i18n text shape and chant/audio hooks (#56) (#357)
    • Encode the liturgical-day boundary and First Vespers (#57) (#358)
    • Define the generated corpus file schema and layout (#363)
    • Add the Node corpus generator pipeline skeleton (#40) (#413)
    • Born-cited provenance gate and CC0 licensing for the corpus (#44) (#414)
    • Freeze resolveYear() as a golden-fixture safety gate (#365) (#416)
    • Author the full 1962 General Roman Calendar sanctoral (#41) (#417)
    • Make the temporal skeleton data-driven (#42, part 1) (#418)
    • Make temporal office attributes data-driven (#42, part 2) (#419)
    • Make the precedence table data-driven (#43) (#420)
    • Emit a cited resolution trace from day() (#234) (#432)
    • Explain colour and season in the resolution trace (#235) (#433)
    • Particular-calendar overlay model and decorator (#75) (#442)
    • Cited overlay data format, generator and loader (#76) (#443)
    • Select a particular calendar via day()/contract() (#78) (#444)
    • SSPX particular-calendar conformance gate (#80) (#445)
    • Rubric-system (edition) abstraction seam (#59) (#446)
    • 1954 edition foundation — multi-edition generator + legacy rank scheme (#64) (#447)
    • 1954 sanctoral octave subsystem (safer split) (#65) (#449)
    • Reintroduce pre-1955 sanctoral vigils for the 1954 edition (#66) (#450)
    • 1954 Divino Afflatu precedence engine (#67) (#451)
    • Full 1954 Divino Afflatu sanctoral dataset (#64) (#452)
    • 1955 interim edition (Cum nostra hac aetate) — data, engine, validation (#456)
    • Regression safety for multi-system support (#72)
    • Calendrical & astronomical block (#242)
    • Fasting & abstinence discipline (#247)
    • Office of the Dead — All Souls (2 Nov) in every edition (#453)
    • 1954 sanctoral octave days — comites Christi, All Saints, Immaculate Conception (#453)
    • Privileged temporal octaves for 1954 — Epiphany, Corpus Christi, Ascension, Sacred Heart (#453) (#462)
    • 1954/1955 moveable feasts — Passiontide Seven Sorrows + Solemnity of St Joseph (#453) (#465)
    • Saturday Office of Our Lady + pre-1955 precedence tie-breaks (#453) (#466)
    • Make the 1954 and 1955 editions publicly resolvable (#453) (#467)
    • Generic 1962 baseline overlay — the identity particular calendar (#83) (#468)
    • FSSP and ICKSP particular-calendar overlays (#81, #82) (#469)
    • Calendar-mode comparison across editions (#312, #313) (#472)
    • Citable & reproducible dataset — integrity gate + release artifact + DOI prep (#238, #239, #241) (#473)
    • Declare the Novus Ordo edition + Ordinary Time season (#256) (#478)
    • Generator support for authoring a whole peer edition (#256) (#479)
    • Novus Ordo Ordinary Time engine + edition-selected temporal cycle (#258) (#480)
    • Novus Ordo precedence — the reformed Table of Liturgical Days (#257) (#481)
    • Provenance gate — temporal day-labels may cite a reference source (option A, #108) (#482)
    • Novus Ordo Ordinary Time in the cited corpus (#108) (#483)
    • Novus Ordo Advent + Christmas Time in the cited corpus (#108) (#484)
    • Novus Ordo Lent, Holy Week, Easter Time & movable feasts in the cited corpus (#108) (#485)
    • Novus Ordo General Roman Calendar sanctoral, discipline & Table of Liturgical Days (#108) (#486)
    • Surface Novus Ordo optional memorials and open the public boundary (#260) (#488)
    • Dated decree overlays make the Novus Ordo a living calendar (#366) (#489)
    • Reserve the additive day-level office key (v1.2 Office/text layer)
    • Corpus-vs-engine golden digest gate; engineVersion 0.5.0 (Stage 0.3b)
    • Generalize the born-cited gate to office/text; reserve schemas (Stage 0.4a)
    • Register v1.2 Office/text sources; bump corpusVersion (Stage 0.4b)
    • Office-structure axis — part-type vocabulary + transformOffice wiring (Stage 1)
    • Hour/PartType/OfficeStructure value objects + OfficePartPath grammar (Stage 1)
    • StructureAttributes read seam + Corpus office readers (Stage 1)
    • Ingestion core — NFC, verse-keying, versification-mismatch (Stage 2a)
    • Ingest Clementine + Douay-Rheims psalters into paired verse streams (Stage 2b)
    • Ingest the five Office canticles into paired scripture streams (Stage 2c)
    • Assemble the office-structure tree into the reserved day office key (Stage 3)
    • Add the per-office proper-text store and resolve proper parts (Stage 4a)
    • Seed the Little Office BVM per-annum Lauds (Stage 4b)
    • Seed the Little Office BVM per-annum Little Hours (Stage 4b)
    • Seed the Little Office BVM per-annum Vespers + Compline (Stage 4b)
    • Seed the Little Office BVM per-annum Matins (Stage 4b — all 8 hours)

    🚀 Improvements

    • Resolution benchmark, cache-flush hook, and budget (#95, #96) (#474)
    • Memoise the day-independent office and retarget tests to the seed

    🐛 Fixes

    • Keep the Sacred Triduum from being displaced by a coincident saint (#422) (#423)
    • Never celebrate a commemoration-grade office over the feria (#424) (#425)
    • Rank Advent Sundays first class and Advent ferias third class (#428) (#436)
    • Correct sanctoral ranks and add their co-commemorations (#428) (#437)
    • Add the Commemoration of the Baptism of the Lord (Jan 13) (#428) (#438)
    • Enforce a scan locator on text-leaf citations (§4.4)
    • Match two Little Hours collect accents to the Benziger scan
    • Keep the printed period at the Matins responsory repeat-divisions

    📊 General Changes

    • Scaffold workflow-full baseline
    • Link roadmap headings to milestones (#195) (#196)
    • Auto-add new issues to the project board (#197) (#198)
    • Scaffold composer package with PSR-4 autoloading (#199)
    • Add PSR-12 and PHPStan tooling with lint/analyse scripts (#200)
    • Add governance, provenance ledger, and security scanning (#208)
    • Roadmap — add accuracy/authority, comparison, editions & multi-rite milestones
    • Complete the output-contract spec and stability guarantees (#58) (#359)
    • Auto-roll project board status by progress (#360) (#361)
    • Flip an epic to In Progress on any started sub-issue (#362)
    • Roadmap v3 — renumber to release order, SSPX-first train, new scope (#411)
    • Lock roadmap-v3 architectural decisions (pre-launch bake-ins) (#412)
    • Cross-check Computus against PHP easter_days() (#46) (#421)
    • Harvest and pin the missalemeum oracle fixture (#47) (#426)
    • Assert engine day() against the missalemeum oracle (#48) (#427)
    • Add the SSPX 1962 ordo as a secondary validation oracle (#49) (#429)
    • Add an optional Divinum Officium Perl oracle adapter (#50) (#430)
    • Gate the validation harness in CI as an explicit check (#51) (#431)
    • Prove every resolution-trace step foreign-keys a real source (#236) (#434)
    • Pin golden-master traces for contested days (#240) (#435)
    • Derive 1954 rank from legacyRank; add generator unit tests (#448)
    • Introibo -> Directorium (#454)
    • Point org references at DirectoriumApp (#455)
    • Dedicated 'validate (overlays)' gate for the particular calendars (#87) (#470)
    • Reclassify season as an open, edition-scoped vocabulary (#364) (#471)
    • Core integration guide + calendars/editions reference (#92, #93) (#475)
    • Freeze the public API surface and the 1.0 output contract (#89, #90) (#476)
    • Finalise composer metadata and lean packaging for 1.0 (#98) (#477)
    • Validate the Novus Ordo calendar against two independent oracles (#260) (#487)
    • Enable Renovate dependency updates
    • Add approved v1.2 office-structure + bilingual-text spec
    • Make Forgejo Actions green — containerize PHP jobs, gate GitHub-only workflows (#496)
    • Declare availability + leaf rights OPEN; add v1.2 text-layer scope (Stage 0.2)
    • Track engineVersion via Directorium::VERSION (Stage 0.3, must-fix #B)
    • Wrap over-long Provenance line from the 0.3a de-hardcode
    • Re-freeze public surface — additive Corpus office readers (Stage 1)
    • Record Stage 2b decisions — imprints pinned, Venite Gallican-if-br1961 (Open-Q #10, #12)
    • Retarget corpus + provider tests to the seeded LOBVM office
    • Re-freeze the golden year for the LOBVM Lauds seed
    • Re-freeze the golden year for the Little Hours seed
    • Re-freeze after the collect accent corrections
    • Re-freeze the golden year for the Vespers + Compline seed
    • Re-freeze the golden year for the Matins seed
    • Re-freeze after the responsory repeat-division fix
    • PROJECT.md — four repos, one platform, and what clean-room means here
    • PROJECT.md — the finished brief
    • Port release automation off release-please to the tier-kit git-cliff flow (#508)
    • Sync release automation to the kit — no placeholder sections, and an RC path
    • Stop the release publishing notes with commits silently missing
    Downloads