feat: make the temporal skeleton data-driven (#42, part 1) #418
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!418
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/42-temporal-definitions"
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?
Advances #41's sibling #42 (temporal data-for-code) — part 1 of 2: the edition-invariant paschal skeleton is now data, not PHP literals.
What
tools/generator/facts/temporal-skeleton.yaml→data/corpus/temporal/easter-offsets.ndjson(30 rows) +block-seasons.ndjson(9 rows), each cited to the 1960 rubrics; the generator resolves everyciteagainst the source registry.TemporalDefinitions— the PHP read seam over that data, memoised per process.PaschalSkeletonreads its offset table through the seam (kept chronological);Season::forBlockreads the block→season map through it. Neither holds a hard-coded table any longer.Safety
The date arithmetic is unchanged (fillers still count days from Gregorian Easter), so the golden-year fixture (#365) is byte-for-byte unchanged — the swap is provably inert. Local gate: PSR-12 clean, PHPStan
[OK], 599 tests / 31,550 assertions, corpusnpm run verifyreproducible over 8 files.Remaining for #42 (part 2)
The per-archetype rank/colour/name overlay the 6 fillers still carry inline (~60–70 archetypes) →
attributes.temporale+identity.temporaledata behind aTemporalAttributesseam. Does not close #42.