[Epic] Output contract #52

Closed
opened 2026-07-01 00:52:15 +00:00 by manlycucumber · 1 comment
manlycucumber commented 2026-07-01 00:52:15 +00:00 (Migrated from github.com)

Freeze the versioned output shape: a data-version stamp; the stable observance identity (the <rite>:<cycle>:<body> slug is the cross-system ID); i18n-shaped text and chant/audio hooks; reserved, versioned extension slots (texts, chant, audio, fasting, per-element colour) so later feature layers never break consumers; and the liturgical-day boundary semantics. The contract exposes the identity / edition / year 3-layer model explicitly (identity carries no rank/colour/date). Done when day() emits a documented, versioned contract that downstream APIs can depend on.

Epic — child issues are tracked as sub-issues.

Freeze the versioned output shape: a data-version stamp; the stable observance identity (the `<rite>:<cycle>:<body>` slug is the cross-system ID); i18n-shaped text and chant/audio hooks; **reserved, versioned extension slots** (texts, chant, audio, fasting, per-element colour) so later feature layers never break consumers; and the liturgical-day boundary semantics. The contract exposes the **identity / edition / year** 3-layer model explicitly (identity carries no rank/colour/date). Done when `day()` emits a documented, versioned contract that downstream APIs can depend on. _Epic — child issues are tracked as sub-issues._
manlycucumber commented 2026-07-02 04:57:22 +00:00 (Migrated from github.com)

Epic complete — all six children merged into develop:

  • #53 DayContract serialiser + contract() entry point + resolver transfer-link reconciliation (#354)
  • #54 corpus-version provenance axis via SanctoralData::version() (#355)
  • #55 stable cross-system identifiers (id/urn) + golden-list guard (#356)
  • #56 i18n names shape + chant/audio/text/citations hooks (#357)
  • #57 liturgical-day boundary + First Vespers / vigil semantics (#358)
  • #58 complete, frozen v1.0.0 spec doc + README link (#359)

The output contract is frozen at contract version 1.0.0: a versioned, deterministic, JSON-ready shape (Introibo\Core\contract()) with three independent provenance axes, self-describing offices (role, outcome, transfer links), stable ids, i18n names, and reserved slots for every planned feature layer. Documented in docs/design/output-contract.md. Full gate green (492 tests / 30,478 assertions).

Epic complete — all six children merged into `develop`: - #53 `DayContract` serialiser + `contract()` entry point + resolver transfer-link reconciliation (#354) - #54 corpus-version provenance axis via `SanctoralData::version()` (#355) - #55 stable cross-system identifiers (id/urn) + golden-list guard (#356) - #56 i18n `names` shape + chant/audio/text/citations hooks (#357) - #57 liturgical-day boundary + First Vespers / vigil semantics (#358) - #58 complete, frozen v1.0.0 spec doc + README link (#359) The output contract is **frozen at contract version 1.0.0**: a versioned, deterministic, JSON-ready shape (`Introibo\Core\contract()`) with three independent provenance axes, self-describing offices (role, outcome, transfer links), stable ids, i18n names, and reserved slots for every planned feature layer. Documented in `docs/design/output-contract.md`. Full gate green (492 tests / 30,478 assertions).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Directorium/Core#52
No description provided.