feat: Generic 1962 baseline overlay — the identity particular calendar (#83) #468

Merged
manlycucumber merged 1 commit from feature/83-generic-1962-overlay into develop 2026-07-10 20:24:12 +00:00
manlycucumber commented 2026-07-10 20:22:25 +00:00 (Migrated from github.com)

Closes #83.

Ships Generic 1962 as a named, selectable particular calendar — the identity overlay (zero operations). It gives the Api and the Ordo plugin an explicit, addressable preset (a stable URN + display name) for plain 1962, to list alongside SSPX/FSSP/ICKSP, and it is the baseline the other society/institute overlays are diffs from.

What changed

  • tools/generator/facts/overlays/generic-1962.yaml — the empty overlay (operations: []), with a header explaining why an identity overlay is worth shipping.
  • Regenerated corpus: data/corpus/overlays/generic-1962/{overlay.json,operations.ndjson} (operations = 0) + MANIFEST.json. No base-edition corpus file changes — 1962 golden byte-identical.
  • tests/Validation/GenericBaselineTest.php — the conformance gate (@group edition-1962, so it runs in the full suite and the validate (1962) leg).

Why a structural identity proof, not a pinned fixture

A pinned per-year fixture for Generic would just duplicate the base golden and could silently drift from it. Instead the test resolves the engine under the generic-1962 overlay against the universal (null) calendar day for day across 2024–2026 (1096 days) and asserts every resolved office is byte-identical. The only two fields allowed to differ are the calendar-selection stamps — calendar.particular (the descriptor) and the +overlayId suffix on corpusVersion — both asserted positively. This is strictly stronger than a fixture: an identity overlay is proved to change the label and nothing else (including the astronomical block).

Verification

  • lint (phpcs 174/174) + analyse (PHPStan [OK]) clean.
  • test 992 pass (1 pre-existing maintainer-only skip); validate-oracles --group edition-1962 14 pass.
  • Generator: npm test 32 pass, npm run verify — corpus reproducible & committed copy fresh.

Part of the v0.2 particular-calendars milestone; SSPX (#80) done, FSSP (#81)/ICKSP (#82)/Cum sanctissima (#85)/CI gates (#87) follow.

Closes #83. Ships **Generic 1962** as a named, selectable particular calendar — the **identity overlay** (zero operations). It gives the Api and the Ordo plugin an explicit, addressable preset (a stable URN + display name) for plain 1962, to list alongside SSPX/FSSP/ICKSP, and it is the baseline the other society/institute overlays are diffs *from*. ### What changed - `tools/generator/facts/overlays/generic-1962.yaml` — the empty overlay (`operations: []`), with a header explaining why an identity overlay is worth shipping. - Regenerated corpus: `data/corpus/overlays/generic-1962/{overlay.json,operations.ndjson}` (operations = 0) + `MANIFEST.json`. **No base-edition corpus file changes — 1962 golden byte-identical.** - `tests/Validation/GenericBaselineTest.php` — the conformance gate (`@group edition-1962`, so it runs in the full suite and the `validate (1962)` leg). ### Why a structural identity proof, not a pinned fixture A pinned per-year fixture for Generic would just duplicate the base golden and could silently *drift* from it. Instead the test resolves the engine **under the `generic-1962` overlay** against the **universal (null)** calendar day for day across 2024–2026 (1096 days) and asserts every resolved office is byte-identical. The only two fields allowed to differ are the calendar-selection stamps — `calendar.particular` (the descriptor) and the `+overlayId` suffix on `corpusVersion` — both asserted *positively*. This is strictly stronger than a fixture: an identity overlay is proved to change the *label* and nothing else (including the astronomical block). ### Verification - `lint` (phpcs 174/174) + `analyse` (PHPStan `[OK]`) clean. - `test` 992 pass (1 pre-existing maintainer-only skip); `validate-oracles --group edition-1962` 14 pass. - Generator: `npm test` 32 pass, `npm run verify` — corpus reproducible & committed copy fresh. Part of the v0.2 particular-calendars milestone; SSPX (#80) done, FSSP (#81)/ICKSP (#82)/Cum sanctissima (#85)/CI gates (#87) follow.
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!468
No description provided.