feat: generator support for authoring a whole peer edition (#256) #479
No reviewers
Labels
No labels
area: build
area: ci
area: compare
area: data
area: engine
area: model
area: provenance
area: rite
area: validation
backport
blocked
breaking
confirmed
dependencies
duplicate
epic
github_actions
invalid
needs-info
needs-triage
php
priority: high
priority: low
priority: medium
regression
type: bug
type: chore
type: correction
type: docs
type: enhancement
type: feature
type: fix
type: perf
type: refactor
type: security
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Directorium/Core!479
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/256-no-generator"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Second slice of the Novus Ordo calendar engine (v1.1.0, epic #256). Teaches the corpus generator to author an edition as a whole, unioned peer (the signed-off architecture) rather than only as diff-blocks on the shared 1962 file — the enabling infrastructure for the NO's own sanctoral. No NO data is declared yet, so the code is dormant and the corpus is byte-identical.
What lands
transformSanctoraleWhole()— fans a flatfacts/editions/<dir>/sanctorale.yamlinto identity + attributes + placement. Identity is emitted only when an entry declares it (a NO-only observance → merged into the shared union); a saint shared with 1962 is referenced by id alone and reuses the union's identity. Partial identity fails closed.deriveNovusRank()+ thenovusRankschema field — the NO grade vocabulary (solemnity/feast/memorial/optional-memorial), numericRankClassderived and cited to the same source, kept a separate bag from the pre-1960legacyRankgrades (mirrors thederiveLegacyRankcontract).build.mjs— loads the per-edition whole file, merges its identities into the union (dedup-or-throw, exactly like octave identities), and adds a placement-has-identity gate (every placed id must have an identity — the converse of the existing orphan gate).Safety
novusRankschema field;verifyconfirms 32 files reproducible and matching.transformSanctoraleWhole), 1040 PHP tests (schema is opis-validated in PHP too).Part of #256. Next: the NO temporal cycle (Ordinary Time) and the
NovusOrdoPrecedenceengine, which will exercise this whole-edition path with real NO data.