feat: stamp the corpus version on the output contract (#54) #355

Merged
manlycucumber merged 1 commit from feature/54-corpus-version into develop 2026-07-02 04:44:20 +00:00
manlycucumber commented 2026-07-02 04:43:23 +00:00 (Migrated from github.com)

Closes #54.

Makes the calendar-data build a first-class provenance axis, distinct from the edition and the engine.

  • SanctoralData::version() — new interface method; SeedSanctoralData returns a dated seed stamp 1962-seed-<date> that names only the data build (no edition token, so the same corpus can be resolved under any edition). The cited corpus generator (#38) will supply its own build id in its place.
  • DayResolver::provenance() now sources corpusVersion from the active SanctoralData rather than a placeholder constant, and for1962() defaults to a concrete SeedSanctoralData so the stamp is always available.

Tests

  • The three version axes (contractVersion, corpusVersion, engineVersion) are present and well-formed; edition is pinned to roman:rubricae-1960 and rite to roman.
  • The corpus version carries no edition token (no :, no roman, no rubricae).
  • The full-shape golden snapshot is updated to the dated corpus stamp.

Local gate: composer lint (0), composer analyse ([OK]), composer test (480 tests / 30,369 assertions).

Closes #54. Makes the **calendar-data build** a first-class provenance axis, distinct from the edition and the engine. - `SanctoralData::version()` — new interface method; `SeedSanctoralData` returns a dated seed stamp `1962-seed-<date>` that names only the data build (no edition token, so the same corpus can be resolved under any edition). The cited corpus generator (#38) will supply its own build id in its place. - `DayResolver::provenance()` now sources `corpusVersion` from the active `SanctoralData` rather than a placeholder constant, and `for1962()` defaults to a concrete `SeedSanctoralData` so the stamp is always available. ## Tests - The three version axes (`contractVersion`, `corpusVersion`, `engineVersion`) are present and well-formed; `edition` is pinned to `roman:rubricae-1960` and `rite` to `roman`. - The corpus version carries **no** edition token (no `:`, no `roman`, no `rubricae`). - The full-shape golden snapshot is updated to the dated corpus stamp. Local gate: `composer lint` (0), `composer analyse` ([OK]), `composer test` (480 tests / 30,369 assertions).
Sign in to join this conversation.
No reviewers
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!355
No description provided.