[Epic] Data corpus & generator #38
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 project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Directorium/Core#38
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Produce the generated static CC0 corpus (temporal definitions, sanctoral entries, precedence data) via a Node build-time generator. Done when the engine loads only generated data, the generator is reproducible, and provenance is recorded per string.
Epic — child issues are tracked as sub-issues.
Architecture approved (2026-07-02)
Design pass complete and approved. Amended Done criterion: the engine loads all liturgical facts as generated data; computation and rules remain versioned PHP (parameters-as-data, not a rules-DSL).
tools/generator/facts/) — the clean-room boundary. Output: generated, committed, CC0 NDJSON (data/corpus/, edition-keyed tree). PHP loaders behind the existingSanctoralDataseam + two new seams for temporal/precedence.DayResolver, occurrence/concurrence/transfer.Citation+ a fail-closed generator gate (blocks on any uncited datum, dangling source key, or a title transcribed from a restrictively-licensed source). NewIntroibo\Core\Citation\namespace.resolveYear()output across 1583–2200 as a golden fixture before extraction, assert byte-identical after — transfers the verified engine's guarantee across the data seam.Build order: #39 schema → #40 generator → #44 provenance/CC0 → #41 sanctoral dataset → #42 temporal → #43 precedence.
Epic complete ✅
All seven children are merged to
develop(signed + DCO, CI-green):build/verify)resolveYear()frozen 1584–2200 as a golden fixture — the corpus-swap safety gateCorpusSanctoralDataTemporalDefinitions/TemporalAttributesPrecedenceTableThe engine is now data-for-code across the board: the entire liturgical content of the 1962 calendar — sanctoral, temporal, and precedence — lives in the cited CC0 corpus behind read seams, while computation (date arithmetic, naming grammar, precedence branching) stays in PHP. Every swap was proven byte-identical against the golden fixture, so the whole refactor is inert by construction. This is the seam #59 reuses to add the 1954/1955 and Novus Ordo editions, and the foundation the validation harness (#45) and resolution trace (#233) build on next.