feat: cited overlay data format, generator and loader (#76) #443
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!443
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/76-overlay-data-format"
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?
Builds the cited data pipeline for particular-calendar overlays (epic #75), so an overlay is authored as cited YAML, compiled to reproducible NDJSON, and read back into the engine — the same born-cited, byte-stable path the base corpus uses. Refs #76.
Generator
facts/overlays/<slug>.yamldescribes an overlay declaratively: a list ofadd/suppress/rerankoperations over the universal sanctoral (mirrors the PHPOverlayOperationvalue objects from #77).build.mjsdiscovers every overlay, validates and provenance-gates it, and emitsdata/corpus/overlays/<slug>/operations.ndjson(sorted by target) +overlay.json, listed inMANIFEST.overlays. Thecorpus-verifyreproducibility gate now covers 14 files.rerank/suppresscites the particular calendar's authority (newsspx-ordoreference source); anadded feast's title still must cite a public-domain text source. No new provenance rules — the overlay records flow through the existing gate.overlay-operation+overlayJSON Schemas (draft 2020-12), exercised bySchemaValidationTestwith valid/invalid fixtures.Engine
CorpusOverlayDatarebuilds aCalendarOverlayfrom the corpus, the overlay counterpart ofCorpusSanctoralData. The shared typed row readers are extracted toCorpus\CorpusRecordso both loaders parse corpus rows in one place (the sanctoral loader is refactored to delegate; behaviour unchanged).CorpusgainsoverlaySlugs()/overlayMeta()/overlayOperations().What it ships
The SSPX overlay's two fixed-date elevations — St Pius X (Sep 3) and the Seven Sorrows (Sep 15) to first class — cited to the SSPX ordo. Layered through
OverlaidSanctoralData, the engine resolves both first class with precedence/commemoration logic untouched:Deliberately deferred, documented not dropped (see
facts/overlays/sspx.yamland the SSPX oracle notes): the movable Seven Sorrows (Friday after Passion Sunday) is Easter-relative, beyond aSanctoralDataoverlay; and the Vigil of the Assumption reads third class in the SSPX feed against a second-class vigil under the 1960 Code of Rubrics (n. 91) — treated as a feed artifact, not conformed to. Both remain in the conformance baseline for #80, which wires theday()selector (#78) into the SSPX oracle as a green gate.Verification
corpus verifyOK (14 files, reproducible + matches committed) ·lint+analyseclean ·test693 green (1 pre-existing skip). Commit SSH-signed + DCO.