feat: guarantee stable cross-system feast identifiers (#55) #356
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!356
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/55-stable-identifiers"
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?
Closes #55.
The contract's
id/urn(emitted since #53) are declared and guarded as a stability-guaranteed compatibility surface.idis the bareObservanceIdslug — identity only, edition-invariant, independent of date or rank. It is the stable cross-system feast id: the "observance id → feast id" mapping is the identity function, so no separate registry is needed.urnis that id under the platform URN scheme (introibo:observance:<id>) and round-trips throughObservanceId::parse.docs/design/output-contract.md): ids are never renamed or re-homed; later editions (1954/1955, monastic) reuse them; a renamed display name never moves the id; identity lineage (splits/merges) lives in the reservedaliasesslot.Test
StableIdentifierTestpins a representative set — temporal Sunday and feria, a sanctoral feast, a sanctoral vigil — so an accidental change to any published identifier fails loudly, and asserts each urn round-trips to its id.Local gate:
composer lint(0),composer analyse([OK]),composer test(484 tests / 30,401 assertions).