Reclassify season as an open, edition-scoped vocabulary #364
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#364
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?
Summary
Reclassify the output-contract
seasonfield from a closed 8-member enum (the 1962 tempora) to an open, edition-scoped vocabulary, before the contract is frozen at 1.0 (#90). After the freeze this becomes a major-version change by the contract's own rules, which would block 1962↔Novus-Ordo calendar comparison behind a v2 bump.Design
advent,lent,eastertidemean the same in every edition) so the diff engine still aligns seasons by token; the namespace is theeditionfield already on every payload.ordinary-time;septuagesima/passiontideare simply absent from the NO subset. The 1962 subset is unchanged, so the current engine has zero behavioural churn.docs/design/season-vocabulary.md(the registry + per-edition subsets + the open-enum bump rule) in this issue.src/Temporal/Season.phpfrom a fixed enum to a registry-backed value keyed by edition.Acceptance criteria
seasondocumented as an open enum indocs/design/output-contract.md(Closed-vs-open section + the day/officeseasonrows).docs/design/season-vocabulary.mdcommitted with the shared-token rule and the 1962 subset.Seasonaccepts registry-backed values; 1962 golden contract fixtures unchanged (byte-identical).Blocks #90 (contract 1.0 promotion). Must land before the freeze.